public function updateCustomRecord($parameters)
 {
     $account = ['name_013' => $this->request->input('name'), 'email_013' => $this->request->input('email'), 'reply_to_013' => empty($this->request->input('replyTo')) ? null : $this->request->input('replyTo'), 'outgoing_server_013' => $this->request->input('outgoingServer'), 'outgoing_user_013' => $this->request->input('outgoingUser'), 'outgoing_secure_013' => $this->request->input('outgoingSecure'), 'outgoing_port_013' => $this->request->input('outgoingPort'), 'incoming_type_013' => $this->request->input('incomingType'), 'incoming_server_013' => $this->request->input('incomingServer'), 'incoming_user_013' => $this->request->input('incomingUser'), 'incoming_secure_013' => $this->request->input('incomingSecure'), 'incoming_port_013' => $this->request->input('incomingPort')];
     // Get object to read password to check account
     if ($parameters['specialRules']['outgoingPassRule'] || $parameters['specialRules']['incomingPassRule']) {
         $oldAccount = EmailAccount::find($this->request->input('id'));
     }
     if (!$parameters['specialRules']['outgoingPassRule']) {
         $account['outgoing_pass_013'] = Crypt::encrypt($this->request->input('outgoingPass'));
     } else {
         $account['outgoing_pass_013'] = $oldAccount->outgoing_pass_013;
     }
     if (!$parameters['specialRules']['incomingPassRule']) {
         $account['incoming_pass_013'] = Crypt::encrypt($this->request->input('incomingPass'));
     } else {
         $account['incoming_pass_013'] = $oldAccount->incoming_pass_013;
     }
     $response = EmailServices::testEmailAccount($account);
     if ($response === true) {
         EmailAccount::where('id_013', $this->request->input('id'))->update($account);
     } else {
         return redirect()->route('edit' . ucfirst($this->routeSuffix), $parameters['urlParameters'])->withErrors($response)->withInput();
     }
 }
Example #2
0
 /**
  * Recursive function
  *
  * @param \Syscover\Pulsar\Libraries\ImapServices   $imapService
  * @param \Syscover\Pulsar\Models\EmailAccount      $account
  * @param \Illuminate\Support\Collection            $patterns
  * @param integer                                   $position
  */
 public static function checkBouncedMessagesFromAccount($imapService, $account, $patterns, $position)
 {
     $nEmailsToChecck = 25;
     // Solicitamos los 10 anteriores mensajes a comprobar desde la última posición comnprobada
     $messages = $imapService->getServer()->getMessages($nEmailsToChecck, $position);
     $findLastCheckUid = false;
     foreach ($messages as $key => $message) {
         // comprobamos si el mensaje coincide con algún patron
         $response = ComunikLibrary::checkEmailPattern($message, $patterns);
         if ($response['success']) {
             if (count($response['contacts']) > 0) {
                 // Obtenemos el primer contacto del email que ha coincidido con el patrón
                 $contact = $response['contacts']->first();
             } else {
                 $contact = false;
             }
             // Acciones a realizar
             // 1 = nada
             // 2 = borrar contacto y mensaje
             // 3 = unsuscribe y borrar mensaje
             // 4 = borrar contacto
             // 5 = ususcribe contacto
             // 6 = borrar mensaje
             if ($contact != false && ($response['pattern']->action_049 == 2 || $response['pattern']->action_049 == 4)) {
                 // borrar contacto
                 Contact::where('id_041', $contact->id_041)->delete();
             }
             if ($contact != false && ($response['pattern']->action_049 == 3 || $response['pattern']->action_049 == 5)) {
                 // unsuscribe contacto
                 Contact::where('id_041', $contact->id_041)->update(['unsubscribe_email_041' => true]);
             }
             if ($response['pattern']->action_049 == 2 || $response['pattern']->action_049 == 3 || $response['pattern']->action_049 == 6) {
                 // borrar mensaje
                 $message->delete();
                 // retrasamos medio segundo la ejecución para no saturar el servidor IMAP de peticiones
                 usleep(500000);
             }
         }
         // si es la última interacción
         if ($key === count($messages) - 1) {
             // purge all delete messages
             $imapService->getServer()->expunge();
             // actualizamos el último UID comprobado
             EmailAccount::where('id_013', $account->id_013)->update(['last_check_uid_013' => $message->getUid()]);
         }
     }
 }