public function catalogProductImportFinishBefore($observer) { $productIds = array(); $adapter = $observer->getEvent()->getAdapter(); $resource = Mage::getResourceModel('bubble_stockmovements/stock_movement'); if ($adapter instanceof Mage_Catalog_Model_Convert_Adapter_Product) { $productIds = $adapter->getAffectedEntityIds(); } else { Mage_ImportExport_Model_Import::getDataSourceModel()->getIterator()->rewind(); $skus = array(); while ($bunch = $adapter->getNextBunch()) { foreach ($bunch as $rowData) { if (null !== $rowData['sku']) { $skus[] = $rowData['sku']; } } } if (!empty($skus)) { $productIds = $resource->getProductsIdBySku($skus); } } if (!empty($productIds)) { $stock = Mage::getSingleton('cataloginventory/stock'); $stocks = Mage::getResourceModel('cataloginventory/stock')->getProductsStock($stock, $productIds); $stocksMovements = array(); $datetime = Varien_Date::formatDate(time()); foreach ($stocks as $stockData) { $stocksMovements[] = array('item_id' => $stockData['item_id'], 'user' => $this->_getUsername(), 'user_id' => $this->_getUserId(), 'qty' => $stockData['qty'], 'is_in_stock' => (int) $stockData['is_in_stock'], 'message' => 'Product import', 'created_at' => $datetime); } if (!empty($stocksMovements)) { $resource->insertStocksMovements($stocksMovements); } } }
/** * Apply filter by card active state (based on last usage date) * * @return CLS_Paypal_Model_Resource_Customerstored_Collection */ public function filterByActiveState() { $now = new Zend_Date(null); $now->addMonth(0 - CLS_Paypal_Model_Paypal_Config::STORED_CARD_TTL_MONTHS); $this->getSelect()->where('date >= ?', Varien_Date::formatDate($now, false)); return $this; }
public function catalogProductImportFinishBefore($observer) { $adapter = $observer->getEvent()->getAdapter(); Mage_ImportExport_Model_Import::getDataSourceModel()->getIterator()->rewind(); $model = Mage::getModel('catalog/product'); $skus = array(); while ($bunch = $adapter->getNextBunch()) { foreach ($bunch as $rowData) { if (null !== $rowData['sku']) { $skus[] = $rowData['sku']; } } } if (!empty($skus)) { $resource = Mage::getResourceModel('jr_stockhistory/stock_history'); $productIds = $resource->getProductsIdBySku($skus); if (!empty($productIds)) { $stock = Mage::getSingleton('cataloginventory/stock'); $stocks = Mage::getResourceModel('cataloginventory/stock')->getProductsStock($stock, $productIds); $stocksHistory = array(); $datetime = Varien_Date::formatDate(time()); foreach ($stocks as $stockData) { $stocksHistory[] = array('item_id' => $stockData['item_id'], 'user' => $this->_getUsername(), 'user_id' => $this->_getUserId(), 'qty' => $stockData['qty'], 'is_in_stock' => (int) $stockData['is_in_stock'], 'message' => 'Product import', 'created_at' => $datetime); } if (!empty($stocksHistory)) { $resource->insertStocksHistory($stocksHistory); } } } }
public function saveAction() { $installment = Mage::getModel('installment/master'); $id = $this->getRequest()->getParam('id'); if (!is_null($id)) { $installment->load($id); } try { $authPaid = $installment->getInstallmentMasterInstallmentAuthorized() || $installment->getInstallmentMasterInstallmentPaid(); if ($authPaid && $this->getRequest()->getParam('suspend_installment')) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('installment')->__('The installment has been authorized and/or paid and can not be split.')); $order = Mage::getModel('sales/order')->loadByIncrementId($installment->getOrderId()); $this->getResponse()->setRedirect($this->getUrl('*/sales_order/view', array('order_id' => $order->getId(), 'active_tab' => 'order_installment_payment'))); } $reason = $this->getRequest()->getParam('suspend_installment') ? $this->getRequest()->getParam('suspended_reason') : ''; $installment->setInstallmentMasterAmountDue($this->getRequest()->getParam('amount_due'))->setInstallmentMasterAmountDueDate(Varien_Date::formatDate($this->getRequest()->getParam('amount_due_date')))->setInstallmentMasterSuspendInstallment($this->getRequest()->getParam('suspend_installment'))->setInstallmentMasterSuspendedReason($reason)->save(); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('installment')->__('The installment payment has been saved.')); $id = Mage::getModel('sales/order')->loadByIncrementId($this->getRequest()->getParam('order_id'))->getId(); $this->getResponse()->setRedirect($this->getUrl('*/sales_order/view', array('order_id' => $id, 'active_tab' => 'order_installment_payment'))); return; } catch (Exception $e) { Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); Mage::getSingleton('adminhtml/session')->setInstallmentPaymentData($installment->getData()); $this->getResponse()->setRedirect($this->getUrl('*/sales_order_payment/edit', array('id' => $id))); return; } }
/** * Send all messages in a queue * * @return Mage_Core_Model_Email_Queue */ public function send() { /** @var $collection Mage_Core_Model_Resource_Email_Queue_Collection */ $collection = Mage::getModel('core/email_queue')->getCollection()->addOnlyForSendingFilter()->setPageSize(self::MESSAGES_LIMIT_PER_CRON_RUN)->setCurPage(1)->load(); ini_set('SMTP', Mage::getStoreConfig('system/smtp/host')); ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port')); /** @var $message Mage_Core_Model_Email_Queue */ foreach ($collection as $message) { if ($message->getId()) { $parameters = new Varien_Object($message->getMessageParameters()); if ($parameters->getReturnPathEmail() !== null) { $mailTransport = new Zend_Mail_Transport_Sendmail("-f" . $parameters->getReturnPathEmail()); Zend_Mail::setDefaultTransport($mailTransport); } $mailer = new Zend_Mail('utf-8'); foreach ($message->getRecipients() as $recipient) { list($email, $name, $type) = $recipient; switch ($type) { case self::EMAIL_TYPE_BCC: $mailer->addBcc($email, '=?utf-8?B?' . base64_encode($name) . '?='); break; case self::EMAIL_TYPE_TO: case self::EMAIL_TYPE_CC: default: $mailer->addTo($email, '=?utf-8?B?' . base64_encode($name) . '?='); break; } } if ($parameters->getIsPlain()) { $mailer->setBodyText($message->getMessageBody()); } else { $mailer->setBodyHTML($message->getMessageBody()); } $mailer->setSubject('=?utf-8?B?' . base64_encode($parameters->getSubject()) . '?='); $mailer->setFrom($parameters->getFromEmail(), $parameters->getFromName()); if ($parameters->getReplyTo() !== null) { $mailer->setReplyTo($parameters->getReplyTo()); } if ($parameters->getReturnTo() !== null) { $mailer->setReturnPath($parameters->getReturnTo()); } try { //$mailer->send(); $mailer->send(Mage::helper('smtp')->getTransport()); unset($mailer); $message->setProcessedAt(Varien_Date::formatDate(true)); $message->save(); } catch (Exception $e) { unset($mailer); $oldDevMode = Mage::getIsDeveloperMode(); Mage::setIsDeveloperMode(true); Mage::logException($e); Mage::setIsDeveloperMode($oldDevMode); return false; } } } return $this; }
/** * Clean the log table * * @param int $keepDays Days to keep * @return int The number of deleted rows */ public function cleanLogs($keepDays) { if (!$keepDays) { return 0; } $time = Mage::getModel('core/date')->gmtTimestamp() - 60 * 60 * 24 * $keepDays; $delete = Varien_Date::formatDate($time, false); return $this->_getWriteAdapter()->delete($this->getMainTable(), $this->_getWriteAdapter()->quoteInto('timestamp < ?', $delete)); }
/** * Delete old entries * * @param int $minutes * @return int */ public function deleteOldEntries($minutes) { if ($minutes > 0) { $adapter = $this->_getWriteAdapter(); return $adapter->delete($this->getMainTable(), $adapter->quoteInto('type = "' . Mage_Oauth_Model_Token::TYPE_REQUEST . '" AND created_at <= ?', Varien_Date::formatDate(time() - $minutes * 60))); } else { return 0; } }
/** * Operate with order using information from silent post * * @param Mage_Sales_Model_Order $order */ protected function _processOrder(Mage_Sales_Model_Order $order) { $response = $this->getResponse(); $payment = $order->getPayment(); $payment->setTransactionId($response->getPnref())->setIsTransactionClosed(0); $canSendNewOrderEmail = true; if ($response->getResult() == self::RESPONSE_CODE_FRAUDSERVICE_FILTER || $response->getResult() == self::RESPONSE_CODE_DECLINED_BY_FILTER) { $canSendNewOrderEmail = false; $fraudMessage = $this->_getFraudMessage() ? $response->getFraudMessage() : $response->getRespmsg(); $payment->setIsTransactionPending(true)->setIsFraudDetected(true)->setAdditionalInformation('paypal_fraud_filters', $fraudMessage); } if ($response->getAvsdata() && strstr(substr($response->getAvsdata(), 0, 2), 'N')) { $payment->setAdditionalInformation('paypal_avs_code', substr($response->getAvsdata(), 0, 2)); } if ($response->getCvv2match() && $response->getCvv2match() != 'Y') { $payment->setAdditionalInformation('paypal_cvv2_match', $response->getCvv2match()); } switch ($response->getType()) { case self::TRXTYPE_AUTH_ONLY: $payment->registerAuthorizationNotification($payment->getBaseAmountAuthorized()); break; case self::TRXTYPE_SALE: $payment->registerCaptureNotification($payment->getBaseAmountAuthorized()); break; } $order->save(); $customerId = $order->getCustomerId(); if ($response->getResult() == self::RESPONSE_CODE_APPROVED && $response->getMethod() == 'CC' && $customerId && $payment->hasAdditionalInformation('cc_save_future') && $payment->getAdditionalInformation('cc_save_future') == 'Y') { // Obtain CC type $ccType = 'OT'; $responseCcType = $response->getCardtype(); if (!is_null($responseCcType)) { $payflowResponseCcTypesMap = array(0 => 'VI', 1 => 'MC', 2 => 'DI', 3 => 'AE', 4 => 'OT', 5 => 'JCB'); if (isset($payflowResponseCcTypesMap[$responseCcType])) { $ccType = $payflowResponseCcTypesMap[$responseCcType]; } } $ccExpMonth = $response->getExpdate() ? substr($response->getExpdate(), 0, 2) : ''; if ($ccExpMonth[0] == '0') { $ccExpMonth = $ccExpMonth[1]; } // Create new stored card $customerstoredModel = Mage::getModel('cls_paypal/customerstored'); $customerstoredModel->setData(array('transaction_id' => $response->getPnref(), 'customer_id' => $customerId, 'cc_type' => $ccType, 'cc_last4' => $response->getAcct() ? substr($response->getAcct(), -4) : '', 'cc_exp_month' => $ccExpMonth, 'cc_exp_year' => $response->getExpdate() ? '20' . substr($response->getExpdate(), 2) : '', 'date' => Varien_Date::formatDate(true, true), 'payment_method' => $payment->getMethod())); $customerstoredModel->save(); } try { if ($canSendNewOrderEmail) { $order->sendNewOrderEmail(); } Mage::getModel('sales/quote')->load($order->getQuoteId())->setIsActive(false)->save(); } catch (Exception $e) { Mage::throwException(Mage::helper('paypal')->__('Can not send new order email.')); } }
/** * Filter items that have not been changed since * * @param string|DateTime|Zend_Date $since * @return $this */ public function addChangedSinceFilter($since) { if ($since instanceof DateTime) { $since = $since->format('Y-m-d H:i:s'); } if ($since instanceof Zend_Date) { $since = Varien_Date::formatDate($since); } $this->addFieldToFilter('updated_at', array('gt' => $since)); return $this; }
/** * Send all queued Messages */ public function sendQueuedMessages() { $collection = Mage::getModel('mhauri_hipchat/queue')->getCollection()->addOnlyForSendingFilter()->setPageSize(self::MESSAGES_LIMIT_PER_CRON_RUN)->setCurPage(1)->load(); foreach ($collection as $message) { try { $this->sendMessage(unserialize($message->getMessageParams())); $message->setProcessedAt(Varien_Date::formatDate(true)); $message->save(); } catch (Exception $e) { Mage::log($e->getMessage(), Zend_Log::ERR, Mhauri_HipChat_Model_Abstract::LOG_FILE); } sleep(1); } }
/** * Load custom design settings for specified store and date * * @param string $storeId * @param string|null $date * @return Mage_Core_Model_Design */ public function loadChange($storeId, $date = null) { if (is_null($date)) { $date = Varien_Date::formatDate(Mage::app()->getLocale()->storeTimeStamp($storeId), false); } $changeCacheId = 'design_change_' . md5($storeId . $date); $result = Mage::app()->loadCache($changeCacheId); if ($result === false) { $result = $this->getResource()->loadChange($storeId, $date); if (!$result) { $result = array(); } Mage::app()->saveCache(serialize($result), $changeCacheId, array(self::CACHE_TAG), 86400); } else { $result = unserialize($result); } if ($result) { $this->setData($result); } return $this; }
/** * Add products to changelog with price which depends on date * * @return void */ public function refreshSpecialPrices() { $connection = $this->_connection; foreach (Mage::app()->getStores(true) as $store) { $timestamp = Mage::app()->getLocale()->storeTimeStamp($store); $currDate = Varien_Date::formatDate($timestamp, false); $currDateExpr = $connection->quote($currDate); // timestamp is locale based if (date(Zend_Date::HOUR_SHORT, $timestamp) == '00') { $format = '%Y-%m-%d %H:%i:%s'; $this->_refreshSpecialPriceByStore($store->getId(), 'special_from_date', $connection->getDateFormatSql($currDateExpr, $format)); $dateTo = $connection->getDateAddSql($currDateExpr, -1, Varien_Db_Adapter_Interface::INTERVAL_DAY); $this->_refreshSpecialPriceByStore($store->getId(), 'special_to_date', $connection->getDateFormatSql($dateTo, $format)); } } }
/** * @magentoDbIsolation enabled * @magentoAppIsolation enabled * @magentoConfigFixture default/admin/emails/password_reset_link_expiration_period 10 */ public function testIsResetPasswordLinkTokenExpired() { $this->_model->loadByUsername(Magento_Test_Bootstrap::ADMIN_NAME); $this->assertTrue($this->_model->isResetPasswordLinkTokenExpired()); $this->_model->changeResetPasswordLinkToken('test'); $this->_model->save(); $this->_model->loadByUsername(Magento_Test_Bootstrap::ADMIN_NAME); $this->assertFalse($this->_model->isResetPasswordLinkTokenExpired()); $this->_model->setRpTokenCreatedAt(Varien_Date::formatDate(time() - 60 * 60 * 24 * 10 + 10)); $this->assertFalse($this->_model->isResetPasswordLinkTokenExpired()); $this->_model->setRpTokenCreatedAt(Varien_Date::formatDate(time() - 60 * 60 * 24 * 10 - 10)); $this->assertTrue($this->_model->isResetPasswordLinkTokenExpired()); }
/** * @dataProvider formatDateDataProvider */ public function testFormatDate($date, $includeTime, $expectedResult) { $actual = Varien_Date::formatDate($date, $includeTime); $this->assertEquals($expectedResult, $actual); }
/** * Format date to internal format * * @param string|Zend_Date $date * @param bool $includeTime * * @return string */ protected function _formatDate($date, $includeTime = true) { return Varien_Date::formatDate($date, $includeTime); }
/** * Format date using current locale options * * @param timestamp|int * @param string $format * @param bool $showTime * @return string */ public static function formatDate($timestamp = null, $format = 'short', $showTime = false) { if (empty($timestamp)) { return ''; } $date = Mage::app()->getLocale()->date($timestamp, null, null); return Varien_Date::formatDate($date, $format, $showTime); }
/** * Format Date to internal database date format * * @param int|string|Zend_Date $date * @param boolean $includeTime * @return Zend_Db_Expr */ public function formatDate($date, $includeTime = true) { $date = Varien_Date::formatDate($date, $includeTime); if ($date === null) { return new Zend_Db_Expr('NULL'); } return new Zend_Db_Expr($this->quote($date)); }
/** * @return null|string current date */ public function getDate() { return Varien_Date::formatDate(time()); }
/** * Format date to internal format * * @param string|Zend_Date $date Date to format * @return string Formatted date */ public function formatDate($date) { return Varien_Date::formatDate($date, false); }
/** * Retrieves the start and end date for the catalog rule that applies to the product. * If there's no rule, or if the rule doesn't have dates, it defaults 365 days * * @see self::hasPriceByCatalogRules() - you should first check if the product has catalog rules * * @param Mage_Catalog_Model_Product $product * @param null|string|Zend_Date $date day to use when looking up prices and start of interval, defaults to today * @return false|Zend_Date[] 'start','end' */ protected function _getCatalogRuleEffectiveDates($product, $date = null) { $read = $this->getTools()->getConnRead(); if ($date == null) { $date = Mage::app()->getLocale()->storeTimeStamp($this->getData('store_id')); } $date = new Zend_Date($date); $wId = Mage::app()->getStore($this->getData('store_id'))->getWebsiteId(); $select = $read->select()->from(Mage::getResourceModel('catalogrule/rule')->getTable('catalogrule/rule_product_price'), array('latest_start_date', 'earliest_end_date'))->where('rule_date=?', Varien_Date::formatDate($date, false))->where('website_id=?', $wId)->where('product_id=?', $product->getId())->where('rule_price=?', $this->getPriceByCatalogRules($product))->where('customer_group_id=?', Mage_Customer_Model_Group::NOT_LOGGED_IN_ID); $rule = $read->fetchRow($select); $dates = array(); if ($rule['latest_start_date']) { $dates['start'] = new Zend_Date($rule['latest_start_date'], 'yyyy-MM-dd'); } else { $dates['start'] = clone $date; $dates['start']->setTime('00:00:00', 'HH:mm:ss'); } if ($rule['earliest_end_date']) { $dates['end'] = new Zend_Date($rule['earliest_end_date'], 'yyyy-MM-dd'); } else { $dates['end'] = new Zend_Date(null, null, Mage::app()->getLocale()->getDefaultLocale()); $timezone = Mage::app()->getStore($this->getStoreId())->getConfig(Mage_Core_Model_Locale::XML_PATH_DEFAULT_TIMEZONE); if ($timezone) { $dates['end']->setTimezone($timezone); } $dates['end']->setDate($date->toString('yyyy-MM-dd'), 'yyyy-MM-dd'); $dates['end']->setTime('23:59:59', 'HH:mm:ss'); $dates['end']->add(365, Zend_Date::DAY); } return $dates; }
/** * Save stored card details * * @param Varien_Event_Observer $observer * @return void */ public function checkoutSubmitAllAfter(Varien_Event_Observer $observer) { /** @var $order Mage_Sales_Model_Order */ $order = $observer->getOrder(); $customerId = $order->getData('customer_id'); if (!$customerId) { // Save transaction details for registered customers only return; } $payment = $order->getPayment(); $paymentMethod = $payment->getMethod(); if (isset($paymentMethod) && $payment->getData('transaction_id')) { /** @var $helper CLS_Paypal_Helper_Data */ $helper = Mage::helper('cls_paypal'); if ($helper->isSdkPaymentMethod($paymentMethod)) { if ($payment->hasAdditionalInformation('cc_save_future') && $payment->getAdditionalInformation('cc_save_future') == 'Y') { // Create new stored card $customerstoredModel = Mage::getModel('cls_paypal/customerstored'); $customerstoredModel->setData(array('transaction_id' => $payment->getData('transaction_id'), 'customer_id' => $customerId, 'cc_type' => $payment->getData('cc_type'), 'cc_last4' => $payment->getData('cc_last4'), 'cc_exp_month' => $payment->getData('cc_exp_month'), 'cc_exp_year' => $payment->getData('cc_exp_year'), 'date' => Varien_Date::formatDate(true, true), 'payment_method' => $paymentMethod)); $customerstoredModel->save(); } } elseif ($helper->isCustomerstoredPaymentMethod($paymentMethod)) { // Update existing stored card $customerstoredModel = Mage::getModel('cls_paypal/customerstored'); if ($payment->hasAdditionalInformation('stored_card_id')) { // Reference payment using existing customer's stored card $storedCardId = $payment->getAdditionalInformation('stored_card_id'); $customerstoredModel->load($storedCardId); if ($customerstoredModel->getId()) { // Update stored card record with a new transaction ID $customerstoredModel->setData('transaction_id', $payment->getData('transaction_id'))->setData('date', Varien_Date::formatDate(true, false)); $customerstoredModel->save(); } } } } }
/** * Add information about product ids to visitor/customer * * * @param Mage_Reports_Model_Product_Index_Abstract $object * @param array $productIds * @return Mage_Reports_Model_Resource_Product_Index_Abstract */ public function registerIds(Varien_Object $object, $productIds) { $row = array('visitor_id' => $object->getVisitorId(), 'customer_id' => $object->getCustomerId(), 'store_id' => $object->getStoreId()); $addedAt = Varien_Date::toTimestamp(true); $data = array(); foreach ($productIds as $productId) { $productId = (int) $productId; if ($productId) { $row['product_id'] = $productId; $row['added_at'] = Varien_Date::formatDate($addedAt); $data[] = $row; } $addedAt -= $addedAt > 0 ? 1 : 0; } $matchFields = array('product_id', 'store_id'); foreach ($data as $row) { Mage::getResourceHelper('reports')->mergeVisitorProductIndex($this->getMainTable(), $row, $matchFields); } return $this; }
/** * Convert internal date to UNIX timestamp * * @param string $str * @return int */ public function mktime($str) { return Varien_Date::formatDate($str); }
/** * Format date to internal format * * @param string|Zend_Date $date * @param bool $includeTime * @return string */ public function formatDate($date, $includeTime = true) { return Varien_Date::formatDate($date, $includeTime); }
/** * Prepare website current dates table * * @return Enterprise_Catalog_Model_Index_Action_Product_Price_Abstract */ protected function _prepareWebsiteDateTable() { $write = $this->_connection; $baseCurrency = Mage::app()->getBaseCurrencyCode(); $select = $write->select()->from(array('cw' => $this->_getTable('core/website')), array('website_id'))->join(array('csg' => $this->_getTable('core/store_group')), 'cw.default_group_id = csg.group_id', array('store_id' => 'default_store_id'))->where('cw.website_id != 0'); $data = array(); foreach ($write->fetchAll($select) as $item) { /** @var $website Mage_Core_Model_Website */ $website = Mage::app()->getWebsite($item['website_id']); if ($website->getBaseCurrencyCode() != $baseCurrency) { $rate = Mage::getModel('directory/currency')->load($baseCurrency)->getRate($website->getBaseCurrencyCode()); if (!$rate) { $rate = 1; } } else { $rate = 1; } /** @var $store Mage_Core_Model_Store */ $store = Mage::app()->getStore($item['store_id']); if ($store) { $timestamp = Mage::app()->getLocale()->storeTimeStamp($store); $data[] = array('website_id' => $website->getId(), 'website_date' => Varien_Date::formatDate($timestamp, false), 'rate' => $rate); } } $table = $this->_getTable('catalog/product_index_website'); $this->_emptyTable($table); if ($data) { $write->insertMultiple($table, $data); } return $this; }
public function testAddUpdatedDaysBeforeFilter() { $select = $this->getMock('Zend_Db_Select', array(), array(), '', false); $select->expects($this->any())->method('where')->with(self::TEST_WHERE_CONDITION); $collection = $this->_getCollection($select); /** @var $connection PHPUnit_Framework_MockObject_MockObject */ $connection = $collection->getResource()->getReadConnection(); $connection->expects($this->any())->method('prepareSqlCondition')->will($this->returnCallback(array($this, 'verifyPrepareSqlCondition'))); // expected date without time $datetime = new DateTime(); $storeInterval = new DateInterval('P' . self::TEST_DAYS_BEFORE . 'D'); $datetime->sub($storeInterval); $expectedDate = Varien_Date::formatDate($datetime->getTimestamp()); $this->_expectedConditions['data'][1][1]['lt'] = $expectedDate; $collection->addUpdatedDaysBeforeFilter(self::TEST_DAYS_BEFORE); }
public function send() { $_helper = Mage::helper('smtppro'); // if we have a valid queue page size override, use it if (is_numeric($_helper->getQueuePerCron()) && intval($_helper->getQueuePerCron()) > 0) { $percron = $_helper->getQueuePerCron(); $_helper->log('SMTP Pro using queue override page size: ' . $percron); } else { $percron = self::MESSAGES_LIMIT_PER_CRON_RUN; } $pauseMicros = 0; // if we have a valid pause, use it if (is_numeric($_helper->getQueuePause()) && intval($_helper->getQueuePause()) > 0) { $pauseMicros = $_helper->getQueuePause() * 1000; // * 1000 for millis => micros $_helper->log('SMTP Pro using queue override pause: ' . $pauseMicros); } /** @var $collection Mage_Core_Model_Resource_Email_Queue_Collection */ $collection = Mage::getModel('core/email_queue')->getCollection()->addOnlyForSendingFilter()->setPageSize($percron)->setCurPage(1)->load(); ini_set('SMTP', Mage::getStoreConfig('system/smtp/host')); ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port')); /** @var $message Mage_Core_Model_Email_Queue */ foreach ($collection as $message) { if ($message->getId()) { $parameters = new Varien_Object($message->getMessageParameters()); if ($parameters->getReturnPathEmail() !== null) { $mailTransport = new Zend_Mail_Transport_Sendmail("-f" . $parameters->getReturnPathEmail()); Zend_Mail::setDefaultTransport($mailTransport); } $mailer = new Zend_Mail('utf-8'); foreach ($message->getRecipients() as $recipient) { list($email, $name, $type) = $recipient; switch ($type) { case self::EMAIL_TYPE_BCC: $mailer->addBcc($email, '=?utf-8?B?' . base64_encode($name) . '?='); break; case self::EMAIL_TYPE_TO: case self::EMAIL_TYPE_CC: default: $mailer->addTo($email, '=?utf-8?B?' . base64_encode($name) . '?='); break; } } if ($parameters->getIsPlain()) { $mailer->setBodyText($message->getMessageBody()); } else { $mailer->setBodyHTML($message->getMessageBody()); } $mailer->setSubject('=?utf-8?B?' . base64_encode($parameters->getSubject()) . '?='); $mailer->setFrom($parameters->getFromEmail(), $parameters->getFromName()); if ($parameters->getReplyTo() !== null) { $mailer->setReplyTo($parameters->getReplyTo()); } if ($parameters->getReturnTo() !== null) { $mailer->setReturnPath($parameters->getReturnTo()); } foreach (Mage::app()->getStores() as $store) { if ($parameters->getFromEmail() == Mage::getStoreConfig('trans_email/ident_sales/email', $store->getStoreId())) { $storeid = $store->getStoreId(); } } try { $transport = new Varien_Object(); Mage::dispatchEvent('aschroder_smtppro_queue_before_send', array('mail' => $mailer, 'transport' => $transport, 'message' => $message, 'store_id' => isset($storeid) ? $storeid : null)); if ($transport->getTransport()) { // if set by an observer, use it $mailer->send($transport->getTransport()); } else { $mailer->send(); } unset($mailer); $message->setProcessedAt(Varien_Date::formatDate(true)); $message->save(); // loop each email to fire an after send event foreach ($message->getRecipients() as $recipient) { list($email, $name, $type) = $recipient; Mage::dispatchEvent('aschroder_smtppro_after_send', array('to' => $email, 'template' => "queued email", 'subject' => $parameters->getSubject(), 'html' => !$parameters->getIsPlain(), 'email_body' => $message->getMessageBody())); } } catch (Exception $e) { unset($mailer); $oldDevMode = Mage::getIsDeveloperMode(); Mage::setIsDeveloperMode(true); Mage::logException($e); Mage::setIsDeveloperMode($oldDevMode); return false; } // after each valid message has been sent - pause if required if ($pauseMicros > 0) { $_helper->log('SMTP Pro pausing.'); usleep($pauseMicros); } } } return $this; }