Creato modello base per le pagine di backend delle datatables Alcune pagine di esempio di uso delle datatables Aggiunto metodo count al dao
94 lines
2.5 KiB
PHP
94 lines
2.5 KiB
PHP
<?php
|
|
/*
|
|
Author: Riccardo Di Dato
|
|
Creation Date: 14/gen/2016
|
|
*/
|
|
|
|
class DatatablesHelper {
|
|
private static $instCount = 0;
|
|
|
|
public static function getResult($useModel,$permissionFlagRequired, array $exposedModel){
|
|
$ret = new stdClass();
|
|
$ret->draw = $_POST["draw"];
|
|
$ret->recordsTotal = 0;
|
|
$ret->recordsFiltered = 0;
|
|
$ret->data = array();
|
|
|
|
if (AdminLoginManager::isLogged()){
|
|
$admin = AdminLoginManager::getLogged();
|
|
if ($admin->hasRole($permissionFlagRequired)){
|
|
$dao = GlobalVariables::get("dao");
|
|
$filter = array();
|
|
|
|
$options = array('limit'=>$_POST["length"], 'skip'=>$_POST["start"]);
|
|
if (sizeof($_POST["order"])>0){
|
|
foreach ($_POST["order"] as $details){
|
|
$key = $_POST["columns"][$details["column"]]["data"];
|
|
$options["sort"][$key] = strcasecmp($details["dir"], "asc")==0?1:-1;
|
|
}
|
|
}
|
|
|
|
$models = $dao->query($useModel, $filter, $options);
|
|
|
|
if (sizeof($models)>0){
|
|
foreach ($models as $model){
|
|
$result = self::getObjectFromFieldsArray($model, $exposedModel);
|
|
|
|
$ret->data[] = $result;
|
|
}
|
|
}
|
|
$ret->recordsTotal = $dao->count($useModel);
|
|
$ret->recordsFiltered = $dao->count($useModel,$filter);
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
private static function getObjectFromFieldsArray($obj,array $fieldArr){
|
|
$rval = new stdClass();
|
|
if (sizeof($fieldArr)>0){
|
|
foreach ($fieldArr as $key=>$val){
|
|
if (is_array($val)){
|
|
$rval->$key = self::getObjectFromFieldsArray($obj->$key, $val);
|
|
}
|
|
else {
|
|
$rval->$key = $obj->$key;
|
|
}
|
|
}
|
|
}
|
|
return $rval;
|
|
}
|
|
|
|
public static function generateTable($backendPage, array $columns, array $htmlOpts = array()){
|
|
$tabId = "datatable_".self::$instCount++;
|
|
$colLabels = "<tr>";
|
|
$jsCols = array();
|
|
foreach ($columns as $col){
|
|
$colLabels.= '<th>'.$col["label"].'</th>';
|
|
|
|
$jsCols[]= '{"data":"'.$col["data"].'"}';
|
|
}
|
|
$colLabels.= '</tr>';
|
|
|
|
echo '<table id="'.$tabId.'"><thead>'.$colLabels.'</thead><tfoot>'.$colLabels.'</tfoot></table>';
|
|
|
|
echo '<script type="text/javascript">'."\n".
|
|
'$(document).ready(function(){$("#'.$tabId.'").DataTable({'."\n".
|
|
'"language": {"url": "'.GUIHandler::getJavascriptsUrl().'datatables.ita.lang"},'."\n".
|
|
'"processing": true,'."\n".
|
|
'"serverSide": true,'."\n".
|
|
'"ajax": {'."\n".
|
|
'"url": "'.GUIHandler::getBaseUrl().'admin/tablesBackends/'.$backendPage.'",'."\n".
|
|
'"type": "POST"'."\n".
|
|
'},'."\n".
|
|
'"columns": ['. implode(",", $jsCols) . ']});'."\n".
|
|
'});'."\n".
|
|
'</script>';
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|