134 lines
3.5 KiB
PHP
134 lines
3.5 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
|
|
require_once 'classes/mode/Department.php'
|
|
// Check for "public" dashlets
|
|
// ToDo: Next release
|
|
// Check for the direct assignments
|
|
// ToDo: Next release
|
|
// Check for department assigments
|
|
$departmentInstance = new Department();
|
|
$departments = $departmentInstance->getDepartmentsForUser($userUid);
|
|
foreach ($departments as $department) {
|
|
//
|
|
}
|
|
// 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;
|
|
}
|
|
}
|
|
|
|
} |