📄 list.php
字号:
' SET published = '.(int) $state.', parent = 0, ordering = 0, checked_out = 0, checked_out_time = '.$db->Quote($nd) .
$where;
$db->setQuery( $query );
if (!$db->query()) {
$this->setError( $db->getErrorMsg() );
return false;
}
// Clear the content cache
// TODO: Is this necessary?
$cache = & JFactory::getCache('com_content');
$cache->clean();
return count($items);
}
function fromTrash($items)
{
$db =& $this->getDBO();
$nd = $db->getNullDate();
$state = 0;
// Add all children to the list
foreach ($items as $id)
{
$this->_addChildren($id, $items);
}
// Sent menu items to the trash
JArrayHelper::toInteger($items, array(0));
$where = ' WHERE id = ' . implode( ' OR id = ', $items );
$query = 'UPDATE #__menu' .
' SET published = '.(int) $state.', parent = 0, ordering = 99999, checked_out = 0, checked_out_time = '.$db->Quote($nd) .
$where;
$db->setQuery( $query );
if (!$db->query()) {
$this->setError( $db->getErrorMsg() );
return false;
}
// Clear the content cache
// TODO: Is this necessary?
$cache = & JFactory::getCache('com_content');
$cache->clean();
return count($items);
}
/**
* Set the state of selected menu items
*/
function setHome( $item )
{
$db =& $this->getDBO();
// Clear home field for all other items
$query = 'UPDATE #__menu' .
' SET home = 0' .
' WHERE 1';
$db->setQuery( $query );
if ( !$db->query() ) {
$this->setError($db->getErrorMsg());
return false;
}
// Set the given item to home
$query = 'UPDATE #__menu' .
' SET home = 1' .
' WHERE id = '.(int) $item;
$db->setQuery( $query );
if ( !$db->query() ) {
$this->setError($db->getErrorMsg());
return false;
}
return true;
}
/**
* Set the state of selected menu items
*/
function setItemState( $items, $state )
{
if(is_array($items))
{
$row =& $this->getTable();
foreach ($items as $id)
{
$row->load( $id );
if ($row->home != 1) {
$row->published = $state;
if ($state != 1) {
// Set any alias menu types to not point to unpublished menu items
$db = &$this->getDBO();
$query = 'UPDATE #__menu SET link = 0 WHERE type = \'menulink\' AND link = '.(int)$id;
$db->setQuery( $query );
if (!$db->query()) {
$this->setError( $db->getErrorMsg() );
return false;
}
}
if (!$row->check()) {
$this->setError($row->getError());
return false;
}
if (!$row->store()) {
$this->setError($row->getError());
return false;
}
} else {
JError::raiseWarning( 'SOME_ERROR_CODE', 'You cannot unpublish the default menu item');
return false;
}
}
}
// clean menu cache
$cache =& JFactory::getCache('mod_mainmenu');
$cache->clean();
return true;
}
/**
* Set the access of selected menu items
*/
function setAccess( $items, $access )
{
$row =& $this->getTable();
foreach ($items as $id)
{
$row->load( $id );
$row->access = $access;
// Set any alias menu types to not point to unpublished menu items
$db = &$this->getDBO();
$query = 'UPDATE #__menu SET link = 0 WHERE type = \'menulink\' AND access < '.(int)$access.' AND link = '.(int)$id;
$db->setQuery( $query );
if (!$db->query()) {
$this->setError( $db->getErrorMsg() );
return false;
}
if (!$row->check()) {
$this->setError($row->getError());
return false;
}
if (!$row->store()) {
$this->setError($row->getError());
return false;
}
}
// clean menu cache
$cache =& JFactory::getCache('mod_mainmenu');
$cache->clean();
return true;
}
function orderItem($item, $movement)
{
$row =& $this->getTable();
$row->load( $item );
if (!$row->move( $movement, 'menutype = '.$this->_db->Quote($row->menutype).' AND parent = '.(int) $row->parent )) {
$this->setError($row->getError());
return false;
}
// clean menu cache
$cache =& JFactory::getCache('mod_mainmenu');
$cache->clean();
return true;
}
function setOrder($items, $menutype)
{
$total = count( $items );
$row =& $this->getTable();
$groupings = array();
$order = JRequest::getVar( 'order', array(), 'post', 'array' );
JArrayHelper::toInteger($order);
// update ordering values
for( $i=0; $i < $total; $i++ ) {
$row->load( $items[$i] );
// track parents
$groupings[] = $row->parent;
if ($row->ordering != $order[$i]) {
$row->ordering = $order[$i];
if (!$row->store()) {
$this->setError($row->getError());
return false;
}
} // if
} // for
// execute updateOrder for each parent group
$groupings = array_unique( $groupings );
foreach ($groupings as $group){
$row->reorder('menutype = '.$this->_db->Quote($menutype).' AND parent = '.(int) $group.' AND published >=0');
}
// clean menu cache
$cache =& JFactory::getCache('mod_mainmenu');
$cache->clean();
return true;
}
/**
* Delete one or more menu items
* @param mixed int or array of id values
*/
function delete( $ids )
{
JArrayHelper::toInteger($ids);
if (count( $ids )) {
// Add all children to the list
foreach ($ids as $id)
{
$this->_addChildren($id, $ids);
}
$db = &$this->getDBO();
// 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 menu cache
$cache =& JFactory::getCache('mod_mainmenu');
$cache->clean();
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 );
}
function _addChildren($id, &$list)
{
// Initialize variables
$return = true;
// Get all rows with parent of $id
$db =& $this->getDBO();
$query = 'SELECT id' .
' FROM #__menu' .
' WHERE parent = '.(int) $id;
$db->setQuery( $query );
$rows = $db->loadObjectList();
// Make sure there aren't any errors
if ($db->getErrorNum()) {
$this->setError($db->getErrorMsg());
return false;
}
// Recursively iterate through all children... kinda messy
// TODO: Cleanup this method
foreach ($rows as $row)
{
$found = false;
foreach ($list as $idx)
{
if ($idx == $row->id) {
$found = true;
break;
}
}
if (!$found) {
$list[] = $row->id;
}
$return = $this->_addChildren($row->id, $list);
}
return $return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -