Usuario:ManuelRomero/PHP/hibridas/practica 2018 e
De WikiEducator
< Usuario:ManuelRomero | PHP | hibridas
Revisión a fecha de 21:25 14 feb 2018; ManuelRomero (Discusión | contribuciones)
<?php /** * Created by PhpStorm. * User: manuel * Date: 12/02/18 * Time: 8:51 */ class Api_Google { public function __construct(){ } static public function obtener_tareas(Google_Client $client) { $tasks = new Google_Service_Tasks($client); return $tasks; } /** * @param Google_Service_Tasks $tasks * @return Google_Service_Tasks_TaskList */ static public function obtener_lista_tareas(Google_Service_Tasks $tasks) { $repartos = $tasks->tasklists->listTasklists(); return $repartos; } static public function obtener_calendario($client){ $calendar = new Google_Service_Calendar($client); } /** * @param $f fecha * add un evento en Calendar repartos */ static public function add_calendar(Google_Service_Calendar $calendar, $f) { // La fecha es correcta creamos la entrada en Calendar // Insertar evento $evento = new Google_Service_Calendar_Event(); $evento->setSummary("Repartos"); // hora de comienzo $comienzo = new Google_Service_Calendar_EventDateTime(); $comienzo->setDateTime("$fT09:00:00.000"); $comienzo->setTimeZone("Europe/Madrid"); $evento->setStart($comienzo); // hora de terminación $final = new Google_Service_Calendar_EventDateTime(); $final->setDateTime("$fT20:00:00.000"); $final->setTimeZone("Europe/Madrid"); $evento->setEnd($final); $createdEvent = $calendar->events->insert('primary', $evento); } static public function add_tarea(Google_Service_Tasks $task, $f) { $nuevalista = new Google_Service_Tasks_TaskList(); $nuevalista->setTitle("Reparto $f"); $task->tasklists->insert($nuevalista); } }
<?php require_once 'vendor/autoload.php'; class Autenticar { /** * @var Google_Client */ private $client; public function __construct() { $this->client = new Google_Client(); $this->client->setAuthConfig('/var/www/repartos/config.json'); // $this->client->setAccessType('offline'); $key = "AIzaSyARLcQ5OuAlGLxvlBf7B526mqACbXR3e1Y"; //$this->client->setDeveloperKey($key); $this->client->addScope(['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/taskqueue', 'https://www.googleapis.com/auth/tasks']); if (!(isset($_SESSION['access_token']) && $_SESSION['access_token'])) { $this->autenticar(); } $this->client->setAccessToken($_SESSION['access_token']); } private function autenticar() { if (!isset($_GET['code'])) { $auth_url = $this->client->createAuthUrl(); header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); } else { $this->client->fetchAccessTokenWithAuthCode($_GET['code']); $_SESSION['access_token'] = $this->client->getAccessToken(); $redirect_uri = 'http://www.repartos.com'; header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); } } public function get_user() { return $this->client->getClientId(); } public function get_client() { return $this->client; } /** * @return Google_Service_Tasks Lista de tareas * @description Obtenemos una lista de tareas */ /** * @return Google_Service_Tasks_Tasks */ }
<?php spl_autoload_register(function ($clase) { require_once("$clase.php"); }); session_start(); $usuario = new Autenticar(); $tareas = Api_Google::obtener_tareas($usuario->get_client()); $repartos = Api_Google::obtener_lista_tareas($tareas); $calendar = Api_Google::obtener_calendario($usuario->get_client()); //$repartos = $control->obtener_repartos($lista_tareas); switch ($_GET['accion']) { case "Crear Nueva Lista de Reparto": //Si no está vacío el titulo creamos una nueva lista de reparto if (!empty($_GET['fechaReparto'])) { // Crear una nueva lista de reparto try { // Vamos a analizar la fecha que obtememos a ver si es válida // $f = explode("/", $_GET['fechaReparto']); // if (checkdate($f)) $f = $_GET['fechaReparto']; $f=date("Y-m-d",strtotime($f)); var_dump($f); Api_Google::add_calendar($calendar, $f); Api_Google::add_tarea($tareas, $f); } catch (Exception $e) { echo "<h1>Error " . $e->getMessage() . "</h1>"; } } break; case "Crear Nueva Lista de Reparto": break; case "borrar lista": break; case "borrar tarea": break; } ?> <!DOCTYPE html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Ejemplo Tema 8: Rutas de reparto</title> <link href="estilo.css" rel="stylesheet" type="text/css"/> </head> <body> <div class="contenedor"> <div class="encabezado"> <h1>Rutas de reparto</h1> <form id="nuevoreparto" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> <fieldset> <input type='hidden' name='accion' value='nuevalista'/> <input type='submit' id='crearnuevotitulo' name="accion" value='Crear Nueva Lista de Reparto'/> <label for='nuevotitulo'>Fecha de reparto:</label> <input type='date' name='fechaReparto' id='fechaReparto'/> </fieldset> </form> </div> <div class="contenido"> <?php foreach ($repartos['items'] as $reparto) { // Excluyendo la lista por defecto de Google Tasks if ($reparto['id'] == $id_defecto) continue; print '<div id="' . $reparto['id'] . '">'; print '<span class="titulo">' . $reparto['title'] . '</span>'; $idreparto = "'" . $reparto['id'] . "'"; print '<span class="accion">(<a href="#" onclick="ordenarReparto(' . $idreparto . ');">Ordenar</a>)</span>'; print '<span class="accion">(<a href="#" onclick="nuevoEnvio(' . $idreparto . ');">Nuevo Envío</a>)</span>'; print '<span class="accion">(<a href="' . $_SERVER['PHP_SELF'] . '?accion=borrarlista&reparto=' . $reparto['id'] . '">Borrar</a>)</span>'; print '<ul>'; // Cogemos de la lista de reparto las tareas de envío $envios = $tareas->tasks->listTasks($reparto['id']); // Por si no hay tareas de envío en la lista if (!empty($envios['items'])) { foreach ($envios['items'] as $envio) { // Creamos un elemento para cada una de las tareas de envío $idenvio = "'" . $envio['id'] . "'"; print '<li title="' . $envio['notes'] . '" id="' . $idenvio . '">' . $envio['title'] . ' (' . $envio['notes'] . ')'; $coordenadas = "'" . $envio['notes'] . "'"; print '<span class="accion"> (<a href="#" onclick="abrirMaps(' . $coordenadas . ');">Ver mapa</a>)</span>'; print '<span class="accion"> (<a href="' . $_SERVER['PHP_SELF'] . '?accion=borrartarea&reparto=' . $reparto['id'] . '&envio=' . $envio['id'] . '">Borrar</a>)</span>'; print '</li>'; } } print '</ul>'; print '</div>'; } ?> </div> <div class="pie"> <?php print $error; ?> </div> </div> </body> </html>