Current File : /home/users/barii/public_html/finansenl.com.pl/wodki/modules/sort/classes/Sort/Core.php |
<?php defined('SYSPATH') or die('No direct script access.');
/**
* Message is a class that lets you easily send messages
* in your application (aka Flash Messages)
*
* @package Message
* @author Dave Widmer
* @see http://github.com/daveWid/message
* @see http://www.davewidmer.net
* @copyright 2010 © Dave Widmer
*/
class Sort_Core
{
public function __construct()
{
}
/**
* Displays the message
*
* @return string Message to string
*/
public static function display()
{
$categories_id = !empty($_GET['categories_id']) ? addslashes($_GET['categories_id']) : '';
$types_id = !empty($_GET['types_id']) ? addslashes($_GET['types_id']) : '';
$keyword = !empty($_GET['keyword']) ? addslashes($_GET['keyword']) : '';
$tags_key = !empty($_GET['tags']) ? addslashes($_GET['tags']) : '';
$categories = ORM::Factory('item_category')
->join('items','LEFT')
->on('items.categories_id','=', 'item_category.id')
->join('item_type_links','LEFT')
->on('item_type_links.id', '=', 'items.types_id')
->join('item_types','LEFT')
->on('item_types.id', '=', 'item_type_links.types_id');
if( !empty( $keyword ) ) {
$categories = $categories->join('item_categories','LEFT')
->on('item_categories.id', '=', 'items.categories_id')
->and_where_open()
->where('item_categories.title','LIKE', '%'.$keyword.'%')
->or_where('item_types.title','LIKE', $keyword.'%')
->or_where('items.tags','LIKE', '%'.$keyword.'%')
->or_where('items.title','LIKE', '%'.$keyword.'%')
->and_where_close();
//->where('items.tags','LIKE', '%'.$keyword.'%');
}
if( !empty( $types_id ) ) {
$categories = $categories
->where('item_type_links.types_id','=', $types_id);
//$categories = $categories->where('items.types_id','=', $types_id);
}
$categories = $categories->order_by('order','asc')->group_by('item_category.id')->find_all();
$tags = array();
$tag_tmp = array();
$tags_list = '';
$i=0;
$items = ORM::Factory('item')->join('item_type_links','LEFT')
->on('item_type_links.id', '=', 'item.types_id')
->join('item_types','LEFT')
->on('item_types.id', '=', 'item_type_links.types_id');
if( !empty( $categories_id ) )
$items = $items->where('categories_id','=', $categories_id);
if( !empty( $types_id ) ) {
//$items = $items->where('types_id','=', $types_id);
$items = $items
->where('item_type_links.types_id','=', $types_id);
}
if( !empty( $tags_key ) ) {
$items = $items
->where('item.tags','LIKE', '%'.$tags_key.'%');
}
if( !empty( $keyword ) ) {
$items = $items
->join('item_categories','LEFT')
->on('item_categories.id', '=', 'item.categories_id')
->where(DB::expr('DATE_FORMAT(`items.lifetime_date`,"%Y-%m-%d %H-%i-%s")'),'>=', date('Y-m-d H:i:s'))
->and_where_open()
->where('item_categories.title','LIKE', '%'.$keyword.'%')
->or_where('item_types.title','LIKE', $keyword.'%')
->or_where('item.tags','LIKE', '%'.$keyword.'%')
->or_where('item.title','LIKE', '%'.$keyword.'%')
->and_where_close();
}
$items_test = clone $items;
$items_test = $items_test->find_all();
$sizes = $items->group_by('size')->find_all();
if( empty( $keyword ) ) {
$items_tags_temp = ORM::Factory('item')->where('status','=', 1)->find_all();
foreach( $items_tags_temp as $tg ) {
//if( $i > 0 )
$tags_list .= trim($tg->tags).",";
}
}
$types_arr = array();
foreach( $items_test as $tg ) {
//if( $i > 0 )
if( !empty( $keyword ) ) {
$tags_list .= trim($tg->tags).",";
}
// TODO ITEM TYPES
$t_tmp = ORM::Factory('item_type_link')->where('id','=', $tg->types_id)->find();
$types_arr[] = $t_tmp->types_id;
//
//echo $tg->id."::".$t_tmp->types_id."<br/>";
$i++;
}
$types_arr_ = array_unique($types_arr);
$types = ORM::Factory('item_type');
if( !empty( $types_arr_) )
$types = $types->where('id','IN', $types_arr_);
$types = $types->find_all();
$tags_list = substr( $tags_list, 0, -1);
$tags = explode(",", $tags_list);
foreach( $tags as $t ) {
$tag_tmp[] = trim($t);
}
$tags = array_unique( $tag_tmp );
sort( $tags );
return View::factory('sort/basic')
->set('categories', $categories)
->set('types', $types)
->set('tags', $tags)
->set('sizes', $sizes)
->set('keyword', $keyword)
->render();
}
/**
* The same as display - used to mold to Kohana standards
*
* @return string HTML for message
*/
public static function render()
{
return self::display();
}
public static function get()
{
return 1;
}
}