e107inc/e107

View on GitHub
e107_plugins/featurebox/includes/tree.php

Summary

Maintainability
A
0 mins
Test Coverage
A
92%
<?php
/*
* e107 website system
*
* Copyright (c) 2008-2009 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Featurebox Category Tree model
*
* $URL$
* $Id$
*/

if (!defined('e107_INIT')) { exit; }

class plugin_featurebox_tree extends e_tree_model
{
    protected $_field_id = 'fb_id';
    /**
     * Load tree data
     * TODO - system cache
     * 
     * @param integer $id
     * @param array $options
     * @param boolean $force
     * @return plugin_featurebox_tree
     */
    public function load($id=null, $force = false, $options=array())
    {
        if(!$force && !$this->isEmpty())
        {
            return $this;
        }

        $this->setParam('model_class', 'plugin_featurebox_item')
            ->setParam('model_message_stack', 'featurebox');

    //    $this->updateParams($options);
        
        $order = $this->getParam('random') ? ' ORDER BY rand()' : ' ORDER BY fb_order ASC';
        $limit = $this->getParam('limit') ? ' LIMIT '.intval($this->getParam('from'), 0).','.intval($this->getParam('limit')) : '';
        $ids = $this->getParam('ids') ? preg_replace('/[^0-9,]/', '', $this->getParam('ids')) : '';
        $where = $ids ? ' AND fb_id IN('.$ids.')' : '';
        $qry = 'SELECT SQL_CALC_FOUND_ROWS * FROM #featurebox WHERE fb_category='.intval($id).' AND fb_class IN('.USERCLASS_LIST.')'.$where.$order.$limit;
        $this->setParam('db_query', $qry);
        
        parent::loadBatch($force);
        
        return $this;
    }
}