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

310 lines
9.7 KiB
PHP
Raw Normal View History

<?php
/**
* Dashboard controller
* @inherits Controller
* @access public
*/
class Dashboard extends Controller {
// Class properties
2011-10-31 15:14:01 -04:00
private $pmDashlet;
// Class constructor
public function __construct() {
G::LoadClass('pmDashlet');
$this->pmDashlet = new PMDashlet();
}
// Functions for the dashboards users module - Start
public function index($httpData) {
try {
$this->setJSVar('dashletsInstances', $this->getDashletsInstancesForCurrentUser());
$this->includeExtJS('dashboard/index');
$this->includeExtJSLib('ux/portal');
G::RenderPage('publish', 'extJs');
}
catch (Exception $error) {
//ToDo: Display a error message
}
}
public function renderDashletInstance($data) {
try {
2011-10-31 16:43:29 -04:00
if (!isset($data->DAS_INS_UID)) {
$data->DAS_INS_UID = '';
}
2011-10-31 16:43:29 -04:00
if ($data->DAS_INS_UID == '') {
throw new Exception('Parameter "DAS_INS_UID" is empty.');
}
2011-10-31 16:43:29 -04:00
$this->pmDashlet->setup($data->DAS_INS_UID);
if (!isset($_REQUEST['w']) ) {
$width = 300;
}
else {
2011-10-31 20:19:21 -04:00
$width = $_REQUEST['w'];
}
$this->pmDashlet->render($width);
}
catch (Exception $error) {
//ToDo: Render a image with the error message
}
}
private function getDashletsInstancesForCurrentUser() {
try {
if (!isset($_SESSION['USER_LOGGED'])) {
throw new Exception('The session has 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');
$this->setView('dashboard/dashletsList');
G::RenderPage('publish', 'extJs');
}
catch (Exception $error) {
//ToDo: Display a error message
}
}
2011-10-31 18:06:01 -04:00
public function getDashletsInstances($data) {
$this->setResponseType('json');
$result = new stdclass();
$result->status = 'OK';
try {
2011-10-31 19:06:40 -04:00
if (!isset($data->start)) {
$data->start = null;
}
if (!isset($data->limit)) {
$data->limit = null;
}
2011-10-31 18:06:01 -04:00
$result->dashletsInstances = $this->pmDashlet->getDashletsInstances($data->start, $data->limit);
$result->totalDashletsInstances = $this->pmDashlet->getDashletsInstancesQuantity();
}
catch (Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
2011-10-31 16:24:16 -04:00
public function dashletInstanceForm($data) {
try {
$this->includeExtJS('dashboard/dashletInstanceForm', false);
$this->setView('dashboard/dashletInstanceForm');
2011-10-31 16:24:16 -04:00
if (!isset($data->DAS_INS_UID)) {
$data->DAS_INS_UID = '';
}
$dashlets = $this->getDashlets();
$this->setJSVar('storeDasUID', $dashlets);
2011-10-31 16:24:16 -04:00
if ($data->DAS_INS_UID != '') {
$this->pmDashlet->setup($data->DAS_INS_UID);
$this->setJSVar('dashletInstance', $this->pmDashlet->getDashletInstance());
$this->setJSVar('additionaFields', 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('additionaFields', PMDashlet::getAdditionalFields($dashletFields['DAS_CLASS']));
}
G::RenderPage('publish', 'extJs');
2011-10-31 16:24:16 -04:00
return null;
}
catch (Exception $error) {
//ToDo: Display a error message
2011-10-31 20:19:21 -04:00
error_log($error->getMessage());
}
}
public function saveDashletInstance($data) {
$this->setResponseType('json');
$result = new stdclass();
$result->status = 'OK';
try {
2011-10-31 17:23:04 -04:00
$this->pmDashlet->saveDashletInstance(get_object_vars($data));
}
catch (Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
2011-10-31 17:23:04 -04:00
public function deleteDashletInstance($data) {
$this->setResponseType('json');
$result = new stdclass();
$result->status = 'OK';
try {
2011-10-31 17:23:04 -04:00
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);
$result->additionaFields = PMDashlet::getAdditionalFields($dashletFields['DAS_CLASS']);
}
catch(Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
}
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']);
}
$result->total = $allUsers->totalCount;
$result->owners = $users;
break;
case 'DEPARTMENT':
require_once 'classes/model/Department.php';
require_once 'classes/model/Content.php';
2011-11-01 16:51:40 -04:00
$departments = array();
//SELECT
$criteria = new Criteria('workflow');
$criteria->setDistinct();
$criteria->addSelectColumn(DepartmentPeer::DEP_UID);
$criteria->addSelectColumn(ContentPeer::CON_VALUE);
//FROM
$conditions = array();
$conditions[] = array(DepartmentPeer::DEP_UID, ContentPeer::CON_ID);
$conditions[] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter() . 'DEPO_TITLE' . DBAdapter::getStringDelimiter());
$conditions[] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter() . 'en' . DBAdapter::getStringDelimiter());
$criteria->addJoinMC($conditions, Criteria::LEFT_JOIN);
//WHERE
$criteria->add(DepartmentPeer::DEP_STATUS, 'ACTIVE');
//ORDER BY
$criteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
2011-11-01 16:51:40 -04:00
$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['CON_VALUE']);
$dataset->next();
}
2011-11-01 16:51:40 -04:00
$result->total = DepartmentPeer::doCount($criteria);
$result->owners = $departments;
break;
case 'GROUP':
require_once 'classes/model/Groupwf.php';
require_once 'classes/model/Content.php';
2011-11-01 16:51:40 -04:00
$groups = array();
//SELECT
$criteria = new Criteria('workflow');
$criteria->setDistinct();
$criteria->addSelectColumn(GroupwfPeer::GRP_UID);
$criteria->addSelectColumn(ContentPeer::CON_VALUE);
//FROM
$conditions = array();
$conditions[] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID);
$conditions[] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter() . 'GRP_TITLE' . DBAdapter::getStringDelimiter());
$conditions[] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter() . 'en' . DBAdapter::getStringDelimiter());
$criteria->addJoinMC($conditions, Criteria::LEFT_JOIN);
//WHERE
$criteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE');
//ORDER BY
$criteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
2011-11-01 16:51:40 -04:00
$dataset = GroupwfPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
$groups[] = array('OWNER_UID' => $row['GRP_UID'], 'OWNER_NAME' => $row['CON_VALUE']);
$dataset->next();
}
2011-11-01 16:51:40 -04:00
$result->total = GroupwfPeer::doCount($criteria);
$result->owners = $groups;
break;
}
}
catch (Exception $error) {
$result->status = 'ERROR';
$result->message = $error->getMessage();
}
return $result;
2011-11-01 16:51:40 -04:00
}
private function getDashlets() {
try {
require_once 'classes/model/Dashlet.php';
2011-11-01 16:51:40 -04:00
$dashlets = array();
2011-11-01 16:51:40 -04:00
//SELECT
$criteria = new Criteria('workflow');
$criteria->addSelectColumn(DashletPeer::DAS_UID);
$criteria->addSelectColumn(DashletPeer::DAS_TITLE);
//ORDER BY
$criteria->addAscendingOrderByColumn(DashletPeer::DAS_TITLE);
2011-11-01 16:51:40 -04:00
$dataset = DashletPeer::doSelectRS($criteria);
$dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$dataset->next();
while ($row = $dataset->getRow()) {
$dashlets[] = array($row['DAS_UID'], $row['DAS_TITLE']);
$dataset->next();
}
}
catch (Exception $error) {
throw $error;
}
return $dashlets;
2011-11-01 16:51:40 -04:00
}
// Functions for the dasboards administration module - End
}