public function start() { if (!is_object($this->getTemplate())) { $this->setStatus('error-template'); return; } if (!is_object($this->getSender())) { $this->setStatus('error-sender'); return; } if (empty($this->_recipientgroups)) { $this->setStatus('error-recipients'); return; } // Never start if the newsletter is sending or completed if ($this->getStatus() == 'sending' || $this->getStatus() == 'completed') { return; } $this->generatePAuth(); Symphony::Database()->query("CREATE TABLE IF NOT EXISTS `tbl_tmp_email_newsletters_sent_" . $this->getId() . "` (\n `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n `email` varchar(255),\n `result` varchar(255),\n PRIMARY KEY (`id`),\n KEY `email` (`email`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"); Symphony::Database()->query('DELETE FROM `tbl_tmp_email_newsletters_sent_' . $this->getId() . '` WHERE `result` = \'idle\''); $this->setStatus('sending'); $author_id = 0; if (Symphony::Engine() instanceof Administration) { $author_id = Symphony::Author()->get('id'); } elseif (Symphony::Engine() instanceof Frontend && Symphony::ExtensionManager()->fetchStatus('members') == EXTENSION_ENABLED) { $Members = Symphony::ExtensionManager()->create('members'); $author_id = $Members->getMemberDriver()->getMemberID(); } Symphony::Database()->update(array('started_on' => date('Y-m-d H:i:s', time()), 'started_by' => $author_id), 'tbl_email_newsletters', 'id = ' . $this->getId()); EmailBackgroundProcess::spawnProcess($this->getId(), $this->getPAuth()); }
require_once DOCROOT . '/symphony/lib/boot/bundle.php'; //Inside bundle.php, the error_reporting is set again, but we don't want to be stopped by any other than fatal errors. error_reporting(0); require_once DOCROOT . '/symphony/lib/core/class.symphony.php'; require_once DOCROOT . '/symphony/lib/core/class.administration.php'; GenericErrorHandler::$enabled = false; // ENM Specific includes & defines define_safe('ENM_DIR', DOCROOT . '/extensions/email_newsletter_manager'); define_safe('ETM_DIR', DOCROOT . '/extensions/email_template_manager'); require_once ENM_DIR . '/lib/class.sendermanager.php'; require_once ENM_DIR . '/lib/class.recipientgroupmanager.php'; require_once ENM_DIR . '/lib/class.emailnewslettermanager.php'; require_once ENM_DIR . '/lib/class.emailbackgroundprocess.php'; // Needed to __construct() the Symphony class. // This in turn is needed to get the Symphony::Database() functions working. $thing = Administration::instance(); try { $newsletter = EmailNewsletterManager::create($newsletter_id); if (is_a($newsletter, 'EmailNewsletter')) { $newsletter->setPId(getmypid()); $sending_settings = $newsletter->getSender()->about(); if ($newsletter->sendBatch($process_auth) != 'completed') { time_sleep_until($start_time + $sending_settings['throttle-time']); EmailBackgroundProcess::spawnProcess($newsletter_id, $process_auth); } } else { throw new Exception('Newsletter with id: ' . $newsletter_id . ' not found.'); } } catch (Exception $e) { file_put_contents(DOCROOT . '/manifest/newsletter-log.txt', '[' . DateTimeObj::get('Y/m/d H:i:s') . '] newsletter-id: ' . $newsletter_id . ' - ' . $e->getMessage() . "\r\n", FILE_APPEND); }