function onPrepareModuleList(&$modules) { // for old Advanced Module Manager versions if (function_exists('plgSystemAdvancedModulesPrepareModuleList')) { plgSystemAdvancedModulesPrepareModuleList($modules); return; } if (!class_exists('plgSystemAdvancedModuleHelper')) { return; } // for new Advanced Module Manager versions $helper = new plgSystemAdvancedModuleHelper(); $helper->onPrepareModuleList($modules); }
function setModulePublishState(&$module) { $module->published = 1; // for old Advanced Module Manager versions if (function_exists('plgSystemAdvancedModulesPrepareModuleList')) { $modules = array($module->id => $module); plgSystemAdvancedModulesPrepareModuleList($modules); $module = array_shift($modules); return; } // for new Advanced Module Manager versions if (class_exists('plgSystemAdvancedModuleHelper')) { $modules = array($module->id => $module); $helper = new plgSystemAdvancedModuleHelper(); $helper->onPrepareModuleList($modules); $module = array_shift($modules); return; } // for core Joomla $db = JFactory::getDBO(); $query = $db->getQuery(true)->select('mm.moduleid')->from('#__modules_menu AS mm')->where('mm.moduleid = ' . (int) $module->id)->where('(mm.menuid = ' . (int) JFactory::getApplication()->input->getInt('Itemid') . ' OR mm.menuid <= 0)'); $db->setQuery($query); $result = $db->loadResult(); $module->published = !empty($result); return; }
function processModule($id, $chrome = 'none', $ignores = array(), $overrides = array(), $area = 'articles') { $ignore_access = isset($ignores['ignore_access']) ? $ignores['ignore_access'] : $this->params->ignore_access; $ignore_state = isset($ignores['ignore_state']) ? $ignores['ignore_state'] : $this->params->ignore_state; $ignore_assignments = isset($ignores['ignore_assignments']) ? $ignores['ignore_assignments'] : $this->params->ignore_assignments; $ignore_caching = isset($ignores['ignore_caching']) ? $ignores['ignore_caching'] : $this->params->ignore_caching; $db = JFactory::getDBO(); $query = $db->getQuery(true) ->select('m.*') ->from('#__modules AS m') ->where('m.client_id = 0'); if (is_numeric($id)) { $query->where('m.id = ' . (int) $id); } else { $query->where('m.title = ' . $db->quote(NNText::html_entity_decoder($id))); } if (!$ignore_access) { $query->where('m.access IN (' . implode(',', $this->params->aid) . ')'); } if (!$ignore_state) { $query->where('m.published = 1') ->join('LEFT', '#__extensions AS e ON e.element = m.module AND e.client_id = m.client_id') ->where('e.enabled = 1'); } if (!$ignore_assignments) { $date = JFactory::getDate(); $now = $date->toSql(); $nullDate = $db->getNullDate(); $query->where('(m.publish_up = ' . $db->quote($nullDate) . ' OR m.publish_up <= ' . $db->quote($now) . ')') ->where('(m.publish_down = ' . $db->quote($nullDate) . ' OR m.publish_down >= ' . $db->quote($now) . ')'); } $query->order('m.ordering'); $db->setQuery($query); $module = $db->loadObject(); if ($module && function_exists('plgSystemAdvancedModulesPrepareModuleList')) { $module->published = 1; $modules = array($module->id => $module); plgSystemAdvancedModulesPrepareModuleList($modules); $module = array_shift($modules); if (!$module->published && !$ignore_assignments) { $module = 0; } } if (empty($module)) { if ($this->params->place_comments) { $message = JText::_('MA_OUTPUT_REMOVED_NOT_PUBLISHED'); return $this->params->message_start . $message . $this->params->message_end; } else { return ''; } } //determine if this is a custom module $module->user = (substr($module->module, 0, 4) == 'mod_') ? 0 : 1; // set style $module->style = $chrome; if (($area == 'articles' && !$ignore_caching) || !empty($overrides)) { $json = ($module->params && substr(trim($module->params), 0, 1) == '{'); if ($json) { $params = json_decode($module->params); } else { // Old ini style. Needed for crappy old style modules like swMenuPro $params = JRegistryFormat::getInstance('INI')->stringToObject($module->params); } // override module parameters if (!empty($overrides)) { foreach ($overrides as $key => $val) { if (isset($module->{$key})) { $module->{$key} = $val; } else { if ($val && $val['0'] == '[' && $val[strlen($val) - 1] == ']') { $val = json_decode('{"val":' . $val . '}'); $val = $val->val; } else if (isset($params->{$key}) && is_array($params->{$key})) { $val = explode(',', $val); } $params->{$key} = $val; } } if ($json) { $module->params = json_encode($params); } else { $registry = new JRegistry; $registry->loadObject($params); $module->params = $registry->toString('ini'); } } } if (isset($module->access) && !in_array($module->access, $this->params->aid)) { if ($this->params->place_comments) { $message = JText::_('MA_OUTPUT_REMOVED_ACCESS'); return $this->params->message_start . $message . $this->params->message_end; } else { return ''; } } $document = clone(JFactory::getDocument()); $document->_type = 'html'; $renderer = $document->loadRenderer('module'); $html = $renderer->render($module, array('style' => $chrome, 'name' => '')); // don't return html on article level when caching is set if ( $area == 'articles' && !$ignore_caching && ( (isset($params->cache) && !$params->cache) || (isset($params->owncache) && !$params->owncache) // for stupid modules like RAXO that mess about with default params ) ) { return 'MA_IGNORE'; } return $html; }