e107inc/e107

View on GitHub
e107_plugins/download/e_search.php

Summary

Maintainability
A
0 mins
Test Coverage
F
1%
<?php
/*
 * e107 website system
 *
 * Copyright (C) 2008-2014 e107 Inc (e107.org)
 * Released under the terms and conditions of the
 * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
 * 
 * Download e_search addon 
 * 
 */
 

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

// v2 e_search addon. 
// Removes the need for search_parser.php, search_advanced.php and in most cases search language files. 

class download_search extends e_search // include plugin-folder in the name.
{
        
    function config()
    {
        $sql = e107::getDb();
                    
        $catList = array();
        
        $catList[] = array('id' => 'all', 'title' => LAN_SEARCH_51);
        
        if ($sql ->gen("SELECT download_category_id, download_category_name FROM #download_category WHERE download_category_parent != 0 AND download_category_class IN (".USERCLASS_LIST.")")) 
        {
            while($row = $sql->fetch()) 
            {
                $catList[] = array('id' => $row['download_category_id'], 'title' => $row['download_category_name']);
            //    $advanced_caption['title'][$row['category_id']] = 'News -> '.$row['category_name'];
            }
        }            
                
                
        $search = array(
            'name'            => LAN_PLUGIN_DOWNLOAD_NAME,
            'table'            => 'download AS d LEFT JOIN #download_category AS c ON d.download_category = c.download_category_id',

            'advanced'         => array(
                                'cat'    => array('type'    => 'dropdown',         'text' => LAN_SEARCH_63, 'list'=>$catList),
                                'date'    => array('type'    => 'date',             'text' => LAN_DATE_POSTED),
                                'author'=> array('type'    => 'author',        'text' => LAN_SEARCH_61)
                            ),
                            
            'return_fields'    => array(
                    'd.download_id', 
                    'd.download_sef',
                    'd.download_category', 
                    'd.download_name', 
                    'd.download_description', 
                    'd.download_author', 
                    'd.download_author_website', 
                    'd.download_datestamp', 
                    'd.download_class', 
                    'c.download_category_id',
                    'c.download_category_name',
                    'c.download_category_sef', 
                    'c.download_category_class'
            ),

            // fields and weights.
            'search_fields'    => array(
                'd.download_name'            => '1.2', 
                'd.download_url'             => '0.9', 
                'd.download_description'    => '0.6', 
                'd.download_author'            => '0.6', 
                'd.download_author_website'    => '0.4'
            ), 
            
            'order'            => array('download_datestamp' => 'DESC'),
            
            //'refpage'        => 'download.php'
            'refpage'        => e107::url('download', 'index'), 
        );


        return $search;
    }



    /* Compile Database data for output */
    function compile($row)
    {
        $tp = e107::getParser();

        $download_index_url     =     e107::url('download', 'index');
        $download_category_url     =     e107::url('download', 'category', $row);

        //TODO Remove html from pre_summary and use additional vars instead. 

        $res = array();
    
        $datestamp = $tp->toDate($row['download_datestamp'], "long");
        
        $res['link']         = e107::url('download', 'item', $row);
        $res['pre_title']     = $tp->toHTML($row['download_category_name'],false,'TITLE_PLAIN')." | ";
        $res['title']         = $row['download_name'];
        $res['pre_summary'] = "<div class='smalltext'><a href='".$download_index_url."'>".LAN_197."</a> -> <a href='".$download_category_url."'>".$row['download_category_name']."</a></div>";
        $res['summary']     = $row['download_description'];
        $res['detail']         = LAN_SEARCH_15." ".$row['download_author']." | ".LAN_SEARCH_66.": ".$datestamp;

        return $res;
    }



    /**
     * Optional - Advanced Where
     * @param $parm - data returned from $_GET (ie. advanced fields included. in this case 'date' and 'author' )
     */
    function where($parm=array())
    {
        $tp = e107::getParser();
        
        $qry = "download_active > '0' AND d.download_visible IN (".USERCLASS_LIST.") AND c.download_category_class IN (".USERCLASS_LIST.") AND";

        if (isset($parm['cat']) && is_numeric($parm['cat'])) 
        {
            $qry .= " d.download_category='".$parm['cat']."' AND";
        }
        
        if (isset($parm['time']) && is_numeric($parm['time'])) 
        {
            $qry .= " d.download_datestamp ".($parm['on'] == 'new' ? '>=' : '<=')." '".(time() - $parm['time'])."' AND";
        }
        
        if (isset($parm['author']) && $parm['author'] != '') 
        {
            $qry .= " (d.download_author = '".$tp -> toDB($parm['author'])."') AND";
        }
        
        return $qry;
    }
    

}