From 16b4ea4e2adfd138f3e02467e1ad2b5095dc5e76 Mon Sep 17 00:00:00 2001 From: Fernando Ontiveros Date: Tue, 9 Oct 2012 12:55:53 -0400 Subject: [PATCH] CODE STYLE class.pmDashlet.php --- workflow/engine/classes/class.pmDashlet.php | 652 ++++++++++---------- 1 file changed, 327 insertions(+), 325 deletions(-) diff --git a/workflow/engine/classes/class.pmDashlet.php b/workflow/engine/classes/class.pmDashlet.php index 5a1462dce..2d93a2076 100644 --- a/workflow/engine/classes/class.pmDashlet.php +++ b/workflow/engine/classes/class.pmDashlet.php @@ -4,346 +4,348 @@ require_once 'classes/interfaces/dashletInterface.php'; require_once 'classes/model/Dashlet.php'; require_once 'classes/model/DashletInstance.php'; -class PMDashlet extends DashletInstance implements DashletInterface { +class PMDashlet extends DashletInstance implements DashletInterface +{ - // Own properties - private $dashletInstance; - private $dashletObject; + // Own properties + private $dashletInstance; + private $dashletObject; - // Interface functions - - public static function getAdditionalFields($className) { - try { - if (!class_exists($className)) { - self::setIncludePath(); - require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; - } - G::LoadClass($className); - eval("\$additionalFields = $className::getAdditionalFields(\$className);"); - return $additionalFields; - } - catch (Exception $error) { - throw $error; - } - } + // Interface functions - - 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)) { - self::setIncludePath(); - require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; - } - $this->dashletObject = new $className(); - $this->dashletObject->setup($this->dashletInstance); - } - catch (Exception $error) { - throw $error; - } - } - - 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".'); - } - $this->dashletObject->render($width); - } - catch (Exception $error) { - throw $error; - } - } - - // Getter and Setters - - public function getDashletInstance() { - return $this->dashletInstance; - } - - public function getDashletObject() { - return $this->dashletObject; - } - - // Own functions - - 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); - } - if (!is_null($limit)) { - $criteria->setLimit($limit); - } - $dataset = DashletInstancePeer::doSelectRS($criteria); - $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $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'] : ''; - if (!class_exists($row['DAS_CLASS'])) { - self::setIncludePath(); - require_once 'classes' . PATH_SEP . 'class.' . $row['DAS_CLASS'] . '.php'; + public static function getAdditionalFields ($className) + { + try { + if (! class_exists( $className )) { + self::setIncludePath(); + require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; + } + G::LoadClass( $className ); + eval( "\$additionalFields = $className::getAdditionalFields(\$className);" ); + return $additionalFields; + } catch (Exception $error) { + throw $error; } - 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'); - break; - case 'USER': - require_once 'classes/model/Users.php'; - $userInstance = new Users(); - try { - $user = $userInstance->load($row['DAS_INS_OWNER_UID']); - $row['DAS_INS_OWNER_TITLE'] = $user['USR_FIRSTNAME'] . ' ' . $user['USR_LASTNAME']; + 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' ); } - catch (Exception $error) { - $this->remove($row['DAS_INS_UID']); - $row['DAS_INS_UID'] = ''; + $className = $this->dashletInstance['DAS_CLASS']; + G::LoadClass( $className ); + if (! class_exists( $className )) { + self::setIncludePath(); + require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; } - break; - case 'DEPARTMENT': + $this->dashletObject = new $className(); + $this->dashletObject->setup( $this->dashletInstance ); + } catch (Exception $error) { + throw $error; + } + } + + 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".' ); + } + $this->dashletObject->render( $width ); + } catch (Exception $error) { + throw $error; + } + } + + // Getter and Setters + + + public function getDashletInstance () + { + return $this->dashletInstance; + } + + public function getDashletObject () + { + return $this->dashletObject; + } + + // Own functions + + + 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 ); + } + if (! is_null( $limit )) { + $criteria->setLimit( $limit ); + } + $dataset = DashletInstancePeer::doSelectRS( $criteria ); + $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $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'] : ''; + if (! class_exists( $row['DAS_CLASS'] )) { + self::setIncludePath(); + require_once 'classes' . PATH_SEP . 'class.' . $row['DAS_CLASS'] . '.php'; + } + 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' ); + break; + case 'USER': + require_once 'classes/model/Users.php'; + $userInstance = new Users(); + try { + $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'] ); + $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'] ); + $row['DAS_INS_OWNER_TITLE'] = $department['DEPO_TITLE']; + } catch (Exception $error) { + $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'] ); + $row['DAS_INS_OWNER_TITLE'] = $group['GRP_TITLE']; + } catch (Exception $error) { + $this->remove( $row['DAS_INS_UID'] ); + $row['DAS_INS_UID'] = ''; + } + break; + default: + $row['DAS_INS_OWNER_TITLE'] = $row['DAS_INS_OWNER_TYPE']; + break; + } + if ($row['DAS_INS_UID'] != '') { + $dashletsInstances[] = $row; + } + $dataset->next(); + } + return $dashletsInstances; + } catch (Exception $error) { + throw $error; + } + } + + public function getDashletsInstancesQuantity () + { + try { + $criteria = new Criteria( 'workflow' ); + $criteria->addSelectColumn( '*' ); + $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); + return DashletInstancePeer::doCount( $criteria ); + } catch (Exception $error) { + throw $error; + } + } + + public function loadDashletInstance ($dasInsUid) + { + try { + $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 (); + } + return array_merge( $dashletFields, $dashletInstance ); + } catch (Exception $error) { + throw $error; + } + } + + public function saveDashletInstance ($data) + { + try { + $this->createOrUpdate( $data ); + } catch (Exception $error) { + throw $error; + } + } + + public function deleteDashletInstance ($dasInsUid) + { + try { + $this->remove( $dasInsUid ); + } catch (Exception $error) { + throw $error; + } + } + + public function getDashletsInstancesForUser ($userUid) + { + try { + $dashletsInstances = array (); + // Include required classes require_once 'classes/model/Department.php'; + require_once 'classes/model/Users.php'; + // 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->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"] ); + + $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(); + } + // 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_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"] ); + + $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(); + } + // Check for department assigments $departmentInstance = new Department(); - try { - $department = $departmentInstance->load($row['DAS_INS_OWNER_UID']); - $row['DAS_INS_OWNER_TITLE'] = $department['DEPO_TITLE']; + $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_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"] ); + + $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(); + } } - catch (Exception $error) { - $this->remove($row['DAS_INS_UID']); - $row['DAS_INS_UID'] = ''; + // Check for group assignments + G::LoadClass( 'groups' ); + $groupsInstance = new Groups(); + $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_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"] ); + + $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(); + } } - break; - case 'GROUP': - require_once 'classes/model/Groupwf.php'; - $groupInstance = new Groupwf(); - try { - $group = $groupInstance->load($row['DAS_INS_OWNER_UID']); - $row['DAS_INS_OWNER_TITLE'] = $group['GRP_TITLE']; + // Check for role assigments + // ToDo: Next release + // Check for permission assigments + // ToDo: Next release + return array_values( $dashletsInstances ); + } catch (Exception $error) { + throw $error; + } + } + + public static function getXTemplate ($className) + { + try { + if (! class_exists( $className )) { + self::setIncludePath(); + require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; } - catch (Exception $error) { - $this->remove($row['DAS_INS_UID']); - $row['DAS_INS_UID'] = ''; - } - break; - default: - $row['DAS_INS_OWNER_TITLE'] = $row['DAS_INS_OWNER_TYPE']; - break; + G::LoadClass( $className ); + eval( "\$additionalFields = $className::getXTemplate(\$className);" ); + return $additionalFields; + } catch (Exception $error) { + throw $error; } - if ($row['DAS_INS_UID'] != '') { - $dashletsInstances[] = $row; + } + + private static function setIncludePath () + { + $oPluginRegistry = &PMPluginRegistry::getSingleton(); + $pluginsDashlets = $oPluginRegistry->getDashlets(); + foreach ($pluginsDashlets as $pluginDashlet) { + set_include_path( get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP ); } - $dataset->next(); - } - return $dashletsInstances; } - catch (Exception $error) { - throw $error; - } - } - - public function getDashletsInstancesQuantity() { - try { - $criteria = new Criteria('workflow'); - $criteria->addSelectColumn('*'); - $criteria->addJoin(DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN); - return DashletInstancePeer::doCount($criteria); - } - catch (Exception $error) { - throw $error; - } - } - - public function loadDashletInstance($dasInsUid) { - try { - $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(); - } - return array_merge($dashletFields, $dashletInstance); - } - catch (Exception $error) { - throw $error; - } - } - - public function saveDashletInstance($data) { - try { - $this->createOrUpdate($data); - } - catch (Exception $error) { - throw $error; - } - } - - public function deleteDashletInstance($dasInsUid) { - try { - $this->remove($dasInsUid); - } - catch (Exception $error) { - throw $error; - } - } - - public function getDashletsInstancesForUser($userUid) { - try { - $dashletsInstances = array(); - // Include required classes - require_once 'classes/model/Department.php'; - require_once 'classes/model/Users.php'; - // 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->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"]); - - $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(); - } - // 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_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"]); - - $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(); - } - // Check for department assigments - $departmentInstance = new Department(); - $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_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"]); - - $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(); - } - } - // Check for group assignments - G::LoadClass('groups'); - $groupsInstance = new Groups(); - $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_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"]); - - $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(); - } - } - // Check for role assigments - // ToDo: Next release - // Check for permission assigments - // ToDo: Next release - return array_values($dashletsInstances); - } - catch (Exception $error) { - throw $error; - } - } - - public static function getXTemplate($className) { - try { - if (!class_exists($className)) { - self::setIncludePath(); - require_once 'classes' . PATH_SEP . 'class.' . $className . '.php'; - } - G::LoadClass($className); - eval("\$additionalFields = $className::getXTemplate(\$className);"); - return $additionalFields; - } - catch (Exception $error) { - throw $error; - } - } - - private static function setIncludePath() { - $oPluginRegistry = &PMPluginRegistry::getSingleton(); - $pluginsDashlets = $oPluginRegistry->getDashlets(); - foreach ($pluginsDashlets as $pluginDashlet) { - set_include_path(get_include_path() . PATH_SEPARATOR . PATH_PLUGINS . $pluginDashlet . PATH_SEP); - } - } } \ No newline at end of file