diff --git a/gulliver/system/class.bootstrap.php b/gulliver/system/class.bootstrap.php index 12bdad1d6..ebb6450bd 100644 --- a/gulliver/system/class.bootstrap.php +++ b/gulliver/system/class.bootstrap.php @@ -611,9 +611,12 @@ class Bootstrap * 0 to delete the temporary file flag * 1 to set the temporary file flag. * 2 or bigger to check if the temporary file exists. + * @content Contains the content of the temporary file + * true to all workspace + * nameWorkspace to specific workspace * return true if the file exists, otherwise false. */ - public function isPMUnderUpdating($setFlag = 2) + public function isPMUnderUpdating($setFlag = 2, $content="true") { if (!defined('PATH_DATA')) { return false; @@ -626,12 +629,16 @@ class Bootstrap } } elseif ($setFlag == 1) { $fp = fopen($fileCheck, 'w'); - $line = fputs($fp, "true"); + $line = fputs($fp, $content); } // checking temporary file if ($setFlag >= 1) { if (file_exists($fileCheck)) { - return true; + $res['action'] = true; + $fp = fopen($fileCheck, "r"); + $res['workspace'] = fread($fp, filesize($fileCheck)); + fclose($fp); + return $res; } } return false; diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index d1e77a39a..9f6866d77 100644 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -333,7 +333,7 @@ class G * @param string $key * @return string */ - public function decrypt ($string, $key) + public static function decrypt($string, $key) { // if ( defined ( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes' ) { //if (strpos($string, '|', 0) !== false) return $string; @@ -1820,7 +1820,7 @@ class G * @param type Array $aFields * @return type String */ - public function replaceDataGridField($sContent, $aFields, $nl2brRecursive = true) + public static function replaceDataGridField($sContent, $aFields, $nl2brRecursive = true) { $nrt = array("\n", "\r", "\t"); $nrthtml = array("(n /)", "(r /)", "(t /)"); @@ -2816,7 +2816,7 @@ class G * @access public * @return array */ - public function array_merges () + public static function array_merges() { $array = array (); $arrays = & func_get_args(); @@ -2963,7 +2963,7 @@ class G * Constants: SYS_* * Sessions : USER_* , URS_* */ - public function getSystemConstants($params = null) + public static function getSystemConstants($params = null) { $t1 = G::microtime_float(); $sysCon = array(); @@ -5122,9 +5122,12 @@ class G * 0 to delete the temporary file flag * 1 to set the temporary file flag. * 2 or bigger to check if the temporary file exists. + * @content Contains the content of the temporary file + * true to all workspace + * nameWorkspace to specific workspace * return true if the file exists, otherwise false. */ - public function isPMUnderUpdating($setFlag = 2) + public function isPMUnderUpdating($setFlag = 2, $content="true") { if (!defined('PATH_DATA')) { return false; @@ -5136,12 +5139,16 @@ class G } } elseif ($setFlag == 1) { $fp = fopen($fileCheck,'w'); - $line = fputs($fp,"true"); + $line = fputs($fp,$content); } //checking temporary file if ($setFlag >= 1) { if (file_exists($fileCheck)) { - return true; + $res['action'] = true; + $fp = fopen($fileCheck, "r"); + $res['workspace'] = fread($fp, filesize($fileCheck)); + fclose($fp); + return $res; } } return false; @@ -5704,7 +5711,7 @@ class G * * @return md5($string) */ - public function encryptOld ($string) + public static function encryptOld($string) { return md5($string); } diff --git a/gulliver/system/class.rbac.php b/gulliver/system/class.rbac.php index 483e2f7f8..617001d32 100755 --- a/gulliver/system/class.rbac.php +++ b/gulliver/system/class.rbac.php @@ -233,6 +233,54 @@ class RBAC "PER_NAME" => "Undo cancel case" ), array("PER_UID" => "00000000000000000000000000000039", "PER_CODE" => "PM_REST_API_APPLICATIONS", "PER_NAME" => "Create rest API Aplications" + ), array("PER_UID" => "00000000000000000000000000000040", "PER_CODE" => "PM_EDIT_USER_PROFILE_FIRST_NAME", + "PER_NAME" => "Edit User profile First Name" + ), array("PER_UID" => "00000000000000000000000000000041", "PER_CODE" => "PM_EDIT_USER_PROFILE_LAST_NAME", + "PER_NAME" => "Edit User profile Last Name" + ), array("PER_UID" => "00000000000000000000000000000042", "PER_CODE" => "PM_EDIT_USER_PROFILE_USERNAME", + "PER_NAME" => "Edit User profile Username" + ), array("PER_UID" => "00000000000000000000000000000043", "PER_CODE" => "PM_EDIT_USER_PROFILE_EMAIL", + "PER_NAME" => "Edit User profile Email" + ), array("PER_UID" => "00000000000000000000000000000044", "PER_CODE" => "PM_EDIT_USER_PROFILE_ADDRESS", + "PER_NAME" => "Edit User profile Address" + ), array("PER_UID" => "00000000000000000000000000000045", "PER_CODE" => "PM_EDIT_USER_PROFILE_ZIP_CODE", + "PER_NAME" => "Edit User profile Zip Code" + ), array("PER_UID" => "00000000000000000000000000000046", "PER_CODE" => "PM_EDIT_USER_PROFILE_COUNTRY", + "PER_NAME" => "Edit User profile Country" + ), array("PER_UID" => "00000000000000000000000000000047", "PER_CODE" => "PM_EDIT_USER_PROFILE_STATE_OR_REGION", + "PER_NAME" => "Edit User profile State or Region" + ), array("PER_UID" => "00000000000000000000000000000048", "PER_CODE" => "PM_EDIT_USER_PROFILE_LOCATION", + "PER_NAME" => "Edit User profile Location" + ), array("PER_UID" => "00000000000000000000000000000049", "PER_CODE" => "PM_EDIT_USER_PROFILE_PHONE", + "PER_NAME" => "Edit User profile Phone" + ), array("PER_UID" => "00000000000000000000000000000050", "PER_CODE" => "PM_EDIT_USER_PROFILE_POSITION", + "PER_NAME" => "Edit User profile Position" + ), array("PER_UID" => "00000000000000000000000000000051", "PER_CODE" => "PM_EDIT_USER_PROFILE_REPLACED_BY", + "PER_NAME" => "Edit User profile Replaced By" + ), array("PER_UID" => "00000000000000000000000000000052", "PER_CODE" => "PM_EDIT_USER_PROFILE_EXPIRATION_DATE", + "PER_NAME" => "Edit User profile Expiration Date" + ), array("PER_UID" => "00000000000000000000000000000053", "PER_CODE" => "PM_EDIT_USER_PROFILE_CALENDAR", + "PER_NAME" => "Edit User profile Calendar" + ), array("PER_UID" => "00000000000000000000000000000054", "PER_CODE" => "PM_EDIT_USER_PROFILE_STATUS", + "PER_NAME" => "Edit User profile Status" + ), array("PER_UID" => "00000000000000000000000000000055", "PER_CODE" => "PM_EDIT_USER_PROFILE_ROLE", + "PER_NAME" => "Edit User profile Role" + ), array("PER_UID" => "00000000000000000000000000000056", "PER_CODE" => "PM_EDIT_USER_PROFILE_TIME_ZONE", + "PER_NAME" => "Edit User profile Time Zone" + ), array("PER_UID" => "00000000000000000000000000000057", "PER_CODE" => "PM_EDIT_USER_PROFILE_DEFAULT_LANGUAGE", + "PER_NAME" => "Edit User profile Default Language" + ), array("PER_UID" => "00000000000000000000000000000058", "PER_CODE" => "PM_EDIT_USER_PROFILE_COSTS", + "PER_NAME" => "Edit User profile Costs" + ), array("PER_UID" => "00000000000000000000000000000059", "PER_CODE" => "PM_EDIT_USER_PROFILE_PASSWORD", + "PER_NAME" => "Edit User profile Password" + ), array("PER_UID" => "00000000000000000000000000000060", "PER_CODE" => "PM_EDIT_USER_PROFILE_USER_MUST_CHANGE_PASSWORD_AT_NEXT_LOGON", + "PER_NAME" => "Edit User profile Must Change Password at next Logon" + ), array("PER_UID" => "00000000000000000000000000000061", "PER_CODE" => "PM_EDIT_USER_PROFILE_PHOTO", + "PER_NAME" => "Edit User profile Photo" + ), array("PER_UID" => "00000000000000000000000000000062", "PER_CODE" => "PM_EDIT_USER_PROFILE_DEFAULT_MAIN_MENU_OPTIONS", + "PER_NAME" => "Edit User profile Default Main Menu Options" + ), array("PER_UID" => "00000000000000000000000000000063", "PER_CODE" => "PM_EDIT_USER_PROFILE_DEFAULT_CASES_MENU_OPTIONS", + "PER_NAME" => "Edit User profile Default Cases Menu Options" ) ); return $permissionsAdmin; @@ -889,9 +937,23 @@ class RBAC * @param string $ROL_UID * @return $this->rolesObj->getRolePermissionsByPerUid */ - public function getRolePermissionsByPerUid ($ROL_UID) + public function getRolePermissionsByPerUid($ROL_UID) { - return $this->rolesObj->getRolePermissionsByPerUid( $ROL_UID ); + return $this->rolesObj->getRolePermissionsByPerUid($ROL_UID); + } + + /** + * this function is Assigne role permission + * + * + * @access public + * + * @param string $ROL_UID + * @return $this->rolesObj->isAssigneRolePermission + */ + public function getPermissionAssignedRole($ROL_UID, $PER_UID) + { + return $this->rolesObj->getPermissionAssignedRole($ROL_UID, $PER_UID); } /** @@ -1271,18 +1333,18 @@ class RBAC * @access public * */ - public function verifyPermissions () + public function verifyPermissions() { $message = array(); $listPermissions = $this->loadPermissionAdmin(); - $criteria = new Criteria( 'rbac' ); - $dataset = PermissionsPeer::doSelectRS( $criteria ); - $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $criteria = new Criteria('rbac'); + $dataset = PermissionsPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $aRow = $dataset->getRow(); - while (is_array( $aRow )) { - foreach($listPermissions as $key => $item) { - if ($aRow['PER_UID'] == $item['PER_UID'] ) { + while (is_array($aRow)) { + foreach ($listPermissions as $key => $item) { + if ($aRow['PER_UID'] == $item['PER_UID']) { unset($listPermissions[$key]); break; } @@ -1290,39 +1352,42 @@ class RBAC $dataset->next(); $aRow = $dataset->getRow(); } - foreach($listPermissions as $key => $item) { + foreach ($listPermissions as $key => $item) { //Adding new permissions $data = array(); - $data['PER_UID'] = $item['PER_UID']; - $data['PER_CODE'] = $item['PER_CODE']; + $data['PER_UID'] = $item['PER_UID']; + $data['PER_CODE'] = $item['PER_CODE']; $data['PER_CREATE_DATE'] = date('Y-m-d H:i:s'); $data['PER_UPDATE_DATE'] = $data['PER_CREATE_DATE']; - $data['PER_STATUS'] = 1; - $permission = new Permissions(); + $data['PER_STATUS'] = 1; + $permission = new Permissions(); $permission->fromArray($data, BasePeer::TYPE_FIELDNAME); $permission->save(); $message[] = 'Add permission missing ' . $item['PER_CODE']; - //Adding new labels for new permissions $o = new RolesPermissions(); $o->setPerUid($item['PER_UID']); $o->setPermissionName($item['PER_NAME']); + //assigning new permissions + $this->assigningNewPermissionsPmSetup($item); + $this->assigningNewPermissionsPmEditProfile($item); + } + return $message; + } - //Assigning new permissions + /** + * Permissions for tab ADMIN + * @param array $item + */ + public function assigningNewPermissionsPmSetup($item = array()) + { + if (strpos($item['PER_CODE'], 'PM_SETUP_') !== false) { $rolesWithPermissionSetup = $this->getRolePermissionsByPerUid(self::SETUPERMISSIONUID); $rolesWithPermissionSetup->next(); while ($aRow = $rolesWithPermissionSetup->getRow()) { - $userRolePermission = $this->getRolePermissions($aRow['ROL_UID']); - $userRolePermission->next(); - $valueNewPermissions = false; - while ($aRowPermission = $userRolePermission->getRow()) { - if ($item['PER_CODE'] === $aRowPermission['PER_CODE']) { - $valueNewPermissions = true; - } - $userRolePermission->next(); - } - $dataPermissions = array(); - if (!$valueNewPermissions) { + $isAssignedNewpermissions = $this->getPermissionAssignedRole($aRow['ROL_UID'], $item['PER_UID']); + if (!$isAssignedNewpermissions) { + $dataPermissions = array(); $dataPermissions['ROL_UID'] = $aRow['ROL_UID']; $dataPermissions['PER_UID'] = $item['PER_UID']; $this->assignPermissionRole($dataPermissions); @@ -1330,7 +1395,51 @@ class RBAC $rolesWithPermissionSetup->next(); } } - return $message; + } + + /** + * Permissions for Edit Profile User + * @param array $item + */ + public function assigningNewPermissionsPmEditProfile($item = array()) + { + if (strpos($item['PER_CODE'], 'PM_EDIT_USER_PROFILE_') !== false) { + $allRolesRolUid = $this->getAllRoles('PROCESSMAKER'); + $perCodePM = array('PROCESSMAKER_ADMIN', 'PROCESSMAKER_OPERATOR', 'PROCESSMAKER_MANAGER'); + $permissionsForOperator = array( + 'PM_EDIT_USER_PROFILE_POSITION', + 'PM_EDIT_USER_PROFILE_REPLACED_BY', + 'PM_EDIT_USER_PROFILE_EXPIRATION_DATE', + 'PM_EDIT_USER_PROFILE_STATUS', + 'PM_EDIT_USER_PROFILE_ROLE', + 'PM_EDIT_USER_PROFILE_COSTS', + 'PM_EDIT_USER_PROFILE_USER_MUST_CHANGE_PASSWORD_AT_NEXT_LOGON', + 'PM_EDIT_USER_PROFILE_DEFAULT_MAIN_MENU_OPTIONS', + 'PM_EDIT_USER_PROFILE_DEFAULT_CASES_MENU_OPTIONS' + ); + foreach ($allRolesRolUid as $index => $aRow) { + $isAssignedNewpermissions = $this->getPermissionAssignedRole($aRow['ROL_UID'], $item['PER_UID']); + $assignPermissions = true; + if (!$isAssignedNewpermissions) { + if ($aRow['ROL_CODE'] == 'PROCESSMAKER_OPERATOR' && in_array($item['PER_CODE'], $permissionsForOperator)) { + $assignPermissions = false; + } + if (!in_array($aRow['ROL_CODE'], $perCodePM)) { + $assignPermissions = false; + $checkPermisionEdit = $this->getPermissionAssignedRole($aRow['ROL_UID'], '00000000000000000000000000000014'); + if ($checkPermisionEdit && !in_array($item['PER_CODE'], $permissionsForOperator)) { + $assignPermissions = true; + } + } + if ($assignPermissions) { + $dataPermissions = array(); + $dataPermissions['ROL_UID'] = $aRow['ROL_UID']; + $dataPermissions['PER_UID'] = $item['PER_UID']; + $this->assignPermissionRole($dataPermissions); + } + } + } + } } } diff --git a/rbac/engine/classes/model/Roles.php b/rbac/engine/classes/model/Roles.php index 282833d4f..56dd1e5c3 100755 --- a/rbac/engine/classes/model/Roles.php +++ b/rbac/engine/classes/model/Roles.php @@ -471,6 +471,11 @@ class Roles extends BaseRoles { G::auditLog("DeleteUserToRole", "Delete user ".$user['USR_USERNAME']." (".$USR_UID.") to Role ".$rol['ROL_NAME']." (".$ROL_UID.") "); } + /** + * @param $roleUid + * @return ResultSet + * @throws Exception + */ function getRolePermissionsByPerUid($roleUid){ try { $criteria = new Criteria(); @@ -487,6 +492,36 @@ class Roles extends BaseRoles { throw $e; } } + + /** + * Checks a permission is assigned to a Role + * @param $ROL_UID + * @param $PER_UID + * @return bool + * @throws Exception + */ + function getPermissionAssignedRole($ROL_UID, $PER_UID) + { + try { + $criteria = new Criteria(); + $criteria->addSelectColumn(RolesPermissionsPeer::ROL_UID); + $criteria->addSelectColumn(RolesPermissionsPeer::PER_UID); + $criteria->add(RolesPermissionsPeer::ROL_UID, $ROL_UID, Criteria::EQUAL); + $criteria->add(RolesPermissionsPeer::PER_UID, $PER_UID, Criteria::EQUAL); + + $oDataset = RolesPermissionsPeer::doSelectRS($criteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + if($aRowRP = $oDataset->getRow()){ + return true; + } + return false; + + } catch (exception $e) { + throw $e; + } + } + function getRolePermissions($ROL_UID, $filter='', $status=null) { try { $criteria = new Criteria(); diff --git a/rbac/engine/data/mysql/insert.sql b/rbac/engine/data/mysql/insert.sql index ceef39208..4f4dbd973 100755 --- a/rbac/engine/data/mysql/insert.sql +++ b/rbac/engine/data/mysql/insert.sql @@ -37,7 +37,31 @@ INSERT INTO `RBAC_PERMISSIONS` VALUES ('00000000000000000000000000000036','PM_DELETE_PROCESS_CASES','2016-03-01 00:00:00','2016-03-01 00:00:00',1,'00000000000000000000000000000002'), ('00000000000000000000000000000037','PM_EDITPERSONALINFO_CALENDAR','2016-03-01 00:00:00','2016-03-01 00:00:00',1,'00000000000000000000000000000002'), ('00000000000000000000000000000038','PM_UNCANCELCASE','2016-06-14 00:00:00','2016-06-14 00:00:00',1,'00000000000000000000000000000002'), -('00000000000000000000000000000039','PM_REST_API_APPLICATIONS','2016-06-14 00:00:00','2016-06-14 00:00:00',1,'00000000000000000000000000000002'); +('00000000000000000000000000000039','PM_REST_API_APPLICATIONS','2016-06-14 00:00:00','2016-06-14 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000040','PM_EDIT_USER_PROFILE_FIRST_NAME','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000041','PM_EDIT_USER_PROFILE_LAST_NAME','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000042','PM_EDIT_USER_PROFILE_USERNAME','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000043','PM_EDIT_USER_PROFILE_EMAIL','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000044','PM_EDIT_USER_PROFILE_ADDRESS','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000045','PM_EDIT_USER_PROFILE_ZIP_CODE','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000046','PM_EDIT_USER_PROFILE_COUNTRY','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000047','PM_EDIT_USER_PROFILE_STATE_OR_REGION','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000048','PM_EDIT_USER_PROFILE_LOCATION','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000049','PM_EDIT_USER_PROFILE_PHONE','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000050','PM_EDIT_USER_PROFILE_POSITION','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000051','PM_EDIT_USER_PROFILE_REPLACED_BY','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000052','PM_EDIT_USER_PROFILE_EXPIRATION_DATE','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000053','PM_EDIT_USER_PROFILE_CALENDAR','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000054','PM_EDIT_USER_PROFILE_STATUS','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000055','PM_EDIT_USER_PROFILE_ROLE','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000056','PM_EDIT_USER_PROFILE_TIME_ZONE','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000057','PM_EDIT_USER_PROFILE_DEFAULT_LANGUAGE','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000058','PM_EDIT_USER_PROFILE_COSTS','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000059','PM_EDIT_USER_PROFILE_PASSWORD','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000060','PM_EDIT_USER_PROFILE_USER_MUST_CHANGE_PASSWORD_AT_NEXT_LOGON','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000061','PM_EDIT_USER_PROFILE_PHOTO','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000062','PM_EDIT_USER_PROFILE_DEFAULT_MAIN_MENU_OPTIONS','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'), +('00000000000000000000000000000063','PM_EDIT_USER_PROFILE_DEFAULT_CASES_MENU_OPTIONS','2016-07-18 00:00:00','2016-07-18 00:00:00',1,'00000000000000000000000000000002'); INSERT INTO `RBAC_ROLES` VALUES ('00000000000000000000000000000001','','00000000000000000000000000000001','RBAC_ADMIN','2007-07-31 19:10:22','2007-08-03 12:24:36',1), @@ -86,8 +110,47 @@ INSERT INTO `RBAC_ROLES_PERMISSIONS` VALUES ('00000000000000000000000000000002','00000000000000000000000000000037'), ('00000000000000000000000000000002','00000000000000000000000000000038'), ('00000000000000000000000000000002','00000000000000000000000000000039'), +('00000000000000000000000000000002','00000000000000000000000000000040'), +('00000000000000000000000000000002','00000000000000000000000000000041'), +('00000000000000000000000000000002','00000000000000000000000000000042'), +('00000000000000000000000000000002','00000000000000000000000000000043'), +('00000000000000000000000000000002','00000000000000000000000000000044'), +('00000000000000000000000000000002','00000000000000000000000000000045'), +('00000000000000000000000000000002','00000000000000000000000000000046'), +('00000000000000000000000000000002','00000000000000000000000000000047'), +('00000000000000000000000000000002','00000000000000000000000000000048'), +('00000000000000000000000000000002','00000000000000000000000000000049'), +('00000000000000000000000000000002','00000000000000000000000000000050'), +('00000000000000000000000000000002','00000000000000000000000000000051'), +('00000000000000000000000000000002','00000000000000000000000000000052'), +('00000000000000000000000000000002','00000000000000000000000000000053'), +('00000000000000000000000000000002','00000000000000000000000000000054'), +('00000000000000000000000000000002','00000000000000000000000000000055'), +('00000000000000000000000000000002','00000000000000000000000000000056'), +('00000000000000000000000000000002','00000000000000000000000000000057'), +('00000000000000000000000000000002','00000000000000000000000000000058'), +('00000000000000000000000000000002','00000000000000000000000000000059'), +('00000000000000000000000000000002','00000000000000000000000000000060'), +('00000000000000000000000000000002','00000000000000000000000000000061'), +('00000000000000000000000000000002','00000000000000000000000000000062'), +('00000000000000000000000000000002','00000000000000000000000000000063'), ('00000000000000000000000000000003','00000000000000000000000000000001'), ('00000000000000000000000000000003','00000000000000000000000000000005'), +('00000000000000000000000000000003','00000000000000000000000000000040'), +('00000000000000000000000000000003','00000000000000000000000000000041'), +('00000000000000000000000000000003','00000000000000000000000000000042'), +('00000000000000000000000000000003','00000000000000000000000000000043'), +('00000000000000000000000000000003','00000000000000000000000000000044'), +('00000000000000000000000000000003','00000000000000000000000000000045'), +('00000000000000000000000000000003','00000000000000000000000000000046'), +('00000000000000000000000000000003','00000000000000000000000000000047'), +('00000000000000000000000000000003','00000000000000000000000000000048'), +('00000000000000000000000000000003','00000000000000000000000000000049'), +('00000000000000000000000000000003','00000000000000000000000000000053'), +('00000000000000000000000000000003','00000000000000000000000000000056'), +('00000000000000000000000000000003','00000000000000000000000000000057'), +('00000000000000000000000000000003','00000000000000000000000000000059'), +('00000000000000000000000000000003','00000000000000000000000000000061'), ('00000000000000000000000000000004','00000000000000000000000000000001'), ('00000000000000000000000000000004','00000000000000000000000000000003'), ('00000000000000000000000000000004','00000000000000000000000000000005'), @@ -122,7 +185,31 @@ INSERT INTO `RBAC_ROLES_PERMISSIONS` VALUES ('00000000000000000000000000000004','00000000000000000000000000000036'), ('00000000000000000000000000000004','00000000000000000000000000000037'), ('00000000000000000000000000000004','00000000000000000000000000000038'), -('00000000000000000000000000000004','00000000000000000000000000000039'); +('00000000000000000000000000000004','00000000000000000000000000000039'), +('00000000000000000000000000000004','00000000000000000000000000000040'), +('00000000000000000000000000000004','00000000000000000000000000000041'), +('00000000000000000000000000000004','00000000000000000000000000000042'), +('00000000000000000000000000000004','00000000000000000000000000000043'), +('00000000000000000000000000000004','00000000000000000000000000000044'), +('00000000000000000000000000000004','00000000000000000000000000000045'), +('00000000000000000000000000000004','00000000000000000000000000000046'), +('00000000000000000000000000000004','00000000000000000000000000000047'), +('00000000000000000000000000000004','00000000000000000000000000000048'), +('00000000000000000000000000000004','00000000000000000000000000000049'), +('00000000000000000000000000000004','00000000000000000000000000000050'), +('00000000000000000000000000000004','00000000000000000000000000000051'), +('00000000000000000000000000000004','00000000000000000000000000000052'), +('00000000000000000000000000000004','00000000000000000000000000000053'), +('00000000000000000000000000000004','00000000000000000000000000000054'), +('00000000000000000000000000000004','00000000000000000000000000000055'), +('00000000000000000000000000000004','00000000000000000000000000000056'), +('00000000000000000000000000000004','00000000000000000000000000000057'), +('00000000000000000000000000000004','00000000000000000000000000000058'), +('00000000000000000000000000000004','00000000000000000000000000000059'), +('00000000000000000000000000000004','00000000000000000000000000000060'), +('00000000000000000000000000000004','00000000000000000000000000000061'), +('00000000000000000000000000000004','00000000000000000000000000000062'), +('00000000000000000000000000000004','00000000000000000000000000000063'); INSERT INTO `RBAC_SYSTEMS` VALUES ('00000000000000000000000000000001','RBAC','2007-07-31 19:10:22','2007-08-03 12:24:36',1),('00000000000000000000000000000002','PROCESSMAKER','2007-07-31 19:10:22','2007-08-03 12:24:36',1); INSERT INTO `RBAC_USERS` VALUES ('00000000000000000000000000000001','admin','21232f297a57a5a743894a0e4a801fc3','Administrator','','admin@processmaker.com','2020-01-01','2007-08-03 12:24:36','2008-02-13 07:24:07',1,'MYSQL','00000000000000000000000000000000','',''); diff --git a/workflow/engine/bin/tasks/cliUpgrade.php b/workflow/engine/bin/tasks/cliUpgrade.php index 776ceb13f..1d575fc81 100755 --- a/workflow/engine/bin/tasks/cliUpgrade.php +++ b/workflow/engine/bin/tasks/cliUpgrade.php @@ -82,7 +82,14 @@ function run_upgrade($command, $args) CLI::logging("UPGRADE", PROCESSMAKER_PATH . "upgrade.log"); CLI::logging("Checking files integrity...\n"); //setting flag to true to check into sysGeneric.php - $flag = G::isPMUnderUpdating(1); + $workspaces = get_workspaces_from_args($command); + $oneWorkspace = 'true'; + if (count($workspaces) == 1) { + foreach ($workspaces as $index => $workspace) { + $oneWorkspace = $workspace->name; + } + } + $flag = G::isPMUnderUpdating(1, $oneWorkspace); //start to upgrade $checksum = System::verifyChecksum(); if ($checksum === false) { diff --git a/workflow/engine/bin/tasks/cliWorkspaces.php b/workflow/engine/bin/tasks/cliWorkspaces.php index 0e7c0e93b..a807927af 100755 --- a/workflow/engine/bin/tasks/cliWorkspaces.php +++ b/workflow/engine/bin/tasks/cliWorkspaces.php @@ -282,6 +282,19 @@ CLI::taskArg('workspace', true, true); CLI::taskRun("run_migrate_list_unassigned"); /*----------------------------------********---------------------------------*/ +CLI::taskName('migrate-content'); +CLI::taskDescription(<<xssFilterHard($args); + $workspaces = get_workspaces_from_args($args); + $lang = array_key_exists("lang", $opts) ? $opts['lang'] : SYS_LANG; + $start = microtime(true); + CLI::logging("> Optimizing content data...\n"); + foreach ($workspaces as $workspace) { + if (!defined('SYS_SYS')) { + define('SYS_SYS', $workspace->name); + } + print_r('Regenerating content in: ' . pakeColor::colorize($workspace->name, 'INFO') . "\n"); + CLI::logging("-> Regenerating content \n"); + $workspace->migrateContentRun($workspace->name, $lang); + } + $stop = microtime(true); + CLI::logging("<*> Optimizing content data Process took " . ($stop - $start) . " seconds.\n"); +} diff --git a/workflow/engine/classes/class.AppSolr.php b/workflow/engine/classes/class.AppSolr.php index b57cdf1b6..937f2406b 100755 --- a/workflow/engine/classes/class.AppSolr.php +++ b/workflow/engine/classes/class.AppSolr.php @@ -834,7 +834,7 @@ class AppSolr $c->addAsColumn ('USR_PREV_LAST', 'uprev.USR_LASTNAME'); $c->addAsColumn ('PREVIOUS_USR_UID', 'uprev.USR_UID'); - $c->addAsColumn ('APP_TAS_TITLE', 'ctastitle.CON_VALUE'); + $c->addAsColumn ('APP_TAS_TITLE', TaskPeer::TAS_TITLE); $c->addAsColumn ('APP_THREAD_STATUS', 'at.APP_THREAD_STATUS'); $c->addSelectColumn (AppDelegationPeer::APP_OVERDUE_PERCENTAGE); @@ -853,7 +853,6 @@ class AppSolr $c->addAlias ('u', 'USERS'); $c->addAlias ('uprev', 'USERS'); $c->addAlias ('adprev', 'APP_DELEGATION'); - $c->addAlias ('ctastitle', 'CONTENT'); $c->addAlias ('at', 'APP_THREAD'); $aConditions = array (); @@ -880,14 +879,9 @@ class AppSolr 'adprev.DEL_INDEX' ); $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN); - - $aConditions = array (); - $aConditions [] = array ( - AppDelegationPeer::TAS_UID, - 'ctastitle.CON_ID' - ); - $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN); - + + $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID); + $aConditions = array (); $aConditions [] = array ( 'adprev.USR_UID', @@ -908,10 +902,7 @@ class AppSolr $c->add (AppDelegationPeer::APP_UID, $aappUIDs, Criteria::IN ); //$c->add (AppDelegationPeer::DEL_INDEX, $delIndex); - - $c->add ('ctastitle.CON_CATEGORY', 'TAS_TITLE'); - $c->add ('ctastitle.CON_LANG', 'en'); - + $rs = AppDelegationPeer::doSelectRS ($c); $rs->setFetchmode (ResultSet::FETCHMODE_ASSOC); // echo $c->toString(); @@ -954,7 +945,7 @@ class AppSolr $c->addAsColumn ('USR_PREV_LAST', 'uprev.USR_LASTNAME'); $c->addAsColumn ('PREVIOUS_USR_UID', 'uprev.USR_UID'); - $c->addAsColumn ('APP_TAS_TITLE', 'ctastitle.CON_VALUE'); + $c->addAsColumn ('APP_TAS_TITLE', TaskPeer::TAS_TITLE); $c->addAsColumn ('APP_THREAD_STATUS', 'at.APP_THREAD_STATUS'); $c->addSelectColumn (AppDelegationPeer::APP_OVERDUE_PERCENTAGE); @@ -973,7 +964,6 @@ class AppSolr $c->addAlias ('u', 'USERS'); $c->addAlias ('uprev', 'USERS'); $c->addAlias ('adprev', 'APP_DELEGATION'); - $c->addAlias ('ctastitle', 'CONTENT'); $c->addAlias ('at', 'APP_THREAD'); $aConditions = array (); @@ -993,14 +983,9 @@ class AppSolr 'adprev.DEL_INDEX' ); $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN); - - $aConditions = array (); - $aConditions [] = array ( - AppDelegationPeer::TAS_UID, - 'ctastitle.CON_ID' - ); - $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN); - + + $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID); + $aConditions = array (); $aConditions [] = array ( 'adprev.USR_UID', @@ -1021,10 +1006,7 @@ class AppSolr $c->add (AppDelegationPeer::APP_UID, $appUID); $c->add (AppDelegationPeer::DEL_INDEX, $delIndex); - - $c->add ('ctastitle.CON_CATEGORY', 'TAS_TITLE'); - $c->add ('ctastitle.CON_LANG', 'en'); - + $rs = AppDelegationPeer::doSelectRS ($c); $rs->setFetchmode (ResultSet::FETCHMODE_ASSOC); // echo $c->toString(); @@ -2609,6 +2591,7 @@ class AppSolr $c = new Criteria (); $c->addSelectColumn (ApplicationPeer::APP_UID); + $c->addSelectColumn (ApplicationPeer::APP_TITLE); $c->addSelectColumn (ApplicationPeer::APP_NUMBER); $c->addSelectColumn (ApplicationPeer::APP_STATUS); $c->addSelectColumn (ApplicationPeer::PRO_UID); @@ -2616,10 +2599,9 @@ class AppSolr $c->addSelectColumn (ApplicationPeer::APP_FINISH_DATE); $c->addSelectColumn (ApplicationPeer::APP_UPDATE_DATE); $c->addSelectColumn (ApplicationPeer::APP_DATA); - - $c->addAsColumn ('APP_TITLE', 'capp.CON_VALUE'); - $c->addAsColumn ('PRO_TITLE', 'cpro.CON_VALUE'); - + + $c->addSelectColumn (ProcessPeer::PRO_TITLE); + $c->addSelectColumn ('ad.DEL_INDEX'); $c->addSelectColumn ('ad.DEL_PREVIOUS'); $c->addSelectColumn ('ad.TAS_UID'); @@ -2644,43 +2626,12 @@ class AppSolr $c->addSelectColumn ('at.APP_THREAD_PARENT'); $c->addSelectColumn ('at.APP_THREAD_STATUS'); - $c->addAlias ('capp', 'CONTENT'); - $c->addAlias ('cpro', 'CONTENT'); $c->addAlias ('ad', 'APP_DELEGATION'); $c->addAlias ('at', 'APP_THREAD'); - $aConditions = array (); - $aConditions [] = array ( - ApplicationPeer::APP_UID, - 'capp.CON_ID' - ); - $aConditions [] = array ( - 'capp.CON_CATEGORY', - DBAdapter::getStringDelimiter () . 'APP_TITLE' . DBAdapter::getStringDelimiter () - ); - $aConditions [] = array ( - 'capp.CON_LANG', - DBAdapter::getStringDelimiter () . 'en' . DBAdapter::getStringDelimiter () - ); - $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN); - - $aConditions = array (); - $aConditions [] = array ( - ApplicationPeer::PRO_UID, - 'cpro.CON_ID' - ); - $aConditions [] = array ( - 'cpro.CON_CATEGORY', - DBAdapter::getStringDelimiter () . 'PRO_TITLE' . DBAdapter::getStringDelimiter () - ); - $aConditions [] = array ( - 'cpro.CON_LANG', - DBAdapter::getStringDelimiter () . 'en' . DBAdapter::getStringDelimiter () - ); - $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN); - + $c->addJoin (ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin (ApplicationPeer::APP_UID, 'ad.APP_UID', Criteria::JOIN); - + $aConditions = array (); $aConditions [] = array ( 'ad.APP_UID', @@ -2725,6 +2676,7 @@ class AppSolr $c = new Criteria (); $c->addSelectColumn (ApplicationPeer::APP_UID); + $c->addSelectColumn (ApplicationPeer::APP_TITLE); $c->addSelectColumn (ApplicationPeer::APP_NUMBER); $c->addSelectColumn (ApplicationPeer::APP_STATUS); $c->addSelectColumn (ApplicationPeer::PRO_UID); @@ -2733,8 +2685,7 @@ class AppSolr $c->addSelectColumn (ApplicationPeer::APP_UPDATE_DATE); $c->addSelectColumn (ApplicationPeer::APP_DATA); - $c->addAsColumn ('APP_TITLE', 'capp.CON_VALUE'); - $c->addAsColumn ('PRO_TITLE', 'cpro.CON_VALUE'); + $c->addSelectColumn ('pro.PRO_TITLE'); $c->addSelectColumn ('ad.DEL_INDEX'); $c->addSelectColumn ('ad.DEL_PREVIOUS'); @@ -2766,43 +2717,12 @@ class AppSolr $c->addAsColumn("PRO_CATEGORY_UID", "pro.PRO_CATEGORY"); - $c->addAlias ('capp', 'CONTENT'); - $c->addAlias ('cpro', 'CONTENT'); $c->addAlias ('ad', 'APP_DELEGATION'); $c->addAlias ('at', 'APP_THREAD'); $c->addAlias ('ade', 'APP_DELAY'); $c->addAlias ("pro", ProcessPeer::TABLE_NAME); - $aConditions = array (); - $aConditions [] = array ( - ApplicationPeer::APP_UID, - 'capp.CON_ID' - ); - $aConditions [] = array ( - 'capp.CON_CATEGORY', - DBAdapter::getStringDelimiter () . 'APP_TITLE' . DBAdapter::getStringDelimiter () - ); - $aConditions [] = array ( - 'capp.CON_LANG', - DBAdapter::getStringDelimiter () . 'en' . DBAdapter::getStringDelimiter () - ); - $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN); - - $aConditions = array (); - $aConditions [] = array ( - ApplicationPeer::PRO_UID, - 'cpro.CON_ID' - ); - $aConditions [] = array ( - 'cpro.CON_CATEGORY', - DBAdapter::getStringDelimiter () . 'PRO_TITLE' . DBAdapter::getStringDelimiter () - ); - $aConditions [] = array ( - 'cpro.CON_LANG', - DBAdapter::getStringDelimiter () . 'en' . DBAdapter::getStringDelimiter () - ); - $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN); - + $c->addJoin (ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin (ApplicationPeer::APP_UID, 'ad.APP_UID', Criteria::JOIN); $aConditions = array (); diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 596c46629..116a76317 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -200,32 +200,13 @@ class Cases $c = new Criteria(); $c->addSelectColumn(TaskPeer::TAS_UID); + $c->addSelectColumn(TaskPeer::TAS_TITLE); $c->addSelectColumn(TaskPeer::PRO_UID); - $c->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); - $c->addAsColumn('PRO_TITLE', 'C2.CON_VALUE'); - $c->addAlias('C1', 'CONTENT'); - $c->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions[] = array(TaskPeer::TAS_UID, 'C1.CON_ID'); - $aConditions[] = array( - 'C1.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'TAS_TITLE' . DBAdapter::getStringDelimiter() - ); - $aConditions[] = array( - 'C1.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() - ); - $c->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions[] = array(TaskPeer::PRO_UID, 'C2.CON_ID'); - $aConditions[] = array( - 'C2.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'PRO_TITLE' . DBAdapter::getStringDelimiter() - ); - $aConditions[] = array( - 'C2.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() - ); - $c->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $c->addSelectColumn(ProcessPeer::PRO_TITLE); + $c->addJoin (TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->add(TaskPeer::TAS_UID, $tasks, Criteria::IN); - $c->addAscendingOrderByColumn('PRO_TITLE'); - $c->addAscendingOrderByColumn('TAS_TITLE'); + $c->addAscendingOrderByColumn(ProcessPeer::PRO_TITLE); + $c->addAscendingOrderByColumn(TaskPeer::TAS_TITLE); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); @@ -304,11 +285,9 @@ class Cases $c = new Criteria(); $c->addSelectColumn(TaskPeer::TAS_UID); + $c->addSelectColumn(TaskPeer::TAS_TITLE); $c->addSelectColumn(TaskPeer::PRO_UID); - $c->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); - $c->addAsColumn('PRO_TITLE', 'C2.CON_VALUE'); - $c->addAlias('C1', 'CONTENT'); - $c->addAlias('C2', 'CONTENT'); + $c->addSelectColumn(ProcessPeer::PRO_TITLE); if ($typeView == 'category') { $c->addAsColumn('PRO_CATEGORY', 'PCS.PRO_CATEGORY'); $c->addAsColumn('CATEGORY_NAME', 'PCSCAT.CATEGORY_NAME'); @@ -322,28 +301,11 @@ class Cases $c->addJoinMC($aConditions, Criteria::LEFT_JOIN); } - $aConditions = array(); - $aConditions[] = array(TaskPeer::TAS_UID, 'C1.CON_ID'); - $aConditions[] = array( - 'C1.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'TAS_TITLE' . DBAdapter::getStringDelimiter() - ); - $aConditions[] = array( - 'C1.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() - ); - $c->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions[] = array(TaskPeer::PRO_UID, 'C2.CON_ID'); - $aConditions[] = array( - 'C2.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'PRO_TITLE' . DBAdapter::getStringDelimiter() - ); - $aConditions[] = array( - 'C2.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() - ); - $c->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $c->addJoin (TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->add(TaskPeer::TAS_UID, $tasks, Criteria::IN); - $c->addAscendingOrderByColumn('PRO_TITLE'); - $c->addAscendingOrderByColumn('TAS_TITLE'); + $c->addAscendingOrderByColumn(ProcessPeer::PRO_TITLE); + $c->addAscendingOrderByColumn(TaskPeer::TAS_TITLE); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); @@ -447,32 +409,13 @@ class Cases $c = new Criteria(); $c->addSelectColumn(TaskPeer::TAS_UID); + $c->addSelectColumn(TaskPeer::TAS_TITLE); $c->addSelectColumn(TaskPeer::PRO_UID); - $c->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); - $c->addAsColumn('PRO_TITLE', 'C2.CON_VALUE'); - $c->addAlias('C1', 'CONTENT'); - $c->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions[] = array(TaskPeer::TAS_UID, 'C1.CON_ID'); - $aConditions[] = array( - 'C1.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'TAS_TITLE' . DBAdapter::getStringDelimiter() - ); - $aConditions[] = array( - 'C1.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() - ); - $c->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions[] = array(TaskPeer::PRO_UID, 'C2.CON_ID'); - $aConditions[] = array( - 'C2.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'PRO_TITLE' . DBAdapter::getStringDelimiter() - ); - $aConditions[] = array( - 'C2.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() - ); - $c->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $c->addSelectColumn(ProcessPeer::PRO_TITLE); + $c->addJoin (TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->add(TaskPeer::TAS_UID, $tasks, Criteria::IN); - $c->addAscendingOrderByColumn('PRO_TITLE'); - $c->addAscendingOrderByColumn('TAS_TITLE'); + $c->addAscendingOrderByColumn(ProcessPeer::PRO_TITLE); + $c->addAscendingOrderByColumn(TaskPeer::TAS_TITLE); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); @@ -750,35 +693,23 @@ class Cases for ($r = count($currentDelegations) - 1; $r >= 0; $r--) { $c = new Criteria(); $c->clearSelectColumns(); - $c->addSelectColumn(ContentPeer::CON_CATEGORY); - $c->addSelectColumn(ContentPeer::CON_VALUE); - $c->add(ContentPeer::CON_ID, $currentDelegations[$r]->getTasUid()); - $c->add(ContentPeer::CON_LANG, $lang); + $c->addSelectColumn(TaskPeer::TAS_DEF_TITLE); + $c->addSelectColumn(TaskPeer::TAS_DEF_DESCRIPTION); + $c->add(TaskPeer::TAS_UID, $currentDelegations[$r]->getTasUid()); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $rs->next(); - $row = $rs->getRow(); - - while (is_array($row)) { - switch ($row['CON_CATEGORY']) { - case 'TAS_DEF_TITLE': - $tasDefTitle = $row['CON_VALUE']; - if ($tasDefTitle != '' && !$bUpdatedDefTitle) { - $res['APP_TITLE'] = G::replaceDataField($tasDefTitle, $aAppData); - $bUpdatedDefTitle = true; - } - break; - case 'TAS_DEF_DESCRIPTION': - $tasDefDescription = $row['CON_VALUE']; - $tasDefDescription = $row['CON_VALUE']; - if ($tasDefDescription != '' && !$bUpdatedDefDescription) { - $res['APP_DESCRIPTION'] = G::replaceDataField($tasDefDescription, $aAppData); - $bUpdatedDefDescription = true; - } - break; - } - $rs->next(); + while ($rs->next()) { $row = $rs->getRow(); + $tasDefTitle = $row['TAS_DEF_TITLE']; + if ($tasDefTitle != '' && !$bUpdatedDefTitle) { + $res['APP_TITLE'] = G::replaceDataField($tasDefTitle, $aAppData); + $bUpdatedDefTitle = true; + } + $tasDefDescription = $row['TAS_DEF_DESCRIPTION']; + if ($tasDefDescription != '' && !$bUpdatedDefDescription) { + $res['APP_DESCRIPTION'] = G::replaceDataField($tasDefDescription, $aAppData); + $bUpdatedDefDescription = true; + } } } return $res; @@ -817,71 +748,51 @@ class Cases while (is_array($rowCri)) { $c = new Criteria(); $c->clearSelectColumns(); - $c->addSelectColumn(ContentPeer::CON_CATEGORY); - $c->addSelectColumn(ContentPeer::CON_VALUE); - $c->add(ContentPeer::CON_ID, $rowCri['TAS_UID']); - $c->add(ContentPeer::CON_LANG, $lang); - $c->add(ContentPeer::CON_CATEGORY, array("TAS_DEF_TITLE", "TAS_DEF_DESCRIPTION"), Criteria::IN); + $c->addSelectColumn(TaskPeer::TAS_DEF_TITLE); + $c->addSelectColumn(TaskPeer::TAS_DEF_DESCRIPTION); + $c->add(TaskPeer::TAS_UID, $rowCri['TAS_UID']); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); - while ($rs->next()) { $row = $rs->getRow(); + $tasDefTitle = trim($row['TAS_DEF_TITLE']); + if ($tasDefTitle != '' && !$bUpdatedDefTitle) { + $newAppTitle = G::replaceDataField($tasDefTitle, $aAppData); + $res['APP_TITLE'] = $newAppTitle; + if (!(isset($fields['APP_TITLE']) && $fields['APP_TITLE'] == $newAppTitle)) { + $bUpdatedDefTitle = true; + /// updating the value in content for row (APP_TITLE,$lan) + $con = Propel::getConnection('workflow'); + $c1 = new Criteria('workflow'); + $c1->add(ContentPeer::CON_CATEGORY, 'APP_TITLE'); + $c1->add(ContentPeer::CON_ID, $sAppUid); + $c1->add(ContentPeer::CON_LANG, $lang); - switch ($row['CON_CATEGORY']) { - case 'TAS_DEF_TITLE': - if ($bUpdatedDefTitle) { - break; - } - $tasDefTitle = trim($row['CON_VALUE']); - if ($tasDefTitle != '') { - $newAppTitle = G::replaceDataField($tasDefTitle, $aAppData); - $res['APP_TITLE'] = $newAppTitle; - if (isset($fields['APP_TITLE']) && $fields['APP_TITLE'] == $newAppTitle) { - break; - } - $bUpdatedDefTitle = true; - /// updating the value in content for row (APP_TITLE,$lan) - $con = Propel::getConnection('workflow'); - $c1 = new Criteria('workflow'); - $c1->add(ContentPeer::CON_CATEGORY, 'APP_TITLE'); - $c1->add(ContentPeer::CON_ID, $sAppUid); - $c1->add(ContentPeer::CON_LANG, $lang); - - // update set - $c2 = new Criteria('workflow'); - $c2->add(ContentPeer::CON_VALUE, $newAppTitle); - BasePeer::doUpdate($c1, $c2, $con); - } - break; - case 'TAS_DEF_DESCRIPTION': - if ($bUpdatedDefDescription) { - break; - } - $tasDefDescription = trim($row['CON_VALUE']); - if ($tasDefDescription != '') { - $newAppDescription = G::replaceDataField($tasDefDescription, $aAppData); - $res['APP_DESCRIPTION'] = $newAppDescription; - if (isset($fields['APP_DESCRIPTION']) && - $fields['APP_DESCRIPTION'] == $newAppDescription) { - break; - } - $bUpdatedDefDescription = true; - /// updating the value in content for row (APP_TITLE,$lan) - $con = Propel::getConnection('workflow'); - $c1 = new Criteria('workflow'); - $c1->add(ContentPeer::CON_CATEGORY, 'APP_DESCRIPTION'); - $c1->add(ContentPeer::CON_ID, $sAppUid); - $c1->add(ContentPeer::CON_LANG, $lang); - // update set - $c2 = new Criteria('workflow'); - $c2->add(ContentPeer::CON_VALUE, $newAppDescription); - BasePeer::doUpdate($c1, $c2, $con); - } - break; + // update set + $c2 = new Criteria('workflow'); + $c2->add(ContentPeer::CON_VALUE, $newAppTitle); + BasePeer::doUpdate($c1, $c2, $con); + } + } + $tasDefDescription = trim($row['TAS_DEF_DESCRIPTION']); + if ($tasDefDescription != '' && !$bUpdatedDefDescription) { + $newAppDescription = G::replaceDataField($tasDefDescription, $aAppData); + $res['APP_DESCRIPTION'] = $newAppDescription; + if (!(isset($fields['APP_DESCRIPTION']) && $fields['APP_DESCRIPTION'] == $newAppDescription)) { + $bUpdatedDefDescription = true; + /// updating the value in content for row (APP_TITLE,$lan) + $con = Propel::getConnection('workflow'); + $c1 = new Criteria('workflow'); + $c1->add(ContentPeer::CON_CATEGORY, 'APP_DESCRIPTION'); + $c1->add(ContentPeer::CON_ID, $sAppUid); + $c1->add(ContentPeer::CON_LANG, $lang); + // update set + $c2 = new Criteria('workflow'); + $c2->add(ContentPeer::CON_VALUE, $newAppDescription); + BasePeer::doUpdate($c1, $c2, $con); + } } } - $rsCri->next(); $rowCri = $rsCri->getRow(); } @@ -2615,7 +2526,6 @@ class Cases public function getTransferHistoryCriteria($sAppUid) { $c = new Criteria('workflow'); - $c->addAsColumn('TAS_TITLE', 'TAS_TITLE.CON_VALUE'); $c->addSelectColumn(UsersPeer::USR_FIRSTNAME); $c->addSelectColumn(UsersPeer::USR_LASTNAME); $c->addSelectColumn(AppDelegationPeer::DEL_DELEGATE_DATE); @@ -2639,6 +2549,7 @@ class Cases $c->addSelectColumn(AppDelegationPeer::DEL_INIT_DATE); $c->addSelectColumn(AppDelayPeer::APP_ENABLE_ACTION_DATE); $c->addSelectColumn(AppDelayPeer::APP_DISABLE_ACTION_DATE); + $c->addSelectColumn(TaskPeer::TAS_TITLE); //APP_DELEGATION LEFT JOIN USERS $c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); @@ -2651,14 +2562,8 @@ class Cases $app[] = array(AppDelegationPeer::APP_UID, AppDelayPeer::APP_UID); $c->addJoinMC($app, Criteria::LEFT_JOIN); - //LEFT JOIN CONTENT TAS_TITLE - $c->addAlias("TAS_TITLE", 'CONTENT'); - $del = DBAdapter::getStringDelimiter(); - $appTitleConds = array(); - $appTitleConds[] = array(AppDelegationPeer::TAS_UID, 'TAS_TITLE.CON_ID'); - $appTitleConds[] = array('TAS_TITLE.CON_CATEGORY', $del . 'TAS_TITLE' . $del); - $appTitleConds[] = array('TAS_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($appTitleConds, Criteria::LEFT_JOIN); + //LEFT JOIN TASK TAS_TITLE + $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); //WHERE $c->add(AppDelegationPeer::APP_UID, $sAppUid); @@ -2742,6 +2647,7 @@ class Cases $c = new Criteria('workflow'); $c->clearSelectColumns(); $c->addSelectColumn(ApplicationPeer::APP_UID); + $c->addSelectColumn(ApplicationPeer::APP_TITLE); $c->addSelectColumn(ApplicationPeer::APP_NUMBER); $c->addSelectColumn(ApplicationPeer::APP_UPDATE_DATE); $c->addSelectColumn(ApplicationPeer::PRO_UID); @@ -2766,9 +2672,8 @@ class Cases $c->addSelectColumn(UsersPeer::USR_UID); $c->addAsColumn('APP_CURRENT_USER', "CONCAT(USERS.USR_LASTNAME, ' ', USERS.USR_FIRSTNAME)"); $c->addSelectColumn(ApplicationPeer::APP_STATUS); - $c->addAsColumn('APP_TITLE', 'APP_TITLE.CON_VALUE'); - $c->addAsColumn('APP_PRO_TITLE', 'PRO_TITLE.CON_VALUE'); - $c->addAsColumn('APP_TAS_TITLE', 'TAS_TITLE.CON_VALUE'); + $c->addAsColumn('APP_PRO_TITLE', ProcessPeer::PRO_TITLE); + $c->addAsColumn('APP_TAS_TITLE', TaskPeer::TAS_TITLE); //$c->addAsColumn('APP_DEL_PREVIOUS_USER', 'APP_LAST_USER.USR_USERNAME'); $c->addAsColumn( 'APP_DEL_PREVIOUS_USER', "CONCAT(APP_LAST_USER.USR_LASTNAME, @@ -2776,38 +2681,17 @@ class Cases APP_LAST_USER.USR_FIRSTNAME)" ); - $c->addAlias("APP_TITLE", 'CONTENT'); - $c->addAlias("PRO_TITLE", 'CONTENT'); - $c->addAlias("TAS_TITLE", 'CONTENT'); $c->addAlias("APP_PREV_DEL", 'APP_DELEGATION'); $c->addAlias("APP_LAST_USER", 'USERS'); $c->addJoin(ApplicationPeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN); + $c->addJoin(ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); $appThreadConds[] = array(ApplicationPeer::APP_UID, AppThreadPeer::APP_UID); $appThreadConds[] = array(AppDelegationPeer::DEL_INDEX, AppThreadPeer::DEL_INDEX); $c->addJoinMC($appThreadConds, Criteria::LEFT_JOIN); $c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $del = DBAdapter::getStringDelimiter(); - $appTitleConds = array(); - $appTitleConds[] = array(ApplicationPeer::APP_UID, 'APP_TITLE.CON_ID'); - $appTitleConds[] = array('APP_TITLE.CON_CATEGORY', $del . 'APP_TITLE' . $del); - $appTitleConds[] = array('APP_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($appTitleConds, Criteria::LEFT_JOIN); - - $proTitleConds = array(); - $proTitleConds[] = array(ApplicationPeer::PRO_UID, 'PRO_TITLE.CON_ID'); - $proTitleConds[] = array('PRO_TITLE.CON_CATEGORY', $del . 'PRO_TITLE' . $del); - $proTitleConds[] = array('PRO_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($proTitleConds, Criteria::LEFT_JOIN); - - $tasTitleConds = array(); - $tasTitleConds[] = array(AppDelegationPeer::TAS_UID, 'TAS_TITLE.CON_ID'); - $tasTitleConds[] = array('TAS_TITLE.CON_CATEGORY', $del . 'TAS_TITLE' . $del); - $tasTitleConds[] = array('TAS_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN); - $prevConds = array(); $prevConds[] = array(ApplicationPeer::APP_UID, 'APP_PREV_DEL.APP_UID'); $prevConds[] = array('APP_PREV_DEL.DEL_INDEX', AppDelegationPeer::DEL_PREVIOUS); @@ -2991,6 +2875,7 @@ class Cases $c = new Criteria('workflow'); $c->clearSelectColumns(); $c->addSelectColumn(ApplicationPeer::APP_UID); + $c->addSelectColumn(ApplicationPeer::APP_TITLE); $c->addSelectColumn(ApplicationPeer::APP_NUMBER); $c->addSelectColumn(ApplicationPeer::APP_UPDATE_DATE); $c->addSelectColumn(ApplicationPeer::PRO_UID); @@ -3010,40 +2895,17 @@ class Cases $c->addSelectColumn(UsersPeer::USR_UID); $c->addAsColumn('APP_CURRENT_USER', "CONCAT(USERS.USR_LASTNAME, ' ', USERS.USR_FIRSTNAME)"); $c->addSelectColumn(ApplicationPeer::APP_STATUS); - $c->addAsColumn('APP_TITLE', 'APP_TITLE.CON_VALUE'); - $c->addAsColumn('APP_PRO_TITLE', 'PRO_TITLE.CON_VALUE'); - $c->addAsColumn('APP_TAS_TITLE', 'TAS_TITLE.CON_VALUE'); - - $c->addAlias("APP_TITLE", 'CONTENT'); - $c->addAlias("PRO_TITLE", 'CONTENT'); - $c->addAlias("TAS_TITLE", 'CONTENT'); + $c->addAsColumn('APP_PRO_TITLE', ProcessPeer::PRO_TITLE); + $c->addAsColumn('APP_TAS_TITLE', TaskPeer::TAS_TITLE); $c->addJoin(ApplicationPeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN); + $c->addJoin(ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); $appThreadConds[] = array(ApplicationPeer::APP_UID, AppThreadPeer::APP_UID); $appThreadConds[] = array(AppDelegationPeer::DEL_INDEX, AppThreadPeer::DEL_INDEX); $c->addJoinMC($appThreadConds, Criteria::LEFT_JOIN); $c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $del = DBAdapter::getStringDelimiter(); - $appTitleConds = array(); - $appTitleConds[] = array(ApplicationPeer::APP_UID, 'APP_TITLE.CON_ID'); - $appTitleConds[] = array('APP_TITLE.CON_CATEGORY', $del . 'APP_TITLE' . $del); - $appTitleConds[] = array('APP_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($appTitleConds, Criteria::LEFT_JOIN); - // - $proTitleConds = array(); - $proTitleConds[] = array(ApplicationPeer::PRO_UID, 'PRO_TITLE.CON_ID'); - $proTitleConds[] = array('PRO_TITLE.CON_CATEGORY', $del . 'PRO_TITLE' . $del); - $proTitleConds[] = array('PRO_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($proTitleConds, Criteria::LEFT_JOIN); - // - $tasTitleConds = array(); - $tasTitleConds[] = array(AppDelegationPeer::TAS_UID, 'TAS_TITLE.CON_ID'); - $tasTitleConds[] = array('TAS_TITLE.CON_CATEGORY', $del . 'TAS_TITLE' . $del); - $tasTitleConds[] = array('TAS_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN); - $c->add(AppDelegationPeer::USR_UID, ''); $c->add(AppDelegationPeer::TAS_UID, $aTasks, Criteria::IN); break; @@ -3177,19 +3039,14 @@ class Cases $c->addAsColumn('APP_CURRENT_USER', "CONCAT(USERS.USR_LASTNAME, ' ', USERS.USR_FIRSTNAME)"); $c->addSelectColumn(ApplicationPeer::APP_STATUS); if ($titles) { - $c->addAsColumn('APP_TITLE', 'APP_TITLE.CON_VALUE'); - $c->addAsColumn('APP_PRO_TITLE', 'PRO_TITLE.CON_VALUE'); - $c->addAsColumn('APP_TAS_TITLE', 'TAS_TITLE.CON_VALUE'); + $c->addSelectColumn(ApplicationPeer::APP_TITLE); + $c->addAsColumn('APP_PRO_TITLE', ProcessPeer::PRO_TITLE); + $c->addAsColumn('APP_TAS_TITLE', TaskPeer::TAS_TITLE); } //$c->addAsColumn('APP_DEL_PREVIOUS_USER', 'APP_LAST_USER.USR_USERNAME'); $c->addAsColumn( 'APP_DEL_PREVIOUS_USER', "CONCAT(APP_LAST_USER.USR_LASTNAME, ' ', APP_LAST_USER.USR_FIRSTNAME)"); - if ($titles) { - $c->addAlias("APP_TITLE", 'CONTENT'); - $c->addAlias("PRO_TITLE", 'CONTENT'); - $c->addAlias("TAS_TITLE", 'CONTENT'); - } $c->addAlias("APP_PREV_DEL", 'APP_DELEGATION'); $c->addAlias("APP_LAST_USER", 'USERS'); @@ -3201,24 +3058,7 @@ class Cases $c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); if ($titles) { - $del = DBAdapter::getStringDelimiter(); - $appTitleConds = array(); - $appTitleConds[] = array(ApplicationPeer::APP_UID, 'APP_TITLE.CON_ID'); - $appTitleConds[] = array('APP_TITLE.CON_CATEGORY', $del . 'APP_TITLE' . $del); - $appTitleConds[] = array('APP_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($appTitleConds, Criteria::LEFT_JOIN); - - $proTitleConds = array(); - $proTitleConds[] = array(ApplicationPeer::PRO_UID, 'PRO_TITLE.CON_ID'); - $proTitleConds[] = array('PRO_TITLE.CON_CATEGORY', $del . 'PRO_TITLE' . $del); - $proTitleConds[] = array('PRO_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($proTitleConds, Criteria::LEFT_JOIN); - - $tasTitleConds = array(); - $tasTitleConds[] = array(AppDelegationPeer::TAS_UID, 'TAS_TITLE.CON_ID'); - $tasTitleConds[] = array('TAS_TITLE.CON_CATEGORY', $del . 'TAS_TITLE' . $del); - $tasTitleConds[] = array('TAS_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN); + $c->addJoin(ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); } $prevConds = array(); @@ -3260,6 +3100,7 @@ class Cases $c = new Criteria('workflow'); $c->clearSelectColumns(); $c->addSelectColumn(ApplicationPeer::APP_UID); + $c->addSelectColumn(ApplicationPeer::APP_TITLE); $c->addSelectColumn(ApplicationPeer::APP_NUMBER); $c->addSelectColumn(ApplicationPeer::APP_UPDATE_DATE); $c->addSelectColumn(AppDelegationPeer::DEL_PRIORITY); @@ -3276,45 +3117,23 @@ class Cases $c->addSelectColumn(UsersPeer::USR_UID); $c->addAsColumn('APP_CURRENT_USER', "CONCAT(USERS.USR_LASTNAME, ' ', USERS.USR_FIRSTNAME)"); $c->addSelectColumn(ApplicationPeer::APP_STATUS); - $c->addAsColumn('APP_TITLE', 'APP_TITLE.CON_VALUE'); - $c->addAsColumn('APP_PRO_TITLE', 'PRO_TITLE.CON_VALUE'); - $c->addAsColumn('APP_TAS_TITLE', 'TAS_TITLE.CON_VALUE'); + $c->addAsColumn('APP_PRO_TITLE', ProcessPeer::PRO_TITLE); + $c->addAsColumn('APP_TAS_TITLE', TaskPeer::TAS_TITLE); //$c->addAsColumn('APP_DEL_PREVIOUS_USER', 'APP_LAST_USER.USR_USERNAME'); $c->addAsColumn( 'APP_DEL_PREVIOUS_USER', "CONCAT(APP_LAST_USER.USR_LASTNAME, ' ', APP_LAST_USER.USR_FIRSTNAME)"); - $c->addAlias("APP_TITLE", 'CONTENT'); - $c->addAlias("PRO_TITLE", 'CONTENT'); - $c->addAlias("TAS_TITLE", 'CONTENT'); $c->addAlias("APP_PREV_DEL", 'APP_DELEGATION'); $c->addAlias("APP_LAST_USER", 'USERS'); $c->addJoin(ApplicationPeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN); + $c->addJoin(ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); $appThreadConds[] = array(ApplicationPeer::APP_UID, AppThreadPeer::APP_UID); $appThreadConds[] = array(AppDelegationPeer::DEL_INDEX, AppThreadPeer::DEL_INDEX); $c->addJoinMC($appThreadConds, Criteria::LEFT_JOIN); $c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $del = DBAdapter::getStringDelimiter(); - $appTitleConds = array(); - $appTitleConds[] = array(ApplicationPeer::APP_UID, 'APP_TITLE.CON_ID'); - $appTitleConds[] = array('APP_TITLE.CON_CATEGORY', $del . 'APP_TITLE' . $del); - $appTitleConds[] = array('APP_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($appTitleConds, Criteria::LEFT_JOIN); - - $proTitleConds = array(); - $proTitleConds[] = array(ApplicationPeer::PRO_UID, 'PRO_TITLE.CON_ID'); - $proTitleConds[] = array('PRO_TITLE.CON_CATEGORY', $del . 'PRO_TITLE' . $del); - $proTitleConds[] = array('PRO_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($proTitleConds, Criteria::LEFT_JOIN); - - $tasTitleConds = array(); - $tasTitleConds[] = array(AppDelegationPeer::TAS_UID, 'TAS_TITLE.CON_ID'); - $tasTitleConds[] = array('TAS_TITLE.CON_CATEGORY', $del . 'TAS_TITLE' . $del); - $tasTitleConds[] = array('TAS_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN); - $prevConds = array(); $prevConds[] = array(ApplicationPeer::APP_UID, 'APP_PREV_DEL.APP_UID'); $prevConds[] = array('APP_PREV_DEL.DEL_INDEX', AppDelegationPeer::DEL_PREVIOUS); @@ -5492,7 +5311,9 @@ class Cases $appDelegation = AppDelegationPeer::retrieveByPK($applicationUid, $aTask['DEL_INDEX']); if (!is_null($appDelegation)) { - $arrayData2['TAS_TITLE'] = Content::load('TAS_TITLE', '', $appDelegation->getTasUid(), SYS_LANG); + $oTask = new Task(); + $aTask = $oTask->load($appDelegation->getTasUid()); + $arrayData2['TAS_TITLE'] = $aTask['TAS_TITLE']; $arrayData2['DEL_TASK_DUE_DATE'] = $appDelegation->getDelTaskDueDate(); } } else { @@ -6840,6 +6661,7 @@ class Cases $c = new Criteria('workflow'); $c->clearSelectColumns(); $c->addSelectColumn(ApplicationPeer::APP_UID); + $c->addSelectColumn(ApplicationPeer::APP_TITLE); $c->addSelectColumn(ApplicationPeer::APP_NUMBER); $c->addSelectColumn(ApplicationPeer::APP_UPDATE_DATE); $c->addSelectColumn(AppDelegationPeer::DEL_PRIORITY); @@ -6854,46 +6676,24 @@ class Cases $c->addSelectColumn(UsersPeer::USR_UID); $c->addAsColumn('APP_CURRENT_USER', "CONCAT(USERS.USR_LASTNAME, ' ', USERS.USR_FIRSTNAME)"); $c->addSelectColumn(ApplicationPeer::APP_STATUS); - $c->addAsColumn('APP_TITLE', 'APP_TITLE.CON_VALUE'); - $c->addAsColumn('APP_PRO_TITLE', 'PRO_TITLE.CON_VALUE'); - $c->addAsColumn('APP_TAS_TITLE', 'TAS_TITLE.CON_VALUE'); + $c->addAsColumn('APP_PRO_TITLE', ProcessPeer::PRO_TITLE); + $c->addAsColumn('APP_TAS_TITLE', TaskPeer::TAS_TITLE); //$c->addAsColumn('APP_DEL_PREVIOUS_USER', 'APP_LAST_USER.USR_USERNAME'); $c->addAsColumn( 'APP_DEL_PREVIOUS_USER', "CONCAT(APP_LAST_USER.USR_LASTNAME, ' ', APP_LAST_USER.USR_FIRSTNAME)" ); - $c->addAlias("APP_TITLE", 'CONTENT'); - $c->addAlias("PRO_TITLE", 'CONTENT'); - $c->addAlias("TAS_TITLE", 'CONTENT'); $c->addAlias("APP_PREV_DEL", 'APP_DELEGATION'); $c->addAlias("APP_LAST_USER", 'USERS'); $c->addJoin(ApplicationPeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN); + $c->addJoin(ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); $appThreadConds[] = array(ApplicationPeer::APP_UID, AppThreadPeer::APP_UID); $appThreadConds[] = array(AppDelegationPeer::DEL_INDEX, AppThreadPeer::DEL_INDEX); $c->addJoinMC($appThreadConds, Criteria::LEFT_JOIN); $c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $del = DBAdapter::getStringDelimiter(); - $appTitleConds = array(); - $appTitleConds[] = array(ApplicationPeer::APP_UID, 'APP_TITLE.CON_ID'); - $appTitleConds[] = array('APP_TITLE.CON_CATEGORY', $del . 'APP_TITLE' . $del); - $appTitleConds[] = array('APP_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($appTitleConds, Criteria::LEFT_JOIN); - - $proTitleConds = array(); - $proTitleConds[] = array(ApplicationPeer::PRO_UID, 'PRO_TITLE.CON_ID'); - $proTitleConds[] = array('PRO_TITLE.CON_CATEGORY', $del . 'PRO_TITLE' . $del); - $proTitleConds[] = array('PRO_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($proTitleConds, Criteria::LEFT_JOIN); - - $tasTitleConds = array(); - $tasTitleConds[] = array(AppDelegationPeer::TAS_UID, 'TAS_TITLE.CON_ID'); - $tasTitleConds[] = array('TAS_TITLE.CON_CATEGORY', $del . 'TAS_TITLE' . $del); - $tasTitleConds[] = array('TAS_TITLE.CON_LANG', $del . SYS_LANG . $del); - $c->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN); - $prevConds = array(); $prevConds[] = array(ApplicationPeer::APP_UID, 'APP_PREV_DEL.APP_UID'); $prevConds[] = array('APP_PREV_DEL.DEL_INDEX', AppDelegationPeer::DEL_PREVIOUS); diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 0b45e3783..3b0734817 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -1232,6 +1232,7 @@ class Derivation { $iAppThreadIndex = $appFields['DEL_THREAD']; $delType = 'NORMAL'; + $sendNotificationsMobile = false; if (is_numeric( $nextDel['DEL_PRIORITY'] )) { $nextDel['DEL_PRIORITY'] = (isset( $nextDel['DEL_PRIORITY'] ) ? ($nextDel['DEL_PRIORITY'] >= 1 && $nextDel['DEL_PRIORITY'] <= 5 ? $nextDel['DEL_PRIORITY'] : '3') : '3'); @@ -1358,6 +1359,8 @@ class Derivation } } + $sendNotificationsMobile = $this->sendNotificationsMobile($aOldFields, $aSP, $aNewCase['INDEX']); + //If not is SYNCHRONOUS derivate one more time if ($aSP['SP_SYNCHRONOUS'] == 0) { $this->case->setDelInitDate( $currentDelegation['APP_UID'], $iNewDelIndex ); @@ -1388,6 +1391,10 @@ class Derivation } } } //end switch + + if($iNewDelIndex !== 0 && !$sendNotificationsMobile){ + $sendNotificationsMobile = $this->sendNotificationsMobile($appFields, $nextDel, $iNewDelIndex); + } return $iNewDelIndex; } @@ -1640,5 +1647,24 @@ class Derivation } } } + + /** + * @param $appFields + * @param $nextDel + * @param $iNewDelIndex + * @return bool + */ + private function sendNotificationsMobile($appFields, $nextDel, $iNewDelIndex) + { + try { + $notificationMobile = new \ProcessMaker\BusinessModel\Light\NotificationDevice(); + if ($notificationMobile->checkMobileNotifications()) { + $notificationMobile->routeCaseNotificationDevice($appFields, $nextDel, $iNewDelIndex); + } + return true; + } catch (Exception $e) { + \G::log(G::loadTranslation('ID_NOTIFICATION_ERROR') . '|' . $e->getMessage(), PATH_DATA, "mobile.log"); + } + } } diff --git a/workflow/engine/classes/class.groups.php b/workflow/engine/classes/class.groups.php index 7ab419557..017728717 100755 --- a/workflow/engine/classes/class.groups.php +++ b/workflow/engine/classes/class.groups.php @@ -209,17 +209,11 @@ class Groups $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); $oCriteria->addSelectColumn(GroupwfPeer::GRP_STATUS); - $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); - $oCriteria->addJoin(GroupwfPeer::GRP_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN); $oCriteria->add(GroupwfPeer::GRP_UID, $gUIDs, Criteria::NOT_IN); $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); - $oCriteria->add(ContentPeer::CON_CATEGORY, 'GRP_TITLE'); - $oCriteria->add(ContentPeer::CON_LANG, SYS_LANG); - if ($filter != '') { - $oCriteria->add(ContentPeer::CON_VALUE, '%' . $filter . '%', Criteria::LIKE); + $oCriteria->add(GroupwfPeer::GRP_TITLE, '%' . $filter . '%', Criteria::LIKE); } - return $oCriteria; } catch (exception $e) { throw $e; @@ -240,18 +234,12 @@ class Groups $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); $oCriteria->addSelectColumn(GroupwfPeer::GRP_STATUS); $oCriteria->addSelectColumn(GroupwfPeer::GRP_LDAP_DN); - $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); $oCriteria->addJoin(GroupUserPeer::GRP_UID, GroupwfPeer::GRP_UID, Criteria::LEFT_JOIN); - $oCriteria->addJoin(GroupwfPeer::GRP_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN); $oCriteria->add(GroupUserPeer::USR_UID, $sUserUid, Criteria::EQUAL); $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); - $oCriteria->add(ContentPeer::CON_CATEGORY, 'GRP_TITLE'); - $oCriteria->add(ContentPeer::CON_LANG, SYS_LANG); - if ($filter != '') { - $oCriteria->add(ContentPeer::CON_VALUE, '%' . $filter . '%', Criteria::LIKE); + $oCriteria->add(GroupwfPeer::GRP_TITLE, '%' . $filter . '%', Criteria::LIKE); } - return $oCriteria; } catch (exception $e) { throw $e; @@ -261,7 +249,7 @@ class Groups public function getGroupsForUser($usrUid) { $criteria = $this->getAssignedGroupsCriteria($usrUid); - $criteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE); + $criteria->addAscendingOrderByColumn(GroupwfPeer::GRP_TITLE); $dataset = GroupwfPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); diff --git a/workflow/engine/classes/class.pmDashlet.php b/workflow/engine/classes/class.pmDashlet.php index 853b053b0..f26ea6560 100644 --- a/workflow/engine/classes/class.pmDashlet.php +++ b/workflow/engine/classes/class.pmDashlet.php @@ -132,7 +132,7 @@ class PMDashlet extends DashletInstance implements DashletInterface $departmentInstance = new Department(); try { $department = $departmentInstance->load( $row['DAS_INS_OWNER_UID'] ); - $row['DAS_INS_OWNER_TITLE'] = $department['DEPO_TITLE']; + $row['DAS_INS_OWNER_TITLE'] = $department['DEP_TITLE']; } catch (Exception $error) { $this->remove( $row['DAS_INS_UID'] ); $row['DAS_INS_UID'] = ''; diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 0f2f93807..c9ec141fd 100755 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -1897,20 +1897,20 @@ function PMFGenerateOutputDocument ($outputID, $sApplication = null, $index = nu * @label PMF Group List * @link http://wiki.processmaker.com/index.php/ProcessMaker_Functions#PMFGroupList.28.29 * + * @param string | $regex = null | String to search | Optional parameter. + * @param int | $start = null | Start | Optional parameter. + * @param int | $limit = null | Limit | Optional parameter. * @return array | $rows | List of groups | An array of groups * */ -function PMFGroupList () //its test was successfull +function PMFGroupList ($regex = null, $start = null, $limit = null) //its test was successfull { G::LoadClass( 'wsBase' ); $ws = new wsBase(); - $result = $ws->groupList(); - $rows = Array (); - $i = 1; + $result = $ws->groupList($regex, $start, $limit); + $rows = array(); if (isset( $result )) { - foreach ($result as $item) { - $rows[$i ++] = $item; - } + $rows = array_combine(range(1, count($result)), array_values($result)); } return $rows; } @@ -2984,7 +2984,7 @@ function PMFSaveCurrentData () * @name PMFTasksListByProcessId * @label PMF Tasks List By Process Id * @param string | $processId | ID Process | To get the current process id, use the system variable @@PROCESS - * @param string | $lang | Language | Is the language of the text, that must be the same to the column: "CON_LANG" of the CONTENT table + * @param string | $lang | Language | This parameter actually is not used, the same is kept by backward compatibility.Is the language of the text, that must be the same to the column: "CON_LANG" of the CONTENT table * @return array | $result | Array result | Array of associative arrays which contain the unique task ID and title */ function PMFTasksListByProcessId($processId, $lang = 'en') @@ -2992,11 +2992,7 @@ function PMFTasksListByProcessId($processId, $lang = 'en') $result = array(); $criteria = new Criteria("workflow"); $criteria->addSelectColumn(TaskPeer::TAS_UID); - $criteria->addSelectColumn(ContentPeer::CON_VALUE); - $criteria->addSelectColumn(ContentPeer::CON_LANG); - $criteria->addJoin(TaskPeer::TAS_UID, ContentPeer::CON_ID, Criteria::INNER_JOIN); - $criteria->add(ContentPeer::CON_CATEGORY, 'TAS_TITLE', Criteria::EQUAL); - $criteria->add(ContentPeer::CON_LANG, $lang, Criteria::EQUAL); + $criteria->addSelectColumn(TaskPeer::TAS_TITLE); $criteria->add(TaskPeer::PRO_UID, $processId, Criteria::EQUAL); $ds = TaskPeer::doSelectRS($criteria); $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC); @@ -3033,12 +3029,8 @@ function PMFGetProcessUidByName($processName = '') $criteria = new Criteria('workflow'); $criteria->addSelectColumn(ProcessPeer::PRO_UID); - - $criteria->addJoin(ContentPeer::CON_ID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); - $criteria->add(ContentPeer::CON_VALUE, $processName, Criteria::EQUAL); - $criteria->add(ContentPeer::CON_CATEGORY, 'PRO_TITLE', Criteria::EQUAL); - - $rsCriteria = ContentPeer::doSelectRS($criteria); + $criteria->add(ProcessPeer::PRO_TITLE, $processName, Criteria::EQUAL); + $rsCriteria = ProcessPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($rsCriteria->next()) { @@ -3174,14 +3166,18 @@ function PMFDynaFormFields($dynUid, $appUid = false, $delIndex = 0) * @name PMFGetTaskName * @label PMF Get Task Title Text * @param string | $taskUid | ID Task | Is the identifier of task, that must be the same to the column: "TAS_UID" of the TASK table - * @param string | $lang | Language | Is the language of the text, that must be the same to the column: "CON_LANG" of the CONTENT table + * @param string | $lang | Language | This parameter actually is not used, the same is kept by backward compatibility. Is the language of the text, that must be the same to the column: "CON_LANG" + * of the CONTENT table * @return string | $text | Translated text | the translated text of a string in Content */ function PMFGetTaskName($taskUid, $lang = SYS_LANG) { if (empty($taskUid)) { return false; } - return PMFGeti18nText($taskUid, 'TAS_TITLE', $lang); + $oTask = new \Task(); + $aTasks = $oTask->load($taskUid); + $text = isset($aTasks["TAS_TITLE"]) ? $aTasks["TAS_TITLE"] : false; + return $text; } /** @@ -3256,7 +3252,20 @@ function PMFGetGroupUID($groupName) */ function PMFGetTaskUID($taskName, $proUid = null) { - return PMFGetUidFromText($taskName, 'TAS_TITLE', $proUid); + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(TaskPeer::TAS_UID); + $oCriteria->add(TaskPeer::TAS_TITLE, $taskName); + if(!is_null($proUid)){ + $oCriteria->add(TaskPeer::PRO_UID, $proUid); + } + $oDataset = TaskPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $uids = array(); + while ($row = $oDataset->getRow()) { + $uids[] = $row['TAS_UID']; + $oDataset->next(); + } + return $uids; } /** @@ -3652,7 +3661,7 @@ function PMFCopyDocumentCase($appDocUid, $versionNumber, $targetCaseUid, $inputD * @param string | $taskUid | Task Uid | The unique Id of the Task. * @param string | $userGroupUid | Uid from User or Group | The unique Uid from User or Group. * - * @return int Returns 1 when is assigned. + * @return int | $result | Result | Returns 1 when is assigned */ function PMFAddUserGroupToTask($taskUid, $userGroupUid) @@ -3742,3 +3751,89 @@ function PMFRemoveUserGroupFromTask($taskUid, $userGroupUid) return 1; } +/** + * @method + * + * Sends emails to user's group using a template file + * + * @name PMFSendMessageToGroup + * @label PMF Send Message To Group + * @link http://wiki.processmaker.com/index.php/ProcessMaker_Functions#PMFSendMessageToGroup.28.29 + * + * @param string(32) | $groupId | Group ID | Unique id of Group. + * @param string(32) | $caseId | Case ID | The UID (unique identification) for a case, which is a string of 32 hexadecimal characters to identify the case. + * @param string | $from | Sender | The email address of the person who sends out the email. + * @param string | $subject | Subject of the email | The subject (title) of the email. + * @param string | $template | Name of the template | The name of the template file in plain text or HTML format which will produce the body of the email. + * @param array | $arrayField = [] | Variables for email template | Optional parameter. An associative array where the keys are the variable names and the values are the variables' values. + * @param array | $arrayAttachment = [] | Attachment | An Optional arrray. An array of files (full paths) to be attached to the email. + * @param boolean | $showMessage = true | Show message | Optional parameter. Set to TRUE to show the message in the case's message history. + * @param int | $delIndex = 0 | Delegation index of the case | Optional parameter. The delegation index of the current task in the case. + * @param mixed | $config = [] | Email server configuration | An optional array: An array of parameters to be used in the Email sent (MESS_ENGINE, MESS_SERVER, MESS_PORT, MESS_FROM_MAIL, MESS_RAUTH, MESS_ACCOUNT, MESS_PASSWORD, and SMTPSecure) Or String: UID of Email server. + * @param int | $limit = 100 | Limit | Limit of mails to send in each bach. + * + * @return int | $result | Result | Returns 1 when is send message to group + */ +function PMFSendMessageToGroup( + $groupId, + $caseId, + $from, + $subject, + $template, + $arrayField = [], + $arrayAttachment = [], + $showMessage = true, + $delIndex = 0, + $config = [], + $limit = 100 +) { + //Verify data and Set variables + $group = new \ProcessMaker\BusinessModel\Group(); + $case = new \ProcessMaker\BusinessModel\Cases(); + + $group->throwExceptionIfNotExistsGroup($groupId, '$groupId'); + + $arrayApplicationData = $case->getApplicationRecordByPk($caseId, ['$applicationUid' => '$caseId'], true); + + //Send mails + $criteriaGroupUser = $group->getUserCriteria($groupId, ['condition' => [[UsersPeer::USR_STATUS, 'ACTIVE', Criteria::EQUAL]]]); + + $start = 0; + + do { + $flagNextRecord = false; + + $to = ''; + + $criteria = clone $criteriaGroupUser; + + $criteria->setOffset($start); + $criteria->setLimit($limit); + + $rsCriteria = GroupUserPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $record = $rsCriteria->getRow(); + + $to .= (($to != '')? ', ' : '') . $record['USR_EMAIL']; + + $flagNextRecord = true; + } + + if ($flagNextRecord) { + $result = PMFSendMessage( + $caseId, $from, $to, null, null, $subject, $template, $arrayField, $arrayAttachment, $showMessage, $delIndex, $config + ); + + if ($result == 0) { + return 0; + } + } + + $start += $limit; + } while ($flagNextRecord); + + //Return + return 1; +} diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index 679f0c115..676684fe2 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -98,48 +98,34 @@ class processMap $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(TaskPeer::PRO_UID); $oCriteria->addSelectColumn(TaskPeer::TAS_UID); - $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); + $oCriteria->addSelectColumn(TaskPeer::TAS_TITLE); $oCriteria->addSelectColumn(TaskPeer::TAS_START); $oCriteria->addSelectColumn(TaskPeer::TAS_POSX); $oCriteria->addSelectColumn(TaskPeer::TAS_POSY); $oCriteria->addSelectColumn(TaskPeer::TAS_COLOR); $oCriteria->addSelectColumn(TaskPeer::TAS_TYPE); - $aConditions = array(); - $aConditions[] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); - $aConditions[] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter() . 'TAS_TITLE' . DBAdapter::getStringDelimiter() ); - $aConditions[] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() ); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); $oDataset = TaskPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro')); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow1 = $oDataset->getRow()) { - $oTask = new StdClass(); + $oTask = new stdClass(); $oTask->uid = $aRow1['TAS_UID']; $oTask->task_type = $aRow1['TAS_TYPE']; if ($aRow1['TAS_TYPE'] == 'NORMAL') { - if (($aRow1['CON_VALUE'] == "")) { + if (($aRow1['TAS_TITLE'] == "")) { //There is no Label in Current SYS_LANG language so try to find in English - by default $oTask1 = new Task(); $aFields1 = $oTask1->load($oTask->uid); - $aRow1['CON_VALUE'] = $oTask1->getTasTitle(); + $aRow1['TAS_TITLE'] = $oTask1->getTasTitle(); } - $oTask->label = htmlentities($aRow1['CON_VALUE'], ENT_QUOTES, 'UTF-8'); + $oTask->label = htmlentities($aRow1['TAS_TITLE'], ENT_QUOTES, 'UTF-8'); } else { $oCriteria = new Criteria('workflow'); - $del = DBAdapter::getStringDelimiter(); $oCriteria->add(SubProcessPeer::PRO_PARENT, $aRow1['PRO_UID']); $oCriteria->add(SubProcessPeer::TAS_PARENT, $aRow1['TAS_UID']); - - $oCriteria->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAlias("C1", 'CONTENT'); - $tasTitleConds = array(); - $tasTitleConds[] = array(SubProcessPeer::TAS_PARENT, 'C1.CON_ID' ); - $tasTitleConds[] = array('C1.CON_CATEGORY', $del . 'TAS_TITLE' . $del ); - $tasTitleConds[] = array('C1.CON_LANG', $del . SYS_LANG . $del); - $oCriteria->addJoinMC($tasTitleConds, Criteria::LEFT_JOIN); - + $oCriteria->addJoin(SubProcessPeer::TAS_PARENT, TaskPeer::TAS_UID); $oDatasetX = SubProcessPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro')); $oDatasetX->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDatasetX->next(); @@ -153,10 +139,10 @@ class processMap } } $oTask->taskINI = (strtolower($aRow1['TAS_START']) == 'true' ? true : false); - $oTask->position = new StdClass(); + $oTask->position = new stdClass(); $oTask->position->x = (int) $aRow1['TAS_POSX']; $oTask->position->y = (int) $aRow1['TAS_POSY']; - $oTask->derivation = new StdClass(); + $oTask->derivation = new stdClass(); $oTask->derivation->type = ''; $oTask->derivation->to = array(); $oCriteria = new Criteria('workflow'); @@ -189,7 +175,7 @@ class processMap $aRow2['ROU_TYPE'] = 8; break; } - $oTo = new StdClass(); + $oTo = new stdClass(); $oTo->task = $aRow2['ROU_NEXT_TASK']; $oTo->condition = $aRow2['ROU_CONDITION']; $oTo->executant = $aRow2['ROU_TO_LAST_USER']; @@ -967,13 +953,7 @@ class processMap } $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions[] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID' ); - $aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter ); - $aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_TITLE); $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $sUIDs, Criteria::NOT_IN); $oDataset = InputDocumentPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro')); @@ -983,7 +963,9 @@ class processMap if (($aRow['INP_DOC_TITLE'] == null) || ($aRow['INP_DOC_TITLE'] == "")) { // There is no transaltion for this Document name, try to get/regenerate the label - $aRow['INP_DOC_TITLE'] = Content::Load("INP_DOC_TITLE", "", $aRow['INP_DOC_UID'], SYS_LANG); + $oInputDocument = new InputDocument; + $row = $oInputDocument->load($aRow['INP_DOC_UID']); + $aRow['INP_DOC_TITLE'] = $row['INP_DOC_TITLE']; } $aBB[] = array('STEP_UID' => $aRow['INP_DOC_UID'], 'STEP_TITLE' => $aRow['INP_DOC_TITLE'], 'STEP_TYPE_OBJ' => 'INPUT_DOCUMENT', 'STEP_MODE' => '' ); $oDataset->next(); @@ -1356,7 +1338,7 @@ class processMap { try { $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn('TAS_UID'); + $oCriteria->addSelectColumn(TaskPeer::TAS_UID); $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); $oDataset = TaskPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); @@ -1366,50 +1348,29 @@ class processMap while ($oDataset->next()) { $aRow = $oDataset->getRow(); - $aTasks[] = $aRow["TAS_UID"]; $iTaskNumber = $iTaskNumber + 1; } if ($iTaskNumber > 0) { $criteria = new Criteria("workflow"); - - $criteria->addSelectColumn(ContentPeer::CON_LANG); - $criteria->addSelectColumn(ContentPeer::CON_VALUE); - $criteria->add(ContentPeer::CON_ID, $aTasks, Criteria::IN); - $criteria->add(ContentPeer::CON_CATEGORY, "TAS_TITLE"); - - $rsSQLCON = ContentPeer::doSelectRS($criteria); + $criteria->addSelectColumn(TaskPeer::TAS_TITLE); + $criteria->add(TaskPeer::TAS_UID, $aTasks, Criteria::IN); + $rsSQLCON = TaskPeer::doSelectRS($criteria); $rsSQLCON->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $numMaxLang = 0; $numMax = 0; - while ($rsSQLCON->next()) { $row = $rsSQLCON->getRow(); - - $conLang = $row["CON_LANG"]; - $conValue = $row["CON_VALUE"]; - + $conValue = $row["TAS_TITLE"]; if (preg_match("/^\S+\s(\d+)$/", $conValue, $matches)) { $n = intval($matches[1]); - - if ($conLang == SYS_LANG) { - if ($n > $numMaxLang) { - $numMaxLang = $n; - } - } else { - if ($n > $numMax) { - $numMax = $n; - } + if ($n > $numMax) { + $numMax = $n; } } } - if ($numMaxLang > 0) { - $numMax = $numMaxLang; - } - if ($numMax > 0 && $numMax > $iTaskNumber) { $iTaskNumber = $numMax + 1; } else { @@ -1420,7 +1381,7 @@ class processMap } $oTask = new Task(); - $oNewTask = new StdClass(); + $oNewTask = new stdClass(); $oNewTask->label = G::LoadTranslation('ID_TASK') . ' ' . $iTaskNumber; $oNewTask->uid = $oTask->create(array('PRO_UID' => $sProcessUID, 'TAS_TITLE' => $oNewTask->label, 'TAS_POSX' => $iX, 'TAS_POSY' => $iY, 'TAS_WIDTH' => $iWidth, 'TAS_HEIGHT' => $iHeight )); $oNewTask->statusIcons = array(); @@ -2149,24 +2110,11 @@ class processMap public function getInputDocumentsCriteria($sProcessUID = '') { - $sDelimiter = DBAdapter::getStringDelimiter(); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_TITLE); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_DESCRIPTION); $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C1.CON_VALUE'); - $oCriteria->addAsColumn('INP_DOC_DESCRIPTION', 'C2.CON_VALUE'); - $oCriteria->addAlias('C1', 'CONTENT'); - $oCriteria->addAlias('C2', 'CONTENT'); - $aConditions = array(); - $aConditions[] = array(InputDocumentPeer::INP_DOC_UID, 'C1.CON_ID' ); - $aConditions[] = array('C1.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter ); - $aConditions[] = array('C1.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions[] = array(InputDocumentPeer::INP_DOC_UID, 'C2.CON_ID' ); - $aConditions[] = array('C2.CON_CATEGORY', $sDelimiter . 'INP_DOC_DESCRIPTION' . $sDelimiter ); - $aConditions[] = array('C2.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); $oDataset = InputDocumentPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro')); @@ -3198,17 +3146,11 @@ class processMap $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_TYPE_OBJ); $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_UID_OBJ); $oCriteria->addSelectColumn(StepSupervisorPeer::STEP_POSITION); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_TITLE); $aConditions = array(); $aConditions[] = array(StepSupervisorPeer::STEP_UID_OBJ, InputDocumentPeer::INP_DOC_UID); $aConditions[] = array(StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter); $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); - $aConditions = array(); - $aConditions[] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); - $aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); $oCriteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT'); $oCriteria->addAscendingOrderByColumn(StepSupervisorPeer::STEP_POSITION); @@ -3304,17 +3246,10 @@ class processMap $aUIDS[] = $aRow['STEP_UID_OBJ']; $oDataset->next(); } - $sDelimiter = DBAdapter::getStringDelimiter(); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_UID); + $oCriteria->addSelectColumn(InputDocumentPeer::INP_DOC_TITLE); $oCriteria->addSelectColumn(InputDocumentPeer::PRO_UID); - $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions[] = array(InputDocumentPeer::INP_DOC_UID, 'C.CON_ID'); - $aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter); - $aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); $oCriteria->add(InputDocumentPeer::INP_DOC_UID, $aUIDS, Criteria::NOT_IN); return $oCriteria; @@ -3474,16 +3409,10 @@ class processMap ); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); - $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); - - $aConditions [] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); - $aConditions [] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter() . 'GRP_TITLE' . DBAdapter::getStringDelimiter()); - $aConditions [] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter()); - - $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->addSelectColumn(GroupwfPeer::GRP_TITLE); $oCriteria->add(GroupwfPeer::GRP_UID, $aGRUS, Criteria::NOT_IN); - $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE); + $oCriteria->addAscendingOrderByColumn(GroupwfPeer::GRP_TITLE); $oDataset = GroupwfPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); @@ -4068,14 +3997,9 @@ class processMap $usersGroups = '