コード例 #1
0
ファイル: k2category.php プロジェクト: GitIPFire/Homeworks
    /**
     * Overriden method, to add indentation to the list of categories
     *
     */
    public function onJosettaLoadItems($context, $state)
    {

        if ((!empty($context) && ($context != $this->_context)))
        {
            return null;
        }

        // read data. Can't use parent, as this would slice the results
        // using limitstart and limit. K2 needs to slice later on,
        // after indenting has been done
        $items = array();
        $db = JFactory::getDbo();
        $this->_buildItemsListQuery($state);
        $db->setQuery($this->_query);
        $rawItems = $db->loadObjectList();

        // Check for a database error.
        if ($db->getErrorNum())
        {
            ShlSystem_Log::logError(__METHOD__.': '.$db->getErrorMsg());
            $rawItems = array();
        }

        // now indent
        if (!empty($rawItems))
        {

            // Joomla! framework menu utility used to indent
            // requires fields as parent_id instead of parent
            foreach ($rawItems as &$item)
            {
                $item->title = $item->name;
                $item->parent_id = $item->parent;
            }

            // indent cat list, for easier reading
            $items = self::indentCategories($rawItems);
            foreach ($items as &$item)
            {
                $item->name = JString::str_ireplace('<sup>|_</sup>', '', $item->treename);
            }

            // finally slice up to get the set we need
            $items = array_slice($items, $state->get('list.start'), $state->get('list.limit'));
        }

        return $items;
    }