Tycoon Talk
Become a Big fish!
The number 1 forum for online business!
Post topics, ask questions, share your knowledge.
Tycoon Talk is part of Freelancer.com - find skilled workers online at a fraction of the cost.

PHP Forum


You are currently viewing our PHP Forum as a guest. Please register to participate.
Login



Freelance Jobs

Reply
Call to a member function get() on a non-object
Old 04-22-2010, 05:59 AM Call to a member function get() on a non-object
Junior Talker

Posts: 3
Name: Adam
Trades: 0
Hi there, guys plz help me with this.
I don't know what cause my problem. I got this error massage.
Any clues what can be the problem?

Error page:
( ! ) Fatal error: Call to a member function get() on a non-object in /data/www/ablux.pl/html/modules/mod_mainmenu/helper.php on line 134
Call Stack
# Time Memory Function Location
1 0.0001 95928 {main}( ) ../index.php:0
2 0.1876 6197096 JSite->render( ) ../index.php:79
3 0.1878 6197096 JDocumentHTML->render( ) ../application.php:168
4 0.1957 6279384 JDocumentHTML->_parseTemplate( ) ../html.php:249
5 0.3066 15190840 JDocumentHTML->getBuffer( ) ../html.php:386
6 0.3067 15190840 JDocumentRendererModules->render( ) ../html.php:190
7 0.3067 15190840 JDocumentRendererModule->render( ) ../modules.php:41
8 0.3076 15199120 JModuleHelper->renderModule( ) ../module.php:84
9 0.3102 15321008 require( '/data/www/ablux.pl/html/modules/mod_mainmenu/mod_mainmenu.php' ) ../helper.php:173
10 0.3115 15347528 require( '/data/www/ablux.pl/html/modules/mod_mainmenu/tmpl/default.php' ) ../mod_mainmenu.php:42
11 0.3115 15347528 modMainMenuHelper->render( ) ../default.php:82
12 0.3115 15347800 modMainMenuHelper->getXML( ) ../helper.php:156
13 0.3806 15720168 JSimpleXMLElement->map( ) ../helper.php:127
14 0.3806 15720168 {main}( ) ../simplexml.php:0
15 0.3806 15720264 modMainMenuHelper::render( ) ../default.php:82


helper.php looks like this:

PHP Code:
<?php
/**
* @version        $Id: helper.php 12694 2009-09-11 21:03:02Z ian $
* @package        Joomla
* @copyright    Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license        GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

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


jimport('joomla.base.tree');
jimport('joomla.utilities.simplexml');

/**
 * mod_mainmenu Helper class
 *
 * @static
 * @package        Joomla
 * @subpackage    Menus
 * @since        1.5
 */
class modMainMenuHelper
{
    function 
buildXML($params)
    {
        
$menu = new JMenuTree($params);
        
$items = &JSite::getMenu();

        
// Get Menu Items
        
$rows $items->getItems('menutype'$params->get('menutype'));
        
$maxdepth $params->get('maxdepth',10);

        
// Build Menu Tree root down (orphan proof - child might have lower id than parent)
        
$user =& JFactory::getUser();
        
$ids = array();
        
$ids[0] = true;
        
$last null;
        
$unresolved = array();
        
// pop the first item until the array is empty if there is any item
        
if ( is_array($rows)) {
            while (
count($rows) && !is_null($row array_shift($rows)))
            {
                if (
array_key_exists($row->parent$ids)) {
                    
$row->ionly $params->get('menu_images_link');
                    
$menu->addNode($params$row);

                    
// record loaded parents
                    
$ids[$row->id] = true;
                } else {
                    
// no parent yet so push item to back of list
                    // SAM: But if the key isn't in the list and we dont _add_ this is infinite, so check the unresolved queue
                    
if(!array_key_exists($row->id$unresolved) || $unresolved[$row->id] < $maxdepth) {
                        
array_push($rows$row);
                        
// so let us do max $maxdepth passes
                        // TODO: Put a time check in this loop in case we get too close to the PHP timeout
                        
if(!isset($unresolved[$row->id])) $unresolved[$row->id] = 1;
                        else 
$unresolved[$row->id]++;
                    }
                }
            }
        }
        return 
$menu->toXML();
    }

