/** * Method to enable/disable updates stream * * @param object $element The JXMLElement object representing the <field /> tag for the * form field object. * @param mixed $value The form field value to validate. * @param string $group The field name group control value. This acts as as an array * container for the field. For example if the field has name="foo" * and the group value is set to "bar" then the full field name * would end up being "bar[foo]". * @param object $input An optional JRegistry object with the entire data set to validate * against the entire form. * @param object $form The form object for which the field is being tested. * * @return boolean True if the value is valid, false otherwise. * * @since 11.1 * @throws JException on invalid rule. */ public function test(&$element, $value, $group = null, &$input = null, &$form = null) { require_once JPATH_ROOT . '/modules/mod_pwebcontact/helpers/updateserver.php'; $updateServer = new modPWebContactUpdateServer(); if ($value == 1 or $value == 2) { $updateServer->add(); // 2nd argument: null = commercial, false = free } else { $updateServer->delete(); } // change option in other instances of module $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select('id, params')->from('#__modules')->where('module = ' . $db->quote('mod_pwebcontact'))->where('params NOT LIKE ' . $db->quote('%' . $db->escape('"feed":"' . $value . '"') . '%'))->where('id != ' . (int) JFactory::getApplication()->input->getInt('id')); $db->setQuery($query); try { $modules = $db->loadObjectList(); } catch (Exception $e) { $modules = false; } if ($modules) { foreach ($modules as $module) { $module->params = preg_replace('/"feed":"\\d+"/i', '"feed":"' . $value . '"', $module->params); $query->clear()->update('#__modules')->set('params = ' . $db->quote($db->escape($module->params)))->where('id = ' . (int) $module->id); $db->setQuery($query); try { $db->execute(); } catch (Exception $e) { } } } return true; }
/** * Called after any type of action * * @param string $route Which action is happening (install|uninstall|discover_install|update) * @param JAdapterInstance $adapter The object responsible for running this script * * @return boolean True on success */ public function postflight($route, JAdapterInstance $adapter) { $parent = $adapter->getParent(); // install update server for new installation or when updating module older than 3.2.4 require_once $parent->getPath('source') . '/helpers/updateserver.php'; $version = $parent->getManifest()->version; $updateServer = new modPWebContactUpdateServer(); // delete old md5 files $updateServer->deleteMd5($parent->getPath('extension_root') . '/form'); // add new md5 file if ($download_id = $updateServer->getMd5($parent->getPath('source'))) { $buffer = ''; JFile::write($parent->getPath('extension_root') . '/form/' . $download_id, $buffer); } $updateServer->add($version, $download_id); }
protected function getInput() { $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $html = $params = null; if (version_compare(JVERSION, '2.5.5') == -1) { // Joomla minimal version $app->enqueueMessage(JText::sprintf('MOD_PWEBCONTACT_CONFIG_MSG_JOOMLA_VERSION', '2.5.5', '<a href="index.php?option=com_joomlaupdate" target="_blank">', '</a>'), 'error'); } else { JHtml::_('stylesheet', 'jui/icomoon.css', array(), true); // check Joomla Global Mailer configuration $this->checkMailer(); // Module ID $module_id = $app->input->getInt('id', 0); // check module configuration if ($module_id > 0) { // get params require_once JPATH_ROOT . '/modules/mod_pwebcontact/helper.php'; $params = modPwebcontactHelper::getParams($module_id); if ($params->get('rtl', 2) == 2) { // warn about auto RTL $langs = JLanguage::getKnownLanguages(JPATH_ROOT); foreach ($langs as $lang) { if ((bool) $lang['rtl']) { $app->enqueueMessage(JText::_('MOD_PWEBCONTACT_CONFIG_RTL_TIP'), 'notice'); break; } } } // check if debug mode is enabled if ($params->get('debug', 0)) { $app->enqueueMessage(JText::_('MOD_PWEBCONTACT_CONFIG_MSG_DISABLE_DEBUG'), 'notice'); } // check if demo mode is enabled if ($params->get('demo', 0)) { $app->enqueueMessage(JText::_('MOD_PWEBCONTACT_CONFIG_MSG_DEMO'), 'warning'); } // check if upload directory is writable if ($params->get('show_upload', 0)) { $this->checkUploadPath('/media/mod_pwebcontact/upload/' . $module_id . '/'); } // check Admin Tools Pro exception if (is_file(JPATH_ROOT . '/components/com_ajax/ajax.php')) { $this->checkAdminToolsPro(); } elseif ($params->get('root_path', 0)) { $this->checkAdminToolsPro('mod_pwebcontact_ajax.php'); } else { $this->checkAdminToolsPro('modules/mod_pwebcontact/ajax.php'); } // check JoomlArt T3 Framework templates $this->checkJAT3v2CacheExclude('mod_pwebcontact'); // check module details configuration $this->checkModuleDetails($module_id); } // check if Ajax Interface is installed and enabled if ($this->checkAjaxComponent() === true or version_compare(JVERSION, '3.2.0') >= 0) { // Hide root path option $doc->addScriptDeclaration('jQuery(document).ready(function($){' . '$("#' . $this->formControl . '_' . $this->group . '_root_path").closest("li,div.control-group").hide();' . '});'); } // check if Bootstrap is updated to version 2.3.1 if (version_compare(JVERSION, '3.0.0') >= 0 and version_compare(JVERSION, '3.1.4') == -1) { $this->checkBootstrap(); } // check functions for image creation $this->checkImageTextCreation(); // check if cache directory is writable // check if direct access to files in cache directory is allowed $this->checkCacheDir(); } // add documentation toolbar button if (version_compare(JVERSION, '3.0.0') == -1) { $button = '<a href="' . $this->documentation . '" style="font-weight:bold;border-color:#025A8D;background-color:#DBE4E9;" target="_blank"><span class="icon-32-help"> </span> ' . JText::_('MOD_PWEBCONTACT_DOCUMENTATION') . '</a>'; } else { $button = '<a href="' . $this->documentation . '" class="btn btn-small btn-info" target="_blank"><i class="icon-support"></i> ' . JText::_('MOD_PWEBCONTACT_DOCUMENTATION') . '</a>'; } $bar = JToolBar::getInstance(); $bar->appendButton('Custom', $button, $this->extension . '-docs'); JText::script('MOD_PWEBCONTACT_PREVIEW_BUTTON'); JText::script('MOD_PWEBCONTACT_COPY_BUTTON'); JText::script('MOD_PWEBCONTACT_INTEGRATION_COMPONENT_VIEW'); // add admin styles and script $doc->addStyleSheet(JUri::root(true) . '/media/mod_pwebcontact/css/admin.css'); if (class_exists('JHtmlJquery')) { JHtml::_('jquery.framework'); $doc->addScript(JUri::root(true) . '/media/mod_pwebcontact/js/jquery.admin.js'); } // disable Joomla Form Validator which slows down saving big forms $doc->addScriptDeclaration('window.addEvent("domready", function(){' . 'document.forms.adminForm.className = document.forms.adminForm.className.replace("form-validate", "");' . 'document.formvalidator = {' . 'setHandler: function(name, fn, en){},' . 'attachToForm: function(form){},' . 'validate: function(el){return true},' . 'isValid: function(form){return true},' . 'handleResponse: function(state, el){}' . '};' . '});'); // check if user is authorized to manage extensions if (JFactory::getUser()->authorise('core.manage', 'com_installer')) { // add feeds script if ($this->value == 1 or $this->value == 3) { require_once JPATH_ROOT . '/modules/mod_pwebcontact/helpers/updateserver.php'; $updateServer = new modPWebContactUpdateServer(); $doc->addScriptDeclaration($updateServer->getFeedScript()); } } else { $doc->addScriptDeclaration('if(typeof jQuery!=="undefined"){' . 'jQuery(document).ready(function($){' . '$("#' . $this->formControl . '_' . $this->group . '_feed").closest("li,div.control-group").hide();' . '})}'); } return parent::getInput() . $html; }