Files
fdn2/private/lib/gui/DatatablesHelper.php
T
Riccardo Di Dato d45f7f5c62 Inserito helper per utilizzare le datatables
Creato modello base per le pagine di backend delle datatables
Alcune pagine di esempio di uso delle datatables
Aggiunto metodo count al dao
2016-01-14 20:38:19 +01:00

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>';
}
}
?>