Fix name class dashboards

This commit is contained in:
Marco A. Nina Mena
2017-08-17 18:24:05 -04:00
parent c263bc17f9
commit 18e14b3ba8
2 changed files with 258 additions and 176 deletions

View File

@@ -56,7 +56,7 @@ class G
'ldapadvanced' => LdapAdvanced::class, 'ldapadvanced' => LdapAdvanced::class,
'dashletopenvscompleted' => DashletOpenVsCompleted::class, 'dashletopenvscompleted' => DashletOpenVsCompleted::class,
'dashletrssreader' => DashletRssReader::class, 'dashletrssreader' => DashletRssReader::class,
'dashletprocesspakerenterprise' => DashletProcessMakerEnterprise::class, 'dashletprocessmakerenterprise' => DashletProcessMakerEnterprise::class,
'dashletprocessmakercommunity' => DashletProcessMakerCommunity::class, 'dashletprocessmakercommunity' => DashletProcessMakerCommunity::class,
]; ];
@@ -5883,7 +5883,8 @@ class G
/** /**
* Instanciate an adapter by name. * 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 * @param string[] $parameters Constructor parameters
*/ */
public static function factory($name, ...$parameters) public static function factory($name, ...$parameters)
@@ -5893,4 +5894,29 @@ class G
$rc = new ReflectionClass($class); $rc = new ReflectionClass($class);
return $rc->newInstanceArgs($parameters); 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);
}
} }

View File

