Fix name class dashboards
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
eval( "\$additionalFields = $className::getAdditionalFields(\$className);" );
|
||||
} else {
|
||||
$className = G::nameClass($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 );
|
||||
$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' );
|
||||
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') . '</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
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user