    function &
getXML($type, &$params$decorator)
    {
        static 
$xmls;

        if (!isset(
$xmls[$type])) {
            
$cache =& JFactory::getCache('mod_mainmenu');
            
$string $cache->call(array('modMainMenuHelper''buildXML'), $params);
            
$xmls[$type] = $string;
        }

        
// Get document
        
$xml JFactory::getXMLParser('Simple');
        
$xml->loadString($xmls[$type]);
        
$doc = &$xml->document;

        
$menu    = &JSite::getMenu();
        
$active    $menu->getActive();
        
$start    $params->get('startLevel');
        
$end    $params->get('endLevel');
        
$sChild    $params->get('showAllChildren');
        
$path    = array();

        
// Get subtree
        
if ($start)
        {
            
$found false;
            
$root true;
            if(!isset(
$active)){
                
$doc false;
            }
            else{
                
$path $active->tree;
                for (
$i=0,$n=count($path);$i<$n;$i++)
                {
                    foreach (
$doc->children() as $child)
                    {
                        if (
$child->attributes('id') == $path[$i]) {
                            
$doc = &$child->ul[0];
                            
$root false;
                            break;
                        }
                    }

                    if (
$i == $start-1) {
                        
$found true;
                        break;
                    }
                }
                if ((!
is_a($doc'JSimpleXMLElement')) || (!$found) || ($root)) {
                    
$doc false;
                }
            }
        }

        if (
$doc && is_callable($decorator)) {
            
$doc->map($decorator, array('end'=>$end'children'=>$sChild));
        }
        return 
$doc;
    }

    function 
render(&$params$callback)
    {
        switch ( 
$params->get'menu_style''list' ) )
        {
            case 
'list_flat' :
                
// Include the legacy library file
                
require_once(dirname(__FILE__).DS.'legacy.php');
                
mosShowHFMenu($params1);
                break;

            case 
'horiz_flat' :
                
// Include the legacy library file
                
require_once(dirname(__FILE__).DS.'legacy.php');
                
mosShowHFMenu($params0);
                break;

            case 
'vert_indent' :
                
// Include the legacy library file
                
require_once(dirname(__FILE__).DS.'legacy.php');
                
mosShowVIMenu($params);
                break;

            default :
                
// Include the new menu class
                
$xml modMainMenuHelper::getXML($params->get('menutype'), $params$callback);
                if (
$xml) {
                    
$class $params->get('class_sfx');
                    
$xml->addAttribute('class''menu'.$class);
                    if (
$tagId $params->get('tag_id')) {
                        
$xml->addAttribute('id'$tagId);
                    }

                    
$result JFilterOutput::ampReplace($xml->toString((bool)$params->get('show_whitespace')));
                    
$result str_replace(array('<ul/>''<ul />'), ''$result);
                    echo 
$result;
                }
                break;
        }
    }
}

/**
 * Main Menu Tree Class.
 *
 * @package        Joomla
 * @subpackage    Menus
 * @since        1.5
 */
class JMenuTree extends JTree
{
    
/**
     * Node/Id Hash for quickly handling node additions to the tree.
     */
    
var $_nodeHash = array();

    
/**
     * Menu parameters
     */
    
var $_params null;

    
/**
     * Menu parameters
     */
    
var $_buffer null;

    function 
__construct(&$params)
    {
        
$this->_params        =& $params;
        
$this->_root        = new JMenuNode(0'ROOT');
        
$this->_nodeHash[0]    =& $this->_root;
        
$this->_current        =& $this->_root;
    }

    function 
addNode(&$params$item)
    {
        
// Get menu item data
        
$data $this->_getItemData($params$item);

        
// Create the node and add it
        
$node = new JMenuNode($item->id$item->name$item->access$data);

        if (isset(
$item->mid)) {
            
$nid $item->mid;
        } else {
            
$nid $item->id;
        }
        
$this->_nodeHash[$nid] =& $node;
        
$this->_current =& $this->_nodeHash[$item->parent];

        if (
$item->type == 'menulink' && !empty($item->query['Itemid'])) {
            
$node->mid $item->query['Itemid'];
        }

        if (
$this->_current) {
            
$this->addChild($nodetrue);
        } else {
            
// sanity check
            
JError::raiseError500'Orphan Error. Could not find parent for Item '.$item->id );
        }
    }

    function 
toXML()
    {
        
// Initialize variables
        
$this->_current =& $this->_root;

        
// Recurse through children if they exist
        
while ($this->_current->hasChildren())
        {
            
$this->_buffer .= '<ul>';
            foreach (
$this->_current->getChildren() as $child)
            {
                
$this->_current = & $child;
                
$this->_getLevelXML(0);
            }
            
$this->_buffer .= '</ul>';
        }
        if(
$this->_buffer == '') { $this->_buffer '<ul />'; }
        return 
$this->_buffer;
    }

    function 