@@ -12,49 +12,110 @@ class PmDashlet extends DashletInstance implements DashletInterface
// Interface functions // 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 { try {
if (! class_exists( $className )) { if (!G::classExists($className)) {
self::setIncludePath(); $file = self::verifyExistsFile($className, 'PLUGIN');
require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; 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; return $additionalFields;
} catch (Exception $error) { } catch (Exception $error) {
throw $error; throw $error;
} }
} }
public function setup ($dasInsUid) public function setup($dasInsUid)
{ {
try { try {
$this->dashletInstance = $this->loadDashletInstance( $dasInsUid ); $this->dashletInstance = $this->loadDashletInstance($dasInsUid);
if (! isset( $this->dashletInstance['DAS_CLASS'] )) { if (!isset($this->dashletInstance['DAS_CLASS'])) {
throw new Exception( G::LoadTranslation( 'ID_ERROR_OBJECT_NOT_EXISTS' ) . ' - Probably the plugin related is disabled' ); throw new Exception(G::LoadTranslation('ID_ERROR_OBJECT_NOT_EXISTS') . ' - Probably the plugin related is disabled');
} }
$className = $this->dashletInstance['DAS_CLASS']; $className = $this->dashletInstance['DAS_CLASS'];
if (! class_exists( $className )) { if (!G::classExists($className)) {
self::setIncludePath(); $file = self::verifyExistsFile($className, 'PLUGIN');
require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; if ($file->exists) {
$className = $file->className;
require_once $file->path;
}
} }
$this->dashletObject = new $className(); $this->dashletObject = new $className();
$this->dashletObject->setup( $this->dashletInstance ); $this->dashletObject->setup($this->dashletInstance);
} catch (Exception $error) { } catch (Exception $error) {
throw $error; throw $error;
} }
} }
public function render ($width = 300) public function render($width = 300)
{ {
try { try {
if (is_null( $this->dashletObject )) { if (is_null($this->dashletObject)) {
throw new Exception( 'Please call to the function "setup" before call the function "render".' ); 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) { } catch (Exception $error) {
throw $error; throw $error;
} }
@@ -63,12 +124,12 @@ class PmDashlet extends DashletInstance implements DashletInterface
// Getter and Setters // Getter and Setters
public function getDashletInstance () public function getDashletInstance()
{ {
return $this->dashletInstance; return $this->dashletInstance;
} }
public function getDashletObject () public function getDashletObject()
{ {
return $this->dashletObject; return $this->dashletObject;
} }
@@ -76,74 +137,73 @@ class PmDashlet extends DashletInstance implements DashletInterface
// Own functions // Own functions
public function getDashletsInstances ($start = null, $limit = null) public function getDashletsInstances($start = null, $limit = null)
{ {
try { try {
$dashletsInstances = array (); $dashletsInstances = array();
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria('workflow');
$criteria->addSelectColumn( '*' ); $criteria->addSelectColumn('*');
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
if (! is_null( $start )) { if (!is_null($start)) {
$criteria->setOffset( $start ); $criteria->setOffset($start);
} }
if (! is_null( $limit )) { if (!is_null($limit)) {
$criteria->setLimit( $limit ); $criteria->setLimit($limit);
} }
$dataset = DashletInstancePeer::doSelectRS( $criteria ); $dataset = DashletInstancePeer::doSelectRS($criteria);
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next(); $dataset->next();
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
$arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] ); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (strstr($row['DAS_TITLE'], '*')) { 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_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'] : ''; $row['DAS_INS_TITLE'] = (isset($arrayField['DAS_INS_TITLE']) && !empty($arrayField['DAS_INS_TITLE'])) ? $arrayField['DAS_INS_TITLE'] : '';
if (! class_exists( $row['DAS_CLASS'] )) { if (!G::classExists($row['DAS_CLASS'])) {
self::setIncludePath(); $file = self::verifyExistsFile($row['DAS_CLASS'], 'PLUGIN');
@include 'classes' . PATH_SEP . 'class.' . $row['DAS_CLASS'] . '.php'; if ($file->exists) {
if (! class_exists( $row['DAS_CLASS'] )) { $row['DAS_CLASS'] = $file->className;
require_once $file->path;
} else {
$dataset->next(); $dataset->next();
continue; 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']) { switch ($row['DAS_INS_OWNER_TYPE']) {
case 'EVERYBODY': case 'EVERYBODY':
$row['DAS_INS_OWNER_TITLE'] = G::LoadTranslation( 'ID_ALL_USERS' ); $row['DAS_INS_OWNER_TITLE'] = G::LoadTranslation('ID_ALL_USERS');
break; break;
case 'USER': case 'USER':
require_once 'classes/model/Users.php';
$userInstance = new Users(); $userInstance = new Users();
try { 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']; $row['DAS_INS_OWNER_TITLE'] = $user['USR_FIRSTNAME'] . ' ' . $user['USR_LASTNAME'];
} catch (Exception $error) { } catch (Exception $error) {
$this->remove( $row['DAS_INS_UID'] ); $this->remove($row['DAS_INS_UID']);
$row['DAS_INS_UID'] = ''; $row['DAS_INS_UID'] = '';
} }
break; break;
case 'DEPARTMENT': case 'DEPARTMENT':
require_once 'classes/model/Department.php';
$departmentInstance = new Department(); $departmentInstance = new Department();
try { 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']; $row['DAS_INS_OWNER_TITLE'] = $department['DEP_TITLE'];
} catch (Exception $error) { } catch (Exception $error) {
$this->remove( $row['DAS_INS_UID'] ); $this->remove($row['DAS_INS_UID']);
$row['DAS_INS_UID'] = ''; $row['DAS_INS_UID'] = '';
} }
break; break;
case 'GROUP': case 'GROUP':
require_once 'classes/model/Groupwf.php';
$groupInstance = new Groupwf(); $groupInstance = new Groupwf();
try { 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']; $row['DAS_INS_OWNER_TITLE'] = $group['GRP_TITLE'];
} catch (Exception $error) { } catch (Exception $error) {
$this->remove( $row['DAS_INS_UID'] ); $this->remove($row['DAS_INS_UID']);
$row['DAS_INS_UID'] = ''; $row['DAS_INS_UID'] = '';
} }
break; break;
@@ -163,67 +223,64 @@ class PmDashlet extends DashletInstance implements DashletInterface
} }
} }
public function loadDashletInstance ($dasInsUid) public function loadDashletInstance($dasInsUid)
{ {
try { try {
$dashletInstance = $this->load( $dasInsUid ); $dashletInstance = $this->load($dasInsUid);
//Load data from the serialized field //Load data from the serialized field
$dashlet = new Dashlet(); $dashlet = new Dashlet();
$dashletFields = $dashlet->load( $dashletInstance['DAS_UID'] ); $dashletFields = $dashlet->load($dashletInstance['DAS_UID']);
if (is_null( $dashletFields )) { if (is_null($dashletFields)) {
$dashletFields = array (); $dashletFields = array();
} }
return array_merge( $dashletFields, $dashletInstance ); return array_merge($dashletFields, $dashletInstance);
} catch (Exception $error) { } catch (Exception $error) {
throw $error; throw $error;
} }
} }
public function saveDashletInstance ($data) public function saveDashletInstance($data)
{ {
try { try {
$this->createOrUpdate( $data ); $this->createOrUpdate($data);
} catch (Exception $error) { } catch (Exception $error) {
throw $error; throw $error;
} }
} }
public function deleteDashletInstance ($dasInsUid) public function deleteDashletInstance($dasInsUid)
{ {
try { try {
$this->remove( $dasInsUid ); $this->remove($dasInsUid);
} catch (Exception $error) { } catch (Exception $error) {
throw $error; throw $error;
} }
} }
public function getDashletsInstancesForUser ($userUid) public function getDashletsInstancesForUser($userUid)
{ {
try { try {
$dashletsInstances = array (); $dashletsInstances = array();
// Include required classes
require_once 'classes/model/Department.php';
require_once 'classes/model/Users.php';
// Check for "public" dashlets // Check for "public" dashlets
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria('workflow');
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID ); $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES ); $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
$criteria->addSelectColumn( DashletPeer::DAS_CLASS ); $criteria->addSelectColumn(DashletPeer::DAS_CLASS);
$criteria->addSelectColumn( DashletPeer::DAS_TITLE ); $criteria->addSelectColumn(DashletPeer::DAS_TITLE);
$criteria->add( DashletInstancePeer::DAS_INS_STATUS, '1' ); $criteria->add(DashletInstancePeer::DAS_INS_STATUS, '1');
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'EVERYBODY' ); $criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'EVERYBODY');
$dataset = DashletInstancePeer::doSelectRS( $criteria ); $dataset = DashletInstancePeer::doSelectRS($criteria);
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next(); $dataset->next();
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
if (! isset( $dashletsInstances[$row['DAS_INS_UID']] )) { if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] ); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (self::verifyPluginDashlet($row['DAS_CLASS'])) { if (self::verifyPluginDashlet($row['DAS_CLASS'])) {
$row['DAS_XTEMPLATE'] = $this->getXTemplate( $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"] = (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_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; $dashletsInstances[$row['DAS_INS_UID']] = $row;
} }
@@ -232,26 +289,26 @@ class PmDashlet extends DashletInstance implements DashletInterface
} }
// Check for the direct assignments // Check for the direct assignments
$usersInstance = new Users(); $usersInstance = new Users();
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria('workflow');
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID ); $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES ); $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
$criteria->addSelectColumn( DashletPeer::DAS_CLASS ); $criteria->addSelectColumn(DashletPeer::DAS_CLASS);
$criteria->addSelectColumn( DashletPeer::DAS_TITLE ); $criteria->addSelectColumn(DashletPeer::DAS_TITLE);
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
$criteria->add( DashletInstancePeer::DAS_INS_STATUS, '1' ); $criteria->add(DashletInstancePeer::DAS_INS_STATUS, '1');
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'USER' ); $criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'USER');
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $userUid ); $criteria->add(DashletInstancePeer::DAS_INS_OWNER_UID, $userUid);
$dataset = DashletInstancePeer::doSelectRS( $criteria ); $dataset = DashletInstancePeer::doSelectRS($criteria);
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next(); $dataset->next();
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
if (! isset( $dashletsInstances[$row['DAS_INS_UID']] )) { if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] ); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (self::verifyPluginDashlet($row['DAS_CLASS'])) { if (self::verifyPluginDashlet($row['DAS_CLASS'])) {
$row['DAS_XTEMPLATE'] = $this->getXTemplate( $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"] = (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_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; $dashletsInstances[$row['DAS_INS_UID']] = $row;
} }
@@ -260,28 +317,28 @@ class PmDashlet extends DashletInstance implements DashletInterface
} }
// Check for department assigments // Check for department assigments
$departmentInstance = new Department(); $departmentInstance = new Department();
$departments = $departmentInstance->getDepartmentsForUser( $userUid ); $departments = $departmentInstance->getDepartmentsForUser($userUid);
foreach ($departments as $depUid => $department) { foreach ($departments as $depUid => $department) {
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria('workflow');
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID ); $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES ); $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
$criteria->addSelectColumn( DashletPeer::DAS_CLASS ); $criteria->addSelectColumn(DashletPeer::DAS_CLASS);
$criteria->addSelectColumn( DashletPeer::DAS_TITLE ); $criteria->addSelectColumn(DashletPeer::DAS_TITLE);
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
$criteria->add( DashletInstancePeer::DAS_INS_STATUS, '1' ); $criteria->add(DashletInstancePeer::DAS_INS_STATUS, '1');
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'DEPARTMENT' ); $criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'DEPARTMENT');
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $depUid ); $criteria->add(DashletInstancePeer::DAS_INS_OWNER_UID, $depUid);
$dataset = DashletInstancePeer::doSelectRS( $criteria ); $dataset = DashletInstancePeer::doSelectRS($criteria);
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next(); $dataset->next();
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
if (! isset( $dashletsInstances[$row['DAS_INS_UID']] )) { if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] ); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (self::verifyPluginDashlet($row["DAS_CLASS"])) { if (self::verifyPluginDashlet($row["DAS_CLASS"])) {
$row['DAS_XTEMPLATE'] = $this->getXTemplate( $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"] = (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_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; $dashletsInstances[$row['DAS_INS_UID']] = $row;
} }
@@ -291,28 +348,28 @@ class PmDashlet extends DashletInstance implements DashletInterface
} }
// Check for group assignments // Check for group assignments
$groupsInstance = new Groups(); $groupsInstance = new Groups();
$groups = $groupsInstance->getGroupsForUser( $userUid ); $groups = $groupsInstance->getGroupsForUser($userUid);
foreach ($groups as $grpUid => $group) { foreach ($groups as $grpUid => $group) {
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria('workflow');
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID ); $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES ); $criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
$criteria->addSelectColumn( DashletPeer::DAS_CLASS ); $criteria->addSelectColumn(DashletPeer::DAS_CLASS);
$criteria->addSelectColumn( DashletPeer::DAS_TITLE ); $criteria->addSelectColumn(DashletPeer::DAS_TITLE);
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN);
$criteria->add( DashletInstancePeer::DAS_INS_STATUS, '1' ); $criteria->add(DashletInstancePeer::DAS_INS_STATUS, '1');
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'GROUP' ); $criteria->add(DashletInstancePeer::DAS_INS_OWNER_TYPE, 'GROUP');
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $grpUid ); $criteria->add(DashletInstancePeer::DAS_INS_OWNER_UID, $grpUid);
$dataset = DashletInstancePeer::doSelectRS( $criteria ); $dataset = DashletInstancePeer::doSelectRS($criteria);
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next(); $dataset->next();
while ($row = $dataset->getRow()) { while ($row = $dataset->getRow()) {
if (! isset( $dashletsInstances[$row['DAS_INS_UID']] )) { if (!isset($dashletsInstances[$row['DAS_INS_UID']])) {
$arrayField = unserialize( $row["DAS_INS_ADDITIONAL_PROPERTIES"] ); $arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (self::verifyPluginDashlet($row["DAS_CLASS"])) { if (self::verifyPluginDashlet($row["DAS_CLASS"])) {
$row['DAS_XTEMPLATE'] = $this->getXTemplate( $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"] = (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_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; $dashletsInstances[$row['DAS_INS_UID']] = $row;
} }
@@ -321,82 +378,81 @@ class PmDashlet extends DashletInstance implements DashletInterface
} }
} }
foreach ($dashletsInstances as $key => $field) { foreach ($dashletsInstances as $key => $field) {
$dashletsInstances[$key]['DAS_TITLE'] = htmlentities($field['DAS_TITLE'], ENT_QUOTES, 'UTF-8') . '</span><span style="float:right; font: bold;" id="'. $field['DAS_INS_UID'] .'">'; $dashletsInstances[$key]['DAS_TITLE'] = htmlentities($field['DAS_TITLE'], ENT_QUOTES, 'UTF-8') . '</span><span style="float:right; font: bold;" id="' . $field['DAS_INS_UID'] . '">';
} }
// Check for role assigments // Check for role assigments
// ToDo: Next release // ToDo: Next release
// Check for permission assigments // Check for permission assigments
// ToDo: Next release // ToDo: Next release
return array_values( $dashletsInstances ); return array_values($dashletsInstances);
} catch (Exception $error) { } catch (Exception $error) {
throw $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 { try {
if (! class_exists( $className )) { if (!G::classExists($className)) {
self::setIncludePath(); $file = self::verifyExistsFile($className, 'PLUGIN');
require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; 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; return $additionalFields;
} catch (Exception $error) { } catch (Exception $error) {
throw $error; throw $error;
} }
} }
public static function verifyPluginDashlet ($className) public static function verifyPluginDashlet($className)
{ {
// 1-- if name class is in core $fileExists = false;
$fileExist = PATH_CORE . 'classes' . PATH_SEP . 'class.' . $className . '.php'; if (G::classExists($className)) {
if (file_exists($fileExist)) { $fileExists = true;
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;
} else { } else {
if ($handle = opendir( PATH_PLUGINS )) { // 2-- if name class is in plugin
while (false !== ($file = readdir( $handle ))) { $file = self::verifyExistsFile($className, 'PLUGIN');
if (strpos( $file, '.php', 1 ) && is_file( PATH_PLUGINS . $file )) { if ($file->exists && !empty($file->plugin)) {
include_once (PATH_PLUGINS . $file); //---- verify if the plugin is active
$pluginDetail = $oPluginRegistry->getPluginDetails( $file ); if ($handle = opendir(PATH_PLUGINS)) {
if ($pluginDetail->getNamespace() == $pluginName) { $oPluginRegistry = PluginRegistry::loadSingleton();
return $pluginDetail->isEnabled(); 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(); $oPluginRegistry = PluginRegistry::loadSingleton();
$pluginsDashlets = $oPluginRegistry->getDashlets(); $pluginsDashlets = $oPluginRegistry->getDashlets();
$paths = [];
foreach ($pluginsDashlets as $pluginDashlet) { 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;
} }
} }