diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php
index 08aa85354..4ec14eaa2 100644
--- a/gulliver/system/class.g.php
+++ b/gulliver/system/class.g.php
@@ -56,7 +56,7 @@ class G
'ldapadvanced' => LdapAdvanced::class,
'dashletopenvscompleted' => DashletOpenVsCompleted::class,
'dashletrssreader' => DashletRssReader::class,
- 'dashletprocesspakerenterprise' => DashletProcessMakerEnterprise::class,
+ 'dashletprocessmakerenterprise' => DashletProcessMakerEnterprise::class,
'dashletprocessmakercommunity' => DashletProcessMakerCommunity::class,
];
@@ -5883,7 +5883,8 @@ class G
/**
* Instanciate an adapter by name.
*
- * @param string $name Adapter name or class name
+ * @param string $name Adapter name or class name :P
+ *
* @param string[] $parameters Constructor parameters
*/
public static function factory($name, ...$parameters)
@@ -5893,4 +5894,29 @@ class G
$rc = new ReflectionClass($class);
return $rc->newInstanceArgs($parameters);
}
+
+ /**
+ * Return current class
+ *
+ * @param $name string name class
+ * @return string name of class
+ */
+ public static function nameClass($name)
+ {
+ $key = strtolower($name);
+ return isset(self::$adapters[$key]) ? self::$adapters[$key] : $name;
+ }
+
+ /**
+ * Verify class exists
+ *
+ * @param $name
+ * @return bool true or false
+ */
+ public static function classExists($name)
+ {
+ $key = strtolower($name);
+ $class = isset(self::$adapters[$key]) ? self::$adapters[$key] : $name;
+ return class_exists($class);
+ }
}
diff --git a/workflow/engine/classes/PmDashlet.php b/workflow/engine/classes/PmDashlet.php
index 13a75cc35..b461c5baf 100644
--- a/workflow/engine/classes/PmDashlet.php
+++ b/workflow/engine/classes/PmDashlet.php
@@ -12,49 +12,110 @@ class PmDashlet extends DashletInstance implements DashletInterface
// Interface functions
+ /**
+ * verify if file exists or no, return the path of file.
+ *
+ * @param $name file
+ * @param string $type CORE or PLUGIN
+ * @return stdClass information of file
+ */
+ private function verifyExistsFile($name, $type = 'CORE')
+ {
+ $response = new stdClass();
+ $response->exists = false;
+ $response->path = '';
+ $response->plugin = '';
+ $response->className = $name;
- public static function getAdditionalFields ($className)
+ //Compatibility with old files
+ $paths = [
+ 'classes' . PATH_SEP . $name . '.php',
+ 'classes' . PATH_SEP . ucfirst($name) . '.php',
+ 'classes' . PATH_SEP . 'class.' . $name . '.php'
+ ];
+
+ switch ($type) {
+ case 'CORE':
+ foreach ($paths as $key => $path) {
+ if (file_exists(PATH_CORE . $path)) {
+ $response->exists = true;
+ $response->path = PATH_CORE . $path;
+ $response->className = $key == 1 ? ucfirst($name) : $name;
+ break;
+ }
+ }
+ break;
+ case 'PLUGIN':
+ foreach (self::getIncludePath() as $plugin => $pathPlugin) {
+ foreach ($paths as $key => $path) {
+ if (file_exists($pathPlugin . $path)) {
+ $response->exists = true;
+ $response->path = $pathPlugin . $path;
+ $response->className = $key == 1 ? ucfirst($name) : $name;
+ $response->plugin = $plugin;
+ break 2;
+ }
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return $response;
+ }
+
+
+ public static function getAdditionalFields($className)
{
try {
- if (! class_exists( $className )) {
- self::setIncludePath();
- require_once 'classes' . PATH_SEP . 'class.' . $className . '.php';
+ if (!G::classExists($className)) {
+ $file = self::verifyExistsFile($className, 'PLUGIN');
+ if ($file->exists) {
+ $className = $file->className;
+ require_once $file->path;
+ }
+ } else {
+ $className = G::nameClass($className);
}
- eval( "\$additionalFields = $className::getAdditionalFields(\$className);" );
+ eval("\$additionalFields = $className::getAdditionalFields(\$className);");
return $additionalFields;
} catch (Exception $error) {
throw $error;
}
}
- public function setup ($dasInsUid)
+ 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' );
+ $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'];
- if (! class_exists( $className )) {
- self::setIncludePath();
- require_once 'classes' . PATH_SEP . 'class.' . $className . '.php';
+ if (!G::classExists($className)) {
+ $file = self::verifyExistsFile($className, 'PLUGIN');
+ if ($file->exists) {
+ $className = $file->className;
+ require_once $file->path;
+ }
}
$this->dashletObject = new $className();
- $this->dashletObject->setup( $this->dashletInstance );
+ $this->dashletObject->setup($this->dashletInstance);
} catch (Exception $error) {
throw $error;
}
}
- public function render ($width = 300)
+ public function render($width = 300)
{
try {
- if (is_null( $this->dashletObject )) {
- throw new Exception( 'Please call to the function "setup" before call the function "render".' );
+ if (is_null($this->dashletObject)) {
+ throw new Exception('Please call to the function "setup" before call the function "render".');
}
- $this->dashletObject->render( $width );
+ $this->dashletObject->render($width);
} catch (Exception $error) {
throw $error;
}
@@ -63,12 +124,12 @@ class PmDashlet extends DashletInstance implements DashletInterface
// Getter and Setters
- public function getDashletInstance ()
+ public function getDashletInstance()
{
return $this->dashletInstance;
}
- public function getDashletObject ()
+ public function getDashletObject()
{
return $this->dashletObject;
}
@@ -76,74 +137,73 @@ class PmDashlet extends DashletInstance implements DashletInterface
// Own functions
- public function getDashletsInstances ($start = null, $limit = null)
- {
+ public function getDashletsInstances($start = null, $limit = null)
+ {
try {
- $dashletsInstances = array ();
- $criteria = new Criteria( 'workflow' );
- $criteria->addSelectColumn( '*' );
- $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
- if (! is_null( $start )) {
- $criteria->setOffset( $start );
+ $dashletsInstances = array();
+ $criteria = new Criteria('workflow');
+ $criteria->addSelectColumn('*');
+ $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
+ if (!is_null($start)) {
+ $criteria->setOffset($start);
}
- if (! is_null( $limit )) {
- $criteria->setLimit( $limit );
+ if (!is_null($limit)) {
+ $criteria->setLimit($limit);
}
- $dataset = DashletInstancePeer::doSelectRS( $criteria );
- $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ $dataset = DashletInstancePeer::doSelectRS($criteria);
+ $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
- $arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] );
+ $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (strstr($row['DAS_TITLE'], '*')) {
- $row['DAS_TITLE'] = G::LoadTranslationPlugin('advancedDashboards', str_replace("*","",$row['DAS_TITLE']));
+ $row['DAS_TITLE'] = G::LoadTranslationPlugin('advancedDashboards', str_replace("*", "", $row['DAS_TITLE']));
}
- $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'] : '';
- if (! class_exists( $row['DAS_CLASS'] )) {
- self::setIncludePath();
- @include 'classes' . PATH_SEP . 'class.' . $row['DAS_CLASS'] . '.php';
- if (! class_exists( $row['DAS_CLASS'] )) {
+ $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'] : '';
+ if (!G::classExists($row['DAS_CLASS'])) {
+ $file = self::verifyExistsFile($row['DAS_CLASS'], 'PLUGIN');
+ if ($file->exists) {
+ $row['DAS_CLASS'] = $file->className;
+ require_once $file->path;
+ } else {
$dataset->next();
continue;
}
}
- eval( "\$row['DAS_VERSION'] = defined('" . $row['DAS_CLASS'] . "::version') ? " . $row['DAS_CLASS'] . "::version : \$row['DAS_VERSION'];" );
+ eval("\$row['DAS_VERSION'] = defined('" . $row['DAS_CLASS'] . "::version') ? " . $row['DAS_CLASS'] . "::version : \$row['DAS_VERSION'];");
switch ($row['DAS_INS_OWNER_TYPE']) {
case 'EVERYBODY':
- $row['DAS_INS_OWNER_TITLE'] = G::LoadTranslation( 'ID_ALL_USERS' );
+ $row['DAS_INS_OWNER_TITLE'] = G::LoadTranslation('ID_ALL_USERS');
break;
case 'USER':
- require_once 'classes/model/Users.php';
$userInstance = new Users();
try {
- $user = $userInstance->load( $row['DAS_INS_OWNER_UID'] );
+ $user = $userInstance->load($row['DAS_INS_OWNER_UID']);
$row['DAS_INS_OWNER_TITLE'] = $user['USR_FIRSTNAME'] . ' ' . $user['USR_LASTNAME'];
} catch (Exception $error) {
- $this->remove( $row['DAS_INS_UID'] );
+ $this->remove($row['DAS_INS_UID']);
$row['DAS_INS_UID'] = '';
}
break;
case 'DEPARTMENT':
- require_once 'classes/model/Department.php';
$departmentInstance = new Department();
try {
- $department = $departmentInstance->load( $row['DAS_INS_OWNER_UID'] );
+ $department = $departmentInstance->load($row['DAS_INS_OWNER_UID']);
$row['DAS_INS_OWNER_TITLE'] = $department['DEP_TITLE'];
} catch (Exception $error) {
- $this->remove( $row['DAS_INS_UID'] );
+ $this->remove($row['DAS_INS_UID']);
$row['DAS_INS_UID'] = '';
}
break;
case 'GROUP':
- require_once 'classes/model/Groupwf.php';
$groupInstance = new Groupwf();
try {
- $group = $groupInstance->load( $row['DAS_INS_OWNER_UID'] );
+ $group = $groupInstance->load($row['DAS_INS_OWNER_UID']);
$row['DAS_INS_OWNER_TITLE'] = $group['GRP_TITLE'];
} catch (Exception $error) {
- $this->remove( $row['DAS_INS_UID'] );
+ $this->remove($row['DAS_INS_UID']);
$row['DAS_INS_UID'] = '';
}
break;
@@ -163,67 +223,64 @@ class PmDashlet extends DashletInstance implements DashletInterface
}
}
- public function loadDashletInstance ($dasInsUid)
+ public function loadDashletInstance($dasInsUid)
{
try {
- $dashletInstance = $this->load( $dasInsUid );
+ $dashletInstance = $this->load($dasInsUid);
//Load data from the serialized field
$dashlet = new Dashlet();
- $dashletFields = $dashlet->load( $dashletInstance['DAS_UID'] );
- if (is_null( $dashletFields )) {
- $dashletFields = array ();
+ $dashletFields = $dashlet->load($dashletInstance['DAS_UID']);
+ if (is_null($dashletFields)) {
+ $dashletFields = array();
}
- return array_merge( $dashletFields, $dashletInstance );
+ return array_merge($dashletFields, $dashletInstance);
} catch (Exception $error) {
throw $error;
}
}
- public function saveDashletInstance ($data)
+ public function saveDashletInstance($data)
{
try {
- $this->createOrUpdate( $data );
+ $this->createOrUpdate($data);
} catch (Exception $error) {
throw $error;
}
}
- public function deleteDashletInstance ($dasInsUid)
+ public function deleteDashletInstance($dasInsUid)
{
try {
- $this->remove( $dasInsUid );
+ $this->remove($dasInsUid);
} catch (Exception $error) {
throw $error;
}
}
- public function getDashletsInstancesForUser ($userUid)
+ public function getDashletsInstancesForUser($userUid)
{
try {
- $dashletsInstances = array ();
- // Include required classes
- require_once 'classes/model/Department.php';
- require_once 'classes/model/Users.php';
+ $dashletsInstances = array();
// Check for "public" dashlets
- $criteria = new Criteria( 'workflow' );
- $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID );
- $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES );
- $criteria->addSelectColumn( DashletPeer::DAS_CLASS );
- $criteria->addSelectColumn( DashletPeer::DAS_TITLE );
- $criteria->add( DashletInstancePeer::DAS_INS_STATUS, '1' );
- $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
- $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'EVERYBODY' );
- $dataset = DashletInstancePeer::doSelectRS( $criteria );
- $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ $criteria = new Criteria('workflow');
+ $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
+ $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
+ $criteria->addSelectColumn(DashletPeer::DAS_CLASS);
+ $criteria->addSelectColumn(DashletPeer::DAS_TITLE);
+ $criteria->add(DashletInstancePeer::DAS_INS_STATUS, '1');
+ $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
+ $criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'EVERYBODY');
+ $dataset = DashletInstancePeer::doSelectRS($criteria);
+ $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
- if (! isset( $dashletsInstances[$row['DAS_INS_UID']] )) {
- $arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] );
+ if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
+ $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (self::verifyPluginDashlet($row['DAS_CLASS'])) {
- $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);
+ $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;
}
@@ -232,26 +289,26 @@ class PmDashlet extends DashletInstance implements DashletInterface
}
// Check for the direct assignments
$usersInstance = new Users();
- $criteria = new Criteria( 'workflow' );
- $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID );
- $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES );
- $criteria->addSelectColumn( DashletPeer::DAS_CLASS );
- $criteria->addSelectColumn( DashletPeer::DAS_TITLE );
- $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
- $criteria->add( DashletInstancePeer::DAS_INS_STATUS, '1' );
- $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'USER' );
- $criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $userUid );
- $dataset = DashletInstancePeer::doSelectRS( $criteria );
- $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ $criteria = new Criteria('workflow');
+ $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
+ $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
+ $criteria->addSelectColumn(DashletPeer::DAS_CLASS);
+ $criteria->addSelectColumn(DashletPeer::DAS_TITLE);
+ $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
+ $criteria->add(DashletInstancePeer::DAS_INS_STATUS, '1');
+ $criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'USER');
+ $criteria->add(DashletInstancePeer::DAS_INS_OWNER_UID, $userUid);
+ $dataset = DashletInstancePeer::doSelectRS($criteria);
+ $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
- if (! isset( $dashletsInstances[$row['DAS_INS_UID']] )) {
- $arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] );
+ if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
+ $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (self::verifyPluginDashlet($row['DAS_CLASS'])) {
- $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);
+ $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;
}
@@ -260,28 +317,28 @@ class PmDashlet extends DashletInstance implements DashletInterface
}
// Check for department assigments
$departmentInstance = new Department();
- $departments = $departmentInstance->getDepartmentsForUser( $userUid );
+ $departments = $departmentInstance->getDepartmentsForUser($userUid);
foreach ($departments as $depUid => $department) {
- $criteria = new Criteria( 'workflow' );
- $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID );
- $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES );
- $criteria->addSelectColumn( DashletPeer::DAS_CLASS );
- $criteria->addSelectColumn( DashletPeer::DAS_TITLE );
- $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
- $criteria->add( DashletInstancePeer::DAS_INS_STATUS, '1' );
- $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'DEPARTMENT' );
- $criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $depUid );
- $dataset = DashletInstancePeer::doSelectRS( $criteria );
- $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ $criteria = new Criteria('workflow');
+ $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
+ $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
+ $criteria->addSelectColumn(DashletPeer::DAS_CLASS);
+ $criteria->addSelectColumn(DashletPeer::DAS_TITLE);
+ $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
+ $criteria->add(DashletInstancePeer::DAS_INS_STATUS, '1');
+ $criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'DEPARTMENT');
+ $criteria->add(DashletInstancePeer::DAS_INS_OWNER_UID, $depUid);
+ $dataset = DashletInstancePeer::doSelectRS($criteria);
+ $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
- if (! isset( $dashletsInstances[$row['DAS_INS_UID']] )) {
- $arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] );
+ if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
+ $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (self::verifyPluginDashlet($row["DAS_CLASS"])) {
- $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);
+ $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;
}
@@ -291,28 +348,28 @@ class PmDashlet extends DashletInstance implements DashletInterface
}
// Check for group assignments
$groupsInstance = new Groups();
- $groups = $groupsInstance->getGroupsForUser( $userUid );
+ $groups = $groupsInstance->getGroupsForUser($userUid);
foreach ($groups as $grpUid => $group) {
- $criteria = new Criteria( 'workflow' );
- $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID );
- $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES );
- $criteria->addSelectColumn( DashletPeer::DAS_CLASS );
- $criteria->addSelectColumn( DashletPeer::DAS_TITLE );
- $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
- $criteria->add( DashletInstancePeer::DAS_INS_STATUS, '1' );
- $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'GROUP' );
- $criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $grpUid );
- $dataset = DashletInstancePeer::doSelectRS( $criteria );
- $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ $criteria = new Criteria('workflow');
+ $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
+ $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
+ $criteria->addSelectColumn(DashletPeer::DAS_CLASS);
+ $criteria->addSelectColumn(DashletPeer::DAS_TITLE);
+ $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
+ $criteria->add(DashletInstancePeer::DAS_INS_STATUS, '1');
+ $criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'GROUP');
+ $criteria->add(DashletInstancePeer::DAS_INS_OWNER_UID, $grpUid);
+ $dataset = DashletInstancePeer::doSelectRS($criteria);
+ $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
- if (! isset( $dashletsInstances[$row['DAS_INS_UID']] )) {
- $arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] );
+ if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
+ $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (self::verifyPluginDashlet($row["DAS_CLASS"])) {
- $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);
+ $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;
}
@@ -321,82 +378,81 @@ class PmDashlet extends DashletInstance implements DashletInterface
}
}
foreach ($dashletsInstances as $key => $field) {
- $dashletsInstances[$key]['DAS_TITLE'] = htmlentities($field['DAS_TITLE'], ENT_QUOTES, 'UTF-8') . '';
+ $dashletsInstances[$key]['DAS_TITLE'] = htmlentities($field['DAS_TITLE'], ENT_QUOTES, 'UTF-8') . '';
}
// Check for role assigments
// ToDo: Next release
// Check for permission assigments
// ToDo: Next release
- return array_values( $dashletsInstances );
+ return array_values($dashletsInstances);
} catch (Exception $error) {
throw $error;
}
}
- public static function getXTemplate ($className)
+ /**
+ * Get template for class
+ *
+ * @param $className string name of file
+ * @return mixed string template dashboard
+ * @throws Exception
+ */
+ public static function getXTemplate($className)
{
try {
- if (! class_exists( $className )) {
- self::setIncludePath();
- require_once 'classes' . PATH_SEP . 'class.' . $className . '.php';
+ if (!G::classExists($className)) {
+ $file = self::verifyExistsFile($className, 'PLUGIN');
+ if ($file->exists) {
+ $className = $file->className;
+ require_once $file->path;
+ }
+ } else {
+ $className = G::nameClass($className);
}
- eval( "\$additionalFields = $className::getXTemplate(\$className);" );
+ eval("\$additionalFields = $className::getXTemplate(\$className);");
return $additionalFields;
} catch (Exception $error) {
throw $error;
}
}
- public static function verifyPluginDashlet ($className)
+ public static function verifyPluginDashlet($className)
{
- // 1-- if name class is in core
- $fileExist = PATH_CORE . 'classes' . PATH_SEP . 'class.' . $className . '.php';
- if (file_exists($fileExist)) {
- return true;
- }
-
- // 2-- if name class is in plugin
-
- //---- verify the name plugin of the class
- $pluginName = '';
- $oPluginRegistry = PluginRegistry::loadSingleton();
- $pluginsDashlets = $oPluginRegistry->getDashlets();
-
- foreach ($pluginsDashlets as $pluginDashlet) {
- $fileExist = PATH_PLUGINS . $pluginDashlet . PATH_SEP . 'classes' . PATH_SEP . 'class.' . $className . '.php';
- if (file_exists($fileExist)) {
- $pluginName = $pluginDashlet;
- break;
- }
- }
-
- //---- verify if the plugin is active
- if ($pluginName == '') {
- return false;
+ $fileExists = false;
+ if (G::classExists($className)) {
+ $fileExists = true;
} else {
- if ($handle = opendir( PATH_PLUGINS )) {
- while (false !== ($file = readdir( $handle ))) {
- if (strpos( $file, '.php', 1 ) && is_file( PATH_PLUGINS . $file )) {
- include_once (PATH_PLUGINS . $file);
- $pluginDetail = $oPluginRegistry->getPluginDetails( $file );
- if ($pluginDetail->getNamespace() == $pluginName) {
- return $pluginDetail->isEnabled();
+ // 2-- if name class is in plugin
+ $file = self::verifyExistsFile($className, 'PLUGIN');
+ if ($file->exists && !empty($file->plugin)) {
+ //---- verify if the plugin is active
+ if ($handle = opendir(PATH_PLUGINS)) {
+ $oPluginRegistry = PluginRegistry::loadSingleton();
+ while (false !== ($filePlugin = readdir($handle))) {
+ if (strpos($filePlugin, '.php', 1) && is_file(PATH_PLUGINS . $filePlugin)) {
+ include_once(PATH_PLUGINS . $filePlugin);
+ $pluginDetail = $oPluginRegistry->getPluginDetails($filePlugin);
+ if ($pluginDetail->getNamespace() == $file->plugin) {
+ $fileExists = $pluginDetail->isEnabled();
+ }
}
}
+ closedir($handle);
}
- closedir( $handle );
}
- return true;
}
+ return true;
}
- private static function setIncludePath ()
+ private static function getIncludePath()
{
$oPluginRegistry = PluginRegistry::loadSingleton();
$pluginsDashlets = $oPluginRegistry->getDashlets();
+ $paths = [];
foreach ($pluginsDashlets as $pluginDashlet) {
- set_include_path( get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP );
+ $paths[$pluginDashlet] = PATH_PLUGINS . $pluginDashlet . PATH_SEP;
}
+ return $paths;
}
}
\ No newline at end of file