/** * Load letter from DB, load SMTP settings * TODO: Move this to NewsletterModel or NewsletterModelEntity * * @param <string> $name - id of a letter * * @return object - letter * @since 1.0 */ public static function loadLetter($id = false) { $letter = JTable::getInstance('Newsletter', 'NewsletterTable'); $letter->load((int) $id); // If letter absent then fail. if (!$letter) { return false; } $letter = (object) $letter->getProperties(); $letter->params = (array) json_decode($letter->params); if (empty($letter->params['encoding'])) { $letter->params['encoding'] = 'utf-8'; } PlaceholderHelper::setPlaceholders($letter->params); $profileEntity = JModel::getInstance('Smtpprofile', 'NewsletterModelEntity'); $profileEntity->load((int) $letter->smtp_profile_id); $letter->smtp_profile = $profileEntity->toObject(); // Set data when using J! SMTP profile if ($letter->smtp_profile_id == NewsletterModelEntitySmtpprofile::JOOMLA_SMTP_ID) { if (!empty($letter->params['newsletter_from_email'])) { $letter->smtp_profile->from_email = $letter->params['newsletter_from_email']; } if (!empty($letter->params['newsletter_from_name'])) { $letter->smtp_profile->from_name = $letter->params['newsletter_from_name']; } if (!empty($letter->params['newsletter_to_email'])) { $letter->smtp_profile->reply_to_email = $letter->params['newsletter_to_email']; } if (!empty($letter->params['newsletter_to_name'])) { $letter->smtp_profile->reply_to_name = $letter->params['newsletter_to_name']; } } return $letter; }
/** * Set all data of the current subscriber as he has been logined in system * Don't trigger any plugins events * * @param int the subscriber id (not j! user id) * * @return boolean * @since 1.0 */ public static function emulateUser($params) { if (empty($params['email']) && empty($params['subscriber_id'])) { return false; } $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('*'); $query->from('#__newsletter_subscribers'); if (!empty($params['email'])) { $query->where('email="' . $params['email'] . '"'); } if (!empty($params['subscriber_id'])) { $query->where('subscriber_id="' . (int) $params['subscriber_id'] . '"'); } $db->setQuery($query); $subscriber = $db->loadObject(); $user = JUser::getInstance(); if (!empty($subscriber->user_id)) { // Get a database object $user->load($subscriber->user_id); } // bind data if (!empty($subscriber->subscriber_id)) { $user->set('subscriber_id', $subscriber->subscriber_id); $user->set('name', $subscriber->name); $user->set('email', $subscriber->email); $user->set('subscription_key', $subscriber->subscription_key); } // Mark the user as logged in $user->set('guest', 0); $user->set('isRoot', true); // Register the needed session variables $session = JFactory::getSession(); $session->set('user', $user); $session->set('registry', null); // fetch the dynamic data for placeholders PlaceholderHelper::setPlaceholders(array('username' => $user->name, 'useremail' => $user->email, 'userid' => !empty($subscriber->subscriber_id) ? $user->subscriber_id : null, 'subscription key' => !empty($user->subscription_key) ? $user->subscription_key : null)); return $user; }
/** * Load a template file * * @param string $template The name of the template * @param string $filename The actual filename * * @return string The contents of the template * @since 1.0 */ protected function _loadTemplate($id) { // Try to find the newsletter by id. // Supported both standard and custom $model = JModel::getInstance("Template", "NewsletterModel"); $template = $model->getTemplateBy($id, 'preserve positions!'); if (!$template) { $this->setError($model->getError()); return false; } $template->params = $this->_mapParams($template->params); PlaceholderHelper::setPlaceholders($template->params); return $template; }