db-> loadObjectList()与Joomla 3.0的可能问题

时间:2012-10-23 13:37:02

标签: php mysql joomla joomla3.0

我们开发了一款适用于Joomla 1.5和2.5的shoutbox。我通过更改XML中的版本和其他一些内容来使Joomla 3.0兼容。

当我尝试加载分配了shoutbox模块的页面时,我收到以下错误消息:

Notice: Trying to get property of non-object in C:\wamp\www\XXX\libraries\legacy\module\helper.php on line 150

Notice: Undefined property: stdClass::$content in C:\wamp\www\XXX\templates\system\html\modules.php on line 17

我把它缩小到造成问题的一行,即:

$rows = $db->loadObjectList();

此行来自以下检索喊叫的功能:

function getShouts($number, $timezone, $message) {
    global $mainframe;
    $shouts = array();
    $db =& JFactory::getDBO();
    $query = 'SELECT * FROM #__shoutbox ORDER BY id DESC';
    $db->setQuery($query , 0 , $number);
    $rows = $db->loadObjectList();
    $i=0;
    $timezone=$timezone*60*60;
    foreach ( $rows as $row ) {
        $shouts[$i]->id = $row->id;
        $shouts[$i]->name = $row->name;
        $adjustedtime = strtotime($row->when) + $timezone;
        $shouts[$i]->when = date( 'Y-m-d H:i:s', $adjustedtime);
        $shouts[$i]->ip = $row->ip;
        $shouts[$i]->msg = $row->msg;
        $i++;
    }
    return $shouts;
}

老实说,我不知道为什么我会收到这两个错误,因为它们模块在以前的Joomla版本中完美运行。我尝试过使用不同的方法来获得支持,但没有任何效果。

有没有人想知道为什么会这样,并有解决方案?

1 个答案:

答案 0 :(得分:2)

我不知道它在2.5中对你有用,但你需要 http://www.theartofjoomla.com/home/9-developer/135-database-upgrades-in-joomla-16.html $ query = $ db-> getQuery(true);

你也不应该使用&这里 $ db =& JFactory :: getDBO(); 因为对象总是通过引用传递。