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 .= ''; - $html .= ''; - $html .= ''; - + if($netxpage == ""){ + $html .= ''; + $html .= ''; + $html .= ''; + } else{ + $html .= ''; + $html .= ''; + } + echo '
diff --git a/workflow/engine/templates/processes/webentryPost.tpl b/workflow/engine/templates/processes/webentryPost.tpl index 8efdf7c65..c612bf038 100755 --- a/workflow/engine/templates/processes/webentryPost.tpl +++ b/workflow/engine/templates/processes/webentryPost.tpl @@ -137,6 +137,30 @@ try { * you can change it or redirect to another page * i.e. G::header("Location: http://www.processmaker.com"); */ + + $_POST['__notValidateThisFields__'] = (isset( $_POST['__notValidateThisFields__'] ) && $_POST['__notValidateThisFields__'] != '') ? $_POST['__notValidateThisFields__'] : $_POST['DynaformRequiredFields']; + if ($missing_req_values = $oForm->validateRequiredFields( $_POST['form'], Bootstrap::json_decode( stripslashes( $_POST['__notValidateThisFields__'] ) ) )) { + $fieldsRequired = Bootstrap::json_decode(str_replace(array("%27", "%39"), array("\"", "'"), $_POST["DynaformRequiredFields"])); + + foreach ($fieldsRequired as $key1 => $value1) { + foreach ($missing_req_values as $key2 => $value2) { + if ($value1->name == $value2) { + $missing_req_values[$key2] = $value1->label; + } + } + } + + $_POST['next_step']['PAGE'] = ""; + $_POST['previous_step']['PAGE'] = $_SERVER['HTTP_REFERER']; + $_POST['req_val'] = $missing_req_values; + + global $G_PUBLISH; + $G_PUBLISH = new Publisher(); + $G_PUBLISH->AddContent( 'view', 'cases/missRequiredFields' ); + G::RenderPage( 'publish', 'blank' ); + exit( 0 ); + } + $G_PUBLISH = new Publisher(); $G_PUBLISH->AddContent("xmlform", "xmlform", "login/showInfo", "", $aMessage); G::RenderPage("publish", "blank");