File Manager

Current Directory: /home/astoriaah/www/old15/components/com_foxcontact/helpers
Viewing File: /home/astoriaah/www/old15/components/com_foxcontact/helpers/fnewsletter.php
<?php defined("_JEXEC") or die(file_get_contents("index.html")); // Program: Fox Contact for Joomla // Copyright (C): 2011 Demis Palma // Documentation: http://www.fox.ra.it/forum/2-documentation.html // License: Distributed under the terms of the GNU General Public License GNU/GPL v3 http://www.gnu.org/licenses/gpl-3.0.html $inc_dir = realpath(dirname(__FILE__)); require_once($inc_dir . '/fdatapump.php'); require_once($inc_dir . '/flogger.php'); jimport('joomla.mail.helper'); defined("DEFAULT_CHECKBOXMAP") or define("DEFAULT_CHECKBOXMAP", "hidden|hidden"); class FNewsletter extends FDataPump { const master = 0; const lists = 1; protected $FieldsBuilder; protected $lists; protected $logger; protected $enabled; protected $prefix; public function __construct(&$params, FoxMessageBoard &$messageboard, &$fieldsbuilder) { parent::__construct($params, $messageboard); $this->FieldsBuilder = $fieldsbuilder; $this->logger = new FLogger(); $this->load_newsletter_config(); $this->load_newsletter_lists(); } protected function LoadFields() { } public function Show() { // Newsletter component disabled or not found. Aborting. if (!$this->enabled) return ""; $result = ""; // Some friendly aliases $post = isset($_POST[$this->GetId()]); // Checkboxes selected by user or hidden and enabled fields $values = $this->JInput->post->get($this->prefix . "_subscribe", array(), "array"); // Checkbox drawing behaviour $checkbox_map = explode("|", $this->Params->get($this->prefix . "_checkboxes", DEFAULT_CHECKBOXMAP)); // Parameter automatically check the checkboxes $autocheck = $this->Params->get($this->prefix . "_auto_checked", 0); // Draw the cumulative field $field = array(); // Standard attributes $field["value"] = 1; $field["caption"] = JText::_('COM_FOXCONTACT_ALL_NEWSLETTERS'); $field["PostName"] = $this->prefix . "_subscribe_cumulative"; // checked status $value = $this->JInput->post->get($this->prefix . "_subscribe_cumulative", NULL, "int"); $field["checked"] = $post && $value || !$post && $autocheck; // "visible" attribute $field["visible"] = $checkbox_map[FNewsletter::master]; // Draw the global field $result .= $this->{$field["visible"]}($field); // Draw each field foreach ($this->lists as $list) { $field = array(); // Standard attributes $field["value"] = $list["id"]; $field["caption"] = $list["name"]; $field["PostName"] = $this->prefix . "_subscribe[" . $list["id"] . "]"; // checked status $value = @$values[$list["id"]]; $field["checked"] = $post && $value || !$post && $autocheck; // "visible" attribute $field["visible"] = $list["visible"] ? $checkbox_map[FNewsletter::lists] : "hidden"; // Draw the field $result .= $this->{$field["visible"]}($field); } // Display checkboxes return $result; } public function Process() { // Disabled in form configuration. Aborting. if (!$this->enabled) return true; // Trig the contact plugins to integrate with other applications $contact = new stdClass(); // We can't fill this data, but plugins may expect this parameter to be a valid object $data = array(); $data["contact_name"] = isset($this->FieldsBuilder->Fields['sender0']) ? $this->FieldsBuilder->Fields['sender0']['Value'] : ""; $data["contact_email"] = empty($this->FieldsBuilder->Fields['sender1']['Value']) ? NULL : JMailHelper::cleanAddress($this->FieldsBuilder->Fields['sender1']['Value']); $data["contact_subject"] = $this->Params->get("email_subject", ""); $data["contact_message"] = isset($this->FieldsBuilder->Fields['textarea0']) ? $this->FieldsBuilder->Fields['textarea0']['Value'] : ""; JPluginHelper::importPlugin("contact"); JDispatcher::getInstance()->trigger("onSubmitContact", array(&$contact, &$data)); return true; } protected function load_newsletter_config() { return $this->enabled = (int)$this->Params->get("othernewsletters", 1); } protected function load_newsletter_lists() { $this->lists = array(); } protected function extension_exists($extension) { $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select($db->quoteName("extension_id")); $query->from($db->quoteName("#__extensions")); $query->where($db->quoteName("name") . " = " . $db->quote($extension)); $db->setQuery($query); return (bool)$db->loadResult(); } protected function checkbox($field) { // Fixes che "checked" value suitable for html output $field["checked"] = (bool)$field["checked"] ? 'checked=""' : ""; $this->CreateSpacerLabel(); $result = '<div class="control-group">' . $this->LabelHtmlCode . '<div class="controls">' . '<label class="checkbox">' . '<input ' . 'type="checkbox" ' . 'value="' . $field["value"] . '" ' . $field["checked"] . " " . 'name="' . $field['PostName'] . '" ' . 'id="c' . $field['PostName'] . '" ' . '/>' . JText::_('COM_FOXCONTACT_SUBSCRIBE_TO') . " " . $field['caption'] . '</label>' . '</div>' . // controls '</div>' . PHP_EOL; // control-group return $result; } protected function hidden($field) { $result = '<input ' . 'type="hidden" ' . 'value="' . $field["value"] . '" ' . 'name="' . $field['PostName'] . '" ' . '/>' . PHP_EOL; return $result; } protected function label($field) { $this->CreateSpacerLabel(); $result = $this->hidden($field) . '<div class="control-group">' . $this->LabelHtmlCode . '<div class="controls">' . '<label class="checkbox">' . '<i>' . $field["caption"] . '</i>' . '</label>' . '</div>' . // controls '</div>' . PHP_EOL; // control-group return $result; } }