diff --git a/include/database/PearDatabase.php b/include/database/PearDatabase.php index 254fe9abc2974f6cef876173743c847296b63beb..f81d7911e4b5d5bfb7b66e508f7a4f9eae1717eb 100644 --- a/include/database/PearDatabase.php +++ b/include/database/PearDatabase.php @@ -357,8 +357,20 @@ class PearDatabase{ $this->executeSetNamesUTF8SQL(); $sql_start_time = microtime(true); - $params = $this->flatten_array($params); - if (is_array($params) && count($params) > 0) { + + // flatten only when params has array inside. + $flatten_params = false; + foreach ($params as $val) { + if (is_array($val)) { + $flatten_params = true; + break; + } + } + if ($flatten_params) { + $params = $this->flatten_array($params); + } + + if ($log->isDebugEnabled() && is_array($params) && count($params) > 0) { $log->debug('Prepared sql query parameters : [' . implode(",", $params) . ']'); } diff --git a/modules/Migration/schema/650_to_660.php b/modules/Migration/schema/650_to_660.php index 2edbe3f3ca0e971073cf975d9eea902e739c4007..6e6faf8384027a64d75acabf1b790a561e92efb0 100644 --- a/modules/Migration/schema/650_to_660.php +++ b/modules/Migration/schema/650_to_660.php @@ -17,6 +17,7 @@ if(defined('VTIGER_UPGRADE')) { $adb->pquery('INSERT INTO vtiger_actionmapping VALUES(?, ?, ?)', array(7, 'CreateView', 0)); } + // take reference of operation (1) and make entries similarly to operation (7) - skip over duplicates. $createActionResult = $adb->pquery('SELECT * FROM vtiger_profile2standardpermissions WHERE operation=?', array(1)); $query = 'INSERT INTO vtiger_profile2standardpermissions VALUES'; while($rowData = $adb->fetch_array($createActionResult)) { @@ -25,7 +26,8 @@ if(defined('VTIGER_UPGRADE')) { $permissions = $rowData['permissions']; $query .= "('$profileId', '$tabId', '7', '$permissions'),"; } - $adb->pquery(trim($query, ','), array()); + $query = trim($query, ',') . " on duplicate key update permissions=permissions"; /* mute update to avoid insert failure on duplicate entries */ + $adb->pquery($query, array()); require_once 'modules/Users/CreateUserPrivilegeFile.php'; $usersResult = $adb->pquery('SELECT id FROM vtiger_users', array()); diff --git a/modules/Users/actions/Save.php b/modules/Users/actions/Save.php index 378a09d58eaf8923993576419f9493ce076380fd..5c5c7aecd5038c8603c3cb48614ef306f965bd3f 100644 --- a/modules/Users/actions/Save.php +++ b/modules/Users/actions/Save.php @@ -109,6 +109,27 @@ class Users_Save_Action extends Vtiger_Save_Action { return $recordModel; } + protected function checkRestrictedValueChange(Vtiger_Request $request) { + // NOTE: to be repeated in SaveAjax.php + + if ($request->has('user_name') || $request->has('user_password') || $request->has('accesskey') ) { + // should use separate actions. + throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger')); + } + + if ($request->get('field', "") == "status" || $request->has("status")) { + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + // only admin (not self) can change status. + if (!$currentUserModel->isAdminUser()) { + throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger')); + } + $recordId = $request->get('record'); + if ($recordId == $currentUserModel->getId()) { + throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger')); + } + } + } + public function process(Vtiger_Request $request) { $result = Vtiger_Util_Helper::transformUploadedFiles($_FILES, true); $_FILES = $result['imagename']; @@ -123,10 +144,7 @@ class Users_Save_Action extends Vtiger_Save_Action { throw new AppException(vtranslate('LBL_DUPLICATE_USER_EXISTS', $module)); } } else { - if ($request->has('user_name') || $request->has('user_password') || $request->has('accesskey') ) { - // should use separate actions. - throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $module)); - } + $this->checkRestrictedValueChange($request); } $recordModel = $this->saveRecord($request); diff --git a/modules/Users/actions/SaveAjax.php b/modules/Users/actions/SaveAjax.php index 4c242a0293d6bc51a99bd097f117648acc1a9cce..485a092d34a9e622802b1122d23919178f3ce2f1 100644 --- a/modules/Users/actions/SaveAjax.php +++ b/modules/Users/actions/SaveAjax.php @@ -43,12 +43,40 @@ class Users_SaveAjax_Action extends Vtiger_SaveAjax_Action { } } + protected function checkRestrictedValueChange(Vtiger_Request $request) { + // NOTE: to be repeated in Save.php + + if ($request->has('user_name') || $request->has('user_password') || $request->has('accesskey') ) { + // should use separate actions. + throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger')); + } + if ($request->has('field') && in_array($request->get('field'), array('user_name', 'user_password', 'accesskey'))) { + // should use separate actions. + throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger')); + } + + if ($request->get('field', "") == "status" || $request->has("status")) { + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + // only admin (not self) can change status. + if (!$currentUserModel->isAdminUser()) { + throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger')); + } + $recordId = $request->get('record'); + if ($recordId == $currentUserModel->getId()) { + throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger')); + } + } + + } + public function process(Vtiger_Request $request) { $mode = $request->get('mode'); if (!empty($mode)) { $this->invokeExposedMethod($mode, $request); return; + } else { + $this->checkRestrictedValueChange($request); } $recordModel = $this->saveRecord($request); diff --git a/modules/Users/models/Record.php b/modules/Users/models/Record.php index 06fc11f1d9f6f949b04adb8d509f6fe295f8fee1..f25bdf90982eedb637d19fd39edc5af94b9dc2d7 100644 --- a/modules/Users/models/Record.php +++ b/modules/Users/models/Record.php @@ -880,11 +880,17 @@ class Users_Record_Model extends Vtiger_Record_Model { */ public static function changeUsername($newUsername,$newpassword,$oldPassword,$forUserId) { $response = array('success'=> false,'message' => 'error'); - $record = self::getInstanceFromPreferenceFile($forUserId); - $moduleName = $record->getModuleName(); + $moduleName = "Users"; $currentUserModel = static::getCurrentUserModel(); - if($currentUserModel->getId() == $forUserId || !Users_Privileges_Model::isPermittedToChangeUsername($forUserId)) { + if (empty($newpassword) || empty($forUserId)) { + $response['message'] = vtranslate('ERROR_CHANGE_USERNAME', $moduleName); + return $response; + } + + $record = self::getInstanceFromPreferenceFile($forUserId); + + if(!Users_Privileges_Model::isPermittedToChangeUsername($forUserId)) { $response['message'] = vtranslate('LBL_PERMISSION_DENIED', $moduleName); return $response; } diff --git a/modules/Vtiger/helpers/Logger.php b/modules/Vtiger/helpers/Logger.php index f9a61ef77bbd1fcc9f1efb6f511392474c7a60d7..0198dc142fc2931643fc30b36e27b644a37cff70 100644 --- a/modules/Vtiger/helpers/Logger.php +++ b/modules/Vtiger/helpers/Logger.php @@ -76,6 +76,10 @@ class Logger { public function warn($message) {} public function error($message) {} + public function isDebugEnabled() { + return self::$logLevel == 100; + } + } // Define extended version of Monolog Logger to support functions @@ -83,6 +87,16 @@ class MonologLoggerEx extends MonologLogger { function fatal($message, $context = array()) { $this->error($message, $context); } + function isDebugEnabled() { + $debugLevel = false; + foreach ($this->getHandlers() as $handler) { + if ($handler->getLogLevel() == static::DEBUG) { + $debugLevel = true; + break; + } + } + return $debugLevel; + } } // Define a custom log formatter diff --git a/packages/vtiger/mandatory/Import.zip b/packages/vtiger/mandatory/Import.zip index 75a95984566ceea8da35811ee8da3a52c18b16c3..8b879521d565b697cd6196ad5ac80a398b8b1797 100644 Binary files a/packages/vtiger/mandatory/Import.zip and b/packages/vtiger/mandatory/Import.zip differ diff --git a/packages/vtiger/mandatory/MailManager.zip b/packages/vtiger/mandatory/MailManager.zip index 66335f6a3c60151d63a2b6bfa545319194593b2b..1a91b4ecaa8d32372d31173080a906d87750ead0 100644 Binary files a/packages/vtiger/mandatory/MailManager.zip and b/packages/vtiger/mandatory/MailManager.zip differ diff --git a/packages/vtiger/mandatory/Mobile.zip b/packages/vtiger/mandatory/Mobile.zip index 1d5994b951e697d0f55ac13392cc7e17e626198e..314d6615e333475f3df901946e9ab7cbc65e03b2 100644 Binary files a/packages/vtiger/mandatory/Mobile.zip and b/packages/vtiger/mandatory/Mobile.zip differ diff --git a/packages/vtiger/mandatory/ModTracker.zip b/packages/vtiger/mandatory/ModTracker.zip index e26bd9e772d96fd2df99a601d342d0b999447e42..f4ab5d282b2dcdef07f59f7e48bcc0d7ae116b2a 100644 Binary files a/packages/vtiger/mandatory/ModTracker.zip and b/packages/vtiger/mandatory/ModTracker.zip differ diff --git a/packages/vtiger/mandatory/PBXManager.zip b/packages/vtiger/mandatory/PBXManager.zip index 570a8acf91ca00b48877d2d9ea345df8c97385a6..603660f72f8d605a82390cd91e0872d4de00340c 100644 Binary files a/packages/vtiger/mandatory/PBXManager.zip and b/packages/vtiger/mandatory/PBXManager.zip differ diff --git a/packages/vtiger/mandatory/ServiceContracts.zip b/packages/vtiger/mandatory/ServiceContracts.zip index 78361db20a82a1a4423e36132a103aa3dd98bb7b..bb9081390d3787eba29b37b2f247e7e7143e33fd 100644 Binary files a/packages/vtiger/mandatory/ServiceContracts.zip and b/packages/vtiger/mandatory/ServiceContracts.zip differ diff --git a/packages/vtiger/mandatory/Services.zip b/packages/vtiger/mandatory/Services.zip index 846ae8626643b14417dcab29cfffae39767ef611..74f2fa669a88929bb070f990d2c02b30ea4fbee8 100644 Binary files a/packages/vtiger/mandatory/Services.zip and b/packages/vtiger/mandatory/Services.zip differ diff --git a/packages/vtiger/mandatory/WSAPP.zip b/packages/vtiger/mandatory/WSAPP.zip index b98e0378aebea233cbd9be25050c80d3035539d2..e80ccf4192f425e8dcb93c459e6c70d5494fa39c 100644 Binary files a/packages/vtiger/mandatory/WSAPP.zip and b/packages/vtiger/mandatory/WSAPP.zip differ diff --git a/packages/vtiger/marketplace/ExtensionStore.zip b/packages/vtiger/marketplace/ExtensionStore.zip index 8e365d1593bc4cb5296af28a227a1fa8077a7b33..421f1f37e5857e0970abded28b78f5c5aead54ff 100644 Binary files a/packages/vtiger/marketplace/ExtensionStore.zip and b/packages/vtiger/marketplace/ExtensionStore.zip differ diff --git a/packages/vtiger/optional/Arabic_ar_ae.zip b/packages/vtiger/optional/Arabic_ar_ae.zip index b553579d6848903e544efa3e35ab309f7d6c0b57..f66e6328829d396f62fd840f827c5ef319d1f59a 100644 Binary files a/packages/vtiger/optional/Arabic_ar_ae.zip and b/packages/vtiger/optional/Arabic_ar_ae.zip differ diff --git a/packages/vtiger/optional/Assets.zip b/packages/vtiger/optional/Assets.zip index 97fc3899c1b896561d00c3cc77961db0d6f078ab..e58e3b846f2782d971a2a4bca93f96e761b13690 100644 Binary files a/packages/vtiger/optional/Assets.zip and b/packages/vtiger/optional/Assets.zip differ diff --git a/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip b/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip index 1312c392ae04a7d2132dd8dc5d4666c77a26d6c8..0c607aeec1e40debe87f8c51ade67ec5aa5041e1 100644 Binary files a/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip and b/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip differ diff --git a/packages/vtiger/optional/BritishLanguagePack_br_br.zip b/packages/vtiger/optional/BritishLanguagePack_br_br.zip index 107a1147edf8c3bd49ce4e528f2e5921d38f88e3..28f6e07acbc2298bce12106e66242c1c1688d11f 100644 Binary files a/packages/vtiger/optional/BritishLanguagePack_br_br.zip and b/packages/vtiger/optional/BritishLanguagePack_br_br.zip differ diff --git a/packages/vtiger/optional/CustomerPortal.zip b/packages/vtiger/optional/CustomerPortal.zip index 76cd0728acdfa4f5b248ab0b492cea002bd1dda6..f8f25e769373f85cef3e90adbab159cadbd1c8ac 100644 Binary files a/packages/vtiger/optional/CustomerPortal.zip and b/packages/vtiger/optional/CustomerPortal.zip differ diff --git a/packages/vtiger/optional/Deutsch.zip b/packages/vtiger/optional/Deutsch.zip index d51dd011309f4caac1a1ce4263a56365e4152a7e..0d7a6f0c0ce0e886e3ff095012f7714d3307f8ef 100644 Binary files a/packages/vtiger/optional/Deutsch.zip and b/packages/vtiger/optional/Deutsch.zip differ diff --git a/packages/vtiger/optional/Dutch.zip b/packages/vtiger/optional/Dutch.zip index d2b30129267ac79f9eec2e8c4623f04c55ada373..23679a435825cda05d6d36df1cb49ccdd0752b53 100644 Binary files a/packages/vtiger/optional/Dutch.zip and b/packages/vtiger/optional/Dutch.zip differ diff --git a/packages/vtiger/optional/EmailTemplates.zip b/packages/vtiger/optional/EmailTemplates.zip index 0a33497c04920753402ec5292660a19b208fb7db..8c96595e409849548a5858853dc8460fbadb1ea3 100644 Binary files a/packages/vtiger/optional/EmailTemplates.zip and b/packages/vtiger/optional/EmailTemplates.zip differ diff --git a/packages/vtiger/optional/French.zip b/packages/vtiger/optional/French.zip index 0040e8b751f02420dff7b0654bed1327c5ab2219..a30379660cf4815ee102e23f2432ddc96236229c 100644 Binary files a/packages/vtiger/optional/French.zip and b/packages/vtiger/optional/French.zip differ diff --git a/packages/vtiger/optional/Google.zip b/packages/vtiger/optional/Google.zip index c042d5978b0de52596228f1c43af29d84da04533..7d7f342af67ae7b525a0b2fe309c7a486390add5 100644 Binary files a/packages/vtiger/optional/Google.zip and b/packages/vtiger/optional/Google.zip differ diff --git a/packages/vtiger/optional/Hungarian.zip b/packages/vtiger/optional/Hungarian.zip index cfa6994d260fccfbc0e1bba90d04473974375b35..283897d0e4fbadc08d2775baf634d02129cad25a 100644 Binary files a/packages/vtiger/optional/Hungarian.zip and b/packages/vtiger/optional/Hungarian.zip differ diff --git a/packages/vtiger/optional/ItalianLanguagePack_it_it.zip b/packages/vtiger/optional/ItalianLanguagePack_it_it.zip index 0c9e64052464759802642bfa1816cee7921de5a2..543a8b516fa43ef9c33087eadb46ffe4a966a889 100644 Binary files a/packages/vtiger/optional/ItalianLanguagePack_it_it.zip and b/packages/vtiger/optional/ItalianLanguagePack_it_it.zip differ diff --git a/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip b/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip index 698045e178a1b67c0b280ec625d8c0e9e060cba9..816d870cede50c73b7c885223239a552a1ed39c7 100644 Binary files a/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip and b/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip differ diff --git a/packages/vtiger/optional/ModComments.zip b/packages/vtiger/optional/ModComments.zip index f6737fe71ad172d4828328a64beb6af21b87009a..d4dd7cbab25aef623993324db9131ca904261f51 100644 Binary files a/packages/vtiger/optional/ModComments.zip and b/packages/vtiger/optional/ModComments.zip differ diff --git a/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip b/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip index 4981faa6d9444da08360cfd72f5682cf73f6e116..41acff3ae33b8af7a77524d17cdd99e356e870a8 100644 Binary files a/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip and b/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip differ diff --git a/packages/vtiger/optional/Projects.zip b/packages/vtiger/optional/Projects.zip index 083ca969a143e672f1fcde63c4fa545af57a3fb0..4baac1894023af01af4ba23c4f3046a05f73fd11 100644 Binary files a/packages/vtiger/optional/Projects.zip and b/packages/vtiger/optional/Projects.zip differ diff --git a/packages/vtiger/optional/RecycleBin.zip b/packages/vtiger/optional/RecycleBin.zip index 6ec83e0d03d1dd11d5e903cff930d8ce079964f6..9a700f08b2327e87430659b72426ca48db2bcdb7 100644 Binary files a/packages/vtiger/optional/RecycleBin.zip and b/packages/vtiger/optional/RecycleBin.zip differ diff --git a/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip b/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip index 72ab095d121d9b1a052789b60d4d97f199e950a7..043f62ffdd1d6b3f3cc5183f2841a89fe83d8a95 100644 Binary files a/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip and b/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip differ diff --git a/packages/vtiger/optional/Russian.zip b/packages/vtiger/optional/Russian.zip index 4ba81546d81b6a10ba7c0404d91641497a16b50b..03222f1405420b5b6a7c39388534ffe19ed087fc 100644 Binary files a/packages/vtiger/optional/Russian.zip and b/packages/vtiger/optional/Russian.zip differ diff --git a/packages/vtiger/optional/SMSNotifier.zip b/packages/vtiger/optional/SMSNotifier.zip index c76cbd945ccb5dd84bffeb040ace02a7f77e3365..7c0fab9939e36be5780f9813f46522aae183670b 100644 Binary files a/packages/vtiger/optional/SMSNotifier.zip and b/packages/vtiger/optional/SMSNotifier.zip differ diff --git a/packages/vtiger/optional/Spanish.zip b/packages/vtiger/optional/Spanish.zip index c44ef0815ef1a4054f0f97bc0b7c5104ba85f759..92e8c42fcb770f26ae9007399803bffdfa660da7 100644 Binary files a/packages/vtiger/optional/Spanish.zip and b/packages/vtiger/optional/Spanish.zip differ diff --git a/packages/vtiger/optional/Sweden_sv_se.zip b/packages/vtiger/optional/Sweden_sv_se.zip index c6944675106d32695645f109d5bc6ff5e47f552f..2a703890a409453b3072e43e5caaeba4ac8eb909 100644 Binary files a/packages/vtiger/optional/Sweden_sv_se.zip and b/packages/vtiger/optional/Sweden_sv_se.zip differ diff --git a/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip b/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip index bdb8c342997f247217e216cc576a498cf2ad1ede..791d336c34c5e334ccdebc41615cb713efc9eb79 100644 Binary files a/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip and b/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip differ diff --git a/packages/vtiger/optional/Webforms.zip b/packages/vtiger/optional/Webforms.zip index 07149559dbb64a38de52420f08ebc5c9bbc4c5f2..4e94d0dbee48f9ac426c9fd1f40d5b0e72d4d86a 100644 Binary files a/packages/vtiger/optional/Webforms.zip and b/packages/vtiger/optional/Webforms.zip differ diff --git a/vtigerversion.php b/vtigerversion.php index afd5efe912a39f58246b245b6efb80a8850cae8b..576391f7f6a5ef3b7139d0ee09be567ccf4edbd6 100644 --- a/vtigerversion.php +++ b/vtigerversion.php @@ -8,9 +8,9 @@ * All Rights Reserved. ************************************************************************************/ -$patch_version = '20240125'; // -ve timestamp before release, +ve timestamp after release. +$patch_version = '-20240505'; // -ve timestamp before release, +ve timestamp after release. $modified_database = ''; -$vtiger_current_version = '8.1.0'; +$vtiger_current_version = '8.2.0'; $_SESSION['vtiger_version'] = $vtiger_current_version; ?>