Files
luos/workflow/engine/classes/class.pmDashlet.php
2011-10-31 18:06:01 -04:00

130 lines
3.3 KiB
PHP

<?php
require_once 'interfaces/dashletInterface.php';
require_once 'model/Dashlet.php';
require_once 'model/DashletInstance.php';
class PMDashlet extends DashletInstance implements DashletInterface {
// Own properties
private $dashletObject;
// Interface functions
public function setup($dasInsUid) {
try {
$dashletInstance = $this->getDashletInstance($dasInsUid);
G::LoadClass($dashletInstance['DAS_CLASS']);
$this->dashletObject = new $dashletInstance['DAS_CLASS']();
$this->dashletObject->setup($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;
}
}
// 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::LEFT_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()) {
$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::LEFT_JOIN);
return DashletInstancePeer::doCount($criteria);
}
catch (Exception $error) {
throw $error;
}
}
public function getDashletInstance($dasInsUid) {
try {
$dashletInstance = $this->load($dasInsUid);
$dashlet = new Dashlet();
$dashletFields = $dashlet->load($dashletInstance['DAS_UID']);
return array_merge($dashletFields, $dashletInstance);
}
catch (Exception $error) {
throw $error;
}
}
public function saveDashletInstance($data) {
try {
$this->dashletObject->createOrUpdate($data);
}
catch (Exception $error) {
throw $error;
}
}
public function deleteDashletInstance($dasInsUid) {
try {
$this->dashletObject->remove($dasInsUid);
}
catch (Exception $error) {
throw $error;
}
}
public function getDashletsInstancesForUser($userUid) {
try {
// Include required classes
//
// Check for "public" dashlets
// ToDo: Next release
// Check for the direct assignments
// ToDo: Next release
// Check for department assigments
//
// Check for group assignments
// ToDo: Next release
// Check for role assigments
// ToDo: Next release
// Check for permission assigments
// ToDo: Next release
}
catch (Exception $error) {
throw $error;
}
}
}