public function customIndex($parameters) { $parameters['accounts'] = EmailAccount::all(); $parameters['profiles'] = Profile::all(); $parameters['notificationsAccount'] = Preference::getValue('octopusNotificationsAccount', 8); $parameters['managerProfile'] = Preference::getValue('octopusManagerProfile', 8); return $parameters; }
public function customIndex($parameters) { $parameters['states'] = State::all(); $parameters['defaultState'] = Preference::getValue('formsDefaultState', 4); $parameters['accounts'] = EmailAccount::all(); $parameters['notificationsAccount'] = Preference::getValue('formsNotificationsAccount', 4); return $parameters; }
public function customIndex($parameters) { $parameters['profiles'] = Profile::all(); $parameters['billingProfile'] = Preference::getValue('projectsBillingProfile', 6); $parameters['accounts'] = EmailAccount::all(); $parameters['notificationsAccount'] = Preference::getValue('projectsNotificationsAccount', 6); $parameters['hourPrice'] = Preference::getValue('projectsHourPrice', 6); return $parameters; }
public function editCustomRecord($parameters) { $parameters['emailAccounts'] = EmailAccount::all(); $parameters['templates'] = EmailTemplate::all(); $parameters['themes'] = ComunikLibrary::getThemes(); $parameters['emlHeaders'] = ComunikLibrary::getEmlHeaders(); $parameters['groups'] = Group::all(); $parameters['selectGroups'] = $parameters['object']->getGroups; $parameters['countries'] = Contact::getCountriesContacts(['lang' => auth('pulsar')->user()->lang_id_010]); $parameters['selectCountries'] = $parameters['object']->getCountries; // statistics $parameters['queueMailings'] = EmailSendQueue::where('campaign_id_047', $parameters['id'])->count(); $parameters['sentMailings'] = EmailSendHistory::where('campaign_id_048', $parameters['id'])->count(); $parameters['noSentMailings'] = EmailSendQueue::where('campaign_id_047', $parameters['id'])->where('status_id_047', 0)->count(); $parameters['uniqueViewMailings'] = EmailSendHistory::where('campaign_id_048', $parameters['id'])->where('viewed_048', '>', 0)->count(); $parameters['effectiveness'] = $parameters['uniqueViewMailings'] > 0 ? round($parameters['uniqueViewMailings'] / $parameters['sentMailings'] * 100, 2) : 0; return $parameters; }
/** * Función que compruba si hay emails en las cuentas de correo que no hayan sido comprobados */ public static function checkBouncedEmailsAccounts() { $emailStatusBouncedMessagesFromAccount = Preference::getValue('emailStatusBouncedMessagesFromAccount', 5, '0'); // Comprobación para casos de errores o caídas del servidor, y no dejen bloquedo la comprobación de emails // si en 5 minutos no se ha liberado la variable, damos por hecho que se ha bloqueado y la liberamos $update = \DateTime::createFromFormat('Y-m-d H:i:s', $emailStatusBouncedMessagesFromAccount->updated_at); if ($emailStatusBouncedMessagesFromAccount->value_018 == '1' && date('U') - $update->getTimestamp() > 300) { Preference::setValue('emailStatusBouncedMessagesFromAccount', 5, '0'); } // en el caso que el estado de envio esté activo, eso siginifica que hay una petición trabajando // cuando termine de hacerlo cambiaremos el estado de de comprobación de correos // para poder aceptar más peticiones, de esa manera nos aseguramos que no hayan // varias peticiones concurrentes comprobando mails. if ($emailStatusBouncedMessagesFromAccount->value_018 === '1') { // todo, si devuelvo un json, al ejecutar el cron manualmente, no da ningún error, habría que filtrarlo // return response()->json([ // 'success' => false, // 'message' => 'at this moment, there is a process running' // ]); exit; } else { Preference::setValue('emailStatusBouncedMessagesFromAccount', 5, '1'); } // una vez comprobado que no hay mas procesos en ejecución, comenzamos a trabajar $accounts = EmailAccount::all(); $patterns = EmailPattern::all(); foreach ($accounts as $account) { $imapService = new ImapServices(['host' => $account->incoming_server_013, 'port' => $account->incoming_port_013, 'user' => $account->incoming_user_013, 'password' => Crypt::decrypt($account->incoming_pass_013), 'ssl' => $account->incoming_secure_013 == 'ssl' ? true : false]); // get total messages $nEmails = $imapService->getServer()->numMessages(); // update n emails on account EmailAccount::builder()->where('id_013', $account->id_013)->update(['n_emails_013' => $nEmails]); // Get the last UID from email account if ($nEmails > 0) { $lastUidMessage = $imapService->getServer()->getUidByPositon($nEmails); // If the UID is grater than last UID manage, has to check account queue if ($lastUidMessage > $account->last_check_uid_013) { //obtenemos la posición del siguiente mensaje sin chequear $lastUidCheck = $account->last_check_uid_013; $position = 0; $i = 0; // cuando obtengamos la posición del mensaje, será mayor que 0 y saldrá del bucle // y si hemos hecho tantas o mas comprobaciones como emails hay, salimos del bucle // sentencia para asegurarnos que no entramos en bucle infinito while ($position < 1 && $i < $nEmails) { // intentamos averiguar la posición del siguiente mensaje al último comprobado $lastUidCheck++; // si este UID no existe devolverá posición 0 $position = $imapService->getServer()->getPositonByUid($lastUidCheck); // sumamos una vuelta para no entrar en bucle infinito $i++; } // llamamos a la funcion que compruebe los correos es esa cuenta Cron::checkBouncedMessagesFromAccount($imapService, $account, $patterns, $position - 1); // solo comprobamo una cuenta //break; } } // after check bounced messages or if there are not emails, close IMAP connection $imapService->getServer()->close(); // if is the last email account, we freed the proccess if ($accounts->last()->id_013 == $account->id_013) { Preference::setValue('emailStatusBouncedMessagesFromAccount', 5, '0'); } } }
public function editCustomRecord($parameters) { $parameters['emails'] = EmailAccount::all(); $parameters['forwards'] = json_encode($parameters['object']->getForwards); return $parameters; }