diff --git a/build-vendor.php b/build-vendor.php
index 8ce968286..d391f103e 100644
--- a/build-vendor.php
+++ b/build-vendor.php
@@ -44,6 +44,7 @@ $projects = array(
'colosa/pmUI'
);
+
out("build-vendor.php", 'purple');
@@ -54,6 +55,7 @@ out(" mode", 'purple');
foreach ($projects as $project) {
echo PHP_EOL;
out("=> Building project: ", 'info', false);
+ $output = array();
echo $project.' '.PHP_EOL;
chdir($vendorDir.DS.$project);
if ($debug) {
diff --git a/features/backend/activity/negative_tests_activity.feature b/features/backend/activity/negative_tests_activity.feature
index b222d7b6d..79cfd6399 100644
--- a/features/backend/activity/negative_tests_activity.feature
+++ b/features/backend/activity/negative_tests_activity.feature
@@ -104,4 +104,4 @@ Scenario Outline: Update the Definition of a Activity and the check if the value
| Invalid tas_type_day | 95655319552a5c790b69a04054667879 | Task2 | Case Description | @@SYS_NEXT_USER_TO_BE_ASSIGNED | template.html | TRUE | BALANCED | @@USER_LOGGED | @@GROUP_UID | 1 | 2 | DAYS | | FALSE | 2 | DAYS | 6 | | ADHOC | Case Title | Case Description | FALSE | Titulo de Notificacion 1| template | Esta es una Notificacion | template.html | tas_type_day |
| Invalid tas_type | 63843886052a5cc066e4c04056414372 | Task3 | Case Description | @@SYS_NEXT_USER_TO_BE_ASSIGNED | template.html | TRUE | BALANCED | @@USER_LOGGED | @@GROUP_UID | 1 | 2 | DAYS | | FALSE | 2 | DAYS | 2 | | INPUT | Case Title | Case Description | FALSE | Titulo de Notificacion 1| template | Esta es una Notificacion | template.html | tas_type |
| Invalid tas_send_last_email | 97192372152a5c78f04a794095806311 | Task1 | Case Description | @@SYS_NEXT_USER_TO_BE_ASSIGNED | template.html | TRUE | BALANCED | @@USER_LOGGED | @@GROUP_UID | 1 | 2 | DAYS | | FALSE | 2 | DAYS | 2 | | ADHOC | Case Title | Case Description | INPUT | Titulo de Notificacion 1| template | Esta es una Notificacion | template.html | tas_send_last_email |
- | Invalid tas_def_message_type | 95655319552a5c790b69a04054667879 | Task2 | Case Description | @@SYS_NEXT_USER_TO_BE_ASSIGNED | template.html | TRUE | BALANCED | @@USER_LOGGED | @@GROUP_UID | 1 | 2 | DAYS | | FALSE | 2 | DAYS | 2 | | ADHOC | Case Title | Case Description | TRUE | Titulo de Notificacion 1| INPUT | Esta es una Notificacion | template.html | tas_def_message_type |
\ No newline at end of file
+ | Invalid tas_def_message_type | 95655319552a5c790b69a04054667879 | Task2 | Case Description | @@SYS_NEXT_USER_TO_BE_ASSIGNED | template.html | TRUE | BALANCED | @@USER_LOGGED | @@GROUP_UID | 1 | 2 | DAYS | | FALSE | 2 | DAYS | 2 | | ADHOC | Case Title | Case Description | TRUE | Titulo de Notificacion 1| INPUT | Esta es una Notificacion | template.html | tas_def_message_type |
diff --git a/features/backend/activity/reordenamiento.feature b/features/backend/step/reordenamiento.feature
similarity index 70%
rename from features/backend/activity/reordenamiento.feature
rename to features/backend/step/reordenamiento.feature
index dc9ad21ea..ac9de74e7 100644
--- a/features/backend/activity/reordenamiento.feature
+++ b/features/backend/step/reordenamiento.feature
@@ -3,7 +3,7 @@ Feature: Reorder Steps
Scenario: List all the Sub Processs (result 0 Sub Processs)
Given that I have a valid access_token
- And I request "project/9821342145305125d48cb88069229840/activity/8251872975307632a765f34007266075/step/285219904530763bb5c4367074373078"
+ And I request "project/940481651530fa1f3803525098230380/activity/677485918530fa1f80ad463004640434/step/289467030530fa28077e6a2088432104"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
@@ -17,12 +17,12 @@ Feature: Reorder Steps
"step_position": "3"
}
"""
- And I request "project/98002714453076320a06cb4009450121/activity/8251872975307632a765f34007266075/step/285219904530763bb5c4367074373078"
+ And I request "project/98002714453076320a06cb4009450121/activity/677485918530fa1f80ad463004640434/step/289467030530fa28077e6a2088432104"
Then the response status code should be 200
Scenario: List all the Sub Processs (result 0 Sub Processs)
Given that I have a valid access_token
- And I request "project/9821342145305125d48cb88069229840/activity/8251872975307632a765f34007266075/step/285219904530763bb5c4367074373078"
+ And I request "project/940481651530fa1f3803525098230380/activity/677485918530fa1f80ad463004640434/step/289467030530fa28077e6a2088432104"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
@@ -36,12 +36,12 @@ Feature: Reorder Steps
"step_position": "1"
}
"""
- And I request "project/98002714453076320a06cb4009450121/activity/8251872975307632a765f34007266075/step/285219904530763bb5c4367074373078"
+ And I request "project/98002714453076320a06cb4009450121/activity/677485918530fa1f80ad463004640434/step/289467030530fa28077e6a2088432104"
Then the response status code should be 200
Scenario: List all the Sub Processs (result 0 Sub Processs)
Given that I have a valid access_token
- And I request "project/9821342145305125d48cb88069229840/activity/8251872975307632a765f34007266075/step/285219904530763bb5c4367074373078"
+ And I request "project/940481651530fa1f3803525098230380/activity/677485918530fa1f80ad463004640434/step/289467030530fa28077e6a2088432104"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
diff --git a/gulliver/core/Session/PmSessionHandler.php b/gulliver/core/Session/PmSessionHandler.php
index 130e29442..94ab7d676 100644
--- a/gulliver/core/Session/PmSessionHandler.php
+++ b/gulliver/core/Session/PmSessionHandler.php
@@ -165,6 +165,10 @@ class PmSessionHandler //implements SessionHandlerInterface
*/
public function write($id, $data)
{
+ if (empty($this->db)) {
+ return null;
+ }
+
$time = time();
if(! isset($this->wstmt)) {
diff --git a/gulliver/system/class.controller.php b/gulliver/system/class.controller.php
index f61e25eaf..3e6eccf4d 100755
--- a/gulliver/system/class.controller.php
+++ b/gulliver/system/class.controller.php
@@ -129,20 +129,17 @@ class Controller
print G::json_encode( $result );
}
} catch (Exception $e) {
+ $result = new StdClass();
if ($this->responseType != 'json') {
- $result->exception->class = get_class( $e );
- $result->exception->code = $e->getCode();
-
- $template = new TemplatePower( PATH_TEMPLATE . 'controller.exception.tpl' );
- $template->prepare();
- $template->assign( 'controller', (function_exists( 'get_called_class' ) ? get_called_class() : 'Controller') );
- $template->assign( 'message', $e->getMessage() );
- $template->assign( 'file', $e->getFile() );
- $template->assign( 'line', $e->getLine() );
- $template->assign( 'trace', $e->getTraceAsString() );
-
- echo $template->getOutputContent();
-
+ Bootstrap::renderTemplate('controller.exception.tpl', array(
+ 'title' => 'Controller Exception',
+ 'message' => nl2br($e->getMessage()),
+ 'controller' => (function_exists( 'get_called_class' ) ? get_called_class() : 'Controller'),
+ 'exceptionClass' => get_class($e),
+ 'file' => $e->getFile(),
+ 'line' => $e->getLine(),
+ 'trace' => $e->getTrace()
+ ));
} else {
$result->success = false;
$result->msg = $e->getMessage();
diff --git a/gulliver/templates/controller.exception.tpl b/gulliver/templates/controller.exception.tpl
index 3e77268e5..37eb9a27b 100755
--- a/gulliver/templates/controller.exception.tpl
+++ b/gulliver/templates/controller.exception.tpl
@@ -1,55 +1,100 @@
-
-
+
+
-
-Server Error ::
+
+
+ Whoops, looks like something went wrong.
+
-
-
-
-
-
-
-
-
-
- CONTROLLER EXCEPTION
-
- {message}
- Controller: {controller}
- File: {file}
- Line: {line}
-
-
-
-
- |
-
-
+
+
{$controller} {$title}
+
+
+ {$exceptionClass}: {$message}
+
+
+
+ Controller: {$controller}
+ File: {$file}
+ Line: {$line}
+
+ {foreach from=$trace item=line}
+ {if $line.class}
+ - At {$line.class}{$line.type}{$line.function}()
in {$line.file} line {$line.line}
+ {else}
+ - At {$line.function}() in {$line.file} line {$line.line}
+ {/if}
+ {/foreach}
+
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
diff --git a/update b/update
index 62821f1a9..08ff44370 100755
--- a/update
+++ b/update
@@ -2,19 +2,19 @@
echo "
Michelangelo Update
Changelog Processmaker
" > temp.txt
git pull
-git log -n 20 --relative-date --graph --format=short >> temp.txt
+git log -n 30 --relative-date --graph --format=medium --no-merges >> temp.txt
cd vendor/colosa/pmUI
echo "Changelog pmUI
" >> ../../../temp.txt
git pull
-git log -n 20 --relative-date --graph --format=short >> ../../../temp.txt
+git log -n 30 --relative-date --graph --format=medium --no-merges >> ../../../temp.txt
cd ../MichelangeloFE
echo "Changelog MichelangeloFE
" >> ../../../temp.txt
git pull
-git log -n 20 --relative-date --graph --format=short >> ../../../temp.txt
+git log -n 30 --relative-date --graph --format=medium --no-merges >> ../../../temp.txt
cd ../../../
@@ -23,4 +23,23 @@ php build-vendor.php >> temp.txt
sed ':a;N;$!ba;s/\n/
/g' temp.txt > workflow/public_html/build-log.html
+cp workflow/public_html/build-log.html temp.txt
+sed -re 's#\[0;35;35m##g' temp.txt > workflow/public_html/build-log.html
+
+cp workflow/public_html/build-log.html temp.txt
+sed -re 's#\[1;33;34m##g' temp.txt > workflow/public_html/build-log.html
+
+cp workflow/public_html/build-log.html temp.txt
+sed -re 's#\[0;35;32m##g' temp.txt > workflow/public_html/build-log.html
+
+
+cp workflow/public_html/build-log.html temp.txt
+sed -re 's#\[31m\[32m##g' temp.txt > workflow/public_html/build-log.html
+
+cp workflow/public_html/build-log.html temp.txt
+sed -re 's#\[0m##g' temp.txt > workflow/public_html/build-log.html
+
+cp workflow/public_html/build-log.html temp.txt
+sed -re 's#Author:(.*)\n#xxxx(1)#g' temp.txt > workflow/public_html/build-log.html
+
echo "update executed succesfully, check the log in http:///build-log.html "
diff --git a/workflow/engine/controllers/designer.php b/workflow/engine/controllers/designer.php
index 381441769..2f247588e 100644
--- a/workflow/engine/controllers/designer.php
+++ b/workflow/engine/controllers/designer.php
@@ -39,10 +39,10 @@ class Designer extends Controller
if (System::isDebugMode()) {
if (! file_exists(PATH_HTML . "lib-dev/pmUI/build.cache")) {
- throw new Exception("Error: Development JS Files were are not generated!, please execute: \$rake pmBuildDebug in pmUI project");
+ throw new RuntimeException("Development JS Files were are not generated!.\nPlease execute: \$>rake pmBuildDebug in pmUI project");
}
if (! file_exists(PATH_HTML . "lib-dev/mafe/build.cache")) {
- throw new Exception("Error: Development JS Files were are not generated!, please execute: \$rake pmBuildDebug in MichelangeloFE project");
+ throw new RuntimeException("Development JS Files were are not generated!.\nPlease execute: \$>rake pmBuildDebug in MichelangeloFE project");
}
$mafeFiles = file(PATH_HTML . "lib-dev/mafe/build.cache", FILE_IGNORE_NEW_LINES);
diff --git a/workflow/engine/skinEngine/neoclassic/error404.php b/workflow/engine/skinEngine/neoclassic/error404.php
index eb95ff9cd..53fe00a72 100644
--- a/workflow/engine/skinEngine/neoclassic/error404.php
+++ b/workflow/engine/skinEngine/neoclassic/error404.php
@@ -1,3 +1,4 @@
+
diff --git a/workflow/engine/src/BusinessModel/Calendar.php b/workflow/engine/src/BusinessModel/Calendar.php
new file mode 100644
index 000000000..719cd8b16
--- /dev/null
+++ b/workflow/engine/src/BusinessModel/Calendar.php
@@ -0,0 +1,256 @@
+ array("fieldName" => "CALENDAR_UID", "type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "calendarUid"),
+
+ "CAL_NAME" => array("fieldName" => "CALENDAR_NAME", "type" => "string", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "calendarName"),
+ "CAL_DESCRIPTION" => array("fieldName" => "CALENDAR_DESCRIPTION", "type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "calendarDescription"),
+ "CAL_CREATE_DATE" => array("fieldName" => "CALENDAR_CREATE_DATE", "type" => "datetime", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "calendarCreateDate"),
+ "CAL_UPDATE_DATE" => array("fieldName" => "CALENDAR_UPDATE_DATE", "type" => "datetime", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "calendarUpdateDate"),
+ "CAL_WORK_DAYS" => array("fieldName" => "CALENDAR_WORK_DAYS", "type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "calendarWorkDays"),
+ "CAL_STATUS" => array("fieldName" => "CALENDAR_STATUS", "type" => "string", "required" => true, "empty" => false, "defaultValues" => array("ACTIVE", "INACTIVE"), "fieldNameAux" => "calendarStatus")
+ );
+
+ private $formatFieldNameInUppercase = true;
+
+ private $arrayFieldNameForException = array(
+ "filter" => "FILTER",
+ "start" => "START",
+ "limit" => "LIMIT"
+ );
+
+ /**
+ * Constructor of the class
+ *
+ * return void
+ */
+ public function __construct()
+ {
+ try {
+ foreach ($this->arrayFieldDefinition as $key => $value) {
+ $this->arrayFieldNameForException[$value["fieldNameAux"]] = $key;
+ }
+ } catch (\Exception $e) {
+ throw $e;
+ }
+ }
+
+ /**
+ * 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->setArrayFieldNameForException($this->arrayFieldNameForException);
+ } catch (\Exception $e) {
+ throw $e;
+ }
+ }
+
+ /**
+ * Set exception messages for fields
+ *
+ * @param array $arrayData Data with the fields
+ *
+ * return void
+ */
+ public function setArrayFieldNameForException($arrayData)
+ {
+ try {
+ foreach ($arrayData as $key => $value) {
+ $this->arrayFieldNameForException[$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;
+ }
+ }
+
+ /**
+ * Get criteria for Calendar
+ *
+ * return object
+ */
+ public function getCalendarCriteria()
+ {
+ try {
+ $criteria = new \Criteria("workflow");
+
+ $criteria->addSelectColumn(\CalendarDefinitionPeer::CALENDAR_UID);
+ $criteria->addSelectColumn(\CalendarDefinitionPeer::CALENDAR_NAME);
+ $criteria->addSelectColumn(\CalendarDefinitionPeer::CALENDAR_DESCRIPTION);
+ $criteria->addSelectColumn(\CalendarDefinitionPeer::CALENDAR_CREATE_DATE);
+ $criteria->addSelectColumn(\CalendarDefinitionPeer::CALENDAR_UPDATE_DATE);
+ $criteria->addSelectColumn(\CalendarDefinitionPeer::CALENDAR_WORK_DAYS);
+ $criteria->addSelectColumn(\CalendarDefinitionPeer::CALENDAR_STATUS);
+ $criteria->add(\CalendarDefinitionPeer::CALENDAR_STATUS, "DELETED", \Criteria::NOT_EQUAL);
+
+ return $criteria;
+ } catch (\Exception $e) {
+ throw $e;
+ }
+ }
+
+ /**
+ * Get data of a Calendar from a record
+ *
+ * @param array $record Record
+ *
+ * return array Return an array with data Calendar
+ */
+ public function getCalendarDataFromRecord($record)
+ {
+ try {
+ return array(
+ $this->getFieldNameByFormatFieldName("CAL_UID") => $record["CALENDAR_UID"],
+ $this->getFieldNameByFormatFieldName("CAL_NAME") => $record["CALENDAR_NAME"],
+ $this->getFieldNameByFormatFieldName("CAL_DESCRIPTION") => $record["CALENDAR_DESCRIPTION"] . "",
+ $this->getFieldNameByFormatFieldName("CAL_CREATE_DATE") => $record["CALENDAR_CREATE_DATE"] . "",
+ $this->getFieldNameByFormatFieldName("CAL_UPDATE_DATE") => $record["CALENDAR_UPDATE_DATE"] . "",
+ $this->getFieldNameByFormatFieldName("CAL_WORK_DAYS") => $record["CALENDAR_WORK_DAYS"] . "",
+ $this->getFieldNameByFormatFieldName("CAL_STATUS") => $record["CALENDAR_STATUS"],
+ $this->getFieldNameByFormatFieldName("CAL_TOTAL_USERS") => (int)($record["CALENDAR_TOTAL_USERS"]),
+ $this->getFieldNameByFormatFieldName("CAL_TOTAL_PROCESSES") => (int)($record["CALENDAR_TOTAL_PROCESSES"]),
+ $this->getFieldNameByFormatFieldName("CAL_TOTAL_TASKS") => (int)($record["CALENDAR_TOTAL_TASKS"])
+ );
+ } catch (\Exception $e) {
+ throw $e;
+ }
+ }
+
+ /**
+ * Get all Calendars
+ *
+ * @param array $arrayFilterData Data of the filters
+ * @param string $sortField Field name to sort
+ * @param string $sortDir Direction of sorting (ASC, DESC)
+ * @param int $start Start
+ * @param int $limit Limit
+ *
+ * return array Return an array with all Calendars
+ */
+ public function getCalendars($arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
+ {
+ try {
+ $arrayCalendar = array();
+
+ //Verify data
+ $process = new \BusinessModel\Process();
+
+ $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
+
+ //Get data
+ if (!is_null($limit) && $limit . "" == "0") {
+ return $arrayCalendar;
+ }
+
+ //Set variables
+ $calendar = new \calendar();
+
+ $arrayTotalUsersByCalendar = $calendar->getAllCounterByCalendar("USER");
+ $arrayTotalProcessesByCalendar = $calendar->getAllCounterByCalendar("PROCESS");
+ $arrayTotalTasksByCalendar = $calendar->getAllCounterByCalendar("TASK");
+
+ //SQL
+ $criteria = $this->getCalendarCriteria();
+
+ if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
+ $criteria->add(\CalendarDefinitionPeer::CALENDAR_NAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE);
+ }
+
+ //Number records total
+ $criteriaCount = clone $criteria;
+
+ $criteriaCount->clearSelectColumns();
+ $criteriaCount->addSelectColumn("COUNT(" . \CalendarDefinitionPeer::CALENDAR_UID . ") AS NUM_REC");
+
+ $rsCriteriaCount = \CalendarDefinitionPeer::doSelectRS($criteriaCount);
+ $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
+
+ $rsCriteriaCount->next();
+ $row = $rsCriteriaCount->getRow();
+
+ $numRecTotal = $row["NUM_REC"];
+
+ //SQL
+ if (!is_null($sortField) && trim($sortField) != "") {
+ $sortField = strtoupper($sortField);
+ $sortField = (isset($this->arrayFieldDefinition[$sortField]["fieldName"]))? $this->arrayFieldDefinition[$sortField]["fieldName"] : $sortField;
+
+ switch ($sortField) {
+ case "CALENDAR_UID":
+ case "CALENDAR_NAME":
+ case "CALENDAR_DESCRIPTION":
+ case "CALENDAR_CREATE_DATE":
+ case "CALENDAR_UPDATE_DATE":
+ case "CALENDAR_WORK_DAYS":
+ case "CALENDAR_STATUS":
+ $sortField = \CalendarDefinitionPeer::TABLE_NAME . "." . $sortField;
+ break;
+ default:
+ $sortField = \CalendarDefinitionPeer::CALENDAR_NAME;
+ break;
+ }
+ } else {
+ $sortField = \CalendarDefinitionPeer::CALENDAR_NAME;
+ }
+
+ if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
+ $criteria->addDescendingOrderByColumn($sortField);
+ } else {
+ $criteria->addAscendingOrderByColumn($sortField);
+ }
+
+ if (!is_null($start)) {
+ $criteria->setOffset((int)($start));
+ }
+
+ if (!is_null($limit)) {
+ $criteria->setLimit((int)($limit));
+ }
+
+ $rsCriteria = \CalendarDefinitionPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
+
+ while ($rsCriteria->next()) {
+ $row = $rsCriteria->getRow();
+
+ $row["CALENDAR_TOTAL_USERS"] = (isset($arrayTotalUsersByCalendar[$row["CALENDAR_UID"]]))? $arrayTotalUsersByCalendar[$row["CALENDAR_UID"]] : 0;
+ $row["CALENDAR_TOTAL_PROCESSES"] = (isset($arrayTotalProcessesByCalendar[$row["CALENDAR_UID"]]))? $arrayTotalProcessesByCalendar[$row["CALENDAR_UID"]] : 0;
+ $row["CALENDAR_TOTAL_TASKS"] = (isset($arrayTotalTasksByCalendar[$row["CALENDAR_UID"]]))? $arrayTotalTasksByCalendar[$row["CALENDAR_UID"]] : 0;
+
+ $arrayCalendar[] = $this->getCalendarDataFromRecord($row);
+ }
+
+ //Return
+ return $arrayCalendar;
+ } catch (\Exception $e) {
+ throw $e;
+ }
+ }
+}
+
diff --git a/workflow/engine/src/BusinessModel/Step.php b/workflow/engine/src/BusinessModel/Step.php
index 1261c8379..472462280 100644
--- a/workflow/engine/src/BusinessModel/Step.php
+++ b/workflow/engine/src/BusinessModel/Step.php
@@ -170,9 +170,8 @@ class Step
*/
public function throwExceptionIfHaveInvalidValueInTypeObj($stepTypeObj)
{
- if (!in_array($stepTypeObj, array("DYNAFORM", "INPUT_DOCUMENT", "OUTPUT_DOCUMENT"))) {
+ if (!in_array($stepTypeObj, array("DYNAFORM", "INPUT_DOCUMENT", "OUTPUT_DOCUMENT", "EXTERNAL"))) {
$field = $this->arrayParamException["stepTypeObj"];
-
throw (new \Exception(str_replace(array("{0}"), array($field), "Invalid value specified for \"{0}\"")));
}
}
diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Calendar.php b/workflow/engine/src/Services/Api/ProcessMaker/Calendar.php
new file mode 100644
index 000000000..aac0e82f4
--- /dev/null
+++ b/workflow/engine/src/Services/Api/ProcessMaker/Calendar.php
@@ -0,0 +1,33 @@
+setFormatFieldNameInUppercase($this->formatFieldNameInUppercase);
+
+ $response = $calendar->getCalendars(array("filter" => $filter), null, null, $start, $limit);
+
+ return $response;
+ } catch (\Exception $e) {
+ throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
+ }
+ }
+}
+
diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity/Step.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity/Step.php
index e460710dd..0cba109aa 100644
--- a/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity/Step.php
+++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity/Step.php
@@ -39,7 +39,7 @@ class Step extends Api
* @param string $act_uid {@min 32}{@max 32}
* @param string $prj_uid {@min 32}{@max 32}
* @param array $request_data
- * @param string $step_type_obj {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT}{@required true}
+ * @param string $step_type_obj {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT,EXTERNAL}{@required true}
* @param string $step_uid_obj {@from body}{@min 32}{@max 32}{@required true}
* @param string $step_condition {@from body}
* @param int $step_position {@from body}{@min 1}
@@ -79,7 +79,7 @@ class Step extends Api
* @param string $act_uid {@min 32}{@max 32}
* @param string $prj_uid {@min 32}{@max 32}
* @param array $request_data
- * @param string $step_type_obj {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT}
+ * @param string $step_type_obj {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT,EXTERNAL}
* @param string $step_uid_obj {@from body}{@min 32}{@max 32}
* @param string $step_condition {@from body}
* @param int $step_position {@from body}{@min 1}
diff --git a/workflow/engine/src/Services/api.ini b/workflow/engine/src/Services/api.ini
index 7bd9b6300..b87c3019a 100644
--- a/workflow/engine/src/Services/api.ini
+++ b/workflow/engine/src/Services/api.ini
@@ -53,3 +53,9 @@ debug = 1
[alias: users]
user = "Services\Api\ProcessMaker\User"
+[alias: calendar]
+ calendar = "Services\Api\ProcessMaker\Calendar"
+
+[alias: calendars]
+ calendar = "Services\Api\ProcessMaker\Calendar"
+
diff --git a/workflow/engine/src/Tests/ProcessMaker/Project/Adapter/BpmnWorkflowTest.php b/workflow/engine/src/Tests/ProcessMaker/Project/Adapter/BpmnWorkflowTest.php
index 9087a4dea..96c763f21 100644
--- a/workflow/engine/src/Tests/ProcessMaker/Project/Adapter/BpmnWorkflowTest.php
+++ b/workflow/engine/src/Tests/ProcessMaker/Project/Adapter/BpmnWorkflowTest.php
@@ -21,7 +21,7 @@ class BpmnWorkflowTest extends \PHPUnit_Framework_TestCase
public static function tearDownAfterClass()
{
- return false;
+ //return false;
//cleaning DB
foreach (self::$uids as $prjUid) {
$bwap = Project\Adapter\BpmnWorkflow::load($prjUid);
diff --git a/workflow/engine/templates/designer/index.html b/workflow/engine/templates/designer/index.html
index f672586d9..2fab47e66 100644
--- a/workflow/engine/templates/designer/index.html
+++ b/workflow/engine/templates/designer/index.html
@@ -1,4 +1,4 @@
-
+
{if $isDebugMode}
{foreach from=$pmuiCssCacheFile item=file}
@@ -98,5 +98,63 @@
{/if}
+
+
+
+
+
+