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 = $dataFilter; $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 = array(); if (array_key_exists("search", $_POST) && array_key_exists("value", $_POST["search"]) && strcmp(trim($_POST["search"]["value"]),"")!=0 ){ unset($options["sort"]); $models = $dao->search($useModel, trim($_POST["search"]["value"]), $filter, $options); $ret->recordsTotal = $dao->searchCount($useModel, trim($_POST["search"]["value"])); $ret->recordsFiltered = $dao->searchCount($useModel, trim($_POST["search"]["value"]), $filter); } else { $models = $dao->query($useModel, $filter, $options); $ret->recordsTotal = $dao->count($useModel); $ret->recordsFiltered = $dao->count($useModel,$filter); } if (sizeof($models)>0){ foreach ($models as $model){ $result = self::getObjectFromFieldsArray($model, $exposedModel); $ret->data[] = $result; } } } } 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 { if ($obj->$key instanceof MongoDB\BSON\UTCDateTime){ // $rval->$key = date("d-m-Y H:i",$obj->$key->sec); $rval->$key = date("d-m-Y H:i", $obj->$key->toDateTime()->getTimestamp() ); } else { $rval->$key = $obj->$key; } if (is_callable($val)){ $rval->$key = $val($rval->$key,$obj); } } } } return $rval; } public static function generateTable($backendPage, array $columns, array $htmlOpts = array()){ $tabId = "datatable_".self::$instCount; $toolbarClass = "toolbar_".self::$instCount++; $buttonDiv = ""; $buttonJs = ""; $useButtons = false; if (array_key_exists("buttons",$htmlOpts) && is_array($htmlOpts["buttons"]) && sizeof($htmlOpts["buttons"])>0){ $useButtons = true; $i = 0; foreach ($htmlOpts["buttons"] as $buttonData){ $buttonDiv.=' '; $buttonJs.='$("#'.$tabId."btn".$i.'").click(function(){'. 'if ($("tr.selected").length>0){'. 'var useForm = $("div.' . $toolbarClass . ' form");'. 'useForm.attr("action","'.$buttonData["page"].'").find("input").val($("tr.selected td:last-child").html());'. 'useForm.submit();'. '}'. '});'; $i++; } $buttonDiv.='
'; } $additionalControlbarHtml = null; if (array_key_exists("additionalControlbarHtml",$htmlOpts)){ $additionalControlbarHtml = $htmlOpts["additionalControlbarHtml"]; } $additionalPostFunction = null; if (array_key_exists("additionalPostFunction",$htmlOpts)){ $additionalPostFunction = $htmlOpts["additionalPostFunction"]; } $initCompleteFunction = null; if (array_key_exists("initCompleteFunction",$htmlOpts)){ $initCompleteFunction = $htmlOpts["initCompleteFunction"]; } $columns[] = array("label"=>"id","data"=>"id"); $colLabels = "