Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
	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;
	}