Merge remote branch 'upstream/master'

This commit is contained in:
Ronald Quenta
2015-02-27 14:08:00 -04:00
13 changed files with 146 additions and 86 deletions

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");

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

@@ -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

@@ -1283,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
@@ -1316,6 +1321,7 @@ class BpmnWorkflow extends Project\Bpmn
$diagram["activities"][$i] = $activityData;
$whiteList[] = $activityData["ACT_UID"];
}
$activities = $bwp->getActivities();
@@ -1337,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
@@ -1397,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
@@ -1471,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
@@ -1527,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
@@ -1581,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
@@ -1609,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

@@ -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>

View File

@@ -32,6 +32,15 @@ new Ext.KeyMap(document, {
}
});
Ext.apply(Ext.form.VTypes, {
textWithoutTags: function (value, field)
{
var strAux = "a|applet|b|body|br|button|code|div|em|embed|form|frame|frameset|head|header|html|iframe|img|input|noscript|object|script|select|style|table|textarea";
return !(eval("/^.*\\x3C[\\s\\x2F]*(?:" + strAux + ")\\s*.*\\x3E.*$/").test(value));
},
textWithoutTagsText: ""
});
Ext.onReady(function(){
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
@@ -520,7 +529,8 @@ function newProcess(params)
xtype:'textfield',
width: 260,
maskRe: /^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\...*)(\..+)?$)[^\x00-\x1f\\?*\";|/]+$/i,
allowBlank: false
allowBlank: false,
vtype: "textWithoutTags"
}, {
id: 'PRO_DESCRIPTION',
fieldLabel: _('ID_DESCRIPTION'),