_getLevelXML($depth)
    {
        
$depth++;

        
// Start the item
        
$rel = (!empty($this->_current->mid)) ? ' rel="'.$this->_current->mid.'"' '';
        
$this->_buffer .= '<li access="'.$this->_current->access.'" level="'.$depth.'" id="'.$this->_current->id.'"'.$rel.'>';

        
// Append item data
        
$this->_buffer .= $this->_current->link;

        
// Recurse through item's children if they exist
        
while ($this->_current->hasChildren())
        {
            
$this->_buffer .= '<ul>';
            foreach (
$this->_current->getChildren() as $child)
            {
                
$this->_current = & $child;
                
$this->_getLevelXML($depth);
            }
            
$this->_buffer .= '</ul>';
        }

        
// Finish the item
        
$this->_buffer .= '</li>';
    }

    function 
_getItemData(&$params$item)
    {
        
$data null;

        
// Menu Link is a special type that is a link to another item
        
if ($item->type == 'menulink')
        {
            
$menu = &JSite::getMenu();
            if (
$newItem $menu->getItem($item->query['Itemid'])) {
                
$tmp = clone($newItem);
                
$tmp->name     '<span><![CDATA['.$item->name.']]></span>';
                
$tmp->mid     $item->id;
                
$tmp->parent $item->parent;
            } else {
                return 
false;
            }
        } else {
            
$tmp = clone($item);
            
$tmp->name '<span><![CDATA['.$item->name.']]></span>';
        }

        
$iParams = new JParameter($tmp->params);
        if (
$params->get('menu_images') && $iParams->get('menu_image') && $iParams->get('menu_image') != -1) {
            switch (
$params->get('menu_images_align'0)){
                case 

                
$imgalign='align="left"';
                break;
                
                case 
:
                
$imgalign='align="right"';
                break;
                
                default :
                
$imgalign='';
                break;
            }
                
            
            
$image '<img src="'.JURI::base(true).'/images/stories/'.$iParams->get('menu_image').'" '.$imgalign.' alt="'.$item->alias.'" />';
            if(
$tmp->ionly){
                 
$tmp->name null;
             }
        } else {
            
$image null;
        }
        switch (
$tmp->type)
        {
            case 
'separator' :
                return 
'<span class="separator">'.$image.$tmp->name.'</span>';
                break;

            case 
'url' :
                if ((
strpos($tmp->link'index.php?') === 0) && (strpos($tmp->link'Itemid=') === false)) {
                    
$tmp->url $tmp->link.'&amp;Itemid='.$tmp->id;
                } else {
                    
$tmp->url $tmp->link;
                }
                break;

            default :
                
$router JSite::getRouter();
                
$tmp->url $router->getMode() == JROUTER_MODE_SEF 'index.php?Itemid='.$tmp->id $tmp->link.'&Itemid='.$tmp->id;
                break;
        }

        
// Print a link if it exists
        
if ($tmp->url != null)
        {
            
// Handle SSL links
            
$iSecure $iParams->def('secure'0);
            if (
$tmp->home == 1) {
                
$tmp->url JURI::base();
            } elseif (
strcasecmp(substr($tmp->url04), 'http') && (strpos($tmp->link'index.php?') !== false)) {
                
$tmp->url JRoute::_($tmp->urltrue$iSecure);
            } else {
                
$tmp->url str_replace('&''&amp;'$tmp->url);
            }

            switch (
$tmp->browserNav)
            {
                default:
                case 
0:
                    
// _top
                    
$data '<a href="'.$tmp->url.'">'.$image.$tmp->name.'</a>';
                    break;
                case 
1:
                    
// _blank
                    
$data '<a href="'.$tmp->url.'" target="_blank">'.$image.$tmp->name.'</a>';
                    break;
                case 
2:
                    
// window.open
                    
$attribs 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$this->_params->get('window_open');

                    
// hrm...this is a bit dickey
                    
$link str_replace('index.php''index2.php'$tmp->url);
                    
$data '<a href="'.$link.'" onclick="window.open(this.href,\'targetWindow\',\''.$attribs.'\');return false;">'.$image.$tmp->name.'</a>';
                    break;
            }
        } else {
            
$data '<a>'.$image.$tmp->name.'</a>';
        }

        return 
$data;
    }
}

/**
 * Main Menu Tree Node Class.
 *
 * @package        Joomla
 * @subpackage    Menus
 * @since        1.5
 */
class JMenuNode extends JNode
{
    
/**
     * Node Title
     */
    
var $title null;

    
/**
     * Node Link
     */
    
var $link null;

    
/**
     * CSS Class for node
     */
    
var $class null;

    function 
__construct($id$title$access null$link null$class null)
    {
        
$this->id        $id;
        
$this->title    $title;
        
$this->access    $access;
        
$this->link        $link;
        
$this->class    $class;
    }
}

Any ideas guys what, can be a problem here.
Some times the site works fine, but sometimes i get above mentioned error

