Your IP : 216.73.216.70


Current Path : /home/azimutno/www/demo/plugins/jsnpagebuilder/defaultelements/articlelist/models/
Upload File :
Current File : /home/azimutno/www/demo/plugins/jsnpagebuilder/defaultelements/articlelist/models/k2articles.php

<?php
/**
 * @version    $Id$
 * @package    JSN_PageBuilder
 * @author     JoomlaShine Team <support@joomlashine.com>
 * @copyright  Copyright (C) 2012 JoomlaShine.com. All Rights Reserved.
 * @license    GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Websites: http://www.joomlashine.com
 * Technical Support:  Feedback - http://www.joomlashine.com/contact-us/get-support.html
 */

// No direct access to this file.
defined('_JEXEC') || die('Restricted access');
if (!JSNPagebuilderHelpersPagebuilder::checkComponentEnabled("com_k2")) {
    return;
}
include_once JPATH_ROOT . '/administrator/components/com_k2/models/items.php';

/**
 * Model class for K2 items
 *
 * @package  JSN_PageBuilder
 * @since    1.0.0
 */
class JSNPbK2ArticlesModel extends K2ModelItems
{
    public function jsnGetData($attributes)
    {
        $mainframe = JFactory::getApplication();
        $params = JComponentHelper::getParams('com_k2');
        $option = JRequest::getCmd('option');
        $view = JRequest::getCmd('view');
        $db = JFactory::getDBO();

        $filter_trash = $mainframe->getUserStateFromRequest($option.$view.'filter_trash', 'filter_trash', 0, 'int');
        $filter_featured = $mainframe->getUserStateFromRequest($option.$view.'filter_featured', 'filter_featured', -1, 'int');
        $search = $mainframe->getUserStateFromRequest($option.$view.'search', 'search', '', 'string');
        $search = JString::strtolower($search);
        $tag = $mainframe->getUserStateFromRequest($option.$view.'tag', 'tag', 0, 'int');
        $language = $mainframe->getUserStateFromRequest($option.$view.'language', 'language', '', 'string');

        // JSNPagebuilder Custom
        // Published items only
        $filter_state = $mainframe->getUserStateFromRequest($option.$view.'filter_state', 'filter_state', 1, 'int');
        $limit = isset($attributes['articlelist_amount']) ? $attributes['articlelist_amount'] : 5;
        $limitStart = 0;
        $filter_order = $attributes['articlelist_sort_by'] != JSNPbArticleListHelper::PB_ARTICLE_SORT_BY_FP_ORDERING ? $attributes['articlelist_sort_by'] : JSNPbArticleListHelper::PB_ARTICLE_SORT_BY_ID;
        $filter_order_Dir = $attributes['articlelist_sort_order'];
        $filter_category = isset($attributes['articlelist_filter_k2_categories']) ? explode(",", $attributes['articlelist_filter_k2_categories']) : false;
        $filter_author = isset($attributes['articlelist_filter_k2_authors']) ? explode(",", $attributes['articlelist_filter_k2_authors']) : false;
        $dateFiltering = $attributes['articlelist_filter_date'];
        $dateField = $attributes['articlelist_date_field'];
        $startDateRange = isset($attributes['articlelist_range_date_start']) ? JFactory::getDate($attributes['articlelist_range_date_start'])->toSql() : '';
        $endDateRange = isset($attributes['articlelist_range_date_end']) ? JFactory::getDate($attributes['articlelist_range_date_end'])->toSql() : '';
        $relativeDate = isset($attributes['articlelist_relative_date']) ? (int) $attributes['articlelist_relative_date'] : 30;

        $query = "SELECT a.*, g.name AS groupname, c.name AS category, v.name AS author, w.name as moderator, u.name AS editor FROM #__k2_items as a";

        $query .= " LEFT JOIN #__groups AS g ON g.id = a.access"." LEFT JOIN #__users AS u ON u.id = a.checked_out"." LEFT JOIN #__users AS v ON v.id = a.created_by"." LEFT JOIN #__users AS w ON w.id = a.modified_by";

        if ($params->get('showTagFilter') && $tag)
        {
            $query .= " LEFT JOIN #__k2_tags_xref AS tags_xref ON tags_xref.itemID = a.id";
        }

        $query .= " JOIN #__k2_categories AS c ON c.id = a.catid AND c.published = 1";

        $query .= " WHERE a.trash={$filter_trash}";

        if ($search)
        {
            $escaped = K2_JVERSION == '15' ? $db->getEscaped($search, true) : $db->escape($search, true);
            $quoted = $db->Quote('%'.$escaped.'%', false);

            if ($params->get('adminSearch') == 'full')
            {
                $query .= " AND ( LOWER(a.title) LIKE ".$quoted." OR LOWER(a.introtext) LIKE ".$quoted." OR LOWER(a.`fulltext`) LIKE ".$quoted." OR LOWER(a.extra_fields_search) LIKE ".$quoted." OR LOWER(a.image_caption) LIKE ".$quoted." OR LOWER(a.image_credits) LIKE ".$quoted." OR LOWER(a.video_caption) LIKE ".$quoted." OR LOWER(a.video_credits) LIKE ".$quoted." OR LOWER(a.metadesc) LIKE ".$quoted." OR LOWER(a.metakey) LIKE ".$quoted.") ";
            }
            else
            {
                $query .= " AND LOWER(a.title) LIKE ".$quoted;
            }
        }

        if ($filter_state > -1)
        {
            $query .= " AND a.published={$filter_state}";
        }

        if ($filter_featured > -1)
        {
            $query .= " AND a.featured={$filter_featured}";
        }

        if ($filter_category)
        {
            if ($params->get('showChildCatItems')) {
                K2Model::addIncludePath(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'models');
                $itemListModel = K2Model::getInstance('Itemlist', 'K2Model');
                $categories = $itemListModel->getCategoryTree($filter_category);
                $sql = @implode(',', $categories);
                $query .= " AND a.catid IN ({$sql})";
            } else {
                $query .= " AND a.catid={$filter_category}";
            }
        } else {
            $query .= " AND a.catid = '' ";
        }

        if ($filter_author) {
            $query .= " AND a.created_by IN (" . implode(',', $filter_author) . ")";
        }

        if ($params->get('showTagFilter') && $tag)
        {
            $query .= " AND tags_xref.tagID = {$tag}";
        }

        if ($language)
        {
            $query .= " AND (a.language = ".$db->Quote($language)." OR a.language = '*')";
        }

        $nullDate	= $db->quote($db->getNullDate());
        $nowDate	= $db->quote(JFactory::getDate()->toSql());
        switch ($dateFiltering)
        {
            case 'range':
                $startDateRange = $startDateRange ? $db->quote($startDateRange) : $nullDate;
                $endDateRange = $endDateRange ? $db->quote($endDateRange) : $nowDate;
                $query .= ' AND (' . $dateField . ' >= DATE(' . $startDateRange . ') AND DATE(' . $dateField .
                    ') <= DATE(' . $endDateRange . '))';
                break;
            case 'relative':
                $query .= ' AND ' . $dateField . ' >= DATE(DATE_SUB(' . $nowDate . ', INTERVAL ' .
                    $relativeDate . ' DAY))';
                break;
            case 'off':
            default:
                break;
        }

        $query .= " ORDER BY {$filter_order} {$filter_order_Dir} ";

        if (K2_JVERSION != '15')
        {
            $query = JString::str_ireplace('#__groups', '#__viewlevels', $query);
            $query = JString::str_ireplace('g.name', 'g.title', $query);
        }
        $dispatcher = JDispatcher::getInstance();
        JPluginHelper::importPlugin('k2');
        $dispatcher->trigger('onK2BeforeSetQuery', array(&$query));
        $db->setQuery($query, $limitStart, $limit);

        return $db->loadAssocList('id');
    }
}