Файл: oc-includes/osclass/classes/datatables/MediaDataTable.php
Строк: 123
<?php if ( ! defined('ABS_PATH')) exit('ABS_PATH is not loaded. Direct access is not allowed.');
/*
* Copyright 2014 Osclass
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* MediaDataTable class
*
* @since 3.1
* @package Osclass
* @subpackage classes
* @author Osclass
*/
class MediaDataTable extends DataTable
{
private $order_by;
private $resourceID;
public function table($params)
{
$this->addTableHeader();
$this->getDBParams($params);
$media = ItemResource::newInstance()->getResources($this->resourceID, $this->start, $this->limit, $this->order_by['column_name'], $this->order_by['type']);
$this->processData($media);
$this->total = ItemResource::newInstance()->countResources();
if( $this->resourceID == null ) {
$this->total_filtered = $this->total;
} else {
$this->total_filtered = ItemResource::newInstance()->countResources( $this->resourceID );
}
return $this->getData();
}
private function addTableHeader()
{
$arg_date = '&sort=date';
if(Params::getParam('sort') == 'date') {
if(Params::getParam('direction') == 'desc') {
$arg_date .= '&direction=asc';
};
}
$arg_item = '&sort=attached_to';
if(Params::getParam('sort') == 'attached_to') {
if(Params::getParam('direction') == 'desc') {
$arg_item .= '&direction=asc';
};
}
Rewrite::newInstance()->init();
$page = (int)Params::getParam('iPage');
if($page==0) { $page = 1; };
Params::setParam('iPage', $page);
$url_base = preg_replace('|&direction=([^&]*)|', '', preg_replace('|&sort=([^&]*)|', '', osc_base_url().Rewrite::newInstance()->get_raw_request_uri()));
$this->addColumn('bulkactions', '<input id="check_all" type="checkbox" />');
$this->addColumn('file', __('File'));
$this->addColumn('action', __('Action'));
$this->addColumn('attached_to', '<a href="'.osc_esc_html($url_base.$arg_item).'">'.__('Attached to').'</a>');
$this->addColumn('date', '<a href="'.osc_esc_html($url_base.$arg_date).'">'.__('Date').'</a>');
$dummy = &$this;
osc_run_hook("admin_media_table", $dummy);
}
private function processData($media)
{
if(!empty($media)) {
foreach($media as $aRow) {
$row = array();
$row['bulkactions'] = '<input type="checkbox" name="id[]" value="' . $aRow['pk_i_id'] . '" />';
$row['file'] = '<div id="media_list_pic"><img src="' . osc_apply_filter('resource_path', osc_base_url() . $aRow['s_path']) . $aRow['pk_i_id'] . '_thumbnail.' . $aRow['s_extension'] . '" style="max-width: 60px; max-height: 60px;" /></div> <div id="media_list_filename">' . $aRow['s_content_type'];
$row['action'] = '<a onclick="return delete_dialog('' . $aRow['pk_i_id'] . '');" >' . __('Delete') . '</a>';
$row['attached_to'] = '<a target="_blank" href="' . osc_item_url_ns($aRow['fk_i_item_id']) . '">item #' . $aRow['fk_i_item_id'] . '</a>';
$row['date'] = osc_format_date($aRow['dt_pub_date']);
$row = osc_apply_filter('media_processing_row', $row, $aRow);
$this->addRow($row);
$this->rawRows[] = $aRow;
}
}
}
private function getDBParams($_get)
{
foreach($_get as $k => $v) {
if( ( $k == 'resourceId' ) && !empty($v) ) {
$this->resourceID = intval($v);
}
if( $k == 'iDisplayStart' ) {
$this->start = intval($v);
}
if( $k == 'iDisplayLength' ) {
$this->limit = intval($v);
}
if( $k == 'sEcho' ) {
$this->sEcho = intval($v);
}
}
$this->order_by['type'] = $direction = $_get['direction'];
$arrayDirection = array('desc', 'asc');
if(!in_array($direction, $arrayDirection)) {
Params::setParam('direction', 'desc');
$this->order_by['type'] = 'desc';
}
// column sort
$sort = $_get['sort'];
$arraySortColumns = array('date' => 'r.pk_i_id', 'attached_to' => 'r.fk_i_item_id');
if(!key_exists($sort, $arraySortColumns)) {
$this->order_by['column_name'] = 'r.pk_i_id';
} else {
$this->order_by['column_name'] = $arraySortColumns[$sort];
}
// set start and limit using iPage param
$start = ((int)Params::getParam('iPage')-1) * $_get['iDisplayLength'];
$this->start = intval($start);
$this->limit = intval($_get['iDisplayLength']);
}
}
?>