Merged colosa/processmaker into master

This commit is contained in:
william barra
2015-02-27 13:47:47 -04:00
24 changed files with 464 additions and 142 deletions

View File

@@ -55,7 +55,7 @@ class XmlForm_Field_HTML extends XmlForm_Field
* @return string
*
*/
public function render ($value, $owner = null)
public function render($value = null, $owner = null)
{
$value = ($value == '') ? '<br/>' : $value;
$html = "<div style='width:" . $this->width . ";'>";

View File

@@ -713,7 +713,7 @@ class G
* @param string $strClass
* @return void
*/
public function LoadThirdParty ($sPath, $sFile)
public static function LoadThirdParty($sPath, $sFile)
{
$classfile = PATH_THIRDPARTY . $sPath . '/' . $sFile . ((substr( $sFile, 0, - 4 ) !== '.php') ? '.php' : '');
return require_once ($classfile);
@@ -3330,7 +3330,7 @@ class G
*
* @return boolean true or false
*/
public function isHttpRequest()
public static function isHttpRequest()
{
if (isset($_SERVER['SERVER_SOFTWARE']) && strpos(strtolower($_SERVER['SERVER_SOFTWARE']), 'apache') !== false) {
return true;
@@ -5647,3 +5647,4 @@ function __ ($msgID, $lang = SYS_LANG, $data = null)
{
return G::LoadTranslation( $msgID, $lang, $data );
}

View File

@@ -76,7 +76,7 @@ class XmlForm_Field_XmlMenu extends XmlForm_Field
*
* @return object $out
*/
public function render ($value)
public function render($value = null, $paramDummy2 = null)
{
$this->xmlMenu = new xmlMenu( $this->xmlfile, $this->home );
$this->xmlMenu->setValues( $value );
@@ -97,7 +97,7 @@ class XmlForm_Field_XmlMenu extends XmlForm_Field
*
* @return none
*/
public function renderGrid ($value)
public function renderGrid($value = null, $paramDummy2 = null, $paramDummy3 = null, $paramDummy4 = null)
{
return $this->render( $value );
}

File diff suppressed because it is too large Load Diff

View File

@@ -112,7 +112,7 @@ class XmlForm_Field_DVEditor extends XmlForm_Field
*
* @return string '<div> ... </div>'
*/
public function render($value, $owner = null)
public function render($value = null, $owner = null)
{
return '<div style="width:' . htmlentities($this->width, ENT_QUOTES, 'utf-8') . ';height:' . htmlentities($this->height, ENT_QUOTES, 'utf-8') . '"><input id="form[' . $this->name . ']" name="form[' . $this->name . ']" type="hidden" value="' . htmlentities($value, ENT_QUOTES, 'UTF-8') . '"/></div>';
}

View File

@@ -41,6 +41,20 @@ if (!defined('PATH_HOME')) {
require_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths.php');
require_once PATH_TRUNK . "framework/src/Maveriks/Util/ClassLoader.php";
//Class Loader - /ProcessMaker/BusinessModel
$classLoader = \Maveriks\Util\ClassLoader::getInstance();
$classLoader->add(PATH_TRUNK . "framework" . PATH_SEP . "src" . PATH_SEP, "Maveriks");
$classLoader->add(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "src" . PATH_SEP, "ProcessMaker");
$classLoader->add(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "src" . PATH_SEP);
//Add vendors to autoloader
//$classLoader->add(PATH_TRUNK . "vendor" . PATH_SEP . "luracast" . PATH_SEP . "restler" . PATH_SEP . "vendor", "Luracast");
//$classLoader->add(PATH_TRUNK . "vendor" . PATH_SEP . "bshaffer" . PATH_SEP . "oauth2-server-php" . PATH_SEP . "src" . PATH_SEP, "OAuth2");
$classLoader->addClass("Bootstrap", PATH_TRUNK . "gulliver" . PATH_SEP . "system" . PATH_SEP . "class.bootstrap.php");
//$classLoader->addModelClassPath(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP);
//Load classes
G::LoadThirdParty('pear/json','class.json');
G::LoadThirdParty('smarty/libs','Smarty.class');
G::LoadSystem('error');
@@ -87,7 +101,7 @@ if (!defined('PATH_HOME')) {
define ('TIME_ZONE', $config['time_zone']);
}
require_once (PATH_GULLIVER . PATH_SEP . 'class.bootstrap.php');
//require_once (PATH_GULLIVER . PATH_SEP . 'class.bootstrap.php');
//define( 'PATH_GULLIVER_HOME', PATH_TRUNK . 'gulliver' . PATH_SEP );
spl_autoload_register(array('Bootstrap', 'autoloadClass'));
@@ -339,7 +353,13 @@ Bootstrap::registerClass('wsResponse', PATH_HOME . "engine/classes/clas
Bootstrap::registerClass('PMLicensedFeatures', PATH_HOME . "engine/classes/class.LicensedFeatures.php");
Bootstrap::registerClass('AddonsManagerPeer', PATH_HOME . "engine/classes/model/AddonsManagerPeer.php");
G::LoadClass("dates");
Bootstrap::registerClass("BaseEmailServer", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "om" . PATH_SEP . "BaseEmailServer.php");
Bootstrap::registerClass("EmailServer", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "EmailServer.php");
Bootstrap::registerClass("BaseEmailServerPeer", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "om" . PATH_SEP . "BaseEmailServerPeer.php");
Bootstrap::registerClass("EmailServerPeer", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "EmailServerPeer.php");
G::LoadClass("serverConfiguration");
G::LoadClass("dates"); //Load Criteria
if (!defined('SYS_SYS')) {
$sObject = $argv[1];
@@ -382,25 +402,28 @@ if (!defined('SYS_SYS')) {
eprintln("WARNING! No server info found!", 'red');
}
$sContent = file_get_contents(PATH_DB . $sObject . PATH_SEP . 'db.php');
//DB
$phpCode = "";
$sContent = str_replace('<?php', '', $sContent);
$sContent = str_replace('<?', '', $sContent);
$sContent = str_replace('?>', '', $sContent);
$sContent = str_replace('define', '', $sContent);
$sContent = str_replace("('", "$", $sContent);
$sContent = str_replace("',", '=', $sContent);
$sContent = str_replace(");", ';', $sContent);
$fileDb = fopen(PATH_DB . $sObject . PATH_SEP . "db.php", "r");
eval($sContent);
if ($fileDb) {
while (!feof($fileDb)) {
$buffer = fgets($fileDb, 4096); //Read a line
$dsn = $DB_ADAPTER . '://' . $DB_USER . ':' . $DB_PASS . '@' . $DB_HOST . '/' . $DB_NAME;
$phpCode .= preg_replace("/define\s*\(\s*[\x22\x27](.*)[\x22\x27]\s*,\s*(\x22.*\x22|\x27.*\x27)\s*\)\s*;/i", "\$$1 = $2;", $buffer);
}
$dsnRbac = $DB_ADAPTER . '://' . $DB_RBAC_USER . ':' . $DB_RBAC_PASS . '@' . $DB_RBAC_HOST . '/';
$dsnRbac = $dsnRbac . $DB_RBAC_NAME;
fclose($fileDb);
}
$dsnRp = $DB_ADAPTER . '://' . $DB_REPORT_USER . ':' . $DB_REPORT_PASS . '@' . $DB_REPORT_HOST . '/';
$dsnRp = $dsnRp . $DB_REPORT_NAME;
$phpCode = str_replace(array("<?php", "<?", "?>"), array("", "", ""), $phpCode);
eval($phpCode);
$dsn = $DB_ADAPTER . "://" . $DB_USER . ":" . $DB_PASS . "@" . $DB_HOST . "/" . $DB_NAME;
$dsnRbac = $DB_ADAPTER . "://" . $DB_RBAC_USER . ":" . $DB_RBAC_PASS . "@" . $DB_RBAC_HOST . "/" . $DB_RBAC_NAME;
$dsnRp = $DB_ADAPTER . "://" . $DB_REPORT_USER . ":" . $DB_REPORT_PASS . "@" . $DB_REPORT_HOST . "/" . $DB_REPORT_NAME;
switch ($DB_ADAPTER) {
case 'mysql':
@@ -547,7 +570,7 @@ function resendEmails()
setExecutionResultMessage("WITH ERRORS", "error");
eprintln(" '-" . $e->getMessage(), "red");
}
saveLog("resendEmails", "error", "Error Resending Emails: " . $e->getMessage());
}
}
@@ -1003,7 +1026,7 @@ function setExecutionResultMessage($m, $t='')
if ($t == 'info') {
$c = 'yellow';
}
if ($t == 'warning') {
$c = 'yellow';
}

View File

@@ -36,7 +36,7 @@ try {
require_once(PATH_HOME . "engine" . PATH_SEP . "config" . PATH_SEP . "paths.php");
require_once(PATH_TRUNK . "framework" . PATH_SEP . "src" . PATH_SEP . "Maveriks" . PATH_SEP . "Util" . PATH_SEP . "ClassLoader.php");
//Class loader - /ProcessMaker/BusinessModel
//Class Loader - /ProcessMaker/BusinessModel
$classLoader = \Maveriks\Util\ClassLoader::getInstance();
$classLoader->add(PATH_TRUNK . "framework" . PATH_SEP . "src" . PATH_SEP, "Maveriks");
$classLoader->add(PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "src" . PATH_SEP, "ProcessMaker");
@@ -108,6 +108,7 @@ try {
Bootstrap::registerClass("wsResponse", PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.wsResponse.php");
G::LoadClass("processes");
G::LoadClass("derivation");
G::LoadClass("dates"); //Load Criteria
//Workflow
@@ -198,6 +199,10 @@ try {
$rbac = &RBAC::getSingleton(PATH_DATA, session_id());
$rbac->sSystem = "PROCESSMAKER";
if (!defined("DB_ADAPTER")) {
define("DB_ADAPTER", $DB_ADAPTER);
}
eprintln("Processing workspace: " . $workflow, "green");
try {

View File

@@ -21,7 +21,7 @@ EOT
/*----------------------------------********---------------------------------*/
CLI::taskName('change-password-hash-method');
CLI::taskDescription(<<<EOT
Create .po file for the plugin
Change password hash method to md5 or sha256 for the specified workspace
EOT
);
CLI::taskArg('workspace', false);

View File

@@ -28,16 +28,18 @@ class pmDynaform
//items
$dynContent = G::json_decode($this->record["DYN_CONTENT"]);
if (isset($dynContent->items)) {
$this->items = $dynContent->items[0]->items;
for($i=0; $i<count($this->items); $i++){
for($j=0; $j<count($this->items[$i]); $j++){
if($this->items[$i][$j]->required == 1){
$this->items = $dynContent->items[0]->items;
$n = count($this->items);
for ($i = 0; $i < $n; $i++) {
$m = count($this->items[$i]);
for ($j = 0; $j < $m; $j++) {
if (isset($this->items[$i][$j]->required) && $this->items[$i][$j]->required == 1) {
array_push($this->arrayFieldRequired, $this->items[$i][$j]->name);
}
}
}
}
}
}
if(!empty($app_data) && isset($app_data["APPLICATION"])){
//data
$cases = new \ProcessMaker\BusinessModel\Cases();
@@ -77,7 +79,7 @@ class pmDynaform
}
//query
$arrayVariable = array();
if ($row["VAR_DBCONNECTION"] !== "none") {
if ($row["VAR_DBCONNECTION"] !== "none" && $row["VAR_SQL"] !== "") {
$cnn = Propel::getConnection($row["VAR_DBCONNECTION"]);
$stmt = $cnn->createStatement();
$rs = $stmt->executeQuery(\G::replaceDataField($row["VAR_SQL"], $arrayVariable), \ResultSet::FETCHMODE_NUM);

View File

@@ -1235,7 +1235,7 @@ function WSInformationUser($userUid)
*
* @method
*
* Returns the unique ID for the current active session.
* Returns the unique ID for the current login session.
*
* @name WSGetSession
* @label WS Get Session
@@ -1400,7 +1400,7 @@ function WSUnpauseCase ($caseUid, $delIndex, $userUid)
*
* @method
*
* Add case note.
* Add a case note.
*
* @name WSAddCaseNote
* @label WS Add case note
@@ -1537,7 +1537,7 @@ function PMFUserList () //its test was successfull
/**
* @method
*
* Add a input document.
* Add an Input Document.
*
* @name PMFAddInputDocument
* @label PMF Add a input document
@@ -1552,7 +1552,7 @@ function PMFUserList () //its test was successfull
* @param string(32) | $caseUid | ID of the case | The unique ID of the case.
* @param int | $delIndex | Delegation index of the case | The delegation index of the current task in the case.
* @param string(32) | $taskUid | ID of the task | The unique ID of the task.
* @param string(32) | $userUid | ID user | The unique ID of the user who will add a input document.
* @param string(32) | $userUid | ID user | The unique ID of the user who will add an input document.
* @param string | $option = "file" | Option | Option, value: "file".
* @param string | $file = "path_to_file/myfile.txt" | File, path to file | File, path to file.
* @return string | $appDocUid | ID of the application document | Returns ID if it has added the input document successfully; otherwise, returns null or empty if an error occurred.
@@ -2061,7 +2061,7 @@ function PMFNewCase ($processId, $userId, $taskId, $variables)
*
* @method
*
* Assigns a user to a group.
*
*
* Assigns a user to a group. Note that the logged-in user must have the PM_USERS permission in his/her role to be able to assign a user to a group.
*
@@ -2466,7 +2466,7 @@ function PMFGetNextAssignedUser ($application, $task, $delIndex = null, $userUid
/**
* @method
*
* Returns a list or user.
* Returns the email address of the specified user.
*
* @name PMFGetUserEmailAddress
* @label PMF Get User Email Address
@@ -2845,7 +2845,7 @@ function PMFAddAttachmentToArray($arrayData, $index, $value, $suffix = " Copy({i
/**
*@method
*
* It delete the mask a field.
* Removes the currency symbol and thousands separator inserted by a currency mask.
*
* @name PMFRemoveMask
* @label PMF Remove Mask

View File

@@ -53,8 +53,10 @@ class CaseScheduler extends BaseCaseScheduler
throw ($e);
}
$con->commit();
//Add Audit Log
$perform = $aData["SCH_OPTION"];
switch ($aData['SCH_OPTION']) {
case '1':
$perform = 'Daily';
@@ -71,10 +73,10 @@ class CaseScheduler extends BaseCaseScheduler
case '5':
$perform = 'Every';
break;
}
G::auditLog("CreateCaseScheduler", "Scheduler Name: ".$aData['SCH_NAME'].", Task: ".$aData['TAS_UID'].", Perform this task: ".$perform.", Start Date: ".$aData['SCH_START_DATE'].", End Date: ".$aData['SCH_END_DATE'].", Execution time : ".$aData['SCH_START_TIME']);
return $result;
} catch (Exception $e) {
$con->rollback();
@@ -92,7 +94,7 @@ class CaseScheduler extends BaseCaseScheduler
if ($this->validate()) {
$result = $this->save();
$con->commit();
//Add Audit Log
switch ($fields['SCH_OPTION']){
case '1':
@@ -112,7 +114,7 @@ class CaseScheduler extends BaseCaseScheduler
break;
}
G::auditLog("UpdateCaseScheduler", "Scheduler Name: ".$fields['SCH_NAME'].", Task: ".$fields['TAS_UID'].", Perform this task: ".$perform.", Start Date: ".$fields['SCH_START_DATE'].", End Date: ".$fields['SCH_END_DATE'].", Execution time : ".$fields['SCH_START_TIME']);
return $result;
} else {
$con->rollback();
@@ -135,7 +137,7 @@ class CaseScheduler extends BaseCaseScheduler
$con->commit();
//Add Audit Log
G::auditLog("DeleteCaseScheduler", "Scheduler Name: ".$fields['SCH_NAME'].", Task: ".$fields['TAS_UID']);
return $iResult;
} else {
throw (new Exception( 'This row doesn\'t exist!' ));

View File

@@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListCanceled.php';
/**
* Skeleton subclass for representing a row from the 'LIST_CANCELED' table.
*
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
@@ -269,6 +269,11 @@ class ListCanceled extends BaseListCanceled {
$criteria->addSelectColumn(ListCanceledPeer::DEL_DUE_DATE);
$criteria->addSelectColumn(ListCanceledPeer::DEL_PRIORITY);
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$criteria->addJoin(ListCanceledPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
$criteria->add( ListCanceledPeer::USR_UID, $usr_uid, Criteria::EQUAL );
self::loadFilters($criteria, $filters);
@@ -300,3 +305,4 @@ class ListCanceled extends BaseListCanceled {
return $data;
}
} // ListCanceled

View File

@@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListCompleted.php';
/**
* Skeleton subclass for representing a row from the 'LIST_COMPLETED' table.
*
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
@@ -248,6 +248,11 @@ class ListCompleted extends BaseListCompleted
$criteria->addSelectColumn(ListCompletedPeer::DEL_CURRENT_USR_LASTNAME);
$criteria->addSelectColumn(ListCompletedPeer::DEL_CURRENT_USR_USERNAME);
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$criteria->addJoin(ListCompletedPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
$criteria->add( ListCompletedPeer::USR_UID, $usr_uid, Criteria::EQUAL );
self::loadFilters($criteria, $filters);
@@ -279,3 +284,4 @@ class ListCompleted extends BaseListCompleted
return $data;
}
} // ListCompleted

View File

@@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListInbox.php';
/**
* Skeleton subclass for representing a row from the 'LIST_INBOX' table.
*
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
@@ -313,6 +313,11 @@ class ListInbox extends BaseListInbox
$criteria->addSelectColumn(ListInboxPeer::DEL_DUE_DATE);
$criteria->addSelectColumn(ListInboxPeer::DEL_PRIORITY);
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$criteria->addJoin(ListInboxPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
$criteria->add( ListInboxPeer::USR_UID, $usr_uid, Criteria::EQUAL );
self::loadFilters($criteria, $filters);
@@ -352,3 +357,4 @@ class ListInbox extends BaseListInbox
return $data;
}
}

View File

@@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListMyInbox.php';
/**
* Skeleton subclass for representing a row from the 'LIST_MY_INBOX' table.
*
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
@@ -236,6 +236,11 @@ class ListMyInbox extends BaseListMyInbox
$criteria->addSelectColumn(ListMyInboxPeer::DEL_DUE_DATE);
$criteria->addSelectColumn(ListMyInboxPeer::DEL_PRIORITY);
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$criteria->addJoin(ListMyInboxPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
$criteria->add( ListMyInboxPeer::USR_UID, $usr_uid, Criteria::EQUAL );
self::loadFilters($criteria, $filters);
@@ -269,3 +274,4 @@ class ListMyInbox extends BaseListMyInbox
return $data;
}
} // ListMyInbox

View File

@@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListParticipatedHistory.php';
/**
* Skeleton subclass for representing a row from the 'LIST_PARTICIPATED_HISTORY' table.
*
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
@@ -195,6 +195,11 @@ class ListParticipatedHistory extends BaseListParticipatedHistory
$criteria->addSelectColumn(ListParticipatedHistoryPeer::DEL_DUE_DATE);
$criteria->addSelectColumn(ListParticipatedHistoryPeer::DEL_PRIORITY);
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$criteria->addJoin(ListParticipatedHistoryPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
$criteria->add( ListParticipatedHistoryPeer::USR_UID, $usr_uid, Criteria::EQUAL );
self::loadFilters($criteria, $filters);
@@ -228,3 +233,4 @@ class ListParticipatedHistory extends BaseListParticipatedHistory
return $data;
}
}

View File

@@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListParticipatedLast.php';
/**
* Skeleton subclass for representing a row from the 'LIST_PARTICIPATED_LAST' table.
*
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
@@ -218,6 +218,11 @@ class ListParticipatedLast extends BaseListParticipatedLast
$criteria->addSelectColumn(ListParticipatedLastPeer::DEL_DUE_DATE);
$criteria->addSelectColumn(ListParticipatedLastPeer::DEL_PRIORITY);
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$criteria->addJoin(ListParticipatedLastPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
$criteria->add( ListParticipatedLastPeer::USR_UID, $usr_uid, Criteria::EQUAL );
self::loadFilters($criteria, $filters);
@@ -251,3 +256,4 @@ class ListParticipatedLast extends BaseListParticipatedLast
return $data;
}
}

View File

@@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListPaused.php';
/**
* Skeleton subclass for representing a row from the 'LIST_PAUSED' table.
*
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
@@ -287,6 +287,11 @@ class ListPaused extends BaseListPaused {
$criteria->addSelectColumn(ListPausedPeer::DEL_DUE_DATE);
$criteria->addSelectColumn(ListPausedPeer::DEL_PRIORITY);
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$criteria->addJoin(ListPausedPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
$criteria->add( ListPausedPeer::USR_UID, $usr_uid, Criteria::EQUAL );
self::loadFilters($criteria, $filters);
@@ -318,3 +323,4 @@ class ListPaused extends BaseListPaused {
return $data;
}
} // ListPaused

View File

@@ -6,7 +6,7 @@ require_once 'classes/model/om/BaseListUnassigned.php';
/**
* Skeleton subclass for representing a row from the 'LIST_UNASSIGNED' table.
*
*
*
*
* You should add additional methods to this class to meet the
* application requirements. This class will only be generated as
@@ -263,6 +263,11 @@ class ListUnassigned extends BaseListUnassigned
$criteria->addSelectColumn(ListUnassignedPeer::DEL_DUE_DATE);
$criteria->addSelectColumn(ListUnassignedPeer::DEL_PRIORITY);
$arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");
$criteria->addJoin(ListUnassignedPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);
$aConditions = array();
$aConditions[] = array(ListUnassignedPeer::UNA_UID, ListUnassignedGroupPeer::UNA_UID);
$aConditions[] = array(ListUnassignedGroupPeer::USR_UID, "'" . $usr_uid . "'");
@@ -312,4 +317,3 @@ class ListUnassigned extends BaseListUnassigned
}
}

View File

@@ -1983,6 +1983,13 @@ class Cases
public function throwMessageEventBetweenElementOriginAndElementDest($elementOriginUid, $elementDestUid, array $arrayApplicationData)
{
try {
//Verify if the Project is BPMN
$bpmn = new \ProcessMaker\Project\Bpmn();
if (!$bpmn->exists($arrayApplicationData["PRO_UID"])) {
return;
}
//Element origin and dest
$messageEventTaskRelation = new \ProcessMaker\BusinessModel\MessageEventTaskRelation();
@@ -2012,8 +2019,6 @@ class Cases
$elementDestType = $arrayElement["elementDest"]["type"];
//Get Message-Events of throw type
$bpmn = new \ProcessMaker\Project\Bpmn();
$arrayEvent = $bpmn->getMessageEventsOfThrowTypeBetweenElementOriginAndElementDest(
$elementOriginUid,
$elementOriginType,
@@ -2047,50 +2052,137 @@ class Cases
//Set variables
$ws = new \wsBase();
$case = new \Cases();
$messageApplication = new \ProcessMaker\BusinessModel\MessageApplication();
$messageApplication->setFrontEnd($frontEnd);
//Get data
$messageApplication = new \ProcessMaker\BusinessModel\MessageApplication();
$totalMessageEvent = 0;
$arrayMessageApplicationUnread = $messageApplication->getMessageApplications(array("messageApplicationStatus" => "UNREAD"));
$counterStartMessageEvent = 0;
$counterIntermediateCatchMessageEvent = 0;
$counter = 0;
foreach ($arrayMessageApplicationUnread["data"] as $value) {
$arrayMessageApplicationData = $value;
$flagFirstTime = false;
$processUid = $arrayMessageApplicationData["PRJ_UID"];
$taskUid = $arrayMessageApplicationData["TAS_UID"];
$messageApplication->frontEndShow("START");
$messageApplicationUid = $arrayMessageApplicationData["MSGAPP_UID"];
$messageApplicationCorrelation = $arrayMessageApplicationData["MSGAPP_CORRELATION"];
do {
$flagNextRecords = false;
$messageEventDefinitionUserUid = $arrayMessageApplicationData["MSGED_USR_UID"];
$messageEventDefinitionVariables = $arrayMessageApplicationData["MSGED_VARIABLES"];
$messageEventDefinitionCorrelation = $arrayMessageApplicationData["MSGED_CORRELATION"];
$arrayMessageApplicationUnread = $messageApplication->getMessageApplications(array("messageApplicationStatus" => "UNREAD"), null, null, 0, 1000);
switch ($arrayMessageApplicationData["EVN_TYPE"]) {
case "START":
if ($messageApplicationCorrelation == $messageEventDefinitionCorrelation &&
$messageEventDefinitionUserUid != ""
) {
//Start and derivate new Case
//$result = $ws->newCase($processUid, $messageEventDefinitionUserUid, $taskUid, array("NAME1" => "value1"));
$result = $ws->newCase($processUid, $messageEventDefinitionUserUid, $taskUid, array());
if (!$flagFirstTime) {
$totalMessageEvent = $arrayMessageApplicationUnread["total"];
$arrayResult = json_decode(json_encode($result), true);
if ($arrayResult["status_code"] == 0) {
$applicationUid = $arrayResult["caseId"];
$result = $ws->derivateCase($messageEventDefinitionUserUid, $applicationUid, 1);
//Message-Application catch
$result = $messageApplication->update($messageApplicationUid, array("MSGAPP_STATUS" => "READ"));
}
}
break;
case "INTERMEDIATE":
break;
$flagFirstTime = true;
}
}
foreach ($arrayMessageApplicationUnread["data"] as $value) {
if ($counter + 1 > $totalMessageEvent) {
$flagNextRecords = false;
break;
}
$arrayMessageApplicationData = $value;
$processUid = $arrayMessageApplicationData["PRJ_UID"];
$taskUid = $arrayMessageApplicationData["TAS_UID"];
$messageApplicationUid = $arrayMessageApplicationData["MSGAPP_UID"];
$messageApplicationCorrelation = $arrayMessageApplicationData["MSGAPP_CORRELATION"];
$messageEventDefinitionUserUid = $arrayMessageApplicationData["MSGED_USR_UID"];
$messageEventDefinitionCorrelation = $arrayMessageApplicationData["MSGED_CORRELATION"];
$arrayVariable = $messageApplication->mergeVariables($arrayMessageApplicationData["MSGED_VARIABLES"], $arrayMessageApplicationData["MSGAPP_VARIABLES"]);
$flagCatched = false;
switch ($arrayMessageApplicationData["EVN_TYPE"]) {
case "START":
if ($messageEventDefinitionCorrelation == $messageApplicationCorrelation && $messageEventDefinitionUserUid != "") {
//Start and derivate new Case
$result = $ws->newCase($processUid, $messageEventDefinitionUserUid, $taskUid, $arrayVariable);
$arrayResult = json_decode(json_encode($result), true);
if ($arrayResult["status_code"] == 0) {
$applicationUid = $arrayResult["caseId"];
$result = $ws->derivateCase($messageEventDefinitionUserUid, $applicationUid, 1);
$flagCatched = true;
//Counter
$counterStartMessageEvent++;
}
}
break;
case "INTERMEDIATE":
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\AppDelegationPeer::APP_UID);
$criteria->addSelectColumn(\AppDelegationPeer::DEL_INDEX);
$criteria->addSelectColumn(\AppDelegationPeer::USR_UID);
$criteria->add(\AppDelegationPeer::PRO_UID, $processUid, \Criteria::EQUAL);
$criteria->add(\AppDelegationPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
$criteria->add(\AppDelegationPeer::DEL_THREAD_STATUS, "OPEN", \Criteria::EQUAL);
$criteria->add(\AppDelegationPeer::DEL_FINISH_DATE, null, \Criteria::ISNULL);
$rsCriteria = \AppDelegationPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$applicationUid = $row["APP_UID"];
$delIndex = $row["DEL_INDEX"];
$userUid = $row["USR_UID"];
$arrayApplicationData = $case->loadCase($applicationUid);
if (\G::replaceDataField($messageEventDefinitionCorrelation, $arrayApplicationData["APP_DATA"]) == $messageApplicationCorrelation) {
//"Unpause" and derivate Case
$arrayApplicationData["APP_DATA"] = array_merge($arrayApplicationData["APP_DATA"], $arrayVariable);
$arrayResult = $case->updateCase($applicationUid, $arrayApplicationData);
$result = $ws->derivateCase($userUid, $applicationUid, $delIndex);
$flagCatched = true;
}
}
//Counter
if ($flagCatched) {
$counterIntermediateCatchMessageEvent++;
}
break;
}
//Message-Application catch
if ($flagCatched) {
$result = $messageApplication->update($messageApplicationUid, array("MSGAPP_STATUS" => "READ"));
}
$counter++;
//Progress bar
$messageApplication->frontEndShow("BAR", "Message-Events (unread): " . $counter . "/" . $totalMessageEvent . " " . $messageApplication->progressBar($totalMessageEvent, $counter));
$flagNextRecords = true;
}
} while ($flagNextRecords);
$messageApplication->frontEndShow("TEXT", "Total Message-Events unread: " . $totalMessageEvent);
$messageApplication->frontEndShow("TEXT", "Total cases started: " . $counterStartMessageEvent);
$messageApplication->frontEndShow("TEXT", "Total cases continued: " . $counterIntermediateCatchMessageEvent);
$messageApplication->frontEndShow("TEXT", "Total Message-Events pending: " . ($totalMessageEvent - ($counterStartMessageEvent + $counterIntermediateCatchMessageEvent)));
$messageApplication->frontEndShow("END");
} catch (\Exception $e) {
throw $e;
}

View File

@@ -8,6 +8,8 @@ class MessageApplication
"limit" => "LIMIT"
);
private $frontEnd = false;
/**
* Verify if exists the Message-Application
*
@@ -207,6 +209,102 @@ class MessageApplication
}
}
/**
* Set front end flag
*
* @param bool $flag Flag
*
* return void
*/
public function setFrontEnd($flag)
{
try {
$this->frontEnd = $flag;
} catch (Exception $e) {
throw $e;
}
}
/**
* Progress bar
*
* @param int $total Total
* @param int $count Count
*
* return string Return a string that represent progress bar
*/
public function progressBar($total, $count)
{
try {
$p = (int)(($count * 100) / $total);
$n = (int)($p / 2);
return "[" . str_repeat("|", $n) . str_repeat(" ", 50 - $n) . "] $p%";
} catch (Exception $e) {
throw $e;
}
}
/**
* Show front end
*
* @param string $option Option
* @param string $data Data string
*
* return void
*/
public function frontEndShow($option, $data = "")
{
try {
if (!$this->frontEnd) {
return;
}
$numc = 100;
switch ($option) {
case "BAR":
echo "\r" . "| " . $data . str_repeat(" ", $numc - 2 - strlen($data));
break;
case "TEXT":
echo "\r" . "| " . $data . str_repeat(" ", $numc - 2 - strlen($data)) . "\n";
break;
default:
//START, END
echo "\r" . "+" . str_repeat("-", $numc - 2) . "+" . "\n";
break;
}
} catch (Exception $e) {
throw $e;
}
}
/**
* Merge and get variables
*
* @param array $arrayVariableName Variables
* @param array $arrayVariableValue Values
*
* return array Return an array
*/
public function mergeVariables(array $arrayVariableName, array $arrayVariableValue)
{
try {
$arrayVariable = array();
foreach ($arrayVariableName as $key => $value) {
if (preg_match("/^@[@%#\?\x24\=]([A-Za-z_]\w*)$/", $value, $arrayMatch) && isset($arrayVariableValue[$key])) {
$arrayVariable[$arrayMatch[1]] = $arrayVariableValue[$key];
}
}
//Return
return $arrayVariable;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get all Message-Applications
*

View File

@@ -17,10 +17,11 @@ class BpmnWorkflow extends Project\Bpmn
*/
protected $wp;
const BPMN_GATEWAY_COMPLEX = "COMPLEX";
const BPMN_GATEWAY_PARALLEL = "PARALLEL";
const BPMN_GATEWAY_INCLUSIVE = "INCLUSIVE";
const BPMN_GATEWAY_EXCLUSIVE = "EXCLUSIVE";
const BPMN_GATEWAY_COMPLEX = "COMPLEX";
const BPMN_GATEWAY_PARALLEL = "PARALLEL";
const BPMN_GATEWAY_INCLUSIVE = "INCLUSIVE";
const BPMN_GATEWAY_EXCLUSIVE = "EXCLUSIVE";
const BPMN_GATEWAY_EVENTBASED = "EVENTBASED";
private $arrayTaskAttribute = array(
"gateway-to-gateway" => array("type" => "GATEWAYTOGATEWAY", "prefix" => "gtg-"),
@@ -674,6 +675,11 @@ class BpmnWorkflow extends Project\Bpmn
}
}
break;
//case "TO_DO":
case self::BPMN_GATEWAY_EVENTBASED:
$routeType = "EVALUATE";
break;
//default
default:
throw new \LogicException("Unsupported Gateway type: " . $arrayGatewayData["GAT_TYPE"]);
break;
@@ -1277,7 +1283,12 @@ class BpmnWorkflow extends Project\Bpmn
$activity = $bwp->getActivity($activityData["ACT_UID"]);
if ($activity["BOU_CONTAINER"] != $activityData["BOU_CONTAINER"]) {
$activity = null;
}
if ($forceInsert || is_null($activity)) {
if ($generateUid) {
//Activity
@@ -1310,6 +1321,7 @@ class BpmnWorkflow extends Project\Bpmn
$diagram["activities"][$i] = $activityData;
$whiteList[] = $activityData["ACT_UID"];
}
$activities = $bwp->getActivities();
@@ -1331,6 +1343,10 @@ class BpmnWorkflow extends Project\Bpmn
$artifact = $bwp->getArtifact($artifactData["ART_UID"]);
if ($artifact["BOU_CONTAINER"] != $artifactData["BOU_CONTAINER"]) {
$artifact = null;
}
if ($forceInsert || is_null($artifact)) {
if ($generateUid) {
//Artifact
@@ -1391,6 +1407,10 @@ class BpmnWorkflow extends Project\Bpmn
$gateway = $bwp->getGateway($gatewayData["GAT_UID"]);
if ($gateway["BOU_CONTAINER"] != $gatewayData["BOU_CONTAINER"]) {
$gateway = null;
}
if ($forceInsert || is_null($gateway)) {
if ($generateUid) {
//Gateway
@@ -1465,6 +1485,10 @@ class BpmnWorkflow extends Project\Bpmn
$event = $bwp->getEvent($eventData["EVN_UID"]);
if ($event["BOU_CONTAINER"] != $eventData["BOU_CONTAINER"]) {
$event = null;
}
if ($forceInsert || is_null($event)) {
if ($generateUid) {
//Event
@@ -1521,6 +1545,10 @@ class BpmnWorkflow extends Project\Bpmn
$dataObject = $bwp->getData($dataObjectData["DAT_UID"]);
if ($dataObject["BOU_CONTAINER"] != $dataObjectData["BOU_CONTAINER"]) {
$dataObject = null;
}
if ($forceInsert || is_null($dataObject)) {
if ($generateUid) {
//Data
@@ -1575,9 +1603,13 @@ class BpmnWorkflow extends Project\Bpmn
$participantData = array_change_key_case($participantData, CASE_UPPER);
unset($participantData["_EXTENDED"]);
$dataObject = $bwp->getParticipant($participantData["PAR_UID"]);
$participant = $bwp->getParticipant($participantData["PAR_UID"]);
if ($forceInsert || is_null($dataObject)) {
if ($participant["BOU_CONTAINER"] != $participantData["BOU_CONTAINER"]) {
$participant = null;
}
if ($forceInsert || is_null($participant)) {
if ($generateUid) {
//Participant
@@ -1603,7 +1635,7 @@ class BpmnWorkflow extends Project\Bpmn
}
$bwp->addParticipant($participantData);
} elseif (! $bwp->isEquals($dataObject, $participantData)) {
} elseif (! $bwp->isEquals($participant, $participantData)) {
$bwp->updateParticipant($participantData["PAR_UID"], $participantData);
} else {
Util\Logger::log("Update Participant ({$participantData["PAR_UID"]}) Skipped - No changes required");

View File

@@ -91,6 +91,19 @@ class Bpmn extends Handler
}
}
public function exists($projectUid)
{
try {
$obj = ProjectPeer::retrieveByPK($projectUid);
return (!is_null($obj))? true : false;
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
public static function load($prjUid)
{
$me = new self();
@@ -588,6 +601,8 @@ class Bpmn extends Handler
//Return
return false;
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
@@ -661,6 +676,8 @@ class Bpmn extends Handler
}
}
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
@@ -1294,6 +1311,8 @@ class Bpmn extends Handler
//Return
return $this->getGateway2($gatewayUid);
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
@@ -1386,6 +1405,8 @@ class Bpmn extends Handler
return array();
}
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
@@ -1427,6 +1448,8 @@ class Bpmn extends Handler
//Return
return $arrayEvent;
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}

View File

@@ -83,12 +83,13 @@
<div class="head"></div>
<nav>
<ul>
<li><a href="#" ><span class="mafe-button-close" ></span></a></li>
<li><a href="#" class="mafe-button-save"></a></li>
<li><a href="#" class="mafe-button-export-process"></a></li>
<li><a class="mafe-button-export-bpmn-process"></a></li>
<li><a href="#" class="mafe-button-undo"></a> <a href="#" class="mafe-button-redo"></a></li>
<li></li>
<li><a href="#" title="" class="mafe-button-fullscreen"></a></li>
<li><a href="#" title="" class="mafe-button-fullscreen"></a></li>
</ul>
</nav>