Cannot redeclare JAdminSubMenu

I am getting this error when I try to get into my database.

Fatal error: Cannot redeclare class JAdminSubMenu in

/home/carlisle/public_html/administrator/modules/mod_submenu/mod_submenu.php on line 32

I don’t know more about PHP an was hoping someone could help me - I administer a joomla site and in time will

learn php. I only see a semicolon where line 32 ia. I’ve read a bit and saw require_once and include_once

lines that can make the code only happen once but am not sure if this appile to my file below.

I am getting code twice for JAdminSubmenu on my site.

code:

<?php
/**
* @version        $Id:mod_menu.php 2463 2006-02-18 06:05:38Z webImagery $
* @package        Joomla
* @copyright    Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

// Lets get some variables we will need to render the menu
$lang    =& JFactory::getLanguage();
$doc    =& JFactory::getDocument();
$user    =& JFactory::getUser();

// If hidemainmenu is true, we don't want to render this module at all
echo JAdminSubMenu::get();

/**
* Admin Submenu
*
* @package        Joomla
* @since 1.5
*/
class JAdminSubMenu
{                               (charlie here - this is where line 32 is)
    function get()
    {
        global $mainframe;

        // Lets get some variables we are going to need
        $menu = JToolBar::getInstance('submenu');
        $list = $menu->_bar;
        if(!is_array($list) || !count($list))
        {
            $option = JRequest::getCmd('option');
            if($option == 'com_categories')
            {
                $section = JRequest::getCmd('section');
                if ($section) {
                    if ($section != 'content') {
                        // special handling for specific core components
                        $map['com_contact_details']    = 'com_contact';
                        $map['com_banner']            = 'com_banners';

                        $option = isset( $map[$section] ) ? $map[$section] : $section;
                    }
                }
            }
            $list = JAdminSubMenu::_loadDBList($option);
        }

        if (!is_array($list) || !count($list)) {
            return null;
        }

        $hide = JRequest::getInt('hidemainmenu');
        $txt = "<ul id=\\"submenu\\">\
";

        /*
         * Iterate through the link items for building the menu items

         */
        foreach ($list as $item)
        {
            $txt .= "<li>\
";
            if ($hide)
            {
                if (isset ($item[2]) && $item[2] == 1) {
                    $txt .= "<span class=\\"nolink active\\">".$item[0]."</span>\
";
                }
                else {
                    $txt .= "<span class=\\"nolink\\">".$item[0]."</span>\
";
                }
            }
            else
            {
                if (isset ($item[2]) && $item[2] == 1) {
                    $txt .= "<a class=\\"active\\" 

href=\\"".JFilterOutput::ampReplace($item[1])."\\">".$item[0]."</a>\
";
                }
                else {
                    $txt .= "<a href=\\"".JFilterOutput::ampReplace($item[1])."\\">".$item[0]."</a>\
";
                }
            }
            $txt .= "</li>\
";
        }

        $txt .= "</ul>\
";

        return $txt;
    }

    function _loadDBList( $componentOption )
    {
        $db   =& JFactory::getDBO();
        $lang =& JFactory::getLanguage();

        $lang->load($componentOption.'.menu');

        $query = 'SELECT a.name, a.admin_menu_link, a.admin_menu_img' .
        ' FROM #__components AS a' .
        ' INNER JOIN #__components AS b ON b.id = a.parent' .
        ' WHERE b.option = ' . $db->Quote( $componentOption ) .
        ' AND b.parent = 0'.
        ' ORDER BY a.ordering ASC';

        $db->setQuery($query);
        $items = $db->loadObjectList();

        // Process the items
        $subMenuList = array();

        foreach ($items as $item)
        {
            if (trim($item->admin_menu_link))
            {
                // handling for active sub menu item
                $active = 0;
                if (strpos( @$_SERVER['QUERY_STRING'], $item->admin_menu_link ) !== false ) {
                    $active = 1;
                }

                $key = $componentOption.'.'.$item->name;
                $subMenuItem[0]    = $lang->hasKey($key) ? JText::_($key) : $item->name;
                $subMenuItem[1]    = 'index.php?'. $item->admin_menu_link;
                $subMenuItem[2]    = $active;

                $subMenuList[] = $subMenuItem;
            }
        }

        return $subMenuList;
    }
}

Good to know you fixed it but it would be nice if you mention here how you fixed and what was the problem for those who stuck with same problems and if they ask google for help :slight_smile:

Thanks for suggestion, i got what i did wrong

Sounds like this is the case. Would like to add that using require_once() will prevent this from happening in most cases :wink:

Seeing the error message itself, it is obvious that the file that contains your class “JAdminSubMenu” is being included/required twice or so. So need to check it there where the file is being called. It sometimes may happen if you just copied a module or component and forgot to rename the class name. So check it in that way too if you are doing so.