Вход Регистрация
Файл: oc-includes/osclass/classes/datatables/DataTable.php
Строк: 85
<?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.
 */

    /**
     * DataTable class
     *
     * @since 3.1
     * @package Osclass
     * @subpackage classes
     * @author Osclass
     */
    
abstract class DataTable
    
{
        protected 
$aColumns;
        protected 
$aRows;
        protected 
$rawRows;

        protected 
$limit;
        protected 
$start;
        protected 
$iPage;
        protected 
$total;
        protected 
$totalFiltered;

        public function 
__construct()
        {
            
$this->aColumns = array();
            
$this->aRows = array();
            
$this->rawRows = array();
        }


        
/**
         * FUNCTIONS THAT SHOULD BE REDECLARED IN SUB-CLASSES
         */
        
public function setResults($results null) {
            if(
is_array($results)) {
                
$this->start 0;
                
$this->limit count($results);
                
$this->total count($results);
                
$this->totalFiltered count($results);

                if(
count($results)>0) {
                    foreach(
$results as $r) {
                        
$row = array();
                        if(
is_array($r)) {
                            foreach(
$r as $k => $v) {
                                
$row[$k] = $v;
                            }
                        }
                        
$this->addRow($row);
                    }
                    if(
is_array($results[0])) {
                        foreach(
$results[0] as $k => $v) {
                            
$this->addColumn($k$k);
                        }
                    }
                }
            }
        }




        
/**
         * COMMON FUNCTIONS . DO NOT MODIFY THEM
         */


        /**
         * Add a colum
         * @param type $id
         * @param type $text
         * @param type $priority
         */
        
public function addColumn($id$text$priority 5)
        {
            
$this->removeColumn($id);
            
$this->aColumns[$priority][$id] = $text;
        }

        public function 
removeColumn($id)
        {
            for(
$priority=1;$priority<=10;$priority++) {
                unset(
$this->aColumns[$priority][$id]);
            }
        }

        protected function 
addRow($aRow)
        {
            
$this->aRows[] = $aRow;
        }

        public function 
sortedColumns()
        {
            
$columns_ordered = array();
            for(
$priority=1;$priority<=10;$priority++) {
                if(isset(
$this->aColumns[$priority]) && is_array($this->aColumns[$priority])) {
                    foreach(
$this->aColumns[$priority] as $k => $v) {
                        
$columns_ordered[$k] = $v;
                    }
                }
            }
            return 
$columns_ordered;
        }

        public function 
sortedRows()
        {
            
$rows = array();
            
$columns $this->sortedColumns();
            if(
count($this->aRows)===0) {
                return 
$rows;
            }
            foreach(
$this->aRows as $row) {
                
$aux_row = array();
                foreach(
$columns as $k => $v) {
                    if(isset(
$row[$k])) {
                        
$aux_row[$k] = $row[$k];
                    } else {
                        
$aux_row[$k] = '';
                    }
                }
                
$rows[] = $aux_row;
            }
            return 
$rows;
        }

        public function 
getData()
        {
            return array(
                    
'aColumns'              => $this->sortedColumns()
                    ,
'aRows'                => $this->sortedRows()
                    ,
'iDisplayLength'       => $this->limit
                    
,'iTotalDisplayRecords' => $this->total
                    
,'iTotalRecords'        => $this->totalFiltered
                    
,'iPage'                => $this->iPage
            
);
        }

        public function 
rawRows()
        {
            return 
$this->rawRows;
        }



    }

?>
Онлайн: 3
Реклама