From d9895b18a66f4c46ec0657376cc79af6f0ba2e8c Mon Sep 17 00:00:00 2001 From: Riccardo Di Dato Date: Wed, 27 Jan 2016 13:14:48 +0100 Subject: [PATCH] Inserito sistema di log grafico con codice di errore e tabella consultabile via web --- private/lib/dao/lib.inclusion.php | 1 + private/lib/dao/models/LogModel.php | 36 +++++++++++++++++++ private/lib/gui/DatatablesHelper.php | 2 +- public/admin/editGiornalisti.php | 7 ++-- public/admin/logs.php | 36 +++++++++++++++++++ .../tablesBackends/accessListTableBackend.php | 2 ++ .../admin/tablesBackends/logsTableBackend.php | 23 ++++++++++++ 7 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 private/lib/dao/models/LogModel.php create mode 100644 public/admin/logs.php create mode 100644 public/admin/tablesBackends/logsTableBackend.php diff --git a/private/lib/dao/lib.inclusion.php b/private/lib/dao/lib.inclusion.php index c229a18..5e0e0c7 100644 --- a/private/lib/dao/lib.inclusion.php +++ b/private/lib/dao/lib.inclusion.php @@ -28,6 +28,7 @@ require_once(dirname(__FILE__)."/models/MailModel.php"); require_once(dirname(__FILE__)."/models/MailTemplateModel.php"); require_once(dirname(__FILE__)."/models/AccessModel.php"); +require_once(dirname(__FILE__)."/models/LogModel.php"); $dao = new GenericDao($database->dbName,$database->connectionString); GlobalVariables::set("dao", $dao); diff --git a/private/lib/dao/models/LogModel.php b/private/lib/dao/models/LogModel.php new file mode 100644 index 0000000..c92ba61 --- /dev/null +++ b/private/lib/dao/models/LogModel.php @@ -0,0 +1,36 @@ +hasProperty("date")){ + $this->date = new MongoDate(); + } + } + + public function getCode(){ + return $this->id; + } + + public static function getCollectionName(){ + return "guiLog"; + } + + public static function fromException(Exception $ex){ + $tmp = new stdClass(); + $tmp->message = $ex->getMessage(); + $tmp->trace = strval($ex); + + return new self($tmp); + } + +} + +?> \ No newline at end of file diff --git a/private/lib/gui/DatatablesHelper.php b/private/lib/gui/DatatablesHelper.php index 544a7a4..545b026 100644 --- a/private/lib/gui/DatatablesHelper.php +++ b/private/lib/gui/DatatablesHelper.php @@ -59,7 +59,7 @@ class DatatablesHelper { $rval->$key = $obj->$key; } if (is_callable($val)){ - $rval->$key = $val($rval->$key); + $rval->$key = $val($rval->$key,$obj); } } } diff --git a/public/admin/editGiornalisti.php b/public/admin/editGiornalisti.php index e2a554f..7bb790c 100644 --- a/public/admin/editGiornalisti.php +++ b/public/admin/editGiornalisti.php @@ -65,8 +65,11 @@ try{ }catch(GUIException $ex){ $error = $ex->getMessage(); }catch (Exception $exec){ - LoggingFacilityManager::getLogger("gui")->log(LoggingFacility::$LEVEL_ERROR, $exec->getMessage()); - $error = "Si è verificato un errore inaspettato durante l'esecuzione della pagina. Se l'errore persiste contattare il supporto tecnico."; + $msg = LogModel::fromException($exec); + GlobalVariables::get("dao")->save($msg); + +// LoggingFacilityManager::getLogger("gui")->log(LoggingFacility::$LEVEL_ERROR, $exec->getMessage()); + $error = "Si è verificato un errore inatteso durante l'esecuzione della pagina. Contattare il supporto tecnico comunicando il seguente codice di erore '".$msg->getCode()."'"; } ?> diff --git a/public/admin/logs.php b/public/admin/logs.php new file mode 100644 index 0000000..5bf25aa --- /dev/null +++ b/public/admin/logs.php @@ -0,0 +1,36 @@ +hasRole(AdminModel::ADMIN_TYPE_SUPERADMIN)){ + GUIHandler::redirect("admin/index.php"); +} + +MenuGenerator::generateMenu(); + +HTMLHelper::generateAdminHead(); +$columns = array( + array("label"=>"Codice","data"=>"code"), + array("label"=>"Messaggio","data"=>"message"), + array("label"=>"Data","data"=>"date","sort"=>"desc") +); + +$buttons = array(); + +?> +
+ $buttons)); + ?> +
\ No newline at end of file diff --git a/public/admin/tablesBackends/accessListTableBackend.php b/public/admin/tablesBackends/accessListTableBackend.php index 764dedb..d105fc9 100644 --- a/public/admin/tablesBackends/accessListTableBackend.php +++ b/public/admin/tablesBackends/accessListTableBackend.php @@ -24,3 +24,5 @@ $exposedFields = array( $ret = DatatablesHelper::getResult($useModel, $permissionFlagRequired, $exposedFields); echo json_encode($ret); + +?> \ No newline at end of file diff --git a/public/admin/tablesBackends/logsTableBackend.php b/public/admin/tablesBackends/logsTableBackend.php new file mode 100644 index 0000000..7132246 --- /dev/null +++ b/public/admin/tablesBackends/logsTableBackend.php @@ -0,0 +1,23 @@ +function($data, $obj){ + return $obj->getCode(); + }, + "message"=>null, + "date"=>null, + "id"=>null +); + +$ret = DatatablesHelper::getResult($useModel, $permissionFlagRequired, $exposedFields); +echo json_encode($ret); + +?> \ No newline at end of file