$messagesResponse = $service->users_messages->listUsersMessages('me', $opt_param); if ($messagesResponse->getMessages()) { $messages = array_merge($messages, $messagesResponse->getMessages()); $pageToken = $messagesResponse->getNextPageToken(); } } catch (Exception $e) { print 'An error occurred: ' . $e->getMessage(); } } while ($pageToken); return $messages; } if (isset($authUrl)) { echo "<a class='login' href='" . $authUrl . "'>Connect Me!</a>"; } else { $service = new Google_Service_Gmail($client); $messages = listMessages($service, 'me'); $con = count($messages); //echo $con.'<br/>'; $ar = []; $cnt = 0; for ($q = 0; $q < 200; $q += 100) { $messageList = array(); for ($m = $q, $x = 0; $m < $q + 100, $x < 100; $m++, $x++) { $messageList[$x] = $messages[$m]; } //$messages= $service->users_messages->listUsersMessages('me', array('labelIds'=>array("IMPORTANT"),'maxResults' => 100,'q'=>$str),$opt_param); //$messageList = $messages->getMessages(); $client->setUseBatch(true); $batch = new Google_Http_Batch($client); foreach ($messageList as $msg_obj) { //echo $msg_obj->id.'<br/>';
public function mostrarDetalle($cuadrante_id) { function getClient() { $client = new Google_Client(); $client->setApplicationName(APPLICATION_NAME); $client->setScopes(SCOPES); $client->setAuthConfigFile(CLIENT_SECRET_PATH); $client->setAccessType('offline'); $client->setApprovalPrompt('force'); //esta linea la he añadido yo // Load previously authorized credentials from a file. $credentialsPath = CREDENTIALS_PATH; // dd($credentialsPath); if (file_exists($credentialsPath)) { $accessToken = file_get_contents($credentialsPath); } else { // Request authorization from the user. dd('no hay autorización, habrá que modificar el código'); $authUrl = $client->createAuthUrl(); printf("Open the following link in your browser:\n%s\n", $authUrl); print 'Enter verification code: '; $authCode = trim(fgets(STDIN)); // Exchange authorization code for an access token. $accessToken = $client->authenticate($authCode); // Store the credentials to disk. if (!file_exists(dirname($credentialsPath))) { mkdir(dirname($credentialsPath), 0700, true); } file_put_contents($credentialsPath, $accessToken); // printf("Credentials saved to %s\n", $credentialsPath); } $client->setAccessToken($accessToken); // Refresh the token if it's expired. if ($client->isAccessTokenExpired()) { $client->refreshToken($client->getRefreshToken()); file_put_contents($credentialsPath, $client->getAccessToken()); } return $client; } function listMessages($service, $userId, $fecha, $email) { $pageToken = NULL; $messages = array(); $opt_param = array(); //mensaje de ese empleado para ese día $opt_param['q'] = 'subject:' . $fecha . ' from:' . $email . ' label:Inbox'; do { try { if ($pageToken) { $opt_param['pageToken'] = $pageToken; } $messagesResponse = $service->users_messages->listUsersMessages($userId, $opt_param); if ($messagesResponse->getMessages()) { $messages = array_merge($messages, $messagesResponse->getMessages()); $pageToken = $messagesResponse->getNextPageToken(); } } catch (Exception $e) { print 'An error occurred: ' . $e->getMessage(); } } while ($pageToken); return $messages; } function modifyMessage($service, $userId, $messageId, $labelsToAdd, $labelsToRemove) { $mods = new Google_Service_Gmail_ModifyMessageRequest(); $mods->setAddLabelIds($labelsToAdd); $mods->setRemoveLabelIds($labelsToRemove); try { $message = $service->users_messages->modify($userId, $messageId, $mods); // print 'Message with ID: ' . $messageId . ' successfully modified.'; return $message; } catch (Exception $e) { print 'An error occurred: ' . $e->getMessage(); } } function getHeader($headers, $name) { foreach ($headers as $header) { if ($header['name'] == $name) { return $header['value']; } } } function getHeaders($headers, $campos) { foreach ($headers as $header) { for ($i = 0; $i < count($campos); $i++) { if ($header['name'] == $campos[$i]) { $results[$campos[$i]] = $header['value']; } } } return $results; } // function getBody($partes){ // foreach($partes as $parte){ // if($parte['name'] == 'body') // } // } /* * Decode the body. * @param : encoded body - or null * @return : the body if found, else FALSE; */ function decodeBody($body) { $rawData = $body; $sanitizedData = strtr($rawData, '-_', '+/'); $decodedMessage = base64_decode($sanitizedData); if (!$decodedMessage) { $decodedMessage = FALSE; } return $decodedMessage; } $cuadrante = Cuadrante::where('id', $cuadrante_id)->first(); $lineas = LineaCuadrante::where('cuadrante_id', $cuadrante_id)->orderBy('tipo', 'asc')->orderBy('salida', 'asc')->get(); $fecha = $cuadrante->fecha; $fecha = date_format($fecha, 'd-m-Y'); $valores = $this->empleadosTrabajando($cuadrante_id); Javascript::put(['valores' => $valores]); if ($cuadrante->estado == 'Validado') { define('APPLICATION_NAME', 'Gmail API PHP Quickstart'); define('CREDENTIALS_PATH', base_path() . '/storage/app/.credentials/gmail-php-quickstart.json'); define('CLIENT_SECRET_PATH', __DIR__ . '/client_secret.json'); // If modifying these scopes, delete your previously saved credentials define('SCOPES', implode(' ', array(Google_Service_Gmail::GMAIL_MODIFY))); /** * Returns an authorized API client. * @return Google_Client the authorized client object */ // Get the API client and construct the service object. $client = getClient(); $service = new Google_Service_Gmail($client); $userId = 'me'; // lista de labels con ids // $results = $service->users_labels->listUsersLabels($userId); // dd($results); $messages = listMessages($service, $userId, $fecha, null); if ($messages) { foreach ($lineas as $linea) { $email = $linea->empleado->email; $mensaje = listMessages($service, $userId, $fecha, $email); // $labelsToAdd = ['Label_1']; $labelsToRemove = ['INBOX']; if (count($mensaje) == 1) { // dd('hay uno'); $linea->mensaje_id = $mensaje[0]->id; $detalle_mensaje = $service->users_messages->get($userId, $mensaje[0]->id); $headers = $detalle_mensaje->getPayload()->getHeaders(); $partsBody = $detalle_mensaje->getPayload()->getParts(); $body = decodeBody($partsBody[0]['body']['data']); $campos = array('Subject', 'Date'); $results = getHeaders($headers, $campos); $linea->asunto = $results['Subject']; $fechaLocal = date("Y-m-d H:i:s", strtotime($results['Date'])); $linea->fechaMensaje = $fechaLocal; $linea->body = $body; // $subject = getHeader($headers, 'Subject'); // $linea->asunto = $subject; $linea->estado = 'Firmado'; $linea->save(); // modifyMessage($service,$userId,$linea->mensaje_id,$labelsToAdd,$labelsToRemove); modifyMessage($service, $userId, $linea->mensaje_id, ['Label_1'], $labelsToRemove); } else { if (count($mensaje) > 1) { //archivo en duplicados(Label_2) los antiguos // dd(count($mensaje)); for ($i = 1; $i < count($mensaje); $i++) { $detalle_mensaje = $service->users_messages->get($userId, $mensaje[$i]->id); $headers = $detalle_mensaje->getPayload()->getHeaders(); $subject = getHeader($headers, 'Subject'); modifyMessage($service, $userId, $mensaje[$i]->id, ['Label_2'], $labelsToRemove); } } else { if (!count($mensaje)) { // no hay ninguno y continua el foreach } } } } } } return view('controlHorario.detalleCuadrante', compact('cuadrante', 'lineas')); }
login(); break; case 'logout': logout(); break; case 'newMessage': newMessage(); break; case 'editMessage': editMessage(); break; case 'deleteMessage': deleteMessage(); break; case 'listMessages': listMessages(); break; case 'newUser': newUser(); break; case 'editUser': editUser(); break; case 'deleteUser': deleteUser(); break; default: listUsers(); } function login() {
$message = $service->users_messages->get($userId, $messageId); //print 'Message with ID: ' . $message->getId() . ' retrieved.'; return $message; } catch (Exception $e) { print 'An error occurred: ' . $e->getMessage(); } } function createSavedFile($data = array()) { file_put_contents(SAVED_FILE, json_encode($data)); } // Get the API client and construct the service object. $client = getClient(); $service = new Google_Service_Gmail($client); $user = '******'; $results = listMessages($service, $user); $saved = array(); if (!file_exists(SAVED_FILE)) { createSavedFile(); } else { $saved_contents = json_decode(file_get_contents(SAVED_FILE)); if (empty($saved_contents)) { createSavedFile(); } else { $saved = $saved_contents; } } foreach ($results as $obj) { $msg = getMessage($service, $user, $obj->getId()); //$parts = $msg->getPayload()->getParts(); //$body = $parts[0]['body'];