$sContent .= "\$_SESSION['CURRENT_DYN_UID'] = '" . $sDYNAFORM . "';\n"; $sContent .= "\$G_PUBLISH = new Publisher;\n"; $sContent .= "\$G_PUBLISH->AddContent('dynaform', 'xmlform', '" . $sPRO_UID . '/' . $sDYNAFORM . "', '', array(), '" . $dynTitle . 'Post.php' . "');\n"; $sContent .= "G::RenderPage('publish', 'blank');"; file_put_contents($pathProcess . $dynTitle . '.php', $sContent); //creating the second file, the post file who receive the post form. $pluginTpl = PATH_CORE . 'templates' . PATH_SEP . 'processes' . PATH_SEP . 'webentryPost.tpl'; $template = new TemplatePower($pluginTpl); $template->prepare(); $template->assign('wsdlUrl', $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/services/wsdl2'); $template->assign('wsUploadUrl', $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/services/upload'); $template->assign('processUid', $sPRO_UID); $template->assign('dynaformUid', $sDYNAFORM); $template->assign('taskUid', $sTASKS); $template->assign('wsUser', $sWS_USER); $template->assign('wsPass', Bootstrap::hashPassword($sWS_PASS, '', true)); $template->assign('wsRoundRobin', $sWS_ROUNDROBIN); G::auditLog('WebEntry', 'Generate web entry with web services (' . $dynTitle . '.php) in process "' . $resultProcess['PRO_TITLE'] . '"'); if ($sWE_USR == "2") { $template->assign('USR_VAR', "\$cInfo = ws_getCaseInfo(\$caseId);\n\t \$USR_UID = \$cInfo->currentUsers->userId;"); } else { $template->assign('USR_VAR', '$USR_UID = -1;'); } $template->assign('dynaform', $dynTitle); $template->assign('timestamp', date('l jS \\of F Y h:i:s A')); $template->assign('ws', SYS_SYS); $template->assign('version', System::getVersion()); $fileName = $pathProcess . $dynTitle . 'Post.php'; file_put_contents($fileName, $template->getOutputContent()); //creating the third file, only if this wsClient.php file doesn't exist. $fileName = $pathProcess . 'wsClient.php';
/** * Update user * * @param string userUid : The user UID. * @param string userName : The username for the user. * @param string firstName : Optional parameter. The user's first name. * @param string lastName : Optional parameter. The user's last name. * @param string email : Optional parameter. The user's email address. * @param string dueDate : Optional parameter. The expiration date must be a string in the format "yyyy-mm-dd". * @param string status : Optional parameter. The user's status, such as "ACTIVE", "INACTIVE" or "VACATION". * @param string role : Optional parameter. The user's role, such * as "PROCESSMAKER_ADMIN" or "PROCESSMAKER_OPERATOR". * @param string password : Optional parameter. The user's password such as "Be@gle2" (It will be automatically * encrypted with an MD5 hash). * @return $result will return an object */ public function updateUser ($userUid, $userName, $firstName = null, $lastName = null, $email = null, $dueDate = null, $status = null, $role = null, $password = null) { try { global $RBAC; $RBAC->initRBAC(); if (empty( $userUid )) { $result = new wsResponse( 25, G::LoadTranslation( "ID_REQUIRED_FIELD" ) . " userUid" ); return $result; } if (empty( $userName )) { $result = new wsResponse( 25, G::LoadTranslation( "ID_USERNAME_REQUIRED" ) ); return $result; } if ($RBAC->verifyUserId( $userUid ) == 0) { $result = new wsResponse( 3, G::loadTranslation( "ID_USER_NOT_REGISTERED_SYSTEM" ) ); return $result; } $mktimeDueDate = 0; if (! empty( $dueDate )) { if (! preg_match( "/^(\d{4})-(\d{2})-(\d{2})$/", $dueDate, $arrayMatch )) { $result = new wsResponse( - 1, G::LoadTranslation( "ID_INVALID_DATA" ) . " $dueDate" ); return $result; } else { $mktimeDueDate = mktime( 0, 0, 0, intval( $arrayMatch[2] ), intval( $arrayMatch[3] ), intval( $arrayMatch[1] ) ); } } if (! empty( $status )) { if ($status != "ACTIVE" && $status != "INACTIVE" && $status != "VACATION") { $result = new wsResponse( - 1, G::LoadTranslation( "ID_INVALID_DATA" ) . " $status" ); return $result; } } $strRole = null; if (! empty( $role )) { $arrayRole = $RBAC->loadById( $role ); if (is_array( $arrayRole )) { $strRole = $arrayRole["ROL_CODE"]; } else { $strRole = $role; if ($RBAC->verifyByCode( $role ) == 0) { $data = array (); $data["ROLE"] = $role; $result = new wsResponse( 6, G::LoadTranslation( "ID_INVALID_ROLE", SYS_LANG, $data ) ); return $result; } } } if (! empty( $password ) && strlen( $password ) > 20) { $result = new wsResponse( - 1, G::LoadTranslation( "ID_PASSWORD_SURPRASES" ) ); return $result; } $criteria = new Criteria(); $criteria->addSelectColumn( UsersPeer::USR_UID ); $criteria->add( UsersPeer::USR_USERNAME, $userName ); $criteria->add( UsersPeer::USR_UID, $userUid, Criteria::NOT_EQUAL ); $rs = UsersPeer::doSelectRS( $criteria ); if ($rs->next()) { $data = array (); $data["USER_ID"] = $userName; $result = new wsResponse( 7, G::LoadTranslation( "ID_USERNAME_ALREADY_EXISTS", SYS_LANG, $data ) ); return $result; } //Set fields $arrayData = array (); $arrayData["USR_UID"] = $userUid; $arrayData["USR_USERNAME"] = $userName; if (! empty( $firstName )) { $arrayData["USR_FIRSTNAME"] = $firstName; } if (! empty( $lastName )) { $arrayData["USR_LASTNAME"] = $lastName; } if (! empty( $email )) { $arrayData["USR_EMAIL"] = $email; } if ($mktimeDueDate != 0) { $arrayData["USR_DUE_DATE"] = $mktimeDueDate; } $arrayData["USR_UPDATE_DATE"] = date( "Y-m-d H:i:s" ); if (! empty( $status )) { $arrayData["USR_STATUS"] = $status; } if ($strRole != null) { $arrayData["USR_ROLE"] = $strRole; } if (! empty( $password )) { $arrayData["USR_PASSWORD"] = Bootstrap::hashPassword( $password ); } //Update user if ($strRole != null) { $RBAC->updateUser( $arrayData, $strRole ); } else { $RBAC->updateUser( $arrayData ); } $user = new Users(); $user->update( $arrayData ); //Response //$res = new wsResponse(0, G::LoadTranslation("ID_OBJECT_UPDATE")); $res = new wsResponse( 0, G::LoadTranslation( "ID_UPDATED_SUCCESSFULLY" ) ); $result = array ("status_code" => $res->status_code,"message" => $res->message,"timestamp" => $res->timestamp ); return $result; } catch (Exception $e) { $result = new wsResponse(100, $e->getMessage()); return $result; } }
$form['USR_UID'] = $_GET['USR_UID']; } else { $form['USR_UID'] = ''; } if (isset($_FILES['form']['name']['USR_RESUME'])) { if ($_FILES['form']['tmp_name']['USR_RESUME'] != '') { $form['USR_RESUME'] = $_FILES['form']['name']['USR_RESUME']; } else { $form['USR_RESUME'] = ''; } } if (!isset($form['USR_NEW_PASS'])) { $form['USR_NEW_PASS'] = ''; } if ($form['USR_NEW_PASS'] != '') { $form['USR_PASSWORD'] = Bootstrap::hashPassword($form['USR_NEW_PASS']); } if (!isset($form['USR_CITY'])) { $form['USR_CITY'] = ''; } if (!isset($form['USR_LOCATION'])) { $form['USR_LOCATION'] = ''; } if (!isset($form['USR_AUTH_USER_DN'])) { $form['USR_AUTH_USER_DN'] = ''; } if ($form['USR_UID'] == '') { $aData['USR_USERNAME'] = $form['USR_USERNAME']; $aData['USR_PASSWORD'] = $form['USR_PASSWORD']; $aData['USR_FIRSTNAME'] = $form['USR_FIRSTNAME']; $aData['USR_LASTNAME'] = $form['USR_LASTNAME'];
protected function checkPassword($user, $password) { return $user['USR_PASSWORD'] == \Bootstrap::hashPassword($password); }
/** * Create/Update CaseScheduler * * @param string $caseSchedulerUid Unique id of CaseScheduler * @param string $projectUid Unique id of Project * @param string $userUidCreatorUpdater Unique id of creator/updater User * @param array $arrayData Data * @param array $arrayDataPlugin Data plugin * * return void */ public function createUpdate($caseSchedulerUid, $projectUid, $userUidCreatorUpdater, array $arrayData, array $arrayDataPlugin = array()) { try { //Set variables $flagInsert = $caseSchedulerUid == "" ? true : false; $option = $flagInsert ? "INS" : "UPD"; //Set data if ($flagInsert) { $caseSchedulerUid = \ProcessMaker\Util\Common::generateUID(); } foreach ($arrayData as $key => $value) { if (is_array($value)) { foreach ($value as $key2 => $value2) { $arrayData[$key][$key2] = trim($value2); } } else { $arrayData[$key] = trim($value); } } $arrayCaseSchedulerData = array(); $arrayCaseSchedulerData["SCH_UID"] = $caseSchedulerUid; $arrayCaseSchedulerData["SCH_NAME"] = $arrayData["SCH_NAME"]; $arrayCaseSchedulerData["PRO_UID"] = $projectUid; $arrayCaseSchedulerData["TAS_UID"] = $arrayData["TAS_UID"]; $arrayCaseSchedulerData["SCH_DEL_USER_UID"] = $arrayData["SCH_USER_UID"]; $arrayCaseSchedulerData["SCH_DEL_USER_NAME"] = $arrayData["SCH_USER_NAME"]; switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_DEL_USER_PASS"] = \Bootstrap::hashPassword($arrayData["SCH_USER_PASSWORD"]); $arrayCaseSchedulerData["SCH_STATE"] = "ACTIVE"; $arrayCaseSchedulerData["SCH_LAST_STATE"] = "CREATED"; $sDateTmp = $arrayData["SCH_START_DATE"] != "" ? $arrayData["SCH_START_DATE"] : date("Y-m-d"); break; case "UPD": if ($arrayData["SCH_USER_PASSWORD"] != "DefaultPM") { $arrayCaseSchedulerData["SCH_DEL_USER_PASS"] = \Bootstrap::hashPassword($arrayData["SCH_USER_PASSWORD"]); } $sDateTmp = $arrayData["SCH_START_DATE"]; break; } $caseSchedulerOption = (int) $arrayData["SCH_OPTION"]; $arrayCaseSchedulerData["USR_UID"] = $userUidCreatorUpdater; $arrayCaseSchedulerData["SCH_OPTION"] = $caseSchedulerOption; $arrayCaseSchedulerData["SCH_START_TIME"] = date("Y-m-d", strtotime($sDateTmp)) . " " . date("H:i:s", strtotime($arrayData["SCH_START_TIME"])); $arrayCaseSchedulerData["SCH_START_DATE"] = date("Y-m-d", strtotime($sDateTmp)) . " " . date("H:i:s", strtotime($arrayData["SCH_START_TIME"])); $sValue = ""; $sDaysPerformTask = ""; $sWeeks = ""; $sMonths = ""; switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_START_DAY"] = ""; $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = ""; $arrayCaseSchedulerData["SCH_REPEAT_UNTIL"] = ""; $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = ""; break; case "UPD": break; } switch ($caseSchedulerOption) { case 1: //Option 1 $sValue = $arrayData["SCH_DAYS_PERFORM_TASK"]; switch ($sValue) { case "1": $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = $arrayData["SCH_DAYS_PERFORM_TASK"] . "|1"; break; case "2": $arrayCaseSchedulerData["SCH_OPTION"] = "2"; $arrayCaseSchedulerData["SCH_EVERY_DAYS"] = "1"; $arrayCaseSchedulerData["SCH_WEEK_DAYS"] = "1|2|3|4|5|"; break; case "3": //Every [n] Days $sDaysPerformTask = $arrayData["SCH_DAYS_PERFORM_TASK_OPT_3"]; $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = $arrayData["SCH_DAYS_PERFORM_TASK"] . "|" . $arrayData["SCH_DAYS_PERFORM_TASK_OPT_3"]; break; } break; case 2: //If the option is zero, set by default 1 $arrayCaseSchedulerData["SCH_EVERY_DAYS"] = empty($arrayData["SCH_EVERY_DAYS"]) ? 1 : $arrayData["SCH_EVERY_DAYS"]; $sWeeks = ""; if (!empty($arrayData["SCH_WEEK_DAYS"])) { $aWeekDays = $arrayData["SCH_WEEK_DAYS"]; foreach ($aWeekDays as $value) { $sWeeks = $sWeeks . $value . "|"; } } if (!empty($arrayData["SCH_WEEK_DAYS_2"])) { $aWeekDays2 = $arrayData["SCH_WEEK_DAYS_2"]; foreach ($aWeekDays2 as $value) { $sWeeks = $sWeeks . $value . "|"; } } $sStartTime = $arrayData["SCH_START_TIME"]; $arrayCaseSchedulerData["SCH_WEEK_DAYS"] = $sWeeks; break; case 3: $nStartDay = $arrayData["SCH_START_DAY"]; if ($nStartDay == 1) { $arrayCaseSchedulerData["SCH_START_DAY"] = $nStartDay . "|" . $arrayData["SCH_START_DAY_OPT_1"]; } else { $arrayCaseSchedulerData["SCH_START_DAY"] = $nStartDay . "|" . $arrayData["SCH_START_DAY_OPT_2_WEEKS"] . "|" . $arrayData["SCH_START_DAY_OPT_2_DAYS_WEEK"]; } $sMonths = ""; if (!empty($arrayData["SCH_MONTHS"])) { $aMonths = $arrayData["SCH_MONTHS"]; foreach ($aMonths as $value) { $sMonths = $sMonths . $value . "|"; } } if (!empty($arrayData["SCH_MONTHS_2"])) { $aMonths2 = $arrayData["SCH_MONTHS_2"]; foreach ($aMonths2 as $value) { $sMonths = $sMonths . $value . "|"; } } if (!empty($arrayData["SCH_MONTHS_3"])) { $aMonths3 = $arrayData["SCH_MONTHS_3"]; foreach ($aMonths3 as $value) { $sMonths = $sMonths . $value . "|"; } } $arrayCaseSchedulerData["SCH_MONTHS"] = $sMonths; $sValue = $nStartDay; break; } $caseScheduler = new \CaseScheduler(); $recalculateDate = false; $recalculateTime = false; switch ($option) { case "INS": $recalculateDate = true; $recalculateTime = true; break; case "UPD": $arrayDataAux = $caseScheduler->load($caseSchedulerUid); $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayData["SCH_END_DATE"] != "" ? $arrayData["SCH_END_DATE"] : null; //If the start date has changed then recalculate the next run time $recalculateDate = $arrayData["SCH_START_DATE"] != $arrayData["PREV_SCH_START_DATE"] ? true : false; $recalculateTime = date("H:i:s", strtotime($arrayData["SCH_START_TIME"])) != date("H:i:s", strtotime($arrayData["PREV_SCH_START_TIME"])) ? true : false; break; } switch ($caseSchedulerOption) { case 4: //$arrayCaseSchedulerData["SCH_END_DATE"] = $arrayCaseSchedulerData["SCH_START_TIME"]; break; case 5: switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_START_TIME"] = time(); $arrayCaseSchedulerData["SCH_START_DATE"] = $arrayCaseSchedulerData["SCH_START_TIME"]; break; case "UPD": break; } $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = $arrayData["SCH_REPEAT_EVERY"]; break; } switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = date("Y-m-d") . " " . ($caseSchedulerOption != 5 ? $arrayData["SCH_START_TIME"] . ":00" : date("H:i:s")); if ($arrayData["SCH_END_DATE"] != "") { $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayData["SCH_END_DATE"]; } break; case "UPD": break; } //if (!empty($arrayData["SCH_REPEAT_TASK_CHK"])) { // if ($arrayData["SCH_REPEAT_EVERY_OPT"] . "" == "2") { // $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = ((int)($arrayData["SCH_REPEAT_EVERY"])) * 60; // } else { // $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = (int)($arrayData["SCH_REPEAT_EVERY"]); // } //} //Create/Update $caseSchedulerAux = new \CaseScheduler(); $caseSchedulerUid = ""; $arrayCaseSchedulerDataOld = array(); switch ($option) { case "INS": if (isset($arrayData["CASE_SH_PLUGIN_UID"]) && $arrayData["CASE_SH_PLUGIN_UID"] != "") { $arrayCaseSchedulerData["CASE_SH_PLUGIN_UID"] = $arrayData["CASE_SH_PLUGIN_UID"]; } $result = $caseScheduler->create($arrayCaseSchedulerData); $caseSchedulerUid = $caseScheduler->getSchUid(); $arrayCaseSchedulerDataOld = $caseSchedulerAux->load($caseSchedulerUid); break; case "UPD": $caseSchedulerUid = $caseScheduler->getSchUid(); $arrayCaseSchedulerDataOld = $caseSchedulerAux->load($caseSchedulerUid); $result = $caseScheduler->update($arrayCaseSchedulerData); break; } //Update the SCH_TIME_NEXT_RUN field $caseScheduler = new \CaseScheduler(); $arrayCaseSchedulerData = $caseScheduler->load($caseSchedulerUid); $flagUpdateTimeNextRun = false; switch ((int) $arrayCaseSchedulerData["SCH_OPTION"]) { case 1: //Daily $flagUpdateTimeNextRun = $recalculateDate || $recalculateTime; break; case 2: //Weekly $flagUpdateTimeNextRun = $recalculateDate || $recalculateTime || $arrayCaseSchedulerData["SCH_WEEK_DAYS"] != $arrayCaseSchedulerDataOld["SCH_WEEK_DAYS"]; break; case 3: //Monthly $flagUpdateTimeNextRun = $recalculateDate || $recalculateTime || $arrayCaseSchedulerData["SCH_START_DAY"] != $arrayCaseSchedulerDataOld["SCH_START_DAY"] || $arrayCaseSchedulerData["SCH_MONTHS"] != $arrayCaseSchedulerDataOld["SCH_MONTHS"]; break; case 4: //One time only $flagUpdateTimeNextRun = $recalculateTime || $arrayCaseSchedulerData["SCH_START_TIME"] != $arrayCaseSchedulerDataOld["SCH_START_TIME"]; break; case 5: //Every $flagUpdateTimeNextRun = $option == "INS" || $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] != $arrayCaseSchedulerDataOld["SCH_REPEAT_EVERY"]; break; } if ($flagUpdateTimeNextRun) { $caseSchedulerTimeNextRunNew = $caseScheduler->getTimeNextRunByDate($arrayCaseSchedulerData, date("Y-m-d H:i:s")); } //Plugin if (isset($arrayData["CASE_SH_PLUGIN_UID"]) && $arrayData["CASE_SH_PLUGIN_UID"] != "") { $oPluginRegistry =& \PMPluginRegistry::getSingleton(); $activePluginsForCaseScheduler = $oPluginRegistry->getCaseSchedulerPlugins(); $params = explode("--", $arrayData["CASE_SH_PLUGIN_UID"]); foreach ($activePluginsForCaseScheduler as $key => $caseSchedulerPluginDetail) { if ($caseSchedulerPluginDetail->sNamespace == $params[0] && $caseSchedulerPluginDetail->sActionId == $params[1]) { $caseSchedulerSelected = $caseSchedulerPluginDetail; } } if (isset($caseSchedulerSelected) && is_object($caseSchedulerSelected)) { //Save the form $arrayDataPlugin["SCH_UID"] = $arrayCaseSchedulerData["SCH_UID"]; $oPluginRegistry->executeMethod($caseSchedulerPluginDetail->sNamespace, $caseSchedulerPluginDetail->sActionSave, $arrayDataPlugin); } } } catch (\Exception $e) { throw $e; } }
/** * Update User * * @param string $userUid Unique id of User * @param array $arrayData Data * @param string $userUidLogged Unique id of User logged * * return array Return data of the User updated */ public function update($userUid, array $arrayData, $userUidLogged) { try { \G::LoadSystem("rbac"); //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $validator = new \ProcessMaker\BusinessModel\Validator(); $validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData"); //Set data $arrayData = array_change_key_case($arrayData, CASE_UPPER); $arrayDataBackup = $arrayData; //Verify data $this->throwExceptionIfNotExistsUser($userUid, $this->arrayFieldNameForException["usrUid"]); $this->throwExceptionIfDataIsInvalid($userUid, $arrayData); //Permission Admin $countPermission = 0; $permission = $this->loadUserRolePermission("PROCESSMAKER", $userUidLogged); foreach ($permission as $key => $value) { if ($value["PER_CODE"] == "PM_USERS") { $countPermission = $countPermission + 1; } } if ($countPermission != 1) { throw new \Exception(\G::LoadTranslation("ID_USER_CAN_NOT_UPDATE", array($userUidLogged))); } //Update $cnn = \Propel::getConnection("workflow"); try { $rbac = new \RBAC(); $user = new \Users(); $rbac->initRBAC(); if (isset($arrayData["USR_NEW_PASS"])) { $arrayData["USR_PASSWORD"] = \Bootstrap::hashPassword($arrayData["USR_NEW_PASS"]); } $arrayData["USR_UID"] = $userUid; $arrayData["USR_LOGGED_NEXT_TIME"] = (isset($arrayData["USR_LOGGED_NEXT_TIME"]))? $arrayData["USR_LOGGED_NEXT_TIME"] : 0; $arrayData["USR_UPDATE_DATE"] = date("Y-m-d H:i:s"); $flagUserLoggedNextTime = false; if (isset($arrayData["USR_PASSWORD"])) { if ($arrayData["USR_PASSWORD"] != "") { //require_once 'classes/model/UsersProperties.php'; $userProperty = new \UsersProperties(); $aUserProperty = $userProperty->loadOrCreateIfNotExists($userUid, array("USR_PASSWORD_HISTORY" => serialize(array(\Bootstrap::hashPassword($arrayData["USR_PASSWORD"]))))); $memKey = "rbacSession" . session_id(); $memcache = & \PMmemcached::getSingleton(defined("SYS_SYS")? SYS_SYS : ""); if (($rbac->aUserInfo = $memcache->get($memKey)) == false) { $rbac->loadUserRolePermission("PROCESSMAKER", $userUidLogged); $memcache->set($memKey, $rbac->aUserInfo, \PMmemcached::EIGHT_HOURS); } if ($rbac->aUserInfo["PROCESSMAKER"]["ROLE"]["ROL_CODE"] == "PROCESSMAKER_ADMIN") { $aUserProperty["USR_LAST_UPDATE_DATE"] = date("Y-m-d H:i:s"); $aUserProperty["USR_LOGGED_NEXT_TIME"] = $arrayData["USR_LOGGED_NEXT_TIME"]; $userProperty->update($aUserProperty); } $aHistory = unserialize($aUserProperty["USR_PASSWORD_HISTORY"]); if (!is_array($aHistory)) { $aHistory = array(); } if (!defined("PPP_PASSWORD_HISTORY")) { define("PPP_PASSWORD_HISTORY", 0); } if (PPP_PASSWORD_HISTORY > 0) { //it's looking a password igual into aHistory array that was send for post in md5 way $c = 0; $sw = 1; while (count($aHistory) >= 1 && count($aHistory) > $c && $sw) { if (strcmp(trim($aHistory[$c]), trim($arrayData['USR_PASSWORD'])) == 0) { $sw = 0; } $c++; } if ($sw == 0) { $sDescription = G::LoadTranslation("ID_POLICY_ALERT") . ":\n\n"; $sDescription = $sDescription . " - " . G::LoadTranslation("PASSWORD_HISTORY") . ": " . PPP_PASSWORD_HISTORY . "\n"; $sDescription = $sDescription . "\n" . G::LoadTranslation("ID_PLEASE_CHANGE_PASSWORD_POLICY") . ""; throw new \Exception($this->arrayFieldNameForException["usrNewPass"] . ": " . $sDescription); } if (count($aHistory) >= PPP_PASSWORD_HISTORY) { $sLastPassw = array_shift($aHistory); } $aHistory[] = $arrayData["USR_PASSWORD"]; } $aUserProperty["USR_LAST_UPDATE_DATE"] = date("Y-m-d H:i:s"); $aUserProperty["USR_LOGGED_NEXT_TIME"] = $arrayData["USR_LOGGED_NEXT_TIME"]; $aUserProperty["USR_PASSWORD_HISTORY"] = serialize($aHistory); $userProperty->update($aUserProperty); } else { $flagUserLoggedNextTime = true; } } else { $flagUserLoggedNextTime = true; } if ($flagUserLoggedNextTime) { //require_once "classes/model/Users.php"; $oUser = new \Users(); $aUser = $oUser->load($userUid); //require_once "classes/model/UsersProperties.php"; $oUserProperty = new \UsersProperties(); $aUserProperty = $oUserProperty->loadOrCreateIfNotExists($userUid, array("USR_PASSWORD_HISTORY" => serialize(array($aUser["USR_PASSWORD"])))); $aUserProperty["USR_LOGGED_NEXT_TIME"] = $arrayData["USR_LOGGED_NEXT_TIME"]; $oUserProperty->update($aUserProperty); } //Update in rbac if (isset($arrayData["USR_ROLE"])) { $rbac->updateUser($arrayData, $arrayData["USR_ROLE"]); } else { $rbac->updateUser($arrayData); } //Update in workflow $result = $user->update($arrayData); //Save Calendar assigment if (isset($arrayData["USR_CALENDAR"])) { //Save Calendar ID for this user \G::LoadClass("calendar"); $calendar = new \Calendar(); $calendar->assignCalendarTo($userUid, $arrayData["USR_CALENDAR"], "USER"); } //Return $arrayData = $arrayDataBackup; if (!$this->formatFieldNameInUppercase) { $arrayData = array_change_key_case($arrayData, CASE_LOWER); } return $arrayData; } catch (\Exception $e) { $cnn->rollback(); throw $e; } } catch (\Exception $e) { throw $e; } }
/** * Create/Update CaseScheduler * * @param string $caseSchedulerUid Unique id of CaseScheduler * @param string $projectUid Unique id of Project * @param string $userUidCreatorUpdater Unique id of creator/updater User * @param array $arrayData Data * @param array $arrayDataPlugin Data plugin * * return void */ public function createUpdate($caseSchedulerUid, $projectUid, $userUidCreatorUpdater, array $arrayData, array $arrayDataPlugin = array()) { try { //Set variables $flagInsert = ($caseSchedulerUid == "")? true : false; $option = ($flagInsert)? "INS" : "UPD"; //Set data if ($flagInsert) { $caseSchedulerUid = \ProcessMaker\Util\Common::generateUID(); } foreach ($arrayData as $key => $value) { if (is_array($value)) { foreach ($value as $key2 => $value2) { $arrayData[$key][$key2] = trim($value2); } } else { $arrayData[$key] = trim($value); } } $arrayCaseSchedulerData = array(); $arrayCaseSchedulerData["SCH_UID"] = $caseSchedulerUid; $arrayCaseSchedulerData["SCH_NAME"] = $arrayData["SCH_NAME"]; $arrayCaseSchedulerData["PRO_UID"] = $projectUid; $arrayCaseSchedulerData["TAS_UID"] = $arrayData["TAS_UID"]; $arrayCaseSchedulerData["SCH_DEL_USER_UID"] = $arrayData["SCH_USER_UID"]; $arrayCaseSchedulerData["SCH_DEL_USER_NAME"] = $arrayData["SCH_USER_NAME"]; switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_DEL_USER_PASS"] = \Bootstrap::hashPassword($arrayData["SCH_USER_PASSWORD"]); $arrayCaseSchedulerData["SCH_STATE"] = "ACTIVE"; $arrayCaseSchedulerData["SCH_LAST_STATE"] = "CREATED"; $sDateTmp = ($arrayData["SCH_START_DATE"] != "")? $arrayData["SCH_START_DATE"] : date("Y-m-d"); break; case "UPD": if ($arrayData["SCH_USER_PASSWORD"] != "DefaultPM") { $arrayCaseSchedulerData["SCH_DEL_USER_PASS"] = \Bootstrap::hashPassword($arrayData["SCH_USER_PASSWORD"]); } $sDateTmp = $arrayData["SCH_START_DATE"]; break; } $caseSchedulerOption = (int)($arrayData["SCH_OPTION"]); $arrayCaseSchedulerData["USR_UID"] = $userUidCreatorUpdater; $arrayCaseSchedulerData["SCH_OPTION"] = $caseSchedulerOption; $arrayCaseSchedulerData["SCH_START_TIME"] = date("Y-m-d", strtotime($sDateTmp)) . " " . date("H:i:s", strtotime($arrayData["SCH_START_TIME"])); $arrayCaseSchedulerData["SCH_START_DATE"] = date("Y-m-d", strtotime($sDateTmp)) . " " . date("H:i:s", strtotime($arrayData["SCH_START_TIME"])); $sValue = ""; $sDaysPerformTask = ""; $sWeeks = ""; $sMonths = ""; $sStartDay = ""; switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_START_DAY"] = ""; $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = ""; $arrayCaseSchedulerData["SCH_REPEAT_UNTIL"] = ""; $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = ""; break; case "UPD": break; } switch ($caseSchedulerOption) { case 1: //Option 1 $sValue = $arrayData["SCH_DAYS_PERFORM_TASK"]; switch ($sValue) { case "1": $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = $arrayData["SCH_DAYS_PERFORM_TASK"] . "|1"; break; case "2": $arrayCaseSchedulerData["SCH_OPTION"] = "2"; $arrayCaseSchedulerData["SCH_EVERY_DAYS"] = "1"; $arrayCaseSchedulerData["SCH_WEEK_DAYS"] = "1|2|3|4|5|"; break; case "3": //Every [n] Days $sDaysPerformTask = $arrayData["SCH_DAYS_PERFORM_TASK_OPT_3"]; $arrayCaseSchedulerData["SCH_DAYS_PERFORM_TASK"] = $arrayData["SCH_DAYS_PERFORM_TASK"] . "|" . $arrayData["SCH_DAYS_PERFORM_TASK_OPT_3"]; break; } break; case 2: //If the option is zero, set by default 1 $arrayCaseSchedulerData["SCH_EVERY_DAYS"] = (empty($arrayData["SCH_EVERY_DAYS"]))? 1 : $arrayData["SCH_EVERY_DAYS"]; $sWeeks = ""; if (!empty($arrayData["SCH_WEEK_DAYS"])) { $aWeekDays = $arrayData["SCH_WEEK_DAYS"]; foreach ($aWeekDays as $value) { $sWeeks = $sWeeks . $value . "|"; } } if (!empty($arrayData["SCH_WEEK_DAYS_2"])) { $aWeekDays2 = $arrayData["SCH_WEEK_DAYS_2"]; foreach ($aWeekDays2 as $value) { $sWeeks = $sWeeks . $value . "|"; } } $sStartTime = $arrayData["SCH_START_TIME"]; $arrayCaseSchedulerData["SCH_WEEK_DAYS"] = $sWeeks; break; case 3: $nStartDay = $arrayData["SCH_START_DAY"]; if ($nStartDay == 1) { $arrayCaseSchedulerData["SCH_START_DAY"] = $nStartDay . "|" . $arrayData["SCH_START_DAY_OPT_1"]; } else { $arrayCaseSchedulerData["SCH_START_DAY"] = $nStartDay . "|" . $arrayData["SCH_START_DAY_OPT_2_WEEKS"] . "|" . $arrayData["SCH_START_DAY_OPT_2_DAYS_WEEK"]; } $sMonths = ""; if (!empty($arrayData["SCH_MONTHS"])) { $aMonths = $arrayData["SCH_MONTHS"]; foreach ($aMonths as $value) { $sMonths = $sMonths . $value . "|"; } } if (!empty($arrayData["SCH_MONTHS_2"])) { $aMonths2 = $arrayData["SCH_MONTHS_2"]; foreach ($aMonths2 as $value) { $sMonths = $sMonths . $value . "|"; } } if (!empty($arrayData["SCH_MONTHS_3"])) { $aMonths3 = $arrayData["SCH_MONTHS_3"]; foreach ($aMonths3 as $value) { $sMonths = $sMonths . $value . "|"; } } $arrayCaseSchedulerData["SCH_MONTHS"] = $sMonths; $sStartDay = $arrayCaseSchedulerData["SCH_START_DAY"]; $sValue = $nStartDay; break; } $caseScheduler = new \CaseScheduler(); switch ($option) { case "INS": break; case "UPD": $arrayDataAux = $caseScheduler->load($caseSchedulerUid); if ($arrayData["SCH_END_DATE"] != "") { $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayData["SCH_END_DATE"]; } //If the start date has changed then recalculate the next run time $recalculateDate = ($arrayData["SCH_START_DATE"] == $arrayData["PREV_SCH_START_DATE"])? false : true; $recalculateTime = (date("H:i:s", strtotime($arrayData["SCH_START_TIME"])) == date("H:i:s", strtotime($arrayData["PREV_SCH_START_TIME"])))? false : true; break; } $nActualTime = $arrayData["SCH_START_TIME"]; if ($caseSchedulerOption != 1 && $caseSchedulerOption != 4 && $caseSchedulerOption != 5) { if ($sStartDay == "") { $sStartDay = date("Y-m-d"); } $dCurrentDay = (int)(date("d")); $dCurrentMonth = (int)(date("m")); $aStartDay = explode("|", $arrayCaseSchedulerData["SCH_START_DAY"]); if ($caseSchedulerOption == 3 && $aStartDay[0] == "1") { $monthsArray = explode("|", $sMonths); foreach ($monthsArray as $row) { switch ($option) { case "INS": if ((int)($row) == $dCurrentMonth && $dCurrentDay <= (int)($aStartDay[1])) { $startTime = $arrayData["SCH_START_TIME"] . ":00"; $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = date("Y") . "-" . $row . "-" . $aStartDay[1] . " " . $startTime; break; } else { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->updateNextRun($caseSchedulerOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp, false); } break; case "UPD": if ($dCurrentMonth == $row && $dCurrentDay < $aStartDay[1]) { $startTime = $arrayData["SCH_START_TIME"] . ":00"; if ($recalculateDate) { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = date("Y") . "-" . $row . "-" . $aStartDay[1] . " " . $startTime; } else { if ($recalculateTime) { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->getSchTimeNextRun("Y-m-d") . " " . $arrayData["SCH_START_TIME"] . ":00"; } } break; } else { if ($recalculateDate) { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->updateNextRun($caseSchedulerOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp, false); } else { if ($recalculateTime) { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->getSchTimeNextRun("Y-m-d") . " " . $arrayData["SCH_START_TIME"] . ":00"; } } } break; } } } else { switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->updateNextRun($caseSchedulerOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp, false); break; case "UPD": if ($recalculateDate) { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->updateNextRun($caseSchedulerOption, $sValue, $nActualTime, $sDaysPerformTask, $sWeeks, $sStartDay, $sMonths, $sDateTmp, false); } else { if ($recalculateTime) { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->getSchTimeNextRun("Y-m-d") . " " . $arrayData["SCH_START_TIME"] . ":00"; } } break; } } } else { if ($caseSchedulerOption == 4) { $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayCaseSchedulerData["SCH_START_TIME"]; } switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $arrayCaseSchedulerData["SCH_START_TIME"]; break; case "UPD": if ($recalculateDate) { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $arrayCaseSchedulerData["SCH_START_TIME"]; } else { if ($recalculateTime) { $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = $caseScheduler->getSchTimeNextRun("Y-m-d") . " " . $arrayData["SCH_START_TIME"] . ":00"; } } break; } if ($caseSchedulerOption == 5) { switch ($option) { case "INS": $arrayCaseSchedulerData["SCH_START_TIME"] = time(); $arrayCaseSchedulerData["SCH_START_DATE"] = $arrayCaseSchedulerData["SCH_START_TIME"]; $date = $arrayCaseSchedulerData["SCH_START_TIME"]; break; case "UPD": $date = $caseScheduler->getSchLastRunTime(); if (is_null($date)) { $date = $caseScheduler->getSchStartTime(); } $date = strtotime($date); break; } $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = $arrayData["SCH_REPEAT_EVERY"]; $arrayCaseSchedulerData["SCH_TIME_NEXT_RUN"] = date("Y-m-d H:i", $date + (((int)($arrayData["SCH_REPEAT_EVERY"])) * 60 * 60)); } } switch ($option) { case "INS": if ($arrayData["SCH_END_DATE"] != "") { $arrayCaseSchedulerData["SCH_END_DATE"] = $arrayData["SCH_END_DATE"]; } break; case "UPD": break; } if (!empty($arrayData["SCH_REPEAT_TASK_CHK"])) { if ($arrayData["SCH_REPEAT_EVERY_OPT"] . "" == "2") { $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = ((int)($arrayData["SCH_REPEAT_EVERY"])) * 60; } else { $arrayCaseSchedulerData["SCH_REPEAT_EVERY"] = (int)($arrayData["SCH_REPEAT_EVERY"]); } } //Create/Update switch ($option) { case "INS": if (isset($arrayData["CASE_SH_PLUGIN_UID"]) && $arrayData["CASE_SH_PLUGIN_UID"] != "") { $arrayCaseSchedulerData["CASE_SH_PLUGIN_UID"] = $arrayData["CASE_SH_PLUGIN_UID"]; } $caseScheduler->create($arrayCaseSchedulerData); break; case "UPD": $caseScheduler->update($arrayCaseSchedulerData); break; } //Plugin if (isset($arrayData["CASE_SH_PLUGIN_UID"]) && $arrayData["CASE_SH_PLUGIN_UID"] != "") { $oPluginRegistry = &\PMPluginRegistry::getSingleton(); $activePluginsForCaseScheduler = $oPluginRegistry->getCaseSchedulerPlugins(); $params = explode("--", $arrayData["CASE_SH_PLUGIN_UID"]); foreach ($activePluginsForCaseScheduler as $key => $caseSchedulerPluginDetail) { if ($caseSchedulerPluginDetail->sNamespace == $params[0] && $caseSchedulerPluginDetail->sActionId == $params[1]) { $caseSchedulerSelected = $caseSchedulerPluginDetail; } } if (isset($caseSchedulerSelected) && is_object($caseSchedulerSelected)) { //Save the form $arrayDataPlugin["SCH_UID"] = $arrayCaseSchedulerData["SCH_UID"]; $oPluginRegistry->executeMethod($caseSchedulerPluginDetail->sNamespace, $caseSchedulerPluginDetail->sActionSave, $arrayDataPlugin); } } } catch (\Exception $e) { throw $e; } }
public function verifyHashPassword($pass, $userPass) { $passwordHashConfig = Bootstrap::getPasswordHashConfig(); $hashTypeCurrent = $passwordHashConfig['current']; $hashTypePrevious = $passwordHashConfig['previous']; if (Bootstrap::hashPassword($pass, $hashTypeCurrent) == $userPass || $pass === $hashTypeCurrent . ':' . $userPass) { return true; } if (Bootstrap::hashPassword($pass, $hashTypePrevious) == $userPass || $pass === $hashTypePrevious . ':' . $userPass) { return true; } return false; }
<?php require_once 'classes/model/Users.php'; $oUser = new Users(); $aUser = $oUser->load($_SESSION['USER_LOGGED']); global $RBAC; $aData['USR_UID'] = $aUser['USR_UID']; $aData['USR_USERNAME'] = $aUser['USR_USERNAME']; $aData['USR_PASSWORD'] = Bootstrap::hashPassword($_POST['form']['USR_PASSWORD']); $aData['USR_FIRSTNAME'] = $aUser['USR_FIRSTNAME']; $aData['USR_LASTNAME'] = $aUser['USR_LASTNAME']; $aData['USR_EMAIL'] = $aUser['USR_EMAIL']; $aData['USR_DUE_DATE'] = $aUser['USR_DUE_DATE']; $aData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); $RBAC->updateUser($aData, $aUser['USR_ROLE']); $aData['USR_COUNTRY'] = $aUser['USR_COUNTRY']; $aData['USR_CITY'] = $aUser['USR_CITY']; $aData['USR_LOCATION'] = $aUser['USR_LOCATION']; $aData['USR_ADDRESS'] = $aUser['USR_ADDRESS']; $aData['USR_PHONE'] = $aUser['USR_PHONE']; $aData['USR_ZIP_CODE'] = $aUser['USR_ZIP_CODE']; $aData['USR_POSITION'] = $aUser['USR_POSITION']; $oUser->update($aData); require_once 'classes/model/UsersProperties.php'; $oUserProperty = new UsersProperties(); $aUserProperty = $oUserProperty->load($_SESSION['USER_LOGGED']); $aHistory = unserialize($aUserProperty['USR_PASSWORD_HISTORY']); if (!is_array($aHistory)) { $aHistory = array(); } if (!defined('PPP_PASSWORD_HISTORY')) {
} */ require_once 'classes/model/UsersProperties.php'; $oUserProperty = new UsersProperties(); $aUserProperty = $oUserProperty->loadOrCreateIfNotExists($aData['USR_UID'], array('USR_PASSWORD_HISTORY' => serialize(array(Bootstrap::hashPassword($aData['USR_PASSWORD']))))); $aUserProperty['USR_LOGGED_NEXT_TIME'] = $form['USR_LOGGED_NEXT_TIME']; $oUserProperty->update($aUserProperty); } else { $aData['USR_UID'] = $form['USR_UID']; $aData['USR_USERNAME'] = $form['USR_USERNAME']; if (isset($form['USR_PASSWORD'])) { if ($form['USR_PASSWORD'] != '') { $aData['USR_PASSWORD'] = $form['USR_PASSWORD']; require_once 'classes/model/UsersProperties.php'; $oUserProperty = new UsersProperties(); $aUserProperty = $oUserProperty->loadOrCreateIfNotExists($form['USR_UID'], array('USR_PASSWORD_HISTORY' => serialize(array(Bootstrap::hashPassword($form['USR_PASSWORD']))))); $memKey = 'rbacSession' . session_id(); $memcache =& PMmemcached::getSingleton(defined('SYS_SYS') ? SYS_SYS : ''); if (($RBAC->aUserInfo = $memcache->get($memKey)) === false) { $RBAC->loadUserRolePermission($RBAC->sSystem, $_SESSION['USER_LOGGED']); $memcache->set($memKey, $RBAC->aUserInfo, PMmemcached::EIGHT_HOURS); } if ($RBAC->aUserInfo['PROCESSMAKER']['ROLE']['ROL_CODE'] == 'PROCESSMAKER_ADMIN') { $aUserProperty['USR_LAST_UPDATE_DATE'] = date('Y-m-d H:i:s'); $aUserProperty['USR_LOGGED_NEXT_TIME'] = $form['USR_LOGGED_NEXT_TIME']; $oUserProperty->update($aUserProperty); } $aErrors = $oUserProperty->validatePassword($form['USR_NEW_PASS'], $aUserProperty['USR_LAST_UPDATE_DATE'], 0); if (count($aErrors) > 0) { $sDescription = G::LoadTranslation('ID_POLICY_ALERT') . ':,'; foreach ($aErrors as $sError) {
require_once 'classes/model/Users.php'; G::LoadClass("system"); $rbacUser = new RbacUsers(); $user = new Users(); $data['USR_USERNAME'] = strip_tags($data['USR_USERNAME']); $userData = $rbacUser->getByUsername($data['USR_USERNAME']); if ($userData['USR_EMAIL'] != '' && $userData['USR_EMAIL'] === $data['USR_EMAIL'] && ($userData['USR_AUTH_TYPE'] === '' || $userData['USR_AUTH_TYPE'] == 'MYSQL')) { $aSetup = System::getEmailConfiguration(); if (count($aSetup) == 0 || !isset($aSetup['MESS_ENGINE'])) { G::SendTemporalMessage('ID_EMAIL_ENGINE_IS_NOT_ENABLED', "warning"); G::header('location: forgotPassword'); die; } $newPass = G::generate_password(); $aData['USR_UID'] = $userData['USR_UID']; $aData['USR_PASSWORD'] = Bootstrap::hashPassword($newPass); /* **Save after sending the mail $rbacUser->update($aData); $user->update($aData); */ $sFrom = G::buildFrom($aSetup, $sFrom); $sSubject = G::LoadTranslation('ID_RESET_PASSWORD') . ' - ProcessMaker'; $msg = '<h3>ProcessMaker Forgot password Service</h3>'; $msg .= '<p>' . G::LoadTranslation('ID_YOUR_USERMANE_IS') . ' : <strong>' . $userData['USR_USERNAME'] . '</strong></p>'; $msg .= '<p>' . G::LoadTranslation('ID_YOUR_PASSWORD_IS') . ' : <strong>' . $newPass . '</strong></p>'; switch ($aSetup['MESS_ENGINE']) { case 'MAIL': $engine = G::LoadTranslation('ID_MESS_ENGINE_TYPE_1'); break; case 'PHPMAILER': $engine = G::LoadTranslation('ID_MESS_ENGINE_TYPE_2');
public function forgotPassword($httpData) { $this->setResponseType('json'); global $RBAC; require_once PATH_RBAC . "model/RbacUsers.php"; require_once 'classes/model/Users.php'; G::LoadClass("system"); $rbacUser = new RbacUsers(); $user = new Users(); try { $userData = $rbacUser->getByUsername($httpData->username); if (!$userData) { $msg = G::LoadTranslation('ID_USER') . ' <b>' . $httpData->username . '</b> ' . G::LoadTranslation('ID_IS_NOT_REGISTERED'); throw new Exception($msg); } if (trim($userData['USR_EMAIL']) != trim($httpData->email)) { $msg = G::LoadTranslation('ID_EMAIL_DOES_NOT_MATCH_FOR_USER') . ' <b>' . $httpData->username . '</b>'; throw new Exception($msg); } $newPass = G::generate_password(); $aData['USR_UID'] = $userData['USR_UID']; $aData['USR_PASSWORD'] = Bootstrap::hashPassword($newPass); $rbacUser->update($aData); $user->update($aData); $subject = G::loadTranslation('ID_PROCESSMAKER_FORGOT_PASSWORD_SERVICE'); $template = new TemplatePower(PATH_TPL . 'main/forgotPassword.tpl'); $template->prepare(); $template->assign('server', $_SERVER['SERVER_NAME']); $template->assign('serviceMsg', G::loadTranslation('ID_PROCESSMAKER_FORGOT_PASSWORD_SERVICE')); $template->assign('content', G::loadTranslation('ID_PASSWORD_CHANGED_SUCCESSFULLY')); $template->assign('passwd', $newPass); $template->assign('poweredBy', G::loadTranslation('ID_PROCESSMAKER_SLOGAN1')); $template->assign('versionLabel', G::loadTranslation('ID_VERSION')); $template->assign('version', System::getVersion()); $template->assign('visit', G::loadTranslation('ID_VISIT')); $template->assign('footer', ''); $body = $template->getOutputContent(); G::sendMail('', 'ProcessMaker Service', $httpData->email, $subject, $body); $result->success = true; $result->message = G::LoadTranslation('ID_NEW_PASSWORD_SENT'); } catch (Exception $e) { $result->success = false; $result->message = $e->getMessage(); } return $result; }
break; } */ require_once 'classes/model/CaseScheduler.php'; if (empty($_POST)) { die('The information sended is empty!'); } $aData['SCH_UID'] = $_POST['form']['SCH_UID']; $aData['SCH_NAME'] = $_POST['form']['SCH_NAME']; $aData['PRO_UID'] = $_POST['form']['PRO_UID']; $aData['TAS_UID'] = $_POST['form']['TAS_UID']; $oCaseScheduler = new CaseScheduler(); $oCaseScheduler->Load($aData['SCH_UID']); $aData['SCH_DEL_USER_NAME'] = $_POST['form']['SCH_USER_NAME']; if ($_POST['form']['SCH_USER_PASSWORD'] != 'DefaultPM') { $aData['SCH_DEL_USER_PASS'] = Bootstrap::hashPassword($_POST['form']['SCH_USER_PASSWORD']); } $aData['SCH_DEL_USER_UID'] = $_POST['form']['SCH_USER_UID']; // $aData['SCH_TIME_NEXT_RUN'] = time(); //$aData['SCH_LAST_RUN_TIME'] = time(); // $aData['SCH_STATE'] = 'ACTIVE'; // $aData['SCH_LAST_STATE'] = 'ACTIVE'; $aData['USR_UID'] = $_SESSION['USER_LOGGED']; $sOption = $_POST['form']['SCH_OPTION']; $aData['SCH_OPTION'] = $sOption; $sDateTmp = $_POST['form']['SCH_START_DATE']; $sTimeTmp = $_POST['form']['SCH_START_TIME']; $aData['SCH_START_TIME'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); $aData['SCH_START_DATE'] = date('Y-m-d', strtotime($sDateTmp)) . ' ' . date('H:i:s', strtotime($sTimeTmp)); $previousStartTime = date('Y-m-d', strtotime($_POST['form']['PREV_SCH_START_DATE'])) . ' ' . date('H:i:s', strtotime($_POST['form']['PREV_SCH_START_TIME'])); $previousStartDate = date('Y-m-d', strtotime($_POST['form']['PREV_SCH_START_DATE'])) . ' ' . date('H:i:s', strtotime($_POST['form']['PREV_SCH_START_TIME']));
/** * User Login * * @param string $username Username * @param string $password Password * * return object Return object $response * $response->status_code, 0 when User has been authenticated, any number otherwise * $response->message, message */ public function userLogin($username, $password) { try { $http = \G::is_https() ? "https://" : "http://"; $client = new \SoapClient($http . $_SERVER["HTTP_HOST"] . "/sys" . SYS_SYS . "/" . SYS_LANG . "/" . SYS_SKIN . "/services/wsdl2"); $params = array("userid" => $username, "password" => Bootstrap::hashPassword($password, '', true)); $response = $client->login($params); return $response; } catch (\Exception $e) { throw $e; } }
public function save($params) { require_once 'classes/model/Event.php'; global $G_FORM; $sPRO_UID = $params->pro_uid; $sEVN_UID = $params->evn_uid; $sDYNAFORM = $params->initDyna; $sWS_USER = trim($params->username); $sWS_PASS = trim($params->password); $sWS_ROUNDROBIN = ''; $sWE_USR = ''; $xDYNA = $params->dynaform; if ($xDYNA != '') { $pro_uid = $params->pro_uid; $filename = $xDYNA; $filename = $filename . '.php'; unlink(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $pro_uid . PATH_SEP . $filename); unlink(PATH_DATA . "sites" . PATH_SEP . SYS_SYS . PATH_SEP . "public" . PATH_SEP . $pro_uid . PATH_SEP . str_replace(".php", "Post", $filename) . ".php"); } //return $params; G::LoadClass("system"); $pathProcess = PATH_DATA_SITE . 'public' . PATH_SEP . $sPRO_UID . PATH_SEP; G::mk_dir($pathProcess, 0777); $oEvent = new Event(); $oEvent->load($sEVN_UID); $sTASKS = $oEvent->getEvnTasUidTo(); $oTask = new Task(); $oTask->load($sTASKS); $tas_title = $oTask->getTasTitle(); if (G::is_https()) { $http = 'https://'; } else { $http = 'http://'; } $sContent = ''; $SITE_PUBLIC_PATH = ''; if (file_exists($SITE_PUBLIC_PATH . '')) { } require_once 'classes/model/Dynaform.php'; $oDynaform = new Dynaform(); $aDynaform = $oDynaform->load($sDYNAFORM); $dynTitle = str_replace(' ', '_', str_replace('/', '_', $aDynaform['DYN_TITLE'])); $sContent = "<?php\n"; $sContent .= "global \$_DBArray;\n"; $sContent .= "if (!isset(\$_DBArray)) {\n"; $sContent .= " \$_DBArray = array();\n"; $sContent .= "}\n"; $sContent .= "\$_SESSION['PROCESS'] = '" . $sPRO_UID . "';\n"; $sContent .= "\$_SESSION['CURRENT_DYN_UID'] = '" . $sDYNAFORM . "';\n"; $sContent .= "\$G_PUBLISH = new Publisher;\n"; $sContent .= "\$G_PUBLISH->AddContent('dynaform', 'xmlform', '" . $sPRO_UID . '/' . $sDYNAFORM . "', '', array(), '" . $dynTitle . 'Post.php' . "');\n"; $sContent .= "G::RenderPage('publish', 'blank');"; file_put_contents($pathProcess . $dynTitle . '.php', $sContent); //creating the second file, the post file who receive the post form. $pluginTpl = PATH_CORE . 'templates' . PATH_SEP . 'processes' . PATH_SEP . 'webentryPost.tpl'; $template = new TemplatePower($pluginTpl); $template->prepare(); $template->assign('wsdlUrl', $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/services/wsdl2'); $template->assign('wsUploadUrl', $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/services/upload'); $template->assign('processUid', $sPRO_UID); $template->assign('dynaformUid', $sDYNAFORM); $template->assign('taskUid', $sTASKS); $template->assign('wsUser', $sWS_USER); $template->assign('wsPass', Bootstrap::hashPassword($sWS_PASS, '', true)); $template->assign('wsRoundRobin', $sWS_ROUNDROBIN); if ($sWE_USR == "2") { $template->assign('USR_VAR', "\$cInfo = ws_getCaseInfo(\$caseId);\n\t \$USR_UID = \$cInfo->currentUsers->userId;"); } else { $template->assign('USR_VAR', '$USR_UID = -1;'); } $template->assign('dynaform', $dynTitle); $template->assign('timestamp', date('l jS \\of F Y h:i:s A')); $template->assign('ws', SYS_SYS); $template->assign('version', System::getVersion()); $fileName = $pathProcess . $dynTitle . 'Post.php'; file_put_contents($fileName, $template->getOutputContent()); //creating the third file, only if this wsClient.php file doesn't exists. $fileName = $pathProcess . 'wsClient.php'; $pluginTpl = PATH_CORE . "templates" . PATH_SEP . "processes" . PATH_SEP . "wsClient.php"; if (file_exists($fileName)) { if (filesize($fileName) != filesize($pluginTpl)) { @copy($fileName, $pathProcess . 'wsClient.php.bck'); @unlink($fileName); $template = new TemplatePower($pluginTpl); $template->prepare(); file_put_contents($fileName, $template->getOutputContent()); } } else { $template = new TemplatePower($pluginTpl); $template->prepare(); file_put_contents($fileName, $template->getOutputContent()); } require_once 'classes/model/Event.php'; $oEvent = new Event(); $aDataEvent = array(); $aDataEvent['EVN_UID'] = $sEVN_UID; $aDataEvent['EVN_RELATED_TO'] = 'MULTIPLE'; $aDataEvent['EVN_ACTION'] = $sDYNAFORM; $aDataEvent['EVN_CONDITIONS'] = $sWS_USER; $output = $oEvent->update($aDataEvent); $link = $http . $_SERVER['HTTP_HOST'] . '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . '/' . $sPRO_UID . '/' . $dynTitle . '.php'; $this->success = true; $this->msg = G::LoadTranslation('ID_WEB_ENTRY_SUCCESS_NEW'); $this->W_LINK = $link; $this->TAS_TITLE = $tas_title; $this->DYN_TITLE = $dynTitle; $this->USR_UID = $sWS_USER; }