/** * Returns an singleton instance of this class * * @param object $config * @param object $args * @return */ public static function getInstance($config, $args) { if (self::$instance == null) { self::$instance = new EmailAccountsManager($config, $args); } return self::$instance; }
public function load() { $newslettersManager = NewslettersManager::getInstance($this->config, $this->args); $selected_email_accounts_ids = $_REQUEST['selected_email_accounts_ids']; $emailAccountsManager = EmailAccountsManager::getInstance($this->config, $this->args); $allEmailAccounts = $emailAccountsManager->selectAll(); $emailAccountsNameIdMap = array(); foreach ($allEmailAccounts as $dto) { $emailAccountsNameIdMap[$dto->getid()] = $dto->getLogin(); } $this->addParam('email_accounts_logins', $emailAccountsNameIdMap); $this->addParam('selected_email_accounts_ids', explode(',', $selected_email_accounts_ids)); $include_all_active_users = $_REQUEST['include_all_active_users']; $this->addParam('include_all_active_users', $include_all_active_users); }
public function checkPriceEmailsAndAddAlertsToOnlineAdmins() { $emailServersManager = new EmailAccountsManager(null, null); $infoEmailDto = $emailServersManager->selectByPK('info'); $login = $infoEmailDto->getLogin(); $pass = $infoEmailDto->getPass(); $imapInbox = $infoEmailDto->getImapInbox(); $connection = @imap_open($imapInbox, $login, $pass); if (!$connection) { return imap_last_error(); } $emailsIds = imap_search($connection, 'UNSEEN'); if (empty($emailsIds) || !is_array($emailsIds)) { return "No unread emails"; } rsort($emailsIds); $attachments = array(); foreach ($emailsIds as $emailId) { //$overview = imap_fetch_overview($connection, $emailId, 0); $structure = imap_fetchstructure($connection, $emailId); $header = imap_headerinfo($connection, $emailId); $fromEmails = array(); if (!empty($header->from)) { foreach ($header->from as $from) { $fromEmails[] = $from->mailbox . '@' . $from->host; } } list($companyId, $companyName, $companyType) = $this->determineCompanyIdFromPriceEmail($fromEmails); if ($companyId == false) { continue; } if (isset($structure->parts) && count($structure->parts)) { for ($i = 0; $i < count($structure->parts); $i++) { $attachments[$emailId][$i] = array('is_attachment' => false, 'filename' => '', 'name' => '', 'attachment' => ''); if ($structure->parts[$i]->ifdparameters) { foreach ($structure->parts[$i]->dparameters as $object) { if (strtolower($object->attribute) == 'filename') { $attachments[$emailId][$i]['is_attachment'] = true; $attachments[$emailId][$i]['filename'] = $object->value; } } } if ($structure->parts[$i]->ifparameters) { foreach ($structure->parts[$i]->parameters as $object) { if (strtolower($object->attribute) == 'name') { $attachments[$emailId][$i]['is_attachment'] = true; $attachments[$emailId][$i]['name'] = $object->value; } } } if ($attachments[$emailId][$i]['is_attachment']) { $attachments[$emailId][$i]['attachment'] = imap_fetchbody($connection, $emailId, $i + 1, FT_UID | FT_PEEK); if ($structure->parts[$i]->encoding == 3) { $attachments[$emailId][$i]['attachment'] = base64_decode($attachments[$emailId][$i]['attachment']); } elseif ($structure->parts[$i]->encoding == 4) { $attachments[$emailId][$i]['attachment'] = quoted_printable_decode($attachments[$emailId][$i]['attachment']); } } } } /* iterate through each attachment and save it */ foreach ($attachments[$emailId] as $attachment) { if ($attachment['is_attachment'] == 1) { $filename = $attachment['name']; if (empty($filename)) { $filename = $attachment['filename']; } if (strpos($filename, '.xls') !== false || strpos($filename, '.pdf') !== false) { $onlineAdminsEmails = $this->getOnlineAdminsEmails(); if (!empty($onlineAdminsEmails)) { $customerAlertsManager = CustomerAlertsManager::getInstance(null, null); foreach ($onlineAdminsEmails as $adminEmail) { $customerAlertsManager->addNewEmailFromCompanyAlert($adminEmail, $companyName); } } break; } /* $filename = $attachment['name']; if (empty($filename)) $filename = $attachment['filename']; if (empty($filename)) $filename = time() . ".dat"; $fp = fopen($emailId . "-" . $filename, "w+"); fwrite($fp, $attachment['attachment']); fclose($fp); */ } } } return true; }
private function emailOrderDetails($orderId) { $emailSenderManager = new EmailSenderManager('gmail'); $customer = $this->getCustomer(); $userManager = UserManager::getInstance($this->config, $this->args); $customerEmail = $userManager->getRealEmailAddressByUserDto($customer); $emailAccountsManager = EmailAccountsManager::getInstance($this->config, $this->args); $infoEmailAddress = $emailAccountsManager->getEmailAddressById('info'); $recipients = array($customerEmail, $infoEmailAddress); $lname = $customer->getLastName(); $userName = $customer->getName(); if (isset($lname)) { $userName .= ' ' . $lname; } $orderJoinedDetailsDtos = $this->ordersManager->getOrderJoinedWithDetails($orderId); $goupedOrderJoinedDetailsDtos = $this->groupBundlesInOrderJoinedDetailsDtos($orderJoinedDetailsDtos); $paymentType = $orderJoinedDetailsDtos[0]->getPaymentType(); $payment_option_values = explode(',', $this->getCmsVar('payment_option_values')); $payment_options_display_names_ids = explode(',', $this->getCmsVar('payment_options_display_names_ids')); $index = array_search($paymentType, $payment_option_values); $paymentTypeDisplayNameId = $payment_options_display_names_ids[$index]; $subject = $this->getPhrase(299); if ($paymentType == 'credit') { $template = "customer_credit_order"; } else { $template = "customer_cash_order"; } $params = array("user_name" => $userName, "dtos" => $goupedOrderJoinedDetailsDtos, "itemManager" => $this->itemManager, "support_phone" => $this->getCmsVar('pcstore_support_phone_number'), 'paymentTypeDisplayNameId' => $paymentTypeDisplayNameId); if ($paymentType == 'credit') { $creditSuppliersManager = CreditSuppliersManager::getInstance($this->config, $this->args); $csid = $orderJoinedDetailsDtos[0]->getCreditOrdersCreditSupplierId(); $creditSupplierDto = $creditSuppliersManager->selectByPK($csid); $commission = $creditSupplierDto->getCommission(); $grandTotalAMD = intval($orderJoinedDetailsDtos[0]->getOrderTotalAmd()); $grandTotalAmdWithCommission = intval($grandTotalAMD / (1 - $commission / 100)); $params['grandTotalAmdWithCommission'] = $grandTotalAmdWithCommission; } $emailSenderManager->sendEmail('orders', $recipients, $subject, $template, $params, '', '', true, false); }
/** * Initializes DB mappers * * @param object $config * @param object $args * @return */ function __construct($server) { $this->sentEmailsManager = SentEmailsManager::getInstance(null, null); $this->emailAccountsManager = EmailAccountsManager::getInstance(null, null); $this->initPHPMailer($server); }