⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.1
Server IP:
185.238.29.86
Server:
Linux server2 6.8.12-6-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-6 (2024-12-19T19:05Z) x86_64
Server Software:
nginx/1.18.0
PHP Version:
8.1.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
var
/
www
/
work
/
modules
/
News
/
Blocks
/
View File Name :
ListNews.php
<?php namespace Modules\News\Blocks; use Modules\Template\Blocks\BaseBlock; use Modules\News\Models\News; use Modules\News\Models\NewsCategory; class ListNews extends BaseBlock { function getOptions() { return ([ 'settings' => [ [ 'id' => 'title', 'type' => 'input', 'inputType' => 'text', 'label' => __('Title') ], [ 'id' => 'desc', 'type' => 'input', 'inputType' => 'text', 'label' => __('Desc') ], [ 'id' => 'number', 'type' => 'input', 'inputType' => 'number', 'label' => __('Number Item') ], [ 'id' => 'category_id', 'type' => 'select2', 'label' => __('Filter by Category'), 'select2' => [ 'ajax' => [ 'url' => route('news.admin.category.getForSelect2') , 'dataType' => 'json' ], 'width' => '100%', 'allowClear' => 'true', 'placeholder' => __('-- Select --') ], 'pre_selected'=>route('news.admin.category.getForSelect2',['pre_selected'=>1]) ], [ 'id' => 'order', 'type' => 'radios', 'label' => __('Order'), 'values' => [ [ 'value' => 'id', 'name' => __("Date Create") ], [ 'value' => 'title', 'name' => __("Title") ], ] ], [ 'id' => 'order_by', 'type' => 'radios', 'label' => __('Order By'), 'values' => [ [ 'value' => 'asc', 'name' => __("ASC") ], [ 'value' => 'desc', 'name' => __("DESC") ], ] ] ], 'category'=>__("News") ]); } public function getName() { return __('News: List Items'); } public function content($model = []) { $list = $this->query($model); $data = [ 'rows' => $list, 'title' => $model['title'] ?? "", 'desc' => $model['desc'] ?? "", ]; return view('News::frontend.blocks.list-news.index', $data); } public function contentAPI($model = []){ $rows = $this->query($model); $model['data']= $rows->map(function($row){ return $row->dataForApi(); }); return $model; } public function query($model){ $model_news = News::select("core_news.*")->with(['translation']); if(empty($model['order'])) $model['order'] = "id"; if(empty($model['order_by'])) $model['order_by'] = "desc"; if(empty($model['number'])) $model['number'] = 5; if (!empty($model['category_id'])) { $category_ids = [$model['category_id']]; $list_cat = NewsCategory::whereIn('id', $category_ids)->where("status","publish")->get(); if(!empty($list_cat)){ $where_left_right = []; $params = []; foreach ($list_cat as $cat){ $where_left_right[] = " ( core_news_category._lft >= ? AND core_news_category._rgt <= ? ) "; $params[] = $cat->_lft; $params[] = $cat->_rgt; } $sql_where_join = " ( ".implode("OR" , $where_left_right)." ) "; $model_news ->join('core_news_category', function ($join) use($sql_where_join,$params) { $join->on('core_news_category.id', '=', 'core_news.cat_id') ->WhereRaw($sql_where_join,$params); }); } } $model_news->orderBy("core_news.".$model['order'], $model['order_by']); $model_news->where("core_news.status", "publish"); $model_news->groupBy("core_news.id"); return $model_news->with(['category'])->limit($model['number'])->get(); } }