⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 item.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 2 页
字号:
		$post	= $this->_state->get( 'request' );		switch ($post['type'])		{			case 'separator':				break;			case 'url':				break;			case 'menulink':				$post['link'] = 'index.php?Itemid='.$post['params']['menu_item'];				break;			case 'component':				break;		}		if (!$row->bind( $post )) {			echo "<script> alert('".$row->getError(true)."'); window.history.go(-1); </script>\n";			return false;		}		if ($row->id > 0)		{			// existing item			$query		= 'SELECT menutype FROM #__menu WHERE id = '.(int) $row->id;			$this->_db->setQuery( $query );			$oldType	= $this->_db->loadResult();			if ($oldType != $row->menutype) {				// moved to another menu, disconnect the old parent				$row->parent = 0;			}			$query		= 'SELECT parent FROM #__menu WHERE id = '.(int) $row->id;			$this->_db->setQuery( $query );			$oldParent	= $this->_db->loadResult();			if ($oldParent != $row->parent) {				// we have changed parents, so we have to fix the submenu values				if ($row->parent != 0) {					$query	= 'SELECT sublevel FROM #__menu WHERE id = '.(int) $row->parent;					$this->_db->setQuery( $query );					$sublevel = $this->_db->loadResult() + 1;				} else {					$sublevel = 0;				}				$row->sublevel = $sublevel;				$this->_setSubLevel( array( (int) $row->id ), $sublevel );			}		}		else		{			// if new item order last in appropriate group			$where = "menutype = " . $db->Quote($row->menutype) . " AND published >= 0 AND parent = ".(int) $row->parent;			$row->ordering = $row->getNextOrder( $where );			if( $row->parent != 0 ) {				$query = 'SELECT sublevel FROM #__menu WHERE id = '. (int) $row->parent;				$this->_db->setQuery($query);				$row->sublevel = $this->_db->loadResult() + 1;			}		}		if (isset($post['urlparams']) && is_array($post['urlparams']))		{			$pos = strpos( $row->link, '?' );			if ($pos !== false)			{				$prefix = substr( $row->link, 0, $pos );				$query	= substr( $row->link, $pos+1 );				$temp = array();				if(strpos($query, '&amp;') !== false) {					$query = str_replace('&amp;', '&', $query);				}				parse_str( $query, $temp );				$temp2 = array_merge( $temp, $post['urlparams'] );				$temp3 = array();				foreach ($temp2 as $k => $v)				{					if ( $k && strlen($v) )					{						$temp3[] = $k.'='.$v;					}				}				$url = null;				$row->link = $prefix . '?' . implode( '&', $temp3 );			}		}		if (!$row->check())		{			echo "<script> alert('".$row->getError(true)."'); window.history.go(-1); </script>\n";			return false;		}		if (!$row->store())		{			echo "<script> alert('".$row->getError(true)."'); window.history.go(-1); </script>\n";			return false;		}		$row->checkin();		$row->reorder( 'menutype='.$db->Quote( $row->menutype ).' AND parent='.(int)$row->parent );		// clean cache		MenusHelper::cleanCache();		return true;	}	/**	 * Delete one or more menu items	 * @param mixed int or array of id values	 */	function delete( $ids )	{		JArrayHelper::toInteger($ids);		$db = &$this->getDBO();		if (count( $ids ))		{			// Delete associated module and template mappings			$where = 'WHERE menuid = ' . implode( ' OR menuid = ', $ids );			$query = 'DELETE FROM #__modules_menu '				. $where;			$db->setQuery( $query );			if (!$db->query()) {				$this->setError( $menuTable->getErrorMsg() );				return false;			}			$query = 'DELETE FROM #__templates_menu '				. $where;			$db->setQuery( $query );			if (!$db->query()) {				$this->setError( $menuTable->getErrorMsg() );				return false;			}			// Set any alias menu types to not point to missing menu items			$query = 'UPDATE #__menu SET link = 0 WHERE type = \'menulink\' AND (link = '.implode( ' OR id = ', $ids ).')';			$db->setQuery( $query );			if (!$db->query()) {				$this->setError( $db->getErrorMsg() );				return false;			}			// Delete the menu items			$where = 'WHERE id = ' . implode( ' OR id = ', $ids );			$query = 'DELETE FROM #__menu ' . $where;			$db->setQuery( $query );			if (!$db->query()) {				$this->setError( $db->getErrorMsg() );				return false;			}		}		// clean cache		MenusHelper::cleanCache();				return true;	}	/**	 * Delete menu items by type	 */	function deleteByType( $type = '' )	{		$db = &$this->getDBO();		$query = 'SELECT id' .				' FROM #__menu' .				' WHERE menutype = ' . $db->Quote( $type );		$db->setQuery( $query );		$ids = $db->loadResultArray();		if ($db->getErrorNum())		{			$this->setError( $db->getErrorMsg() );			return false;		}		return $this->delete( $ids );	}	/**	 * Returns the internal table object	 * @return JTable	 */	function &_getTable()	{		if ($this->_table == null) {			$this->_table =& JTable::getInstance( 'menu');		}		return $this->_table;	}	function &_getStateXML()	{		static $xml;		if (isset($xml)) {			return $xml;		}		$xml = null;		$xmlpath = null;		$item 	= &$this->getItem();		switch ($item->type)		{			case 'separator':				$xmlpath = JPATH_BASE.DS.'components'.DS.'com_menus'.DS.'models'.DS.'metadata'.DS.'separator.xml';				break;			case 'url':				$xmlpath = JPATH_BASE.DS.'components'.DS.'com_menus'.DS.'models'.DS.'metadata'.DS.'url.xml';				break;			case 'menulink':				$xmlpath = JPATH_BASE.DS.'components'.DS.'com_menus'.DS.'models'.DS.'metadata'.DS.'menulink.xml';				break;			case 'component':			default:				if (isset($item->linkparts['view']))				{					// View is set... so we konw to look in view file					if (isset($item->linkparts['layout'])) {						$layout = $item->linkparts['layout'];					} else {						$layout = 'default';					}					$lpath = JPATH_ROOT.DS.'components'.DS.$item->linkparts['option'].DS.'views'.DS.$item->linkparts['view'].DS.'tmpl'.DS.$layout.'.xml';					$vpath = JPATH_ROOT.DS.'components'.DS.$item->linkparts['option'].DS.'views'.DS.$item->linkparts['view'].DS.'metadata.xml';					if (file_exists($lpath)) {						$xmlpath = $lpath;					} elseif (file_exists($vpath)) {						$xmlpath = $vpath;					}				}				if (!$xmlpath && isset($item->linkparts['option'])) {					$xmlpath = JPATH_ROOT.DS.'components'.DS.$item->linkparts['option'].DS.'metadata.xml';					if(!file_exists($xmlpath)) {						$xmlpath = JApplicationHelper::getPath('com_xml', $item->linkparts['option']);					}				}				break;		}		if (file_exists($xmlpath))		{			$xml =& JFactory::getXMLParser('Simple');			if ($xml->loadFile($xmlpath)) {				$this->_xml = &$xml;				$document =& $xml->document;				/*				 * HANDLE NO OPTION CASE				 */				$menus =& $document->getElementByPath('menu');				if (is_a($menus, 'JSimpleXMLElement') && $menus->attributes('options') == 'none') {					$xml =& $menus->getElementByPath('state');				} else {					$xml =& $document->getElementByPath('state');				}				// Handle error case... path doesn't exist				if (!is_a($xml, 'JSimpleXMLElement')) {					return $document;				}				/*				 * HANDLE A SWITCH IF IT EXISTS				 */				if ($switch = $xml->attributes('switch'))				{					$default = $xml->attributes('default');					// Handle switch					$switchVal = (isset($item->linkparts[$switch]))? $item->linkparts[$switch] : 'default';					$found = false;					foreach ($xml->children() as $child) {						if ($child->name() == $switchVal) {							$xml =& $child;							$found = true;							break;						}					}					if (!$found) {						foreach ($xml->children() as $child) {							if ($child->name() == $default) {								$xml =& $child;								break;							}						}					}				}				/*				 * HANDLE INCLUDED PARAMS				 */				$children = $xml->children();				if (count($children) == 1)				{					if ($children[0]->name() == 'include') {						$ret =& $this->_getIncludedParams($children[0]);						if ($ret) {							$xml =& $ret;						}					}				}				if ($switch = $xml->attributes('switch'))				{					$default = $xml->attributes('default');					// Handle switch					$switchVal = ($item->linkparts[$switch])? $item->linkparts[$switch] : 'default';					$found = false;					foreach ($xml->children() as $child) {						if ($child->name() == $switchVal) {							$xml =& $child;							$found = true;							break;						}					}					if (!$found) {						foreach ($xml->children() as $child) {							if ($child->name() == $default) {								$xml =& $child;								break;							}						}					}				}			}		}		return $xml;	}	function &_getIncludedParams($include)	{		$tags	= array();		$state	= null;		$source	= $include->attributes('source');		$path	= $include->attributes('path');		$item 	= &$this->getItem();		preg_match_all( "/{([A-Za-z\-_]+)}/", $source, $tags);		if (isset($tags[1])) {			for ($i=0;$i<count($tags[1]);$i++) {				$source = str_replace($tags[0][$i], @$item->linkparts[$tags[1][$i]], $source);			}		}		// load the source xml file		if (file_exists( JPATH_ROOT.$source ))		{			$xml = & JFactory::getXMLParser('Simple');			if ($xml->loadFile(JPATH_ROOT.$source)) {				$document = &$xml->document;				$state = $document->getElementByPath($path);			}		}		return $state;	}	/**	 * Sets the sublevel for menu items	 *	 * @param array id values to set	 * @param int level to assign to the sublevel	 */	function _setSubLevel( $cid, $level )	{		JArrayHelper::toInteger($cid, array(0));		$ids = implode( ',', $cid );		$query	= 'UPDATE #__menu SET sublevel = '.(int) $level				.' WHERE id IN ('.$ids.')';		$this->_db->setQuery( $query );		$this->_db->query();		$query	= 'SELECT id FROM #__menu WHERE parent IN ('.$ids.')';		$this->_db->setQuery( $query );		$cids = $this->_db->loadResultArray( 0 );		if (!empty( $cids )) {			$this->_setSubLevel( $cids, $level + 1 );		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -