diff --git a/gulliver/system/class.headPublisher.php b/gulliver/system/class.headPublisher.php
index 3aec7f35a..36f166d69 100644
--- a/gulliver/system/class.headPublisher.php
+++ b/gulliver/system/class.headPublisher.php
@@ -225,6 +225,12 @@ class headPublisher
}
$head = $head . "
+
+
diff --git a/workflow/engine/bin/cron.php b/workflow/engine/bin/cron.php
index c94808056..4e0932e73 100755
--- a/workflow/engine/bin/cron.php
+++ b/workflow/engine/bin/cron.php
@@ -54,33 +54,47 @@ $bCronIsRunning = false;
$sLastExecution = null;
$processcTimeProcess = 0;
$processcTimeStart = 0;
-if (file_exists(PATH_DATA . "cron")) {
- $force = false;
- for ($i = 1; $i <= count($argv) - 1; $i++) {
- if (strpos($argv[$i], "+force") !== false) {
- $force = true;
- unset($argv[$i]);
- break;
- }
- }
- if (!$force) {
- $arrayCron = unserialize(trim(@file_get_contents(PATH_DATA . "cron")));
- $bCronIsRunning = (boolean)($arrayCron["bCronIsRunning"]);
- $sLastExecution = $arrayCron["sLastExecution"];
- $processcTimeProcess = (isset($arrayCron["processcTimeProcess"]))? intval($arrayCron["processcTimeProcess"]) : 10; //Minutes
- $processcTimeStart = (isset($arrayCron["processcTimeStart"]))? $arrayCron["processcTimeStart"] : 0;
- } else {
- G::rm_dir(PATH_DATA . "cron");
- }
-}
-if ($bCronIsRunning && $processcTimeStart != 0) {
- if ((time() - $processcTimeStart) > ($processcTimeProcess * 60)) {
- //Cron finished his execution for some reason
- $bCronIsRunning = false;
+
+$force = false;
+$osIsLinux = strtoupper(substr(PHP_OS, 0, 3)) != "WIN";
+
+for ($i = 1; $i <= count($argv) - 1; $i++) {
+ if (strpos($argv[$i], "+force") !== false) {
+ $force = true;
+ unset($argv[$i]);
+ break;
}
}
-if (!$bCronIsRunning) {
+if (!$force && file_exists(PATH_DATA . "cron")) {
+ //Windows flag
+ //Get data of cron file
+ $arrayCron = unserialize(trim(file_get_contents(PATH_DATA . "cron")));
+
+ $bCronIsRunning = (boolean)($arrayCron["bCronIsRunning"]);
+ $sLastExecution = $arrayCron["sLastExecution"];
+ $processcTimeProcess = (isset($arrayCron["processcTimeProcess"]))? (int)($arrayCron["processcTimeProcess"]) : 10; //Minutes
+ $processcTimeStart = (isset($arrayCron["processcTimeStart"]))? $arrayCron["processcTimeStart"] : 0;
+}
+
+if (!$force && $osIsLinux) {
+ //Linux flag
+ //Check if cron it's running
+ exec("ps -fea | grep cron.php | grep -v grep", $arrayOutput);
+
+ if (count($arrayOutput) > 1) {
+ $bCronIsRunning = true;
+ }
+}
+
+//if (!$force && $bCronIsRunning && $processcTimeStart != 0) {
+// if ((time() - $processcTimeStart) > ($processcTimeProcess * 60)) {
+// //Cron finished his execution for some reason
+// $bCronIsRunning = false;
+// }
+//}
+
+if ($force || !$bCronIsRunning) {
//Start cron
$arrayCron = array("bCronIsRunning" => "1", "sLastExecution" => date("Y-m-d H:i:s"));
@file_put_contents(PATH_DATA . "cron", serialize($arrayCron));
diff --git a/workflow/engine/bin/reindex_solr.php b/workflow/engine/bin/reindex_solr.php
index 907019db4..561ff13bc 100644
--- a/workflow/engine/bin/reindex_solr.php
+++ b/workflow/engine/bin/reindex_solr.php
@@ -1,6 +1,6 @@
3) {
if($argv [$argNumber] == '-appuid') {
//use skip option
$appUid = $argv [$argNumber + 1];
- }
+ }
}
else {
print $commandLineSyntaxMsg;
@@ -106,7 +106,7 @@ if (! defined ('PATH_HOME')) {
array_pop ($docuroot);
$pathOutTrunk = implode (PATH_SEP, $docuroot) . PATH_SEP;
// to do: check previous algorith for Windows $pathTrunk = "c:/home/";
-
+
define ('PATH_HOME', $pathhome);
define ('PATH_TRUNK', $pathTrunk);
define ('PATH_OUTTRUNK', $pathOutTrunk);
@@ -176,20 +176,6 @@ if (! defined ('PATH_HOME')) {
// G::loadClass('pmScript');
-// //default values
-// $bCronIsRunning = false;
-// $sLastExecution = '';
-// if ( file_exists(PATH_DATA . 'cron') ) {
-// $aAux = unserialize( trim( @file_get_contents(PATH_DATA . 'cron')) );
-// $bCronIsRunning = (boolean)$aAux['bCronIsRunning'];
-// $sLastExecution = $aAux['sLastExecution'];
-// }
-// else {
-// //if not exists the file, just create a new one with current date
-// @file_put_contents(PATH_DATA . 'cron', serialize(array('bCronIsRunning' =>
-// '1', 'sLastExecution' => date('Y-m-d H:i:s'))));
-// }
-
print "PATH_HOME: " . PATH_HOME . "\n";
print "PATH_DB: " . PATH_DB . "\n";
print "PATH_CORE: " . PATH_CORE . "\n";
@@ -199,19 +185,19 @@ if (! defined ('SYS_SYS')) {
$sObject = $workspaceName;
$sNow = ''; // $argv[2];
$sFilter = '';
-
+
for ($i = 3; $i < count ($argv); $i++) {
$sFilter .= ' ' . $argv [$i];
}
-
+
$oDirectory = dir (PATH_DB);
-
+
if (is_dir (PATH_DB . $sObject)) {
saveLog ('main', 'action', "checking folder " . PATH_DB . $sObject);
if (file_exists (PATH_DB . $sObject . PATH_SEP . 'db.php')) {
-
+
define ('SYS_SYS', $sObject);
-
+
// ****************************************
// read initialize file
require_once PATH_HOME . 'engine' . PATH_SEP . 'classes' . PATH_SEP . 'class.system.php';
@@ -219,16 +205,16 @@ if (! defined ('SYS_SYS')) {
define ('MEMCACHED_ENABLED', $config ['memcached']);
define ('MEMCACHED_SERVER', $config ['memcached_server']);
define ('TIME_ZONE', $config ['time_zone']);
-
+
date_default_timezone_set (TIME_ZONE);
print "TIME_ZONE: " . TIME_ZONE . "\n";
print "MEMCACHED_ENABLED: " . MEMCACHED_ENABLED . "\n";
print "MEMCACHED_SERVER: " . MEMCACHED_SERVER . "\n";
// ****************************************
-
+
include_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths_installed.php');
include_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths.php');
-
+
// ***************** PM Paths DATA **************************
define ('PATH_DATA_SITE', PATH_DATA . 'sites/' . SYS_SYS . '/');
define ('PATH_DOCUMENT', PATH_DATA_SITE . 'files/');
@@ -238,7 +224,7 @@ if (! defined ('SYS_SYS')) {
define ('PATH_DYNAFORM', PATH_DATA_SITE . 'xmlForms/');
define ('PATH_IMAGES_ENVIRONMENT_FILES', PATH_DATA_SITE . 'usersFiles' . PATH_SEP);
define ('PATH_IMAGES_ENVIRONMENT_USERS', PATH_DATA_SITE . 'usersPhotographies' . PATH_SEP);
-
+
// server info file
if (is_file (PATH_DATA_SITE . PATH_SEP . '.server_info')) {
$SERVER_INFO = file_get_contents (PATH_DATA_SITE . PATH_SEP . '.server_info');
@@ -250,10 +236,10 @@ if (! defined ('SYS_SYS')) {
else {
eprintln ("WARNING! No server info found!", 'red');
}
-
+
// read db configuration
$sContent = file_get_contents (PATH_DB . $sObject . PATH_SEP . 'db.php');
-
+
$sContent = str_replace ('', '', $sContent);
@@ -261,7 +247,7 @@ if (! defined ('SYS_SYS')) {
$sContent = str_replace ("('", "$", $sContent);
$sContent = str_replace ("',", '=', $sContent);
$sContent = str_replace (");", ';', $sContent);
-
+
eval ($sContent);
$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;
@@ -293,7 +279,7 @@ if (! defined ('SYS_SYS')) {
fclose ($oFile);
Propel::init (PATH_CORE . 'config/_databases_.php');
// Creole::registerDriver('dbarray', 'creole.contrib.DBArrayConnection');
-
+
eprintln ("Processing workspace: " . $sObject, 'green');
try {
processWorkspace ();
@@ -312,10 +298,6 @@ else {
processWorkspace ();
}
-// finally update the file
-// @file_put_contents(PATH_DATA . 'cron', serialize(array('bCronIsRunning' =>
-// '0', 'sLastExecution' => date('Y-m-d H:i:s'))));
-
function processWorkspace()
{
global $sLastExecution;
@@ -323,16 +305,16 @@ function processWorkspace()
global $SkipRecords;
global $TrunkSize;
global $appUid;
-
+
try {
-
+
if (($solrConf = System::solrEnv (SYS_SYS)) !== false) {
G::LoadClass ('AppSolr');
print "Solr Configuration file: " . PATH_DATA_SITE . "env.ini\n";
print "solr_enabled: " . $solrConf ['solr_enabled'] . "\n";
print "solr_host: " . $solrConf ['solr_host'] . "\n";
print "solr_instance: " . $solrConf ['solr_instance'] . "\n";
-
+
$oAppSolr = new AppSolr ($solrConf ['solr_enabled'], $solrConf ['solr_host'], $solrConf ['solr_instance']);
if ($ScriptAction == "reindexall") {
$oAppSolr->reindexAllApplications ($SkipRecords, $TrunkSize);
@@ -353,7 +335,7 @@ function processWorkspace()
else {
print "Incomplete Solr configuration. See configuration file: " . PATH_DATA_SITE . "env.ini";
}
-
+
}
catch (Exception $oError) {
saveLog ("main", "error", "Error processing workspace : " . $oError->getMessage () . "\n");
@@ -366,7 +348,7 @@ function saveLog($sSource, $sType, $sDescription)
global $isDebug;
if ($isDebug)
print date ('H:i:s') . " ($sSource) $sType $sDescription
\n";
-
+
G::verifyPath (PATH_DATA . 'log' . PATH_SEP, true);
$message = '(' . $sSource . ') ' . $sDescription . "\n";
if ($sType == 'action') {
@@ -386,7 +368,7 @@ function setExecutionMessage($m)
$len = strlen ($m);
$linesize = 60;
$rOffset = $linesize - $len;
-
+
eprint ("* $m");
for ($i = 0; $i < $rOffset; $i++)
eprint ('.');
diff --git a/workflow/engine/bin/verify_solr.php b/workflow/engine/bin/verify_solr.php
index b56a788de..9d1103a3a 100644
--- a/workflow/engine/bin/verify_solr.php
+++ b/workflow/engine/bin/verify_solr.php
@@ -1,6 +1,6 @@
2) && ((count ($argv) % 2) != 0))) {
+if ( (count ($argv) < 2) || ((count ($argv) > 2) && ((count ($argv) % 2) != 0))) {
print $commandLineSyntaxMsg;
die ();
}
@@ -43,7 +43,7 @@ $workspaceName = $argv [1];
$usrUid = "";
if((count ($argv) > 2)){
- $usrUid = $argv [3];
+ $usrUid = $argv [3];
}
ini_set ('display_errors', 1);
@@ -70,13 +70,13 @@ if (! defined ('PATH_HOME')) {
array_pop ($docuroot);
$pathOutTrunk = implode (PATH_SEP, $docuroot) . PATH_SEP;
// to do: check previous algorith for Windows $pathTrunk = "c:/home/";
-
+
define ('PATH_HOME', $pathhome);
define ('PATH_TRUNK', $pathTrunk);
define ('PATH_OUTTRUNK', $pathOutTrunk);
-
+
require_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths.php');
-
+
G::LoadThirdParty ('pear/json', 'class.json');
G::LoadThirdParty ('smarty/libs', 'Smarty.class');
G::LoadSystem ('error');
@@ -107,20 +107,6 @@ require_once 'classes/model/AppEvent.php';
require_once 'classes/model/CaseScheduler.php';
// G::loadClass('pmScript');
-// //default values
-// $bCronIsRunning = false;
-// $sLastExecution = '';
-// if ( file_exists(PATH_DATA . 'cron') ) {
-// $aAux = unserialize( trim( @file_get_contents(PATH_DATA . 'cron')) );
-// $bCronIsRunning = (boolean)$aAux['bCronIsRunning'];
-// $sLastExecution = $aAux['sLastExecution'];
-// }
-// else {
-// //if not exists the file, just create a new one with current date
-// @file_put_contents(PATH_DATA . 'cron', serialize(array('bCronIsRunning' =>
-// '1', 'sLastExecution' => date('Y-m-d H:i:s'))));
-// }
-
print "PATH_HOME: " . PATH_HOME . "\n";
print "PATH_DB: " . PATH_DB . "\n";
print "PATH_CORE: " . PATH_CORE . "\n";
@@ -131,19 +117,19 @@ if (! defined ('SYS_SYS')) {
$sNow = ''; // $argv[2];
/*
$sFilter = '';
-
+
for ($i = 3; $i < count ($argv); $i++) {
$sFilter .= ' ' . $argv [$i];
}*/
-
+
$oDirectory = dir (PATH_DB);
-
+
if (is_dir (PATH_DB . $sObject)) {
saveLog ('main', 'action', "checking folder " . PATH_DB . $sObject);
if (file_exists (PATH_DB . $sObject . PATH_SEP . 'db.php')) {
-
+
define ('SYS_SYS', $sObject);
-
+
// ****************************************
// read initialize file
require_once PATH_HOME . 'engine' . PATH_SEP . 'classes' . PATH_SEP . 'class.system.php';
@@ -151,16 +137,16 @@ if (! defined ('SYS_SYS')) {
define ('MEMCACHED_ENABLED', $config ['memcached']);
define ('MEMCACHED_SERVER', $config ['memcached_server']);
define ('TIME_ZONE', $config ['time_zone']);
-
+
date_default_timezone_set (TIME_ZONE);
print "TIME_ZONE: " . TIME_ZONE . "\n";
print "MEMCACHED_ENABLED: " . MEMCACHED_ENABLED . "\n";
print "MEMCACHED_SERVER: " . MEMCACHED_SERVER . "\n";
// ****************************************
-
+
include_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths_installed.php');
include_once (PATH_HOME . 'engine' . PATH_SEP . 'config' . PATH_SEP . 'paths.php');
-
+
// ***************** PM Paths DATA **************************
define ('PATH_DATA_SITE', PATH_DATA . 'sites/' . SYS_SYS . '/');
define ('PATH_DOCUMENT', PATH_DATA_SITE . 'files/');
@@ -170,7 +156,7 @@ if (! defined ('SYS_SYS')) {
define ('PATH_DYNAFORM', PATH_DATA_SITE . 'xmlForms/');
define ('PATH_IMAGES_ENVIRONMENT_FILES', PATH_DATA_SITE . 'usersFiles' . PATH_SEP);
define ('PATH_IMAGES_ENVIRONMENT_USERS', PATH_DATA_SITE . 'usersPhotographies' . PATH_SEP);
-
+
// server info file
if (is_file (PATH_DATA_SITE . PATH_SEP . '.server_info')) {
$SERVER_INFO = file_get_contents (PATH_DATA_SITE . PATH_SEP . '.server_info');
@@ -182,10 +168,10 @@ if (! defined ('SYS_SYS')) {
else {
eprintln ("WARNING! No server info found!", 'red');
}
-
+
// read db configuration
$sContent = file_get_contents (PATH_DB . $sObject . PATH_SEP . 'db.php');
-
+
$sContent = str_replace ('', '', $sContent);
@@ -193,7 +179,7 @@ if (! defined ('SYS_SYS')) {
$sContent = str_replace ("('", "$", $sContent);
$sContent = str_replace ("',", '=', $sContent);
$sContent = str_replace (");", ';', $sContent);
-
+
eval ($sContent);
$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;
@@ -225,7 +211,7 @@ if (! defined ('SYS_SYS')) {
fclose ($oFile);
Propel::init (PATH_CORE . 'config/_databases_.php');
// Creole::registerDriver('dbarray', 'creole.contrib.DBArrayConnection');
-
+
eprintln ("Processing workspace: " . $sObject, 'green');
try {
processWorkspace ();
@@ -244,10 +230,6 @@ else {
processWorkspace ();
}
-// finally update the file
-// @file_put_contents(PATH_DATA . 'cron', serialize(array('bCronIsRunning' =>
-// '0', 'sLastExecution' => date('Y-m-d H:i:s'))));
-
function processWorkspace()
{
global $sLastExecution;
@@ -255,11 +237,11 @@ function processWorkspace()
//global $SkipRecords;
//global $TrunkSize;
global $usrUid;
-
+
try {
-
+
//if $usrUid is not set get all the users
-
+
//verify inbox
verifyInboxList($usrUid);
@@ -351,10 +333,10 @@ function displayMissingCases($aAppUidsDB, $aAppUidsSolr)
foreach($casesInDBNotSolr as $caseDB){
print " ". $caseDB . " \n";
}
- print " Cases in Solr but not in DB: \n";
+ print " Cases in Solr but not in DB: \n";
foreach($casesInSolrNotDB as $caseSolr){
print " ". $caseSolr . " \n";
- }
+ }
}
function getListUids($usrUid, $action)
@@ -365,21 +347,21 @@ function getListUids($usrUid, $action)
print "solr_enabled: " . $solrConf ['solr_enabled'] . "\n";
print "solr_host: " . $solrConf ['solr_host'] . "\n";
print "solr_instance: " . $solrConf ['solr_instance'] . "\n";
-
+
$oAppSolr = new AppSolr ($solrConf ['solr_enabled'], $solrConf ['solr_host'], $solrConf ['solr_instance']);
G::LoadClass("applications");
$apps = new Applications();
}
else {
- print "Incomplete Solr configuration. See configuration file: " . PATH_DATA_SITE . "env.ini";
+ print "Incomplete Solr configuration. See configuration file: " . PATH_DATA_SITE . "env.ini";
return;
- }
+ }
//get the list of id's
$userUid = $usrUid;
$start = 0;
$limit = 1;
- $action = $action; //todo,
+ $action = $action; //todo,
$filter = '';
$search = '';
$process = '';
@@ -392,7 +374,7 @@ function getListUids($usrUid, $action)
$dir = 'DESC';
$sort = 'APP_NUMBER';
$category = '';
-
+
$dataSolr = $oAppSolr->getAppGridData(
$userUid,
$start,
@@ -411,7 +393,7 @@ function getListUids($usrUid, $action)
$sort
);
-
+
$dataDB = $apps->getAll(
$userUid,
$start,
@@ -443,7 +425,7 @@ function getListUids($usrUid, $action)
$start = $i * $trunkSize;
$limit = $trunkSize;
//print " Loop $start to " . (String)($start + $trunkSize) . " \n";
-
+
$dataDB = $apps->getAll(
$userUid,
$start,
@@ -461,7 +443,7 @@ function getListUids($usrUid, $action)
$dir,
$sort,
$category
- );
+ );
foreach($dataDB["data"] as $caseDB){
$aAppUidsDB[] = $caseDB["APP_UID"];
}
@@ -475,7 +457,7 @@ function getListUids($usrUid, $action)
$start = $i * $trunkSize;
$limit = $trunkSize;
//print " Loop $start to " . (String)($start + $trunkSize) . " \n";
-
+
$dataSolr = $oAppSolr->getAppGridData(
$userUid,
$start,
@@ -515,7 +497,7 @@ function saveLog($sSource, $sType, $sDescription)
global $isDebug;
if ($isDebug)
print date ('H:i:s') . " ($sSource) $sType $sDescription
\n";
-
+
G::verifyPath (PATH_DATA . 'log' . PATH_SEP, true);
$message = '(' . $sSource . ') ' . $sDescription . "\n";
if ($sType == 'action') {
@@ -535,7 +517,7 @@ function setExecutionMessage($m)
$len = strlen ($m);
$linesize = 60;
$rOffset = $linesize - $len;
-
+
eprint ("* $m");
for ($i = 0; $i < $rOffset; $i++)
eprint ('.');
diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php
index 0550c0891..0697ea658 100644
--- a/workflow/engine/classes/class.pmDynaform.php
+++ b/workflow/engine/classes/class.pmDynaform.php
@@ -19,7 +19,6 @@ class pmDynaform
{
$this->dyn_uid = $dyn_uid;
$this->app_data = $app_data;
-
$this->getDynaform();
}
@@ -87,6 +86,18 @@ class pmDynaform
public function printEdit($pm_run_outside_main_app, $application, $headData)
{
ob_clean();
+
+ $a = $this->clientToken();
+ $clientToken = array(
+ "accessToken" => $a["access_token"],
+ "expiresIn" => $a["expires_in"],
+ "tokenType" => $a["token_type"],
+ "scope" => $a["scope"],
+ "refreshToken" => $a["refresh_token"],
+ "clientId" => $a["client_id"],
+ "clientSecret" => $a["client_secret"]
+ );
+
$file = file_get_contents(PATH_HOME . 'public_html/lib/pmdynaform/build/cases_Step_Pmdynaform.html');
$file = str_replace("{JSON_DATA}", $this->record["DYN_CONTENT"], $file);
$file = str_replace("{CASE}", $headData["CASE"], $file);
@@ -97,9 +108,78 @@ class pmDynaform
$file = str_replace("{DYN_UID}", $this->dyn_uid, $file);
$file = str_replace("{DYNAFORMNAME}", $this->record["PRO_UID"] . "_" . $this->record["DYN_UID"], $file);
$file = str_replace("{APP_UID}", $application, $file);
+ $file = str_replace("{PRJ_UID}", $this->app_data["PROCESS"], $file);
+ $file = str_replace("{WORKSPACE}", $this->app_data["SYS_SYS"], $file);
+ $file = str_replace("{credentials}", json_encode($clientToken), $file);
echo $file;
exit();
}
-}
+ private function clientToken()
+ {
+ $client = $this->getClientCredentials();
+ $authCode = $this->getAuthorizationCode($client);
+
+ $request = array(
+ 'grant_type' => 'authorization_code',
+ 'code' => $authCode
+ );
+ $server = array(
+ 'REQUEST_METHOD' => 'POST'
+ );
+ $headers = array(
+ "PHP_AUTH_USER" => $client['CLIENT_ID'],
+ "PHP_AUTH_PW" => $client['CLIENT_SECRET'],
+ "Content-Type" => "multipart/form-data;",
+ "Authorization" => "Basic " . base64_encode($client['CLIENT_ID'] . ":" . $client['CLIENT_SECRET'])
+ );
+
+ $request = new \OAuth2\Request(array(), $request, array(), array(), array(), $server, null, $headers);
+ $oauthServer = new \ProcessMaker\Services\OAuth2\Server();
+ $response = $oauthServer->getServer()->handleTokenRequest($request);
+ $clientToken = $response->getParameters();
+ $clientToken["client_id"] = $client['CLIENT_ID'];
+ $clientToken["client_secret"] = $client['CLIENT_SECRET'];
+
+ return $clientToken;
+ }
+
+ protected $clientId = 'x-pm-local-client';
+
+ protected function getClientCredentials()
+ {
+ $oauthQuery = new ProcessMaker\Services\OAuth2\PmPdo($this->getDsn());
+ return $oauthQuery->getClientDetails($this->clientId);
+ }
+
+ protected function getAuthorizationCode($client)
+ {
+ \ProcessMaker\Services\OAuth2\Server::setDatabaseSource($this->getDsn());
+ \ProcessMaker\Services\OAuth2\Server::setPmClientId($client['CLIENT_ID']);
+
+ $oauthServer = new \ProcessMaker\Services\OAuth2\Server();
+ $userId = $_SESSION['USER_LOGGED'];
+ $authorize = true;
+ $_GET = array_merge($_GET, array(
+ 'response_type' => 'code',
+ 'client_id' => $client['CLIENT_ID'],
+ 'scope' => implode(' ', $oauthServer->getScope())
+ ));
+
+ $response = $oauthServer->postAuthorize($authorize, $userId, true);
+ $code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=') + 5, 40);
+
+ return $code;
+ }
+
+ private function getDsn()
+ {
+ list($host, $port) = strpos(DB_HOST, ':') !== false ? explode(':', DB_HOST) : array(DB_HOST, '');
+ $port = empty($port) ? '' : ";port=$port";
+ $dsn = DB_ADAPTER . ':host=' . $host . ';dbname=' . DB_NAME . $port;
+
+ return array('dsn' => $dsn, 'username' => DB_USER, 'password' => DB_PASS);
+ }
+
+}
diff --git a/workflow/engine/classes/class.pmScript.php b/workflow/engine/classes/class.pmScript.php
index 43e196aa2..1e9d16d70 100644
--- a/workflow/engine/classes/class.pmScript.php
+++ b/workflow/engine/classes/class.pmScript.php
@@ -219,16 +219,16 @@ class PMScript
{
$sScript = "";
$iAux = 0;
- $bEqual = false;
$iOcurrences = preg_match_all( '/\@(?:([\@\%\#\?\$\=])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]' . '*(?:[\\\\][\w\W])?)*)\))((?:\s*\[[\'"]?\w+[\'"]?\])+)?/', $this->sScript, $aMatch, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE );
if ($iOcurrences) {
for ($i = 0; $i < $iOcurrences; $i ++) {
+ $bEqual = false;
$sAux = substr( $this->sScript, $iAux, $aMatch[0][$i][1] - $iAux );
if (! $bEqual) {
- if (strpos( $sAux, '==' ) !== false) {
+ if (strpos($sAux, "==") !== false || strpos($sAux, "!=") !== false || strpos($sAux, ">") !== false || strpos($sAux, "<") !== false || strpos($sAux, ">=") !== false || strpos($sAux, "<=") !== false || strpos($sAux, "<>") !== false || strpos($sAux, "===") !== false || strpos($sAux, "!==") !== false) {
$bEqual = false;
} else {
- if (strpos( $sAux, '=' ) !== false) {
+ if (strpos($sAux, "=") !== false || strpos($sAux, "+=") !== false || strpos($sAux, "-=") !== false || strpos($sAux, "*=") !== false || strpos($sAux, "/=") !== false || strpos($sAux, "%=") !== false || strpos($sAux, ".=") !== false) {
$bEqual = true;
}
}
@@ -246,22 +246,6 @@ class PMScript
}
}
$sScript .= $sAux;
- /** patch1: support for the expression: @@a = @@b = @@c = @@d; */
- $bEqual = true;
- if ($i < $iOcurrences - 1) {
- $ii = $aMatch[0][$i][1] + strlen($aMatch[0][$i][0]);
- $ss = trim(substr($this->sScript, $ii, $aMatch[0][$i + 1][1] - $ii));
- } else {
- $ii = $aMatch[0][$i][1] + strlen($aMatch[0][$i][0]);
- $ss = trim(substr($this->sScript, $ii));
- }
- $sw0 = strpos($ss, '=') === 0 || strpos($ss, '+=') === 0 || strpos($ss, '-=') === 0;
- $sw1 = strpos($ss, '==') === 0 || strpos($ss, '===') === 0 || strpos($ss, '!=') === 0 || strpos($ss, '!==') === 0 || strpos($ss, '<=') === 0 || strpos($ss, '>=') === 0;
- $sw3 = substr(trim($sAux), strlen(trim($sAux)) - 6, strlen(trim($sAux))) === "empty(";
- if (($sw0 && !$sw1) || $sw3) {
- $bEqual = false;
- }
- /** patch1 end */
$iAux = $aMatch[0][$i][1] + strlen( $aMatch[0][$i][0] );
switch ($aMatch[1][$i][0]) {
case '@':
diff --git a/workflow/engine/controllers/home.php b/workflow/engine/controllers/home.php
index 6ea704e96..75f80eab7 100755
--- a/workflow/engine/controllers/home.php
+++ b/workflow/engine/controllers/home.php
@@ -43,13 +43,13 @@ class Home extends Controller
}
public function login ($httpData)
- {
+ {
//start new session
@session_destroy();
session_start();
session_regenerate_id();
- $data = isset( $httpData->d ) ? unserialize( base64_decode( $httpData->d ) ) : '';
+ $data = isset( $httpData->d ) ? unserialize( base64_decode( $httpData->d ) ) : '';
$template = $this->clientBrowser['name'] == 'msie' ? 'login_ie' : 'login_standard';
$skin = $this->clientBrowser['name'] == 'msie' ? $this->lastSkin : 'simplified';
@@ -94,9 +94,9 @@ class Home extends Controller
$start = 0;
$limit = '';
- $proData = $process->getAllProcesses( $start, $limit, null, null, false, true );
- $processList = $case->getStartCasesPerType( $_SESSION['USER_LOGGED'], 'category' );
-
+ $proData = $process->getAllProcesses( $start, $limit, null, null, false, true );
+ $processList = $case->getStartCasesPerType( $_SESSION['USER_LOGGED'], 'category' );
+
unset( $processList[0] );
$processesList = array ();
@@ -104,11 +104,11 @@ class Home extends Controller
foreach ($proData as $keyPro => $valuePro) {
if ($valueProcess['pro_uid'] == $valuePro['PRO_UID']) {
$processesList[] = $valueProcess;
- }
+ }
}
}
-
- $switchLink = $userProperty->getUserLocation( $_SESSION['USER_LOGGED'] );
+
+ $switchLink = $userProperty->getUserLocation( $_SESSION['USER_LOGGED'], SYS_LANG );
if (!isset($_COOKIE['workspaceSkin'])) {
if (substr( $sysConf['default_skin'], 0, 2 ) == 'ux') {
@@ -120,7 +120,7 @@ class Home extends Controller
$oServerConf = & serverConf::getSingleton();
if ($oServerConf->isRtl( SYS_LANG )) {
- $swRtl = 1;
+ $swRtl = 1;
} else {
$swRtl = 0;
}
@@ -202,7 +202,7 @@ class Home extends Controller
}
public function appList ($httpData)
- {
+ {
// setting default list applications types [default: todo]
$httpData->t = isset( $httpData->t ) ? $httpData->t : 'todo';
@@ -289,7 +289,7 @@ class Home extends Controller
}
public function getApps ($httpData)
- {
+ {
$cases = $this->getAppsData( $httpData->t, $httpData->start, $httpData->limit );
$this->setView( $this->userUxBaseTemplate . PATH_SEP . 'applications' );
@@ -312,7 +312,7 @@ class Home extends Controller
$dir = null,
$sort = "APP_CACHE_VIEW.APP_NUMBER",
$category = null)
- {
+ {
require_once ("classes/model/AppNotes.php");
G::LoadClass( 'applications' );
@@ -564,7 +564,7 @@ class Home extends Controller
return $status;
}
function getProcessArray($action, $userUid)
- {
+ {
global $oAppCache;
$processes = array();
@@ -595,7 +595,7 @@ class Home extends Controller
$cProcess->addJoinMC($conds, Criteria::LEFT_JOIN);
$cProcess->add(ProcessPeer::PRO_STATUS, "ACTIVE");
$oDataset = ProcessPeer::doSelectRS($cProcess);
-
+
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
diff --git a/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js b/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js
index e22a6d5d6..f71514322 100644
--- a/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js
+++ b/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js
@@ -25,6 +25,12 @@ $(window).load(function () {
var data = JSON.parse(jsondata);
window.dynaform = new PMDynaform.core.Project({
data: data,
+ keys: {
+ server: location.host,
+ projectId: prj_uid,
+ workspace: workspace
+ },
+ token: credentials,
submitRest: false
});
diff --git a/workflow/engine/methods/setup/cron.php b/workflow/engine/methods/setup/cron.php
index 7d8fcd224..9df8e9237 100644
--- a/workflow/engine/methods/setup/cron.php
+++ b/workflow/engine/methods/setup/cron.php
@@ -14,23 +14,38 @@ if ($RBAC->userCanAccess("PM_SETUP") != 1) {
$bCronIsRunning = false;
$sLastExecution = null;
$processcTimeProcess = 0;
-$processcTimeStart = 0;
+$processcTimeStart = 0;
-if (file_exists( PATH_DATA . "cron" )) {
- $arrayCron = unserialize( trim( @file_get_contents( PATH_DATA . "cron" ) ) );
- $bCronIsRunning = (boolean) ($arrayCron["bCronIsRunning"]);
+$osIsLinux = strtoupper(substr(PHP_OS, 0, 3)) != "WIN";
+
+if (file_exists(PATH_DATA . "cron")) {
+ //Windows flag
+ //Get data of cron file
+ $arrayCron = unserialize(trim(file_get_contents(PATH_DATA . "cron")));
+
+ $bCronIsRunning = (boolean)($arrayCron["bCronIsRunning"]);
$sLastExecution = $arrayCron["sLastExecution"];
- $processcTimeProcess = (isset( $arrayCron["processcTimeProcess"] )) ? intval( $arrayCron["processcTimeProcess"] ) : 10;
- $processcTimeStart = (isset( $arrayCron["processcTimeStart"] )) ? $arrayCron["processcTimeStart"] : 0;
+ $processcTimeProcess = (isset($arrayCron["processcTimeProcess"]))? (int)($arrayCron["processcTimeProcess"]) : 10; //Minutes
+ $processcTimeStart = (isset($arrayCron["processcTimeStart"]))? $arrayCron["processcTimeStart"] : 0;
}
-if ($bCronIsRunning && $processcTimeStart != 0) {
- if ((time() - $processcTimeStart) > ($processcTimeProcess * 60)) {
- //Cron finished his execution for some reason
- $bCronIsRunning = false;
+if ($osIsLinux) {
+ //Linux flag
+ //Check if cron it's running
+ exec("ps -fea | grep cron.php | grep -v grep", $arrayOutput);
+
+ if (count($arrayOutput) > 0) {
+ $bCronIsRunning = true;
}
}
+//if ($bCronIsRunning && $processcTimeStart != 0) {
+// if ((time() - $processcTimeStart) > ($processcTimeProcess * 60)) {
+// //Cron finished his execution for some reason
+// $bCronIsRunning = false;
+// }
+//}
+
//Data
$c = new Configurations();
$configPage = $c->getConfiguration( "cronList", "pageSize", null, $_SESSION["USER_LOGGED"] );
diff --git a/workflow/engine/templates/cases/cases_Step_Pmdynaform.html b/workflow/engine/templates/cases/cases_Step_Pmdynaform.html
index eee2798e0..92474ecd2 100644
--- a/workflow/engine/templates/cases/cases_Step_Pmdynaform.html
+++ b/workflow/engine/templates/cases/cases_Step_Pmdynaform.html
@@ -25,6 +25,9 @@
var dyn_uid = '{DYN_UID}';
var __DynaformName__ = '{DYNAFORMNAME}';
var app_uid = '{APP_UID}';
+ var prj_uid = '{PRJ_UID}';
+ var workspace = '{WORKSPACE}';
+ var credentials = {credentials};
diff --git a/workflow/engine/templates/cases/missRequiredFields.php b/workflow/engine/templates/cases/missRequiredFields.php
index 8067c5c02..644e53581 100755
--- a/workflow/engine/templates/cases/missRequiredFields.php
+++ b/workflow/engine/templates/cases/missRequiredFields.php
@@ -72,9 +72,15 @@
$previouspage = $_POST['previous_step']['PAGE'];
$html .= '