please help me (

Last edited by chrishirst; 04-23-2010 at 06:31 PM..
grabusik is offline
Reply With Quote
View Public Profile
 
 
Register now for full access!
Old 04-22-2010, 06:09 AM Re: Call to a member function get() on a non-object
NullPointer's Avatar
Will Code for Food

Posts: 2,815
Name: Matt
Location: Irvine, CA
Trades: 0
Next time use the PHP bbcode and indicate which line the error is on.

It looks like you are calling render with a non-object as the first parameter. The definition for render is in the code you posted, but no calls. Going by your stack trace it looks like the call that is causing the problem is on line 79 of index.php
__________________

Please login or register to view this content. Registration is FREE
|
Please login or register to view this content. Registration is FREE
|
Please login or register to view this content. Registration is FREE
|
Please login or register to view this content. Registration is FREE
NullPointer is online now
Reply With Quote
View Public Profile Visit NullPointer's homepage!
 
Old 04-22-2010, 06:21 AM Re: Call to a member function get() on a non-object
Junior Talker

Posts: 3
Name: Adam
Trades: 0
Hello, i'm sorry for that.
here it's the index file which refers to render
PHP Code:
<?php
/**
* @version        $Id: index.php 11407 2009-01-09 17:23:42Z willebil $
* @package        Joomla
* @copyright    Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
* @license        GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// Set flag that this is a parent file
define'_JEXEC');

define('JPATH_BASE'dirname(__FILE__) );

define'DS'DIRECTORY_SEPARATOR );

require_once ( 
JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( 
JPATH_BASE .DS.'includes'.DS.'framework.php' );

JDEBUG $_PROFILER->mark'afterLoad' ) : null;

/**
 * CREATE THE APPLICATION
 *
 * NOTE :
 */
$mainframe =& JFactory::getApplication('site');

/**
 * INITIALISE THE APPLICATION
 *
 * NOTE :
 */
// set the language
$mainframe->initialise();

JPluginHelper::importPlugin('system');

// trigger the onAfterInitialise events
JDEBUG $_PROFILER->mark('afterInitialise') : null;
$mainframe->triggerEvent('onAfterInitialise');

/**
 * ROUTE THE APPLICATION
 *
 * NOTE :
 */
$mainframe->route();

// authorization
$Itemid JRequest::getInt'Itemid');
$mainframe->authorize($Itemid);

// trigger the onAfterRoute events
JDEBUG $_PROFILER->mark('afterRoute') : null;
$mainframe->triggerEvent('onAfterRoute');

/**
 * DISPATCH THE APPLICATION
 *
 * NOTE :
 */
$option JRequest::getCmd('option');
$mainframe->dispatch($option);

// trigger the onAfterDispatch events
JDEBUG $_PROFILER->mark('afterDispatch') : null;
$mainframe->triggerEvent('onAfterDispatch');

/**
 * RENDER  THE APPLICATION
 *
 * NOTE :
 */
$mainframe->render();       // here is the 79 line

// trigger the onAfterRender events
JDEBUG $_PROFILER->mark('afterRender') : null;
$mainframe->triggerEvent('onAfterRender');

/**
 * RETURN THE RESPONSE
 */
echo JResponse::toString($mainframe->getCfg('gzip'));
Can i change this line somehow to get the fix address, or something to avoid my problem?
PHP Code:
$mainframe =& JFactory::getApplication('site'); 
grabusik is offline
Reply With Quote
View Public Profile
 
Old 04-22-2010, 06:36 AM Re: Call to a member function get() on a non-object
NullPointer's Avatar
Will Code for Food

Posts: 2,815
Name: Matt
Location: Irvine, CA
Trades: 0
PHP Code:
$mainframe->render(); 
render has to take two parameters; you are calling it with none. Unfortunately I can't tell from the code or comments what you should be passing to render in this case.
__________________

Please login or register to view this content. Registration is FREE
|
Please login or register to view this content. Registration is FREE
|
Please login or register to view this content. Registration is FREE
|
Please login or register to view this content. Registration is FREE
NullPointer is online now
Reply With Quote
View Public Profile Visit NullPointer's homepage!
 
Old 04-22-2010, 06:44 AM Re: Call to a member function get() on a non-object
Junior Talker

Posts: 3
Name: Adam
Trades: 0
I see, can you tell me please why the site is working sometimes, and sometimes not?

If there is a problem with this files, the internet site should not work all time.

Am i right?

Can it be something wrong with the serwer side?
grabusik is offline
Reply With Quote
View Public Profile
 
Reply     « Reply to Call to a member function get() on a non-object
 

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off





   
RSS Feed  Feeds: RSS   JS   XML
RSS Feed  Feeds for this forum: RSS   JS   XML



Page generated in 0.17508 seconds with 12 queries