BUG 8966 Mensaje "fatal error" en un custom drill down cuando se deshabilita...

- Faltaba agregar una validacion en el formulario de edicion en caso de que la clase del dashlet haya sido desactivada o borrada
- Ahora se redirecciona de nuevo al listado y se muestra un mensaje de error que indica que el objeto no existe y que posiblemente
el plugin relacionado haya sido desactivado
This commit is contained in:
Julio Cesar Laura
2012-04-13 16:13:19 -04:00
parent 6d7185e320
commit 02741317b2
4 changed files with 40 additions and 26 deletions

View File

@@ -20,7 +20,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
foreach ($pluginsDashlets as $pluginDashlet) {
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP);
}
require_once ("classes" . PATH_SEP . "class." . $className . ".php");
}
G::LoadClass($className);
@@ -37,6 +37,9 @@ class PMDashlet extends DashletInstance implements DashletInterface {
public function setup($dasInsUid) {
try {
$this->dashletInstance = $this->loadDashletInstance($dasInsUid);
if (!isset($this->dashletInstance['DAS_CLASS'])) {
throw new Exception(G::LoadTranslation('ID_ERROR_OBJECT_NOT_EXISTS') . ' - Probably the plugin related is disabled');
}
$className = $this->dashletInstance['DAS_CLASS'];
G::LoadClass($className);
if (!class_exists($className)) {
@@ -45,8 +48,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
foreach ($pluginsDashlets as $pluginDashlet) {
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP);
}
require_once ("classes" . PATH_SEP . "class." . $className . ".php");
require_once 'classes' . PATH_SEP . 'class.' . $className . '.php';
}
$this->dashletObject = new $className();
$this->dashletObject->setup($this->dashletInstance);
@@ -97,10 +99,10 @@ class PMDashlet extends DashletInstance implements DashletInterface {
$dataset->next();
while ($row = $dataset->getRow()) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_INS_STATUS_LABEL'] = ($row['DAS_INS_STATUS'] == '1' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE'));
$row["DAS_INS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : "";
switch ($row['DAS_INS_OWNER_TYPE']) {
case 'EVERYBODY':
$row['DAS_INS_OWNER_TITLE'] = G::LoadTranslation('ID_ALL_USERS');
@@ -155,6 +157,9 @@ class PMDashlet extends DashletInstance implements DashletInterface {
//Load data from the serialized field
$dashlet = new Dashlet();
$dashletFields = $dashlet->load($dashletInstance['DAS_UID']);
if (is_null($dashletFields)) {
$dashletFields = array();
}
return array_merge($dashletFields, $dashletInstance);
}
catch (Exception $error) {
@@ -200,11 +205,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']);
$row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"];
$row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null);
$dashletsInstances[$row['DAS_INS_UID']] = $row;
}
$dataset->next();
@@ -225,11 +230,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']);
$row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"];
$row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null);
$dashletsInstances[$row['DAS_INS_UID']] = $row;
}
$dataset->next();
@@ -252,11 +257,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']);
$row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"];
$row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null);
$dashletsInstances[$row['DAS_INS_UID']] = $row;
}
$dataset->next();
@@ -281,11 +286,11 @@ class PMDashlet extends DashletInstance implements DashletInterface {
while ($row = $dataset->getRow()) {
if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
$row['DAS_XTEMPLATE'] = $this->getXTemplate($row['DAS_CLASS']);
$row["DAS_TITLE"] = (isset($arrayField["DAS_INS_TITLE"]) && !empty($arrayField["DAS_INS_TITLE"]))? $arrayField["DAS_INS_TITLE"] : $row["DAS_TITLE"];
$row["DAS_TITLE"] = $row["DAS_TITLE"] . ((isset($arrayField["DAS_INS_SUBTITLE"]) && !empty($arrayField["DAS_INS_SUBTITLE"]))? str_replace("@@USR_USERNAME", $_SESSION["USR_USERNAME"], $arrayField["DAS_INS_SUBTITLE"]) : null);
$dashletsInstances[$row['DAS_INS_UID']] = $row;
}
$dataset->next();
@@ -310,7 +315,7 @@ class PMDashlet extends DashletInstance implements DashletInterface {
foreach ($pluginsDashlets as $pluginDashlet) {
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP);
}
require_once ("classes" . PATH_SEP . "class." . $className . ".php");
}
G::LoadClass($className);