Files
luos/workflow/engine/controllers/dashboard.php

474 lines
17 KiB
PHP
Raw Normal View History

<?php
/**
* Dashboard controller
* @inherits Controller
*
* @access public
*/
class Dashboard extends Controller
{
// Class properties
private $pmDashlet;
// Class constructor
public function __construct ()
{
global $RBAC;
if ($RBAC->userCanAccess('PM_DASHBOARD') != 1) {
G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
G::header( 'location: login/login' );
exit(0);
}
G::LoadClass( 'pmDashlet' );
$this->pmDashlet = new PMDashlet();
}
// Functions for the dashboards users module - Start
public function index ($httpData)
{
try {
$dashletsExist = $this->getDashletsInstancesForCurrentUser();
$dashletsHide = array();
$dashletColumns = 2;
G::LoadClass( 'configuration' );
$oConfiguration = new Configurations();
$aConfiguration = $oConfiguration->load('Dashboard', '', '', $_SESSION['USER_LOGGED']);
if (is_array($aConfiguration) && count($aConfiguration) != 0) {
if (isset($aConfiguration["COLUMNS"])) {
$dashletColumns = $aConfiguration["COLUMNS"];
}
if (isset($aConfiguration["ORDER"])) {
$listDashletAux = array();
$listDashletAuxShow = array();
foreach ($dashletsExist as $key => $value) {
$listDashletAux[$value['DAS_INS_UID']] = $key;
}
$dashletsShow['0'] = array();
foreach ($aConfiguration['ORDER']['0'] as $value) {
if (isset($listDashletAux[$value])) {
$listDashletAuxShow[] = $value;
$dashletsShow['0'][] = $dashletsExist[$listDashletAux[$value]];
}
}
$dashletsShow['1'] = array();
foreach ($aConfiguration['ORDER']['1'] as $value) {
if (isset($listDashletAux[$value])) {
$listDashletAuxShow[] = $value;
$dashletsShow['1'][] = $dashletsExist[$listDashletAux[$value]];
}
}
$dashletsShow['2'] = array();
foreach ($aConfiguration['ORDER']['2'] as $value) {
if (isset($listDashletAux[$value])) {
$listDashletAuxShow[] = $value;
$dashletsShow['2'][] = $dashletsExist[$listDashletAux[$value]];
}
}
$orderCol = 0;
foreach ($listDashletAux as $key => $value) {
if (!(in_array($key, $listDashletAuxShow))) {
$dashletsShow[$orderCol][] = $dashletsExist[$value];
$orderCol++;
if ($orderCol == 3) {
$orderCol = 0;
}
}
}
} else {
$col = 0;
foreach ($dashletsExist as $value) {
$dashletsShow[$col][] = $value;
$col++;
if ($col == 3) {
$col = 0;
}
}
}
} else {
$col = 0;
foreach ($dashletsExist as $value) {
$dashletsShow[$col][] = $value;
$col++;
if ($col == 3) {
$col = 0;
}
}
}
$this->setJSVar( 'dashletsAll', $dashletsExist);
$this->setJSVar( 'dashletsInstances', $dashletsShow);
$this->setJSVar( 'dashletsColumns', $dashletColumns);
$this->includeExtJS( 'dashboard/index' );
$this->includeExtJSLib( 'ux/portal' );
G::RenderPage( 'publish', 'extJs' );
} catch (Exception $error) {
//ToDo: Display a error message
}
}
public function saveOrderDashlet ($data)
{
$this->setResponseType( 'json' );
try {
$orderDashlet[0] = Bootstrap::json_decode($data->positionCol0);
$orderDashlet[1] = Bootstrap::json_decode($data->positionCol1);
$orderDashlet[2] = Bootstrap::json_decode($data->positionCol2);
G::loadClass('configuration');
$oConfiguration = new Configurations();
$aConfiguration = $oConfiguration->load('Dashboard', '', '', $_SESSION['USER_LOGGED']);
$dataDashboard = array();
if (isset($aConfiguration["CFG_VALUE"])) {
$dataDashboard = $aConfiguration["CFG_VALUE"];
}
$dataNow['ORDER'] = $orderDashlet;
if (isset($data->columns)) {
$dataNow['COLUMNS'] = Bootstrap::json_decode($data->columns);
}
$dataDashboard = array_merge($dataDashboard, $dataNow);
$oConfiguration->aConfig = $dataDashboard;
$oConfiguration->saveConfig('Dashboard', '', '', $_SESSION['USER_LOGGED']);
2014-07-03 09:45:15 -04:00
$result = new stdClass();
$result->success = '1';
return $result;
} catch (Exception $error) {
//ToDo: Display a error message
}
}
public function renderDashletInstance ($data)
{
try {
if (! isset( $data->DAS_INS_UID )) {
$data->DAS_INS_UID = '';
}
if ($data->DAS_INS_UID == '') {
throw new Exception( 'Parameter "DAS_INS_UID" is empty.' );
}
$this->pmDashlet->setup( G::sanitizeInput($data->DAS_INS_UID) );
if (! isset( $_REQUEST['w'] )) {
$width = 300;
} else {
$width = $_REQUEST['w'];
}
$this->pmDashlet->render( $width );
//G::pr($this->pmDashlet->setup( $width ));die;
} catch (Exception $error) {
//ToDo: Show the error message
2016-08-04 14:56:58 -04:00
$token = strtotime("now");
PMException::registerErrorLog($error, $token);
G::outRes( G::LoadTranslation("ID_EXCEPTION_LOG_INTERFAZ", array($token)) );
}
}
private function getDashletsInstancesForCurrentUser ()
{
try {
if (! isset( $_SESSION['USER_LOGGED'] )) {
2013-03-14 15:15:04 -04:00
throw new Exception( G::LoadTranslation('ID_SESSION_EXPIRED') );
}
return $this->pmDashlet->getDashletsInstancesForUser( $_SESSION['USER_LOGGED']);
} catch (Exception $error) {
throw $error;
}
}
// Functions for the dashboards users module - End
// Functions for the dasboards administration module - Start
public function dashletsList ()
{
try {
$this->includeExtJS( 'dashboard/dashletsList' );
if (isset( $_SESSION['__DASHBOARD_ERROR__'] )) {
$this->setJSVar( '__DASHBOARD_ERROR__', $_SESSION['__DASHBOARD_ERROR__'] );
unset( $_SESSION['__DASHBOARD_ERROR__'] );
}
$this->setView( 'dashboard/dashletsList' );
G::RenderPage( 'publish', 'extJs' );
} catch (Exception $error) {
//ToDo: Display a error message
}
}
public function getDashletsInstances ($data)
{
$this->setResponseType( 'json' );
$result = new stdclass();
$result->status = 'OK';
try {
if (! isset( $data->start )) {
$data->start = null;
}
if (! isset( $data->limit )) {
$data->limit = null;
}
$result->dashletsInstances = $this->pmDashlet->getDashletsInstances( $data->start, $data->limit );
$result->totalDashletsInstances = count($result->dashletsInstances);
} catch (Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
public function dashletInstanceForm ($data)
{
try {
$this->includeExtJS( 'dashboard/dashletInstanceForm', true, true );
$this->setView( 'dashboard/dashletInstanceForm' );
if (! isset( $data->DAS_INS_UID )) {
$data->DAS_INS_UID = '';
}
$dashlets = $this->getDashlets();
$this->setJSVar( 'storeDasUID', $dashlets );
if ($data->DAS_INS_UID != '') {
$this->pmDashlet->setup( $data->DAS_INS_UID );
$this->setJSVar( 'dashletInstance', $this->pmDashlet->getDashletInstance() );
$this->setJSVar( 'additionalFields', PMDashlet::getAdditionalFields( get_class( $this->pmDashlet->getDashletObject() ) ) );
} else {
$dashletInstance = new stdclass();
$dashletInstance->DAS_UID = $dashlets[0][0];
$dashlet = new Dashlet();
$dashletFields = $dashlet->load( $dashletInstance->DAS_UID );
$this->setJSVar( 'dashletInstance', $dashletInstance );
$this->setJSVar( 'additionalFields', PMDashlet::getAdditionalFields( $dashletFields['DAS_CLASS'] ) );
}
G::RenderPage( 'publish', 'extJs' );
return null;
} catch (Exception $error) {
$_SESSION['__DASHBOARD_ERROR__'] = $error->getMessage();
G::header( 'Location: dashletsList' );
die();
}
}
public function saveDashletInstance ($data)
{
$this->setResponseType( 'json' );
$result = new stdclass();
$result->status = 'OK';
try {
$this->pmDashlet->saveDashletInstance( get_object_vars( $data ) );
} catch (Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
2011-11-01 16:51:40 -04:00
public function deleteDashletInstance ($data)
{
$this->setResponseType( 'json' );
$result = new stdclass();
$result->status = 'OK';
try {
if (! isset( $data->DAS_INS_UID )) {
$data->DAS_INS_UID = '';
}
if ($data->DAS_INS_UID == '') {
throw new Exception( 'Parameter "DAS_INS_UID" is empty.' );
}
$this->pmDashlet->deleteDashletInstance( $data->DAS_INS_UID );
} catch (Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
public function getAdditionalFields ($data)
{
$this->setResponseType( 'json' );
$result = new stdclass();
$result->status = 'OK';
try {
$dashlet = new Dashlet();
$dashletFields = $dashlet->load( $data->DAS_UID );
if (! is_null( $dashletFields )) {
$result->additionalFields = PMDashlet::getAdditionalFields( $dashletFields['DAS_CLASS'] );
} else {
throw new Exception( 'Dashlet "' . $data->DAS_UID . '" does not exist.' );
}
} catch (Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
2012-01-03 18:31:15 -04:00
public function getOwnersByType ($data)
{
$this->setResponseType( 'json' );
$result = new stdclass();
$result->status = 'OK';
try {
switch ($data->type) {
case 'EVERYBODY':
$result->total = 0;
$result->owners = array ();
break;
case 'USER':
require_once 'classes/model/Users.php';
$users = array ();
$usersInstance = new Users();
$allUsers = $usersInstance->getAll();
foreach ($allUsers->data as $user) {
$users[] = array ('OWNER_UID' => $user['USR_UID'],'OWNER_NAME' => $user['USR_FIRSTNAME'] . ' ' . $user['USR_LASTNAME']
);
}
usort($users, function($str1, $str2) {
return strcmp(strtolower($str1["OWNER_NAME"]), strtolower($str2["OWNER_NAME"]));
});
$result->total = $allUsers->totalCount;
$result->owners = $users;
break;
case 'DEPARTMENT':
require_once 'classes/model/Department.php';
require_once 'classes/model/Content.php';
$departments = array ();
//SELECT
$criteria = new Criteria( 'workflow' );
$criteria->setDistinct();
$criteria->addSelectColumn( DepartmentPeer::DEP_UID );
$criteria->addSelectColumn( DepartmentPeer::DEP_TITLE );
$criteria->add( DepartmentPeer::DEP_STATUS, 'ACTIVE' );
$criteria->addAscendingOrderByColumn( DepartmentPeer::DEP_TITLE );
$dataset = DepartmentPeer::doSelectRS( $criteria );
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$dataset->next();
while ($row = $dataset->getRow()) {
$departments[] = array('OWNER_UID' => $row['DEP_UID'], 'OWNER_NAME' => $row['DEP_TITLE']);
$dataset->next();
}
$result->total = DepartmentPeer::doCount( $criteria );
$result->owners = $departments;
break;
case 'GROUP':
require_once 'classes/model/Groupwf.php';
require_once 'classes/model/Content.php';
$groups = array ();
//SELECT
$criteria = new Criteria( 'workflow' );
$criteria->setDistinct();
$criteria->addSelectColumn( GroupwfPeer::GRP_UID );
$criteria->addSelectColumn( GroupwfPeer::GRP_TITLE );
//WHERE
$criteria->add( GroupwfPeer::GRP_STATUS, 'ACTIVE' );
//ORDER BY
$criteria->addAscendingOrderByColumn( GroupwfPeer::GRP_TITLE );
$dataset = GroupwfPeer::doSelectRS( $criteria );
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$dataset->next();
while ($row = $dataset->getRow()) {
2016-09-07 12:32:30 -04:00
$groups[] = array ('OWNER_UID' => $row['GRP_UID'],'OWNER_NAME' => $row['GRP_TITLE']
);
$dataset->next();
}
$result->total = GroupwfPeer::doCount( $criteria );
$result->owners = $groups;
break;
}
} catch (Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
private function getDashlets ()
{
try {
require_once 'classes/model/Dashlet.php';
$dashlets = array ();
//SELECT
$criteria = new Criteria( 'workflow' );
$criteria->addSelectColumn( DashletPeer::DAS_UID );
$criteria->addSelectColumn( DashletPeer::DAS_TITLE );
$criteria->addSelectColumn( DashletPeer::DAS_CLASS );
//ORDER BY
$criteria->addAscendingOrderByColumn( DashletPeer::DAS_TITLE );
$dataset = DashletPeer::doSelectRS( $criteria );
$dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$dataset->next();
while ($row = $dataset->getRow()) {
if (strstr($row['DAS_TITLE'], '*')) {
$row['DAS_TITLE'] = str_replace('*', '', $row['DAS_TITLE']);
$row['DAS_TITLE'] = G::LoadTranslationPlugin('advancedDashboards', $row['DAS_TITLE']);
}
if ($this->pmDashlet->verifyPluginDashlet($row['DAS_CLASS'])) {
$dashlets[] = array ($row['DAS_UID'],$row['DAS_TITLE']);
}
$dataset->next();
}
} catch (Exception $error) {
throw $error;
}
return $dashlets;
}
public function verifyTitleDashlet ($data)
{
$response = new stdclass();
$this->setResponseType("json");
$response->message = "OK";
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(DashletInstancePeer::DAS_INS_UID);
$criteria->addSelectColumn(DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES);
$rsCriteria = DashletInstancePeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$arrayField = unserialize($row["DAS_INS_ADDITIONAL_PROPERTIES"]);
if (isset($arrayField["DAS_INS_TITLE"]) && $arrayField["DAS_INS_TITLE"] != "" && ($data->DAS_INS_UID != $row["DAS_INS_UID"])) {
if ($data->DAS_INS_TITLE == $arrayField["DAS_INS_TITLE"]) {
$response->message = "ERROR";
}
}
}
return $response;
}
// Functions for the dasboards administration module - End
}