2013-11-04 12:31:19 -04:00
|
|
|
<?php
|
|
|
|
|
namespace BusinessModel;
|
|
|
|
|
|
2013-11-28 16:37:24 -04:00
|
|
|
use \G;
|
|
|
|
|
|
2013-11-04 12:31:19 -04:00
|
|
|
class Task
|
|
|
|
|
{
|
2014-01-31 14:56:47 -04:00
|
|
|
private $formatFieldNameInUppercase = true;
|
|
|
|
|
private $arrayParamException = array(
|
|
|
|
|
"taskUid" => "TAS_UID"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set the format of the fields name (uppercase, lowercase)
|
|
|
|
|
*
|
|
|
|
|
* @param bool $flag Value that set the format
|
|
|
|
|
*
|
|
|
|
|
* return void
|
|
|
|
|
*/
|
|
|
|
|
public function setFormatFieldNameInUppercase($flag)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$this->formatFieldNameInUppercase = $flag;
|
|
|
|
|
|
|
|
|
|
$this->setArrayParamException($this->arrayParamException);
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set exception messages for parameters
|
|
|
|
|
*
|
|
|
|
|
* @param array $arrayData Data with the params
|
|
|
|
|
*
|
|
|
|
|
* return void
|
|
|
|
|
*/
|
|
|
|
|
public function setArrayParamException($arrayData)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
foreach ($arrayData as $key => $value) {
|
|
|
|
|
$this->arrayParamException[$key] = $this->getFieldNameByFormatFieldName($value);
|
|
|
|
|
}
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get the name of the field according to the format
|
|
|
|
|
*
|
|
|
|
|
* @param string $fieldName Field name
|
|
|
|
|
*
|
|
|
|
|
* return string Return the field name according the format
|
|
|
|
|
*/
|
|
|
|
|
public function getFieldNameByFormatFieldName($fieldName)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
return ($this->formatFieldNameInUppercase)? strtoupper($fieldName) : strtolower($fieldName);
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Verify if doesn't exist the Task in table TASK
|
|
|
|
|
*
|
|
|
|
|
* @param string $taskUid Unique id of Task
|
|
|
|
|
*
|
|
|
|
|
* return void Throw exception if doesn't exist the Task in table TASK
|
|
|
|
|
*/
|
|
|
|
|
public function throwExceptionIfNoExistsTask($taskUid)
|
|
|
|
|
{
|
|
|
|
|
$task = new \Task();
|
|
|
|
|
|
|
|
|
|
if (!$task->taskExists($taskUid)) {
|
|
|
|
|
$field = $this->arrayParamException["taskUid"];
|
|
|
|
|
|
|
|
|
|
$msg = str_replace(array("{0}"), array($field), "Invalid value specified for \"{0}\"") . " / ";
|
|
|
|
|
$msg = $msg . str_replace(array("{0}", "{1}"), array($taskUid, "TASK"), "The UID \"{0}\" doesn't exist in table {1}");
|
|
|
|
|
|
|
|
|
|
throw (new \Exception($msg));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-11-04 12:31:19 -04:00
|
|
|
/**
|
|
|
|
|
* Get all properties of an Task
|
2014-02-06 12:36:46 -04:00
|
|
|
* @var string $prj_uid. Uid for Process
|
|
|
|
|
* @var string $act_uid. Uid for Activity
|
|
|
|
|
* @var boolean $keyCaseToLower. Flag for case lower
|
2013-11-04 12:31:19 -04:00
|
|
|
*
|
2014-02-06 12:36:46 -04:00
|
|
|
* return object
|
2013-11-04 12:31:19 -04:00
|
|
|
*/
|
2014-02-06 12:36:46 -04:00
|
|
|
public function getProperties($prj_uid, $act_uid, $keyCaseToLower = false, $groupData = true)
|
2013-11-04 12:31:19 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2014-02-06 12:36:46 -04:00
|
|
|
$prj_uid = $this->validateProUid($prj_uid);
|
2014-02-06 14:44:53 -04:00
|
|
|
$taskUid = $this->validateActUid($act_uid);
|
2014-02-06 12:36:46 -04:00
|
|
|
|
2013-11-05 11:00:14 -04:00
|
|
|
//G::LoadClass("configuration");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.configuration.php");
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-11-05 11:00:14 -04:00
|
|
|
$task = new \Task();
|
2013-11-04 12:31:19 -04:00
|
|
|
$arrayDataAux = $task->load($taskUid);
|
|
|
|
|
|
|
|
|
|
//$arrayDataAux["INDEX"] = 0;
|
|
|
|
|
//$arrayDataAux["IFORM"] = 1;
|
|
|
|
|
//$arrayDataAux["LANG"] = SYS_LANG;
|
|
|
|
|
|
|
|
|
|
//Assignment rules
|
|
|
|
|
switch ($arrayDataAux["TAS_ASSIGN_TYPE"]) {
|
|
|
|
|
case "SELF_SERVICE":
|
|
|
|
|
$arrayDataAux["TAS_ASSIGN_TYPE"] = (!empty($arrayDataAux["TAS_GROUP_VARIABLE"])) ? "SELF_SERVICE_EVALUATE" : $arrayDataAux["TAS_ASSIGN_TYPE"];
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Timing control
|
|
|
|
|
//Load Calendar Information
|
2013-11-05 11:00:14 -04:00
|
|
|
$calendar = new \Calendar();
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
$calendarInfo = $calendar->getCalendarFor("", "", $taskUid);
|
|
|
|
|
|
|
|
|
|
//If the function returns a DEFAULT calendar it means that this object doesn"t have assigned any calendar
|
|
|
|
|
$arrayDataAux["TAS_CALENDAR"] = ($calendarInfo["CALENDAR_APPLIED"] != "DEFAULT")? $calendarInfo["CALENDAR_UID"] : "";
|
|
|
|
|
|
|
|
|
|
//Notifications
|
2013-11-05 11:00:14 -04:00
|
|
|
$conf = new \Configurations();
|
2013-11-04 12:31:19 -04:00
|
|
|
$conf->loadConfig($x, "TAS_EXTRA_PROPERTIES", $taskUid, "", "");
|
|
|
|
|
|
|
|
|
|
if (isset($conf->aConfig["TAS_DEF_MESSAGE_TYPE"]) && isset($conf->aConfig["TAS_DEF_MESSAGE_TYPE"])) {
|
|
|
|
|
$arrayDataAux["TAS_DEF_MESSAGE_TYPE"] = $conf->aConfig["TAS_DEF_MESSAGE_TYPE"];
|
|
|
|
|
$arrayDataAux["TAS_DEF_MESSAGE_TEMPLATE"] = $conf->aConfig["TAS_DEF_MESSAGE_TEMPLATE"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Set data
|
|
|
|
|
$arrayData = array();
|
2013-11-28 16:37:24 -04:00
|
|
|
$keyCase = ($keyCaseToLower) ? CASE_LOWER : CASE_UPPER;
|
|
|
|
|
|
|
|
|
|
if (!$groupData) {
|
|
|
|
|
$arrayData = array_change_key_case($arrayDataAux, $keyCase);
|
|
|
|
|
return $arrayData;
|
|
|
|
|
}
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
//Definition
|
|
|
|
|
$arrayData["DEFINITION"] = array_change_key_case(
|
|
|
|
|
array(
|
|
|
|
|
"TAS_PRIORITY_VARIABLE" => $arrayDataAux["TAS_PRIORITY_VARIABLE"],
|
|
|
|
|
"TAS_DERIVATION_SCREEN_TPL" => $arrayDataAux["TAS_DERIVATION_SCREEN_TPL"]
|
|
|
|
|
),
|
|
|
|
|
$keyCase
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//Assignment Rules
|
|
|
|
|
$arrayData["ASSIGNMENT_RULES"] = array_change_key_case(
|
|
|
|
|
array(
|
|
|
|
|
"TAS_ASSIGN_TYPE" => $arrayDataAux["TAS_ASSIGN_TYPE"],
|
|
|
|
|
"TAS_ASSIGN_VARIABLE" => $arrayDataAux["TAS_ASSIGN_VARIABLE"],
|
|
|
|
|
"TAS_GROUP_VARIABLE" => $arrayDataAux["TAS_GROUP_VARIABLE"],
|
|
|
|
|
"TAS_SELFSERVICE_TIMEOUT" => $arrayDataAux["TAS_SELFSERVICE_TIMEOUT"],
|
|
|
|
|
"TAS_SELFSERVICE_TIME" => $arrayDataAux["TAS_SELFSERVICE_TIME"],
|
|
|
|
|
"TAS_SELFSERVICE_TIME_UNIT" => $arrayDataAux["TAS_SELFSERVICE_TIME_UNIT"],
|
|
|
|
|
"TAS_SELFSERVICE_TRIGGER_UID" => $arrayDataAux["TAS_SELFSERVICE_TRIGGER_UID"]
|
|
|
|
|
),
|
|
|
|
|
$keyCase
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//Timing control
|
|
|
|
|
$arrayData["TIMING_CONTROL"] = array_change_key_case(
|
|
|
|
|
array(
|
|
|
|
|
"TAS_TRANSFER_FLY" => $arrayDataAux["TAS_TRANSFER_FLY"],
|
|
|
|
|
"TAS_DURATION" => $arrayDataAux["TAS_DURATION"],
|
|
|
|
|
"TAS_TIMEUNIT" => $arrayDataAux["TAS_TIMEUNIT"],
|
|
|
|
|
"TAS_TYPE_DAY" => $arrayDataAux["TAS_TYPE_DAY"],
|
|
|
|
|
"TAS_CALENDAR" => $arrayDataAux["TAS_CALENDAR"]
|
|
|
|
|
),
|
|
|
|
|
$keyCase
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//Permissions
|
|
|
|
|
$arrayData["PERMISSIONS"] = array_change_key_case(
|
|
|
|
|
array(
|
|
|
|
|
"TAS_TYPE" => $arrayDataAux["TAS_TYPE"]
|
|
|
|
|
),
|
|
|
|
|
$keyCase
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//Case Labels
|
|
|
|
|
$arrayData["CASE_LABELS"] = array_change_key_case(
|
|
|
|
|
array(
|
|
|
|
|
"TAS_DEF_TITLE" => $arrayDataAux["TAS_DEF_TITLE"],
|
|
|
|
|
"TAS_DEF_DESCRIPTION" => $arrayDataAux["TAS_DEF_DESCRIPTION"]
|
|
|
|
|
),
|
|
|
|
|
$keyCase
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//Notifications
|
|
|
|
|
$arrayData["NOTIFICATIONS"] = array_change_key_case(
|
|
|
|
|
array(
|
|
|
|
|
"SEND_EMAIL" => $arrayDataAux["TAS_SEND_LAST_EMAIL"],
|
|
|
|
|
"TAS_DEF_SUBJECT_MESSAGE" => $arrayDataAux["TAS_DEF_SUBJECT_MESSAGE"],
|
|
|
|
|
"TAS_DEF_MESSAGE_TYPE" => $arrayDataAux["TAS_DEF_MESSAGE_TYPE"],
|
|
|
|
|
"TAS_DEF_MESSAGE" => $arrayDataAux["TAS_DEF_MESSAGE"],
|
|
|
|
|
"TAS_DEF_MESSAGE_TEMPLATE" => $arrayDataAux["TAS_DEF_MESSAGE_TEMPLATE"]
|
|
|
|
|
),
|
|
|
|
|
$keyCase
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$arrayData = array_change_key_case($arrayData, $keyCase);
|
|
|
|
|
|
|
|
|
|
return $arrayData;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Update properties of an Task
|
2014-02-06 12:36:46 -04:00
|
|
|
* @var string $prj_uid. Uid for Process
|
|
|
|
|
* @var string $act_uid. Uid for Activity
|
|
|
|
|
* @var array $arrayProperty. Data for properties of Activity
|
2013-11-04 12:31:19 -04:00
|
|
|
*
|
2014-02-06 12:36:46 -04:00
|
|
|
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
|
|
|
|
|
* @copyright Colosa - Bolivia
|
2013-11-04 12:31:19 -04:00
|
|
|
*
|
2014-02-06 12:36:46 -04:00
|
|
|
* return object
|
2013-11-04 12:31:19 -04:00
|
|
|
*/
|
2014-02-06 12:36:46 -04:00
|
|
|
public function updateProperties($prj_uid, $act_uid, $arrayProperty)
|
2013-11-04 12:31:19 -04:00
|
|
|
{
|
|
|
|
|
//Copy of processmaker/workflow/engine/methods/tasks/tasks_Ajax.php //case "saveTaskData":
|
|
|
|
|
try {
|
2013-11-28 16:37:24 -04:00
|
|
|
if (isset($arrayProperty['properties'])) {
|
2013-12-02 16:49:28 -04:00
|
|
|
$arrayProperty = array_change_key_case($arrayProperty['properties'], CASE_UPPER);
|
2013-11-28 16:37:24 -04:00
|
|
|
}
|
2014-02-06 12:36:46 -04:00
|
|
|
$prj_uid = $this->validateProUid($prj_uid);
|
2014-02-06 14:44:53 -04:00
|
|
|
$act_uid = $this->validateActUid($act_uid);
|
2014-02-06 12:36:46 -04:00
|
|
|
$arrayProperty["TAS_UID"] = $act_uid;
|
|
|
|
|
$arrayProperty["PRO_UID"] = $prj_uid;
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-11-05 11:00:14 -04:00
|
|
|
$task = new \Task();
|
2013-11-04 12:31:19 -04:00
|
|
|
$aTaskInfo = $task->load($arrayProperty["TAS_UID"]);
|
|
|
|
|
|
|
|
|
|
$arrayResult = array();
|
2014-02-03 17:06:29 -04:00
|
|
|
if ($arrayProperty["TAS_SELFSERVICE_TIMEOUT"] == "1") {
|
|
|
|
|
if (!is_numeric($arrayProperty["TAS_SELFSERVICE_TIME"]) || $arrayProperty["TAS_SELFSERVICE_TIME"]=='') {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_selfservice_time'"));
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
foreach ($arrayProperty as $k => $v) {
|
|
|
|
|
$arrayProperty[$k] = str_replace("@amp@", "&", $v);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($arrayProperty["SEND_EMAIL"])) {
|
|
|
|
|
$arrayProperty["TAS_SEND_LAST_EMAIL"] = ($arrayProperty["SEND_EMAIL"] == "TRUE")? "TRUE" : "FALSE";
|
|
|
|
|
} else {
|
|
|
|
|
//$aTaskInfo = $task->load($arrayProperty["TAS_UID"]);
|
|
|
|
|
$arrayProperty["TAS_SEND_LAST_EMAIL"] = (is_null($aTaskInfo["TAS_SEND_LAST_EMAIL"]))? "FALSE" : $aTaskInfo["TAS_SEND_LAST_EMAIL"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Validating TAS_ASSIGN_VARIABLE value
|
|
|
|
|
if (!isset($arrayProperty["TAS_ASSIGN_TYPE"])) {
|
|
|
|
|
$derivateType = $task->kgetassigType($arrayProperty["PRO_UID"], $arrayProperty["TAS_UID"]);
|
|
|
|
|
|
|
|
|
|
if (is_null($derivateType)) {
|
|
|
|
|
$arrayProperty["TAS_ASSIGN_TYPE"] = "BALANCED";
|
|
|
|
|
} else {
|
|
|
|
|
$arrayProperty["TAS_ASSIGN_TYPE"] = $derivateType["TAS_ASSIGN_TYPE"];
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
|
|
|
|
|
switch ($arrayProperty["TAS_ASSIGN_TYPE"]) {
|
|
|
|
|
case 'BALANCED':
|
|
|
|
|
case 'MANUAL':
|
|
|
|
|
case 'REPORT_TO':
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_ASSIGN_VARIABLE");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_GROUP_VARIABLE");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIMEOUT");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME_UNIT");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TRIGGER_UID");
|
|
|
|
|
break;
|
|
|
|
|
case 'EVALUATE':
|
|
|
|
|
if (empty($arrayProperty["TAS_ASSIGN_VARIABLE"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_assign_variable'"));
|
2014-02-19 15:57:14 -04:00
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
$this->unsetVar($arrayProperty, "TAS_GROUP_VARIABLE");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIMEOUT");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME_UNIT");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TRIGGER_UID");
|
|
|
|
|
break;
|
|
|
|
|
case 'SELF_SERVICE':
|
|
|
|
|
case 'SELF_SERVICE_EVALUATE':
|
|
|
|
|
if ($arrayProperty["TAS_ASSIGN_TYPE"] == "SELF_SERVICE_EVALUATE") {
|
|
|
|
|
if (empty($arrayProperty["TAS_GROUP_VARIABLE"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_group_variable'"));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_GROUP_VARIABLE");
|
|
|
|
|
}
|
|
|
|
|
$arrayProperty["TAS_ASSIGN_TYPE"] = "SELF_SERVICE";
|
|
|
|
|
if (empty($arrayProperty["TAS_SELFSERVICE_TIMEOUT"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_selfservice_timeout'"));
|
|
|
|
|
}
|
|
|
|
|
if (empty($arrayProperty["TAS_SELFSERVICE_TIME"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_assign_variable'"));
|
|
|
|
|
}
|
|
|
|
|
if (empty($arrayProperty["TAS_SELFSERVICE_TRIGGER_UID"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_selfservice_trigger_uid'"));
|
|
|
|
|
}
|
|
|
|
|
if (trim($arrayProperty["TAS_GROUP_VARIABLE"]) == "") {
|
|
|
|
|
$arrayProperty["TAS_GROUP_VARIABLE"] = "@@SYS_GROUP_TO_BE_ASSIGNED";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($arrayProperty["TAS_SELFSERVICE_TIMEOUT"] != "1") {
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TIME_UNIT");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_SELFSERVICE_TRIGGER_UID");
|
|
|
|
|
}
|
|
|
|
|
break;
|
2013-11-04 12:31:19 -04:00
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
|
2014-02-19 15:57:14 -04:00
|
|
|
//Validating TAS_TRANSFER_FLY value
|
|
|
|
|
if ($arrayProperty["TAS_TRANSFER_FLY"] == "FALSE") {
|
|
|
|
|
if (!isset($arrayProperty["TAS_DURATION"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_duration'"));
|
|
|
|
|
}
|
|
|
|
|
$valuesTimeUnit = array('DAYS','HOURS');
|
|
|
|
|
if ((!isset($arrayProperty["TAS_TIMEUNIT"])) ||
|
|
|
|
|
(!in_array($arrayProperty["TAS_TIMEUNIT"], $valuesTimeUnit))) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_timeunit'"));
|
|
|
|
|
}
|
|
|
|
|
$valuesTypeDay = array('1','2','');
|
|
|
|
|
if ((!isset($arrayProperty["TAS_TYPE_DAY"])) ||
|
|
|
|
|
(!in_array($arrayProperty["TAS_TYPE_DAY"], $valuesTypeDay))) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_type_day'"));
|
|
|
|
|
}
|
|
|
|
|
if (!isset($arrayProperty["TAS_CALENDAR"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_calendar'"));
|
|
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
} else {
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_DURATION");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_TIMEUNIT");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_TYPE_DAY");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_CALENDAR");
|
2014-02-19 15:57:14 -04:00
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
|
2014-02-19 15:57:14 -04:00
|
|
|
if ($arrayProperty["TAS_SEND_LAST_EMAIL"] == "TRUE") {
|
|
|
|
|
if (empty($arrayProperty["TAS_DEF_SUBJECT_MESSAGE"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_def_subject_message'"));
|
|
|
|
|
}
|
|
|
|
|
$valuesDefMessageType = array('template','text');
|
|
|
|
|
if ((!isset($arrayProperty["TAS_DEF_MESSAGE_TYPE"])) ||
|
|
|
|
|
(!in_array($arrayProperty["TAS_DEF_MESSAGE_TYPE"], $valuesDefMessageType))) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_def_message_type'"));
|
|
|
|
|
}
|
|
|
|
|
if ($arrayProperty["TAS_DEF_MESSAGE_TYPE"] == 'template') {
|
|
|
|
|
if (empty($arrayProperty["TAS_DEF_MESSAGE_TEMPLATE"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_def_message_template'"));
|
|
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
$this->unsetVar($arrayProperty, "TAS_DEF_MESSAGE");
|
2014-02-19 15:57:14 -04:00
|
|
|
} else {
|
|
|
|
|
if (empty($arrayProperty["TAS_DEF_MESSAGE"])) {
|
|
|
|
|
throw (new \Exception("Invalid value specified for 'tas_def_message'"));
|
|
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
$this->unsetVar($arrayProperty, "TAS_DEF_MESSAGE_TEMPLATE");
|
2014-02-19 15:57:14 -04:00
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
//Additional configuration
|
|
|
|
|
if (isset($arrayProperty["TAS_DEF_MESSAGE_TYPE"]) && isset($arrayProperty["TAS_DEF_MESSAGE_TEMPLATE"])) {
|
|
|
|
|
\G::LoadClass("configuration");
|
|
|
|
|
$oConf = new \Configurations();
|
|
|
|
|
$oConf->aConfig = array("TAS_DEF_MESSAGE_TYPE" => $arrayProperty["TAS_DEF_MESSAGE_TYPE"], "TAS_DEF_MESSAGE_TEMPLATE" => $arrayProperty["TAS_DEF_MESSAGE_TEMPLATE"]);
|
|
|
|
|
|
|
|
|
|
$oConf->saveConfig("TAS_EXTRA_PROPERTIES", $arrayProperty["TAS_UID"], "", "");
|
|
|
|
|
|
|
|
|
|
unset($arrayProperty["TAS_DEF_MESSAGE_TYPE"]);
|
|
|
|
|
unset($arrayProperty["TAS_DEF_MESSAGE_TEMPLATE"]);
|
2014-02-19 15:57:14 -04:00
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
} else {
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_DEF_SUBJECT_MESSAGE");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_DEF_MESSAGE_TYPE");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_DEF_MESSAGE");
|
|
|
|
|
$this->unsetVar($arrayProperty, "TAS_DEF_MESSAGE_TEMPLATE");
|
2014-02-19 15:57:14 -04:00
|
|
|
}
|
|
|
|
|
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
$result = $task->update($arrayProperty);
|
|
|
|
|
|
|
|
|
|
$arrayResult["status"] = "OK";
|
|
|
|
|
|
|
|
|
|
if ($result == 3) {
|
|
|
|
|
$arrayResult["status"] = "CRONCL";
|
|
|
|
|
}
|
|
|
|
|
return $arrayResult;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-11-28 16:37:24 -04:00
|
|
|
/**
|
2014-02-06 12:36:46 -04:00
|
|
|
* Delete Activity
|
|
|
|
|
* @var string $prj_uid. Uid for Process
|
|
|
|
|
* @var string $act_uid. Uid for Activity
|
2013-11-28 16:37:24 -04:00
|
|
|
*
|
2014-02-06 12:36:46 -04:00
|
|
|
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
|
|
|
|
|
* @copyright Colosa - Bolivia
|
2013-11-28 16:37:24 -04:00
|
|
|
*
|
2014-02-06 12:36:46 -04:00
|
|
|
* return object
|
2013-11-28 16:37:24 -04:00
|
|
|
*/
|
2014-02-06 12:36:46 -04:00
|
|
|
public function deleteTask($prj_uid, $act_uid)
|
2013-11-28 16:37:24 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2014-02-06 12:36:46 -04:00
|
|
|
$prj_uid = $this->validateProUid($prj_uid);
|
2014-02-06 14:44:53 -04:00
|
|
|
$act_uid = $this->validateActUid($act_uid);
|
2014-02-06 12:36:46 -04:00
|
|
|
|
2013-11-28 16:37:24 -04:00
|
|
|
G::LoadClass('tasks');
|
|
|
|
|
$tasks = new \Tasks();
|
2014-02-06 12:36:46 -04:00
|
|
|
$tasks->deleteTask($act_uid);
|
2013-11-28 16:37:24 -04:00
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-12-05 13:18:05 -04:00
|
|
|
/**
|
2014-01-31 14:56:47 -04:00
|
|
|
* Get available Steps of a Task
|
2013-11-04 12:31:19 -04:00
|
|
|
*
|
2013-12-06 11:26:31 -04:00
|
|
|
* @param string $taskUid Unique id of Task
|
2013-11-04 12:31:19 -04:00
|
|
|
*
|
2014-01-31 14:56:47 -04:00
|
|
|
* return array Return an array with the Steps available of a Task
|
2013-11-04 12:31:19 -04:00
|
|
|
*/
|
2013-12-05 13:18:05 -04:00
|
|
|
public function getAvailableSteps($taskUid)
|
2013-11-04 12:31:19 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2013-12-02 16:49:28 -04:00
|
|
|
$arrayAvailableStep = array();
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
//Verify data
|
|
|
|
|
$this->throwExceptionIfNoExistsTask($taskUid);
|
|
|
|
|
|
|
|
|
|
//Load Task
|
|
|
|
|
$task = new \Task();
|
2013-12-05 13:18:05 -04:00
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
$arrayTaskData = $task->load($taskUid);
|
2013-12-05 13:18:05 -04:00
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
$processUid = $arrayTaskData["PRO_UID"];
|
|
|
|
|
|
|
|
|
|
//Get data
|
2013-12-02 16:49:28 -04:00
|
|
|
//Get Uids
|
|
|
|
|
$arrayUid = array();
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
$task = new \Tasks();
|
|
|
|
|
$arrayStep = $task->getStepsOfTask($taskUid);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
foreach ($arrayStep as $step) {
|
|
|
|
|
$arrayUid[] = $step["STEP_UID_OBJ"];
|
2013-11-04 12:31:19 -04:00
|
|
|
}
|
|
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
//Array DB
|
|
|
|
|
$arraydbStep = array();
|
|
|
|
|
|
|
|
|
|
$arraydbStep[] = array(
|
2014-01-31 14:56:47 -04:00
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_UID") => "char",
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TITLE") => "char",
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_DESCRIPTION") => "char",
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TYPE") => "char"
|
2013-12-02 16:49:28 -04:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$delimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
|
|
|
|
|
//DynaForms
|
|
|
|
|
$criteria = new \Criteria("workflow");
|
|
|
|
|
|
|
|
|
|
$criteria->addSelectColumn(\DynaformPeer::DYN_UID);
|
|
|
|
|
$criteria->addAsColumn("DYN_TITLE", "CT.CON_VALUE");
|
|
|
|
|
$criteria->addAsColumn("DYN_DESCRIPTION", "CD.CON_VALUE");
|
|
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
$criteria->addAlias("CT", \ContentPeer::TABLE_NAME);
|
|
|
|
|
$criteria->addAlias("CD", \ContentPeer::TABLE_NAME);
|
2013-12-02 16:49:28 -04:00
|
|
|
|
|
|
|
|
$arrayCondition = array();
|
|
|
|
|
$arrayCondition[] = array(\DynaformPeer::DYN_UID, "CT.CON_ID", \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "DYN_TITLE" . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
|
|
|
|
|
|
|
|
|
$arrayCondition = array();
|
|
|
|
|
$arrayCondition[] = array(\DynaformPeer::DYN_UID, "CD.CON_ID", \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "DYN_DESCRIPTION" . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
|
|
|
|
|
|
|
|
|
$criteria->add(\DynaformPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
|
|
|
|
$criteria->add(\DynaformPeer::DYN_UID, $arrayUid, \Criteria::NOT_IN);
|
|
|
|
|
$criteria->add(\DynaformPeer::DYN_TYPE, "xmlform", \Criteria::EQUAL);
|
|
|
|
|
|
|
|
|
|
$rsCriteria = \DynaformPeer::doSelectRS($criteria);
|
2013-11-05 11:00:14 -04:00
|
|
|
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
while ($rsCriteria->next()) {
|
|
|
|
|
$row = $rsCriteria->getRow();
|
|
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
if ($row["DYN_TITLE"] . "" == "") {
|
|
|
|
|
//There is no transaltion for this Document name, try to get/regenerate the label
|
|
|
|
|
$row["DYN_TITLE"] = \Content::Load("DYN_TITLE", "", $row["DYN_UID"], SYS_LANG);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$arraydbStep[] = array(
|
2014-01-31 14:56:47 -04:00
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_UID") => $row["DYN_UID"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TITLE") => $row["DYN_TITLE"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_DESCRIPTION") => $row["DYN_DESCRIPTION"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TYPE") => "DYNAFORM"
|
2013-12-02 16:49:28 -04:00
|
|
|
);
|
2013-11-04 12:31:19 -04:00
|
|
|
}
|
|
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
//InputDocuments
|
|
|
|
|
$criteria = new \Criteria("workflow");
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_UID);
|
|
|
|
|
$criteria->addAsColumn("INP_DOC_TITLE", "CT.CON_VALUE");
|
|
|
|
|
$criteria->addAsColumn("INP_DOC_DESCRIPTION", "CD.CON_VALUE");
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
$criteria->addAlias("CT", \ContentPeer::TABLE_NAME);
|
|
|
|
|
$criteria->addAlias("CD", \ContentPeer::TABLE_NAME);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$arrayCondition = array();
|
|
|
|
|
$arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CT.CON_ID", \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "INP_DOC_TITLE" . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$arrayCondition = array();
|
|
|
|
|
$arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CD.CON_ID", \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "INP_DOC_DESCRIPTION" . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$criteria->add(\InputDocumentPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
|
|
|
|
$criteria->add(\InputDocumentPeer::INP_DOC_UID, $arrayUid, \Criteria::NOT_IN);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$rsCriteria = \InputDocumentPeer::doSelectRS($criteria);
|
2013-11-05 11:00:14 -04:00
|
|
|
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
while ($rsCriteria->next()) {
|
|
|
|
|
$row = $rsCriteria->getRow();
|
|
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
if ($row["INP_DOC_TITLE"] . "" == "") {
|
|
|
|
|
//There is no transaltion for this Document name, try to get/regenerate the label
|
|
|
|
|
$row["INP_DOC_TITLE"] = \Content::Load("INP_DOC_TITLE", "", $row["INP_DOC_UID"], SYS_LANG);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$arraydbStep[] = array(
|
2014-01-31 14:56:47 -04:00
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_UID") => $row["INP_DOC_UID"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TITLE") => $row["INP_DOC_TITLE"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_DESCRIPTION") => $row["INP_DOC_DESCRIPTION"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TYPE") => "INPUT_DOCUMENT"
|
2013-12-02 16:49:28 -04:00
|
|
|
);
|
2013-11-04 12:31:19 -04:00
|
|
|
}
|
|
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
//OutputDocuments
|
|
|
|
|
$criteria = new \Criteria("workflow");
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$criteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_UID);
|
|
|
|
|
$criteria->addAsColumn("OUT_DOC_TITLE", "CT.CON_VALUE");
|
|
|
|
|
$criteria->addAsColumn("OUT_DOC_DESCRIPTION", "CD.CON_VALUE");
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
$criteria->addAlias("CT", \ContentPeer::TABLE_NAME);
|
|
|
|
|
$criteria->addAlias("CD", \ContentPeer::TABLE_NAME);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$arrayCondition = array();
|
|
|
|
|
$arrayCondition[] = array(\OutputDocumentPeer::OUT_DOC_UID, "CT.CON_ID", \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "OUT_DOC_TITLE" . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$arrayCondition = array();
|
|
|
|
|
$arrayCondition[] = array(\OutputDocumentPeer::OUT_DOC_UID, "CD.CON_ID", \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "OUT_DOC_DESCRIPTION" . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
|
|
|
|
|
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$criteria->add(\OutputDocumentPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
|
|
|
|
$criteria->add(\OutputDocumentPeer::OUT_DOC_UID, $arrayUid, \Criteria::NOT_IN);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$rsCriteria = \OutputDocumentPeer::doSelectRS($criteria);
|
|
|
|
|
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
while ($rsCriteria->next()) {
|
|
|
|
|
$row = $rsCriteria->getRow();
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
if ($row["OUT_DOC_TITLE"] . "" == "") {
|
|
|
|
|
//There is no transaltion for this Document name, try to get/regenerate the label
|
|
|
|
|
$row["OUT_DOC_TITLE"] = \Content::Load("OUT_DOC_TITLE", "", $row["OUT_DOC_UID"], SYS_LANG);
|
|
|
|
|
}
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$arraydbStep[] = array(
|
2014-01-31 14:56:47 -04:00
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_UID") => $row["OUT_DOC_UID"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TITLE") => $row["OUT_DOC_TITLE"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_DESCRIPTION") => $row["OUT_DOC_DESCRIPTION"],
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TYPE") => "OUTPUT_DOCUMENT"
|
2013-12-02 16:49:28 -04:00
|
|
|
);
|
|
|
|
|
}
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
//Call plugin
|
|
|
|
|
$pluginRegistry = &\PMPluginRegistry::getSingleton();
|
|
|
|
|
$externalSteps = $pluginRegistry->getSteps();
|
|
|
|
|
|
|
|
|
|
if (is_array($externalSteps) && count($externalSteps) > 0) {
|
|
|
|
|
foreach ($externalSteps as $key => $value) {
|
|
|
|
|
$arraydbStep[] = array(
|
2014-01-31 14:56:47 -04:00
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_UID") => $value->sStepId,
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TITLE") => $value->sStepTitle,
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_DESCRIPTION") => "",
|
|
|
|
|
$this->getFieldNameByFormatFieldName("OBJ_TYPE") => "EXTERNAL"
|
2013-12-02 16:49:28 -04:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
\G::LoadClass("ArrayPeer");
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
global $_DBArray;
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$_DBArray = (isset($_SESSION["_DBArray"]))? $_SESSION["_DBArray"] : "";
|
|
|
|
|
$_DBArray["STEP"] = $arraydbStep;
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$_SESSION["_DBArray"] = $_DBArray;
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$criteria = new \Criteria("dbarray");
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$criteria->setDBArrayTable("STEP");
|
2014-01-31 14:56:47 -04:00
|
|
|
$criteria->addAscendingOrderByColumn($this->getFieldNameByFormatFieldName("OBJ_TYPE"));
|
|
|
|
|
$criteria->addAscendingOrderByColumn($this->getFieldNameByFormatFieldName("OBJ_TITLE"));
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$rsCriteria = \ArrayBasePeer::doSelectRS($criteria);
|
|
|
|
|
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
while ($rsCriteria->next()) {
|
|
|
|
|
$row = $rsCriteria->getRow();
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
$arrayAvailableStep[] = $row;
|
|
|
|
|
}
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
//Return
|
2013-12-02 16:49:28 -04:00
|
|
|
return $arrayAvailableStep;
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2013-12-02 16:49:28 -04:00
|
|
|
/**
|
2014-01-31 14:56:47 -04:00
|
|
|
* Get all Steps of a Task
|
2013-12-02 16:49:28 -04:00
|
|
|
*
|
2013-12-06 11:26:31 -04:00
|
|
|
* @param string $taskUid Unique id of Task
|
2013-12-02 16:49:28 -04:00
|
|
|
*
|
2014-01-31 14:56:47 -04:00
|
|
|
* return array Return an array with all Steps of a Task
|
2013-12-02 16:49:28 -04:00
|
|
|
*/
|
|
|
|
|
public function getSteps($taskUid)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$arrayStep = array();
|
|
|
|
|
|
|
|
|
|
$step = new \BusinessModel\Step();
|
2014-01-31 14:56:47 -04:00
|
|
|
$step->setFormatFieldNameInUppercase($this->formatFieldNameInUppercase);
|
|
|
|
|
$step->setArrayParamException($this->arrayParamException);
|
|
|
|
|
|
|
|
|
|
//Verify data
|
|
|
|
|
$this->throwExceptionIfNoExistsTask($taskUid);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
//Get data
|
2013-12-02 16:49:28 -04:00
|
|
|
$criteria = new \Criteria("workflow");
|
|
|
|
|
|
|
|
|
|
$criteria->add(\StepPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
|
|
|
|
|
$criteria->addAscendingOrderByColumn(\StepPeer::STEP_POSITION);
|
|
|
|
|
|
|
|
|
|
$rsCriteria = \StepPeer::doSelectRS($criteria);
|
|
|
|
|
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
|
|
|
|
|
while ($rsCriteria->next()) {
|
|
|
|
|
$row = $rsCriteria->getRow();
|
|
|
|
|
|
|
|
|
|
$arrayData = $step->getStep($row["STEP_UID"]);
|
|
|
|
|
|
|
|
|
|
if (count($arrayData) > 0) {
|
|
|
|
|
$arrayStep[] = $arrayData;
|
|
|
|
|
}
|
2013-11-04 12:31:19 -04:00
|
|
|
}
|
|
|
|
|
|
2014-01-31 14:56:47 -04:00
|
|
|
//Return
|
2013-12-02 16:49:28 -04:00
|
|
|
return $arrayStep;
|
|
|
|
|
} catch (\Exception $e) {
|
2013-11-04 12:31:19 -04:00
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get all users of the Task
|
|
|
|
|
*
|
|
|
|
|
* @param string $taskUid
|
|
|
|
|
* @param int $taskUserType
|
|
|
|
|
* @param bool $keyCaseToLower
|
|
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
public function getUsers($taskUid, $taskUserType, $keyCaseToLower = false)
|
|
|
|
|
{
|
|
|
|
|
try {
|
2013-11-05 11:00:14 -04:00
|
|
|
//G::LoadClass("BasePeer");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.BasePeer.php");
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
$arrayData = array();
|
|
|
|
|
$keyCase = ($keyCaseToLower)? CASE_LOWER : CASE_UPPER;
|
|
|
|
|
|
|
|
|
|
//Criteria
|
2013-11-05 11:00:14 -04:00
|
|
|
$processMap = new \ProcessMap();
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
$criteria = $processMap->getTaskUsersCriteria($taskUid, $taskUserType);
|
|
|
|
|
|
|
|
|
|
if ($criteria->getDbName() == "dbarray") {
|
2013-11-05 11:00:14 -04:00
|
|
|
$rsCriteria = \ArrayBasePeer::doSelectRS($criteria);
|
2013-11-04 12:31:19 -04:00
|
|
|
} else {
|
2013-11-05 11:00:14 -04:00
|
|
|
$rsCriteria = \GulliverBasePeer::doSelectRS($criteria);
|
2013-11-04 12:31:19 -04:00
|
|
|
}
|
|
|
|
|
|
2013-11-05 11:00:14 -04:00
|
|
|
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
2013-11-04 12:31:19 -04:00
|
|
|
|
|
|
|
|
while ($rsCriteria->next()) {
|
|
|
|
|
$row = $rsCriteria->getRow();
|
|
|
|
|
|
|
|
|
|
$arrayData[] = array_change_key_case($row, $keyCase);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $arrayData;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
2013-11-04 12:44:27 -04:00
|
|
|
|
2013-11-04 12:31:19 -04:00
|
|
|
}
|
|
|
|
|
|
2013-12-04 12:28:51 -04:00
|
|
|
/**
|
|
|
|
|
* Return a assignee list of an activity
|
2013-12-06 09:35:43 -04:00
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
2013-12-06 09:35:43 -04:00
|
|
|
* @param string $filter
|
|
|
|
|
* @param int $start
|
|
|
|
|
* @param int $limit
|
2014-02-18 16:13:57 -04:00
|
|
|
* @param string $type
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
2014-02-18 16:13:57 -04:00
|
|
|
public function getTaskAssignees($sProcessUID, $sTaskUID, $filter, $start, $limit, $type)
|
2013-12-04 12:28:51 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2014-02-05 09:59:38 -04:00
|
|
|
require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "TaskUser.php");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "GroupUser.php");
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$aUsers = array();
|
|
|
|
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE');
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
|
|
|
$oCriteria->addAlias('C', 'CONTENT');
|
|
|
|
|
$aConditions = array();
|
|
|
|
|
$aConditions[] = array(\TaskUserPeer::USR_UID, 'C.CON_ID' );
|
|
|
|
|
$aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter );
|
|
|
|
|
$aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
|
|
|
|
|
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, 1);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_RELATION, 2);
|
|
|
|
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
$c = 0;
|
2013-12-19 14:54:56 -04:00
|
|
|
$oTasks = new \Tasks();
|
|
|
|
|
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 1);
|
|
|
|
|
$aUIDS1 = array();
|
|
|
|
|
foreach ($aAux as $aGroup) {
|
|
|
|
|
$aUIDS1[] = $aGroup['GRP_UID'];
|
|
|
|
|
}
|
|
|
|
|
$groups = new \Groupwf();
|
2014-02-05 09:59:38 -04:00
|
|
|
$totalCount = 0;
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
$totalRows = \GroupwfPeer::doCount( $criteria );
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UX );
|
|
|
|
|
$criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
if ($filter != '') {
|
|
|
|
|
$criteria->add( \ContentPeer::CON_VALUE, '%' . $filter . '%', \Criteria::LIKE );
|
|
|
|
|
}
|
|
|
|
|
$oDataset = \GroupwfPeer::doSelectRS( $criteria );
|
|
|
|
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$processes = Array ();
|
|
|
|
|
$uids = array ();
|
|
|
|
|
$groups = array ();
|
|
|
|
|
$aGroups = array ();
|
|
|
|
|
while ($oDataset->next()) {
|
|
|
|
|
$groups[] = $oDataset->getRow();
|
|
|
|
|
}
|
|
|
|
|
$result = array ('rows' => $groups,'totalCount' => $totalRows);
|
2013-12-19 14:54:56 -04:00
|
|
|
foreach ($result['rows'] as $results) {
|
|
|
|
|
if (in_array($results['GRP_UID'], $aUIDS1)) {
|
|
|
|
|
$c++;
|
2013-12-04 12:28:51 -04:00
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER');
|
2013-12-19 14:54:56 -04:00
|
|
|
$oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']);
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset2 = \GroupUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset2->next();
|
|
|
|
|
$aRow2 = $oDataset2->getRow();
|
2014-02-18 16:13:57 -04:00
|
|
|
if ($type == '' || $type == 'group') {
|
|
|
|
|
$aUsers[] = array('aas_uid' => $results['GRP_UID'],
|
|
|
|
|
'aas_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] .
|
|
|
|
|
' (' . $aRow2['MEMBERS_NUMBER'] . ' ' .
|
|
|
|
|
((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')).
|
|
|
|
|
')' . '' : $aRow['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']),
|
|
|
|
|
'aas_lastname' => "",
|
|
|
|
|
'aas_username' => "",
|
|
|
|
|
'aas_type' => "group" );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
|
2014-01-27 15:50:19 -04:00
|
|
|
if ($filter != '') {
|
2013-12-19 14:54:56 -04:00
|
|
|
$oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
|
|
|
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, 1);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_RELATION, 1);
|
|
|
|
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
while ($aRow = $oDataset->getRow()) {
|
2014-02-18 16:13:57 -04:00
|
|
|
if ($type == '' || $type == 'user') {
|
|
|
|
|
$aUsers[] = array('aas_uid' => $aRow['USR_UID'],
|
|
|
|
|
'aas_name' => $aRow['USR_FIRSTNAME'],
|
|
|
|
|
'aas_lastname' => $aRow['USR_LASTNAME'],
|
|
|
|
|
'aas_username' => $aRow['USR_USERNAME'],
|
|
|
|
|
'aas_type' => "user" );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset->next();
|
|
|
|
|
}
|
2014-02-20 12:27:28 -04:00
|
|
|
if ($start) {
|
|
|
|
|
if ($start < 0) {
|
|
|
|
|
throw (new \Exception( 'invalid value specified for `start`.'));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$start = 0;
|
|
|
|
|
}
|
|
|
|
|
if (isset($limit)) {
|
|
|
|
|
if ($limit < 0) {
|
|
|
|
|
throw (new \Exception( 'invalid value specified for `limit`.'));
|
|
|
|
|
} else {
|
|
|
|
|
if ($limit == 0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$limit = 1000;
|
|
|
|
|
}
|
|
|
|
|
$aUsers = $this->arrayPagination($aUsers, $start, $limit);
|
2013-12-04 12:28:51 -04:00
|
|
|
return $aUsers;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return the available users and users groups to assigned to an activity
|
|
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
2013-12-06 09:35:43 -04:00
|
|
|
* @param string $filter
|
|
|
|
|
* @param int $start
|
|
|
|
|
* @param int $limit
|
2014-02-18 16:13:57 -04:00
|
|
|
* @param string $type
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
2014-02-18 16:13:57 -04:00
|
|
|
public function getTaskAvailableAssignee($sProcessUID, $sTaskUID, $filter, $start, $limit, $type)
|
2013-12-04 12:28:51 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2014-02-05 09:59:38 -04:00
|
|
|
require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "TaskUser.php");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "GroupUser.php");
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$iType = 1;
|
|
|
|
|
$aUsers = array();
|
|
|
|
|
$oTasks = new \Tasks();
|
|
|
|
|
$aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType);
|
|
|
|
|
$aUIDS1 = array();
|
|
|
|
|
$aUIDS2 = array();
|
|
|
|
|
foreach ($aAux as $aGroup) {
|
|
|
|
|
$aUIDS1[] = $aGroup['GRP_UID'];
|
|
|
|
|
}
|
|
|
|
|
$aAux = $oTasks->getUsersOfTask($sTaskUID, $iType);
|
|
|
|
|
foreach ($aAux as $aUser) {
|
|
|
|
|
$aUIDS2[] = $aUser['USR_UID'];
|
|
|
|
|
}
|
|
|
|
|
$aUsers = array();
|
|
|
|
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
$groups = new \Groupwf();
|
|
|
|
|
$result = $groups->getAllGroup($start, $limit, $filter);
|
|
|
|
|
$c = 0;
|
2013-12-19 14:54:56 -04:00
|
|
|
$oTasks = new \Tasks();
|
|
|
|
|
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 1);
|
|
|
|
|
$aUIDS1 = array();
|
|
|
|
|
foreach ($aAux as $aGroup) {
|
|
|
|
|
$aUIDS1[] = $aGroup['GRP_UID'];
|
|
|
|
|
}
|
|
|
|
|
$groups = new \Groupwf();
|
2014-02-05 09:59:38 -04:00
|
|
|
$totalCount = 0;
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
$totalRows = \GroupwfPeer::doCount( $criteria );
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UX );
|
|
|
|
|
$criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
if ($filter != '') {
|
|
|
|
|
$criteria->add( \ContentPeer::CON_VALUE, '%' . $filter . '%', \Criteria::LIKE );
|
|
|
|
|
}
|
|
|
|
|
$oDataset = \GroupwfPeer::doSelectRS( $criteria );
|
|
|
|
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$processes = Array ();
|
|
|
|
|
$uids = array ();
|
|
|
|
|
$groups = array ();
|
|
|
|
|
$aGroups = array ();
|
|
|
|
|
while ($oDataset->next()) {
|
|
|
|
|
$groups[] = $oDataset->getRow();
|
|
|
|
|
}
|
|
|
|
|
$result = array ('rows' => $groups,'totalCount' => $totalRows);
|
2013-12-04 12:28:51 -04:00
|
|
|
foreach ($result['rows'] as $results) {
|
2014-01-09 10:35:55 -04:00
|
|
|
if (! in_array($results['GRP_UID'], $aUIDS1)) {
|
2013-12-04 12:28:51 -04:00
|
|
|
$c++;
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER');
|
|
|
|
|
$oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']);
|
|
|
|
|
$oDataset2 = \GroupUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset2->next();
|
|
|
|
|
$aRow2 = $oDataset2->getRow();
|
2014-02-18 16:13:57 -04:00
|
|
|
if ($type == '' || $type == 'group') {
|
|
|
|
|
$aUsers[] = array('aas_uid' => $results['GRP_UID'],
|
|
|
|
|
'aas_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] .
|
|
|
|
|
' (' . $aRow2['MEMBERS_NUMBER'] . ' ' .
|
|
|
|
|
((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')).
|
|
|
|
|
')' . '' : $aRow['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']),
|
|
|
|
|
'aas_lastname' => "",
|
|
|
|
|
'aas_username' => "",
|
|
|
|
|
'aas_type' => "group" );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
|
2014-01-27 15:50:19 -04:00
|
|
|
if ($filter != '') {
|
2013-12-19 14:54:56 -04:00
|
|
|
$oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$oCriteria->add(\UsersPeer::USR_STATUS, 'ACTIVE');
|
|
|
|
|
$oCriteria->add(\UsersPeer::USR_UID, $aUIDS2, \Criteria::NOT_IN);
|
|
|
|
|
$oDataset = \UsersPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
while ($aRow = $oDataset->getRow()) {
|
2014-02-18 16:13:57 -04:00
|
|
|
if ($type == '' || $type == 'user') {
|
|
|
|
|
$aUsers[] = array('aas_uid' => $aRow['USR_UID'],
|
|
|
|
|
'aas_name' => $aRow['USR_FIRSTNAME'],
|
|
|
|
|
'aas_lastname' => $aRow['USR_LASTNAME'],
|
|
|
|
|
'aas_username' => $aRow['USR_USERNAME'],
|
|
|
|
|
'aas_type' => "user" );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset->next();
|
2014-02-18 16:13:57 -04:00
|
|
|
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
2014-02-20 12:27:28 -04:00
|
|
|
if ($start) {
|
|
|
|
|
if ($start < 0) {
|
|
|
|
|
throw (new \Exception( 'invalid value specified for `start`.'));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$start = 0;
|
|
|
|
|
}
|
|
|
|
|
if (isset($limit)) {
|
|
|
|
|
if ($limit < 0) {
|
|
|
|
|
throw (new \Exception( 'invalid value specified for `limit`.'));
|
|
|
|
|
} else {
|
|
|
|
|
if ($limit == 0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$limit = 1000;
|
|
|
|
|
}
|
|
|
|
|
$aUsers = $this->arrayPagination($aUsers, $start, $limit);
|
2013-12-04 12:28:51 -04:00
|
|
|
return $aUsers;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return a single user or group assigned to an activity
|
2013-12-06 09:35:43 -04:00
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sAssigneeUID {@min 32} {@max 32}
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
public function getTaskAssignee($sProcessUID, $sTaskUID, $sAssigneeUID)
|
|
|
|
|
{
|
|
|
|
|
try {
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$iType = 1;
|
|
|
|
|
$aUsers = array();
|
|
|
|
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE');
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
|
|
|
$oCriteria->addAlias('C', 'CONTENT');
|
|
|
|
|
$aConditions = array();
|
|
|
|
|
$aConditions[] = array(\TaskUserPeer::USR_UID, 'C.CON_ID' );
|
|
|
|
|
$aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter );
|
|
|
|
|
$aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
|
|
|
|
|
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::USR_UID, $sAssigneeUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, $iType);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_RELATION, 2);
|
|
|
|
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
$c = 0;
|
2013-12-19 14:54:56 -04:00
|
|
|
$oTasks = new \Tasks();
|
|
|
|
|
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 1);
|
|
|
|
|
$aUIDS1 = array();
|
|
|
|
|
foreach ($aAux as $aGroup) {
|
|
|
|
|
$aUIDS1[] = $aGroup['GRP_UID'];
|
|
|
|
|
}
|
|
|
|
|
$groups = new \Groupwf();
|
2014-02-10 11:16:13 -04:00
|
|
|
$totalCount = 0;
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
$totalRows = \GroupwfPeer::doCount( $criteria );
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UX );
|
|
|
|
|
$criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->add( \GroupwfPeer::GRP_UID, $sAssigneeUID);
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
$oDataset = \GroupwfPeer::doSelectRS( $criteria );
|
|
|
|
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$processes = Array ();
|
|
|
|
|
$uids = array ();
|
|
|
|
|
$groups = array ();
|
|
|
|
|
$aGroups = array ();
|
|
|
|
|
while ($oDataset->next()) {
|
|
|
|
|
$groups[] = $oDataset->getRow();
|
|
|
|
|
}
|
|
|
|
|
$result = array ('rows' => $groups,'totalCount' => $totalRows);
|
2013-12-19 14:54:56 -04:00
|
|
|
foreach ($result['rows'] as $results) {
|
|
|
|
|
if (in_array($results['GRP_UID'], $aUIDS1)) {
|
|
|
|
|
$c++;
|
2013-12-04 12:28:51 -04:00
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER');
|
2013-12-19 14:54:56 -04:00
|
|
|
$oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']);
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset2 = \GroupUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset2->next();
|
|
|
|
|
$aRow2 = $oDataset2->getRow();
|
2013-12-19 14:54:56 -04:00
|
|
|
$aUsers[] = array('aas_uid' => $results['GRP_UID'],
|
|
|
|
|
'aas_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] .
|
|
|
|
|
' (' . $aRow2['MEMBERS_NUMBER'] . ' ' .
|
|
|
|
|
((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')).
|
|
|
|
|
')' . '' : $aRow['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']),
|
|
|
|
|
'aas_lastname' => "",
|
|
|
|
|
'aas_username' => "",
|
|
|
|
|
'aas_type' => "group" );
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
|
|
|
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::USR_UID, $sAssigneeUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, $iType);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_RELATION, 1);
|
|
|
|
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
while ($aRow = $oDataset->getRow()) {
|
|
|
|
|
$aUsers = array('aas_uid' => $aRow['USR_UID'],
|
|
|
|
|
'aas_name' => $aRow['USR_FIRSTNAME'],
|
|
|
|
|
'aas_lastname' => $aRow['USR_LASTNAME'],
|
|
|
|
|
'aas_username' => $aRow['USR_USERNAME'],
|
|
|
|
|
'aas_type' => "user" );
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
}
|
2013-12-06 16:54:25 -04:00
|
|
|
if (empty($aUsers)) {
|
|
|
|
|
throw (new \Exception( 'Record not found for id: '. $sAssigneeUID));
|
|
|
|
|
} else {
|
|
|
|
|
return $aUsers;
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Assign a user or group to an activity
|
2013-12-06 09:35:43 -04:00
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sAssigneeUID {@min 32} {@max 32}
|
2013-12-06 09:35:43 -04:00
|
|
|
* @param string $assType {@choice user,group}
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
2013-12-06 09:35:43 -04:00
|
|
|
public function addTaskAssignee($sProcessUID, $sTaskUID, $sAssigneeUID, $assType)
|
2013-12-04 12:28:51 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$iType = 1;
|
2014-02-10 11:16:13 -04:00
|
|
|
$iRelation = '';
|
2013-12-10 16:10:57 -04:00
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn( \TaskUserPeer::TU_RELATION );
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::USR_UID, $sAssigneeUID );
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID );
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, $iType );
|
|
|
|
|
$oTaskUser = \TaskUserPeer::doSelectRS( $oCriteria );
|
|
|
|
|
$oTaskUser->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
while ($oTaskUser->next()) {
|
|
|
|
|
$aRow = $oTaskUser->getRow();
|
|
|
|
|
$iRelation = $aRow['TU_RELATION'];
|
|
|
|
|
}
|
|
|
|
|
$oTaskUser = \TaskUserPeer::retrieveByPK( $sTaskUID, $sAssigneeUID, $iType, $iRelation );
|
|
|
|
|
if (! is_null( $oTaskUser )) {
|
|
|
|
|
throw (new \Exception( 'This id: '. $sAssigneeUID .' is already assigned to task: ' . $sTaskUID ));
|
2013-12-04 12:28:51 -04:00
|
|
|
} else {
|
2013-12-10 16:10:57 -04:00
|
|
|
$oTypeAssigneeG = \GroupwfPeer::retrieveByPK( $sAssigneeUID );
|
|
|
|
|
$oTypeAssigneeU = \UsersPeer::retrieveByPK( $sAssigneeUID );
|
|
|
|
|
if (is_null( $oTypeAssigneeG ) && is_null( $oTypeAssigneeU ) ) {
|
|
|
|
|
throw (new \Exception( 'This id: '. $sAssigneeUID .' do not correspond to a registered ' .$assType ));
|
|
|
|
|
}
|
|
|
|
|
if (is_null( $oTypeAssigneeG ) && ! is_null( $oTypeAssigneeU) ) {
|
|
|
|
|
$type = "user";
|
|
|
|
|
if ( $type != $assType ) {
|
|
|
|
|
throw (new \Exception( 'This id: '. $sAssigneeUID .' do not correspond to a registered ' .$assType ));
|
|
|
|
|
}
|
2014-01-30 12:01:54 -04:00
|
|
|
}
|
2013-12-10 16:10:57 -04:00
|
|
|
if (! is_null( $oTypeAssigneeG ) && is_null( $oTypeAssigneeU ) ) {
|
|
|
|
|
$type = "group";
|
|
|
|
|
if ( $type != $assType ) {
|
|
|
|
|
throw (new \Exception( 'This id: '. $sAssigneeUID .' do not correspond to a registered ' .$assType ));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$oTaskUser = new \TaskUser();
|
|
|
|
|
if ( $assType == "user" ) {
|
|
|
|
|
$oTaskUser->create(array('TAS_UID' => $sTaskUID,
|
|
|
|
|
'USR_UID' => $sAssigneeUID,
|
|
|
|
|
'TU_TYPE' => $iType,
|
|
|
|
|
'TU_RELATION' => 1));
|
|
|
|
|
} else {
|
|
|
|
|
$oTaskUser->create(array('TAS_UID' => $sTaskUID,
|
|
|
|
|
'USR_UID' => $sAssigneeUID,
|
|
|
|
|
'TU_TYPE' => $iType,
|
|
|
|
|
'TU_RELATION' => 2));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
2013-12-10 16:10:57 -04:00
|
|
|
} catch ( Exception $e ) {
|
2013-12-04 12:28:51 -04:00
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Remove a assignee of an activity
|
2013-12-06 09:35:43 -04:00
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sAssigneeUID {@min 32} {@max 32}
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
2013-12-06 09:35:43 -04:00
|
|
|
public function removeTaskAssignee($sProcessUID, $sTaskUID, $sAssigneeUID)
|
2014-01-30 12:01:54 -04:00
|
|
|
{
|
2013-12-04 12:28:51 -04:00
|
|
|
try {
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$iType = 1;
|
2014-02-10 11:38:16 -04:00
|
|
|
$iRelation = '';
|
2013-12-06 09:35:43 -04:00
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn( \TaskUserPeer::TU_RELATION );
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::USR_UID, $sAssigneeUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, $iType);
|
|
|
|
|
$oTaskUser = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oTaskUser->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
while ($oTaskUser->next()) {
|
|
|
|
|
$aRow = $oTaskUser->getRow();
|
|
|
|
|
$iRelation = $aRow['TU_RELATION'];
|
|
|
|
|
}
|
|
|
|
|
$oTaskUser = \TaskUserPeer::retrieveByPK($sTaskUID, $sAssigneeUID, $iType, $iRelation);
|
|
|
|
|
if (! is_null( $oTaskUser )) {
|
|
|
|
|
\TaskUserPeer::doDelete($oCriteria);
|
2013-12-04 12:28:51 -04:00
|
|
|
} else {
|
2013-12-06 09:35:43 -04:00
|
|
|
throw (new \Exception( 'This row does not exist!' ));
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return a adhoc assignee list of an activity
|
2013-12-06 09:35:43 -04:00
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
2014-02-18 16:13:57 -04:00
|
|
|
* @param string $filter
|
|
|
|
|
* @param int $start
|
|
|
|
|
* @param int $limit
|
|
|
|
|
* @param string $type
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
2014-02-18 16:13:57 -04:00
|
|
|
public function getTaskAdhocAssignees($sProcessUID, $sTaskUID, $filter, $start, $limit, $type)
|
2013-12-04 12:28:51 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2014-02-05 09:59:38 -04:00
|
|
|
require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "TaskUser.php");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "GroupUser.php");
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$aUsers = array();
|
|
|
|
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE');
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
|
|
|
$oCriteria->addAlias('C', 'CONTENT');
|
|
|
|
|
$aConditions = array();
|
|
|
|
|
$aConditions[] = array(\TaskUserPeer::USR_UID, 'C.CON_ID' );
|
|
|
|
|
$aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter );
|
|
|
|
|
$aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
|
|
|
|
|
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, 2);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_RELATION, 2);
|
|
|
|
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
$c = 0;
|
2013-12-19 14:54:56 -04:00
|
|
|
$oTasks = new \Tasks();
|
2013-12-23 09:54:33 -04:00
|
|
|
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 2);
|
2013-12-19 14:54:56 -04:00
|
|
|
$aUIDS1 = array();
|
|
|
|
|
foreach ($aAux as $aGroup) {
|
|
|
|
|
$aUIDS1[] = $aGroup['GRP_UID'];
|
|
|
|
|
}
|
|
|
|
|
$groups = new \Groupwf();
|
2014-02-05 09:59:38 -04:00
|
|
|
$totalCount = 0;
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
$totalRows = \GroupwfPeer::doCount( $criteria );
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UX );
|
|
|
|
|
$criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
if ($filter != '') {
|
|
|
|
|
$criteria->add( \ContentPeer::CON_VALUE, '%' . $filter . '%', \Criteria::LIKE );
|
|
|
|
|
}
|
|
|
|
|
$oDataset = \GroupwfPeer::doSelectRS( $criteria );
|
|
|
|
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$processes = Array ();
|
|
|
|
|
$uids = array ();
|
|
|
|
|
$groups = array ();
|
|
|
|
|
$aGroups = array ();
|
|
|
|
|
while ($oDataset->next()) {
|
|
|
|
|
$groups[] = $oDataset->getRow();
|
|
|
|
|
}
|
|
|
|
|
$result = array ('rows' => $groups,'totalCount' => $totalRows);
|
2013-12-19 14:54:56 -04:00
|
|
|
foreach ($result['rows'] as $results) {
|
|
|
|
|
if (in_array($results['GRP_UID'], $aUIDS1)) {
|
|
|
|
|
$c++;
|
2013-12-04 12:28:51 -04:00
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER');
|
2013-12-19 14:54:56 -04:00
|
|
|
$oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']);
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset2 = \GroupUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset2->next();
|
|
|
|
|
$aRow2 = $oDataset2->getRow();
|
2014-02-18 16:13:57 -04:00
|
|
|
if ($type == '' || $type == 'group') {
|
|
|
|
|
$aUsers[] = array('ada_uid' => $results['GRP_UID'],
|
|
|
|
|
'ada_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] .
|
|
|
|
|
' (' . $aRow2['MEMBERS_NUMBER'] . ' ' .
|
|
|
|
|
((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')).
|
|
|
|
|
')' . '' : $aRow['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']),
|
|
|
|
|
'ada_lastname' => "",
|
|
|
|
|
'ada_username' => "",
|
|
|
|
|
'ada_type' => "group" );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
|
2014-01-27 15:50:19 -04:00
|
|
|
if ($filter != '') {
|
2013-12-19 14:54:56 -04:00
|
|
|
$oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
|
|
|
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, 2);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_RELATION, 1);
|
|
|
|
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
while ($aRow = $oDataset->getRow()) {
|
2014-02-18 16:13:57 -04:00
|
|
|
if ($type == '' || $type == 'user') {
|
|
|
|
|
$aUsers[] = array('ada_uid' => $aRow['USR_UID'],
|
|
|
|
|
'ada_name' => $aRow['USR_FIRSTNAME'],
|
|
|
|
|
'ada_lastname' => $aRow['USR_LASTNAME'],
|
|
|
|
|
'ada_username' => $aRow['USR_USERNAME'],
|
|
|
|
|
'ada_type' => "user" );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset->next();
|
|
|
|
|
}
|
2014-02-20 12:27:28 -04:00
|
|
|
if ($start) {
|
|
|
|
|
if ($start < 0) {
|
|
|
|
|
throw (new \Exception( 'invalid value specified for `start`.'));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$start = 0;
|
|
|
|
|
}
|
|
|
|
|
if (isset($limit)) {
|
|
|
|
|
if ($limit < 0) {
|
|
|
|
|
throw (new \Exception( 'invalid value specified for `limit`.'));
|
|
|
|
|
} else {
|
|
|
|
|
if ($limit == 0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$limit = 1000;
|
|
|
|
|
}
|
|
|
|
|
$aUsers = $this->arrayPagination($aUsers, $start, $limit);
|
2013-12-04 12:28:51 -04:00
|
|
|
return $aUsers;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Return the available adhoc users and users groups to assigned to an activity
|
|
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
2014-02-18 16:13:57 -04:00
|
|
|
* @param string $filter
|
|
|
|
|
* @param int $start
|
|
|
|
|
* @param int $limit
|
|
|
|
|
* @param string $type
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
2014-02-18 16:13:57 -04:00
|
|
|
public function getTaskAvailableAdhocAssignee($sProcessUID, $sTaskUID, $filter, $start, $limit, $type)
|
2013-12-04 12:28:51 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2014-02-05 09:59:38 -04:00
|
|
|
require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "TaskUser.php");
|
|
|
|
|
require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "GroupUser.php");
|
2014-02-20 12:27:28 -04:00
|
|
|
$aUsers = array();
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2014-02-20 12:27:28 -04:00
|
|
|
|
2013-12-04 12:28:51 -04:00
|
|
|
$iType = 2;
|
|
|
|
|
$oTasks = new \Tasks();
|
|
|
|
|
$aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType);
|
|
|
|
|
$aUIDS1 = array();
|
|
|
|
|
$aUIDS2 = array();
|
|
|
|
|
foreach ($aAux as $aGroup) {
|
|
|
|
|
$aUIDS1[] = $aGroup['GRP_UID'];
|
|
|
|
|
}
|
|
|
|
|
$aAux = $oTasks->getUsersOfTask($sTaskUID, $iType);
|
|
|
|
|
foreach ($aAux as $aUser) {
|
|
|
|
|
$aUIDS2[] = $aUser['USR_UID'];
|
|
|
|
|
}
|
|
|
|
|
$aUsers = array();
|
|
|
|
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
$groups = new \Groupwf();
|
|
|
|
|
$result = $groups->getAllGroup($start, $limit, $filter);
|
|
|
|
|
$c = 0;
|
2013-12-19 14:54:56 -04:00
|
|
|
$oTasks = new \Tasks();
|
2013-12-23 09:54:33 -04:00
|
|
|
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 2);
|
2013-12-19 14:54:56 -04:00
|
|
|
$aUIDS1 = array();
|
|
|
|
|
foreach ($aAux as $aGroup) {
|
|
|
|
|
$aUIDS1[] = $aGroup['GRP_UID'];
|
|
|
|
|
}
|
|
|
|
|
$groups = new \Groupwf();
|
2014-02-05 09:59:38 -04:00
|
|
|
$totalCount = 0;
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
$totalRows = \GroupwfPeer::doCount( $criteria );
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UX );
|
|
|
|
|
$criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
if ($filter != '') {
|
|
|
|
|
$criteria->add( \ContentPeer::CON_VALUE, '%' . $filter . '%', \Criteria::LIKE );
|
|
|
|
|
}
|
|
|
|
|
$oDataset = \GroupwfPeer::doSelectRS( $criteria );
|
|
|
|
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$processes = Array ();
|
|
|
|
|
$uids = array ();
|
|
|
|
|
$groups = array ();
|
|
|
|
|
$aGroups = array ();
|
|
|
|
|
while ($oDataset->next()) {
|
|
|
|
|
$groups[] = $oDataset->getRow();
|
|
|
|
|
}
|
|
|
|
|
$result = array ('rows' => $groups,'totalCount' => $totalRows);
|
2013-12-04 12:28:51 -04:00
|
|
|
foreach ($result['rows'] as $results) {
|
2014-01-09 10:35:55 -04:00
|
|
|
if (! in_array($results['GRP_UID'], $aUIDS1)) {
|
2013-12-04 12:28:51 -04:00
|
|
|
$c++;
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER');
|
|
|
|
|
$oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']);
|
|
|
|
|
$oDataset2 = \GroupUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset2->next();
|
|
|
|
|
$aRow2 = $oDataset2->getRow();
|
2014-02-18 16:13:57 -04:00
|
|
|
if ($type == '' || $type == 'group') {
|
|
|
|
|
$aUsers[] = array('ada_uid' => $results['GRP_UID'],
|
|
|
|
|
'ada_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] .
|
|
|
|
|
' (' . $aRow2['MEMBERS_NUMBER'] . ' ' .
|
|
|
|
|
((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')).
|
|
|
|
|
')' . '' : $aRow['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']),
|
|
|
|
|
'ada_lastname' => "",
|
|
|
|
|
'ada_username' => "",
|
|
|
|
|
'ada_type' => "group" );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
|
2014-01-27 15:50:19 -04:00
|
|
|
if ($filter != '') {
|
2013-12-19 14:54:56 -04:00
|
|
|
$oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$oCriteria->add(\UsersPeer::USR_STATUS, 'ACTIVE');
|
|
|
|
|
$oCriteria->add(\UsersPeer::USR_UID, $aUIDS2, \Criteria::NOT_IN);
|
|
|
|
|
$oDataset = \UsersPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
while ($aRow = $oDataset->getRow()) {
|
2014-02-18 16:13:57 -04:00
|
|
|
if ($type == '' || $type == 'user') {
|
|
|
|
|
$aUsers[] = array('ada_uid' => $aRow['USR_UID'],
|
|
|
|
|
'ada_name' => $aRow['USR_FIRSTNAME'],
|
|
|
|
|
'ada_lastname' => $aRow['USR_LASTNAME'],
|
|
|
|
|
'ada_username' => $aRow['USR_USERNAME'],
|
|
|
|
|
'ada_type' => "user" );
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset->next();
|
|
|
|
|
}
|
2014-02-20 12:27:28 -04:00
|
|
|
if ($start) {
|
|
|
|
|
if ($start < 0) {
|
|
|
|
|
throw (new \Exception( 'invalid value specified for `start`.'));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$start = 0;
|
|
|
|
|
}
|
|
|
|
|
if (isset($limit)) {
|
|
|
|
|
if ($limit < 0) {
|
|
|
|
|
throw (new \Exception( 'invalid value specified for `limit`.'));
|
|
|
|
|
} else {
|
|
|
|
|
if ($limit == 0) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$limit = 1000;
|
|
|
|
|
}
|
|
|
|
|
$aUsers = $this->arrayPagination($aUsers, $start, $limit);
|
2013-12-04 12:28:51 -04:00
|
|
|
return $aUsers;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-20 12:27:28 -04:00
|
|
|
|
|
|
|
|
|
2013-12-04 12:28:51 -04:00
|
|
|
/**
|
|
|
|
|
* Return a single Adhoc user or group assigned to an activity
|
2013-12-04 12:44:39 -04:00
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sAssigneeUID {@min 32} {@max 32}
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
|
|
|
|
public function getTaskAdhocAssignee($sProcessUID, $sTaskUID, $sAssigneeUID)
|
|
|
|
|
{
|
|
|
|
|
try {
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$iType = 2;
|
|
|
|
|
$aUsers = array();
|
|
|
|
|
$sDelimiter = \DBAdapter::getStringDelimiter();
|
|
|
|
|
$oCriteria = new \Criteria('workflow' );
|
|
|
|
|
$oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE');
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
|
|
|
$oCriteria->addAlias('C', 'CONTENT');
|
|
|
|
|
$aConditions = array();
|
|
|
|
|
$aConditions[] = array(\TaskUserPeer::USR_UID, 'C.CON_ID' );
|
|
|
|
|
$aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter );
|
|
|
|
|
$aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
|
|
|
|
|
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::USR_UID, $sAssigneeUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, $iType);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_RELATION, 2);
|
|
|
|
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
$c = 0;
|
2013-12-19 14:54:56 -04:00
|
|
|
$oTasks = new \Tasks();
|
2013-12-23 09:54:33 -04:00
|
|
|
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 2);
|
2013-12-19 14:54:56 -04:00
|
|
|
$aUIDS1 = array();
|
|
|
|
|
foreach ($aAux as $aGroup) {
|
|
|
|
|
$aUIDS1[] = $aGroup['GRP_UID'];
|
|
|
|
|
}
|
|
|
|
|
$groups = new \Groupwf();
|
2014-02-10 11:16:13 -04:00
|
|
|
$totalCount = 0;
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
$totalRows = \GroupwfPeer::doCount( $criteria );
|
|
|
|
|
$criteria = new \Criteria( 'workflow' );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UID );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS );
|
|
|
|
|
$criteria->addSelectColumn( \GroupwfPeer::GRP_UX );
|
|
|
|
|
$criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE );
|
|
|
|
|
$criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' );
|
|
|
|
|
$criteria->add( \ContentPeer::CON_LANG, SYS_LANG );
|
|
|
|
|
$criteria->add( \GroupwfPeer::GRP_UID, $sAssigneeUID);
|
|
|
|
|
$criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE );
|
|
|
|
|
$oDataset = \GroupwfPeer::doSelectRS( $criteria );
|
|
|
|
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
|
|
|
|
$processes = Array ();
|
|
|
|
|
$uids = array ();
|
|
|
|
|
$groups = array ();
|
|
|
|
|
$aGroups = array ();
|
|
|
|
|
while ($oDataset->next()) {
|
|
|
|
|
$groups[] = $oDataset->getRow();
|
|
|
|
|
}
|
|
|
|
|
$result = array ('rows' => $groups,'totalCount' => $totalRows);
|
2013-12-19 14:54:56 -04:00
|
|
|
foreach ($result['rows'] as $results) {
|
|
|
|
|
if (in_array($results['GRP_UID'], $aUIDS1)) {
|
|
|
|
|
$c++;
|
2013-12-04 12:28:51 -04:00
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER');
|
2013-12-19 14:54:56 -04:00
|
|
|
$oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']);
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset2 = \GroupUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset2->next();
|
|
|
|
|
$aRow2 = $oDataset2->getRow();
|
2014-01-09 10:59:08 -04:00
|
|
|
$aUsers[] = array('ada_uid' => $results['GRP_UID'],
|
|
|
|
|
'ada_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] .
|
2013-12-19 14:54:56 -04:00
|
|
|
' (' . $aRow2['MEMBERS_NUMBER'] . ' ' .
|
|
|
|
|
((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')).
|
|
|
|
|
')' . '' : $aRow['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']),
|
2014-01-09 10:59:08 -04:00
|
|
|
'ada_lastname' => "",
|
|
|
|
|
'ada_username' => "",
|
|
|
|
|
'ada_type' => "group" );
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
|
|
|
|
|
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE);
|
|
|
|
|
$oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
|
|
|
|
|
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::USR_UID, $sAssigneeUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, $iType);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_RELATION, 1);
|
|
|
|
|
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
$oDataset->next();
|
|
|
|
|
while ($aRow = $oDataset->getRow()) {
|
2014-01-09 10:59:08 -04:00
|
|
|
$aUsers = array('ada_uid' => $aRow['USR_UID'],
|
|
|
|
|
'ada_name' => $aRow['USR_FIRSTNAME'],
|
|
|
|
|
'ada_lastname' => $aRow['USR_LASTNAME'],
|
|
|
|
|
'ada_username' => $aRow['USR_USERNAME'],
|
|
|
|
|
'ada_type' => "user" );
|
2013-12-04 12:28:51 -04:00
|
|
|
$oDataset->next();
|
|
|
|
|
}
|
2013-12-06 16:54:25 -04:00
|
|
|
if (empty($aUsers)) {
|
|
|
|
|
throw (new \Exception( 'Record not found for id: '. $sAssigneeUID));
|
|
|
|
|
} else {
|
|
|
|
|
return $aUsers;
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Assign a Adhoc user or group to an activity
|
2013-12-06 09:35:43 -04:00
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sAssigneeUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $assType {@choice user,group}
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* return array
|
|
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
2013-12-06 09:35:43 -04:00
|
|
|
public function addTaskAdhocAssignee($sProcessUID, $sTaskUID, $sAssigneeUID, $assType)
|
2013-12-04 12:28:51 -04:00
|
|
|
{
|
|
|
|
|
try {
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$iType = 2;
|
2014-02-10 11:16:13 -04:00
|
|
|
$iRelation = '';
|
2013-12-10 16:10:57 -04:00
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn( \TaskUserPeer::TU_RELATION );
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::USR_UID, $sAssigneeUID );
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID );
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, $iType );
|
|
|
|
|
$oTaskUser = \TaskUserPeer::doSelectRS( $oCriteria );
|
|
|
|
|
$oTaskUser->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
while ($oTaskUser->next()) {
|
|
|
|
|
$aRow = $oTaskUser->getRow();
|
|
|
|
|
$iRelation = $aRow['TU_RELATION'];
|
|
|
|
|
}
|
|
|
|
|
$oTaskUser = \TaskUserPeer::retrieveByPK( $sTaskUID, $sAssigneeUID, $iType, $iRelation );
|
|
|
|
|
if (! is_null( $oTaskUser )) {
|
|
|
|
|
throw (new \Exception( 'This id: '. $sAssigneeUID .' is already assigned to task: ' . $sTaskUID ));
|
2013-12-04 12:28:51 -04:00
|
|
|
} else {
|
2013-12-10 16:10:57 -04:00
|
|
|
$oTypeAssigneeG = \GroupwfPeer::retrieveByPK( $sAssigneeUID );
|
|
|
|
|
$oTypeAssigneeU = \UsersPeer::retrieveByPK( $sAssigneeUID );
|
|
|
|
|
if (is_null( $oTypeAssigneeG ) && is_null( $oTypeAssigneeU ) ) {
|
|
|
|
|
throw (new \Exception( 'This id: '. $sAssigneeUID .' do not correspond to a registered ' .$assType ));
|
|
|
|
|
}
|
|
|
|
|
if (is_null( $oTypeAssigneeG ) && ! is_null( $oTypeAssigneeU) ) {
|
|
|
|
|
$type = "user";
|
|
|
|
|
if ( $type != $assType ) {
|
|
|
|
|
throw (new \Exception( 'This id: '. $sAssigneeUID .' do not correspond to a registered ' .$assType ));
|
|
|
|
|
}
|
2014-01-30 12:01:54 -04:00
|
|
|
}
|
2013-12-10 16:10:57 -04:00
|
|
|
if (! is_null( $oTypeAssigneeG ) && is_null( $oTypeAssigneeU ) ) {
|
|
|
|
|
$type = "group";
|
|
|
|
|
if ( $type != $assType ) {
|
|
|
|
|
throw (new \Exception( 'This id: '. $sAssigneeUID .' do not correspond to a registered ' .$assType ));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$oTaskUser = new \TaskUser();
|
|
|
|
|
if ( $assType == "user" ) {
|
|
|
|
|
$oTaskUser->create(array('TAS_UID' => $sTaskUID,
|
|
|
|
|
'USR_UID' => $sAssigneeUID,
|
|
|
|
|
'TU_TYPE' => $iType,
|
|
|
|
|
'TU_RELATION' => 1));
|
|
|
|
|
} else {
|
|
|
|
|
$oTaskUser->create(array('TAS_UID' => $sTaskUID,
|
|
|
|
|
'USR_UID' => $sAssigneeUID,
|
|
|
|
|
'TU_TYPE' => $iType,
|
|
|
|
|
'TU_RELATION' => 2));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
2013-12-10 16:10:57 -04:00
|
|
|
} catch ( Exception $e ) {
|
2013-12-04 12:28:51 -04:00
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Remove a Adhoc assignee of an activity
|
2013-12-06 09:35:43 -04:00
|
|
|
*
|
2014-01-09 11:44:48 -04:00
|
|
|
* @param string $sProcessUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sTaskUID {@min 32} {@max 32}
|
|
|
|
|
* @param string $sAssigneeUID {@min 32} {@max 32}
|
2013-12-04 12:28:51 -04:00
|
|
|
*
|
|
|
|
|
* @access public
|
|
|
|
|
*/
|
2013-12-06 09:35:43 -04:00
|
|
|
public function removeTaskAdhocAssignee($sProcessUID, $sTaskUID, $sAssigneeUID)
|
2014-01-30 12:01:54 -04:00
|
|
|
{
|
2013-12-04 12:28:51 -04:00
|
|
|
try {
|
2014-01-22 16:41:32 -04:00
|
|
|
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
|
|
|
|
|
if (is_null($oProcess)) {
|
|
|
|
|
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' do not correspond to a registered process'));
|
|
|
|
|
}
|
|
|
|
|
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
|
|
|
|
|
if (is_null($oActivity)) {
|
|
|
|
|
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' do not correspond to a registered activity'));
|
|
|
|
|
}
|
2013-12-04 12:28:51 -04:00
|
|
|
$iType = 2;
|
2014-02-10 11:38:16 -04:00
|
|
|
$iRelation = '';
|
2013-12-06 09:35:43 -04:00
|
|
|
$oCriteria = new \Criteria('workflow');
|
|
|
|
|
$oCriteria->addSelectColumn( \TaskUserPeer::TU_RELATION );
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::USR_UID, $sAssigneeUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
|
|
|
|
|
$oCriteria->add(\TaskUserPeer::TU_TYPE, $iType);
|
|
|
|
|
$oTaskUser = \TaskUserPeer::doSelectRS($oCriteria);
|
|
|
|
|
$oTaskUser->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
|
|
|
while ($oTaskUser->next()) {
|
|
|
|
|
$aRow = $oTaskUser->getRow();
|
|
|
|
|
$iRelation = $aRow['TU_RELATION'];
|
|
|
|
|
}
|
|
|
|
|
$oTaskUser = \TaskUserPeer::retrieveByPK($sTaskUID, $sAssigneeUID, $iType, $iRelation);
|
|
|
|
|
if (! is_null( $oTaskUser )) {
|
2014-01-09 11:44:48 -04:00
|
|
|
\TaskUserPeer::doDelete($oCriteria);
|
2013-12-04 12:28:51 -04:00
|
|
|
} else {
|
2013-12-06 09:35:43 -04:00
|
|
|
throw (new \Exception( 'This row does not exist!' ));
|
2013-12-04 12:28:51 -04:00
|
|
|
}
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
2013-12-10 16:10:57 -04:00
|
|
|
}
|
2014-02-03 17:06:29 -04:00
|
|
|
|
2014-02-06 12:36:46 -04:00
|
|
|
/**
|
|
|
|
|
* Validate Process Uid
|
|
|
|
|
* @var string $pro_uid. Uid for process
|
|
|
|
|
*
|
|
|
|
|
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
|
|
|
|
|
* @copyright Colosa - Bolivia
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2014-02-14 09:39:24 -04:00
|
|
|
public function validateProUid ($pro_uid)
|
|
|
|
|
{
|
2014-02-06 12:36:46 -04:00
|
|
|
$pro_uid = trim($pro_uid);
|
|
|
|
|
if ($pro_uid == '') {
|
|
|
|
|
throw (new \Exception("The project with prj_uid: '', does not exist."));
|
2014-02-03 17:06:29 -04:00
|
|
|
}
|
|
|
|
|
$oProcess = new \Process();
|
2014-02-06 12:36:46 -04:00
|
|
|
if (!($oProcess->processExists($pro_uid))) {
|
|
|
|
|
throw (new \Exception("The project with prj_uid: '$pro_uid', does not exist."));
|
2014-02-03 17:06:29 -04:00
|
|
|
}
|
2014-02-06 12:36:46 -04:00
|
|
|
return $pro_uid;
|
2014-02-03 17:06:29 -04:00
|
|
|
}
|
|
|
|
|
|
2014-02-06 12:36:46 -04:00
|
|
|
/**
|
|
|
|
|
* Validate Task Uid
|
|
|
|
|
* @var string $act_uid. Uid for task
|
|
|
|
|
*
|
|
|
|
|
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
|
|
|
|
|
* @copyright Colosa - Bolivia
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
2014-02-14 09:39:24 -04:00
|
|
|
public function validateActUid($act_uid)
|
|
|
|
|
{
|
2014-02-06 12:36:46 -04:00
|
|
|
$act_uid = trim($act_uid);
|
|
|
|
|
if ($act_uid == '') {
|
2014-02-06 14:44:53 -04:00
|
|
|
throw (new \Exception("The activity with act_uid: '', does not exist."));
|
2014-02-03 17:06:29 -04:00
|
|
|
}
|
|
|
|
|
$oTask = new \Task();
|
2014-02-06 12:36:46 -04:00
|
|
|
if (!($oTask->taskExists($act_uid))) {
|
2014-02-06 14:44:53 -04:00
|
|
|
throw (new \Exception("The activity with act_uid: '$act_uid', does not exist."));
|
2014-02-03 17:06:29 -04:00
|
|
|
}
|
2014-02-06 12:36:46 -04:00
|
|
|
return $act_uid;
|
2014-02-03 17:06:29 -04:00
|
|
|
}
|
2014-02-20 12:27:28 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var array $display_array. array of groups and users
|
|
|
|
|
* @var int $page. start
|
|
|
|
|
* @var int $show_per_page. limit
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function arrayPagination($display_array, $page, $show_per_page) {
|
|
|
|
|
$page = $page+1;
|
|
|
|
|
$show_per_page = $show_per_page -1;
|
|
|
|
|
$start = ($page - 1) * ($show_per_page + 1);
|
|
|
|
|
$offset = $show_per_page + 1;
|
|
|
|
|
$outArray = array_slice($display_array, $start, $offset);
|
|
|
|
|
return $outArray;
|
|
|
|
|
}
|
2014-02-26 10:22:47 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Unset variable for array
|
|
|
|
|
* @var array $array. Array base
|
|
|
|
|
* @var string $variable. name for variable
|
|
|
|
|
*
|
|
|
|
|
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
|
|
|
|
|
* @copyright Colosa - Bolivia
|
|
|
|
|
*
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
public function unsetVar(&$array, $variable)
|
|
|
|
|
{
|
|
|
|
|
if (isset($array[$variable])) {
|
|
|
|
|
unset($array[$variable]);
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-01-25 06:10:24 -04:00
|
|
|
}
|
2013-12-13 16:36:03 -04:00
|
|
|
|