pquery($sql, array()); if(!is_object($alterResult)) { echo $installationStrings['LBL_PASSWORD_FIELD_CHANGE_FAILURE']; exit; } resetUserPasswords(); } function resetUserPasswords() { $db = PearDatabase::getInstance(); $sql = 'select user_name, id, crypt_type from vtiger_users'; $result = $db->pquery($sql, array()); $rowList = $result->GetRows(); foreach ($rowList as $row) { $cryptType = $row['crypt_type']; if(strtolower($cryptType) == 'md5' && version_compare(PHP_VERSION, '5.3.0') >= 0) { $cryptType = 'PHP5.3MD5'; } $encryptedPassword = self::getEncryptedPassword($row['user_name'], $cryptType, $row['user_name']); $userId = $row['id']; $sql = "update vtiger_users set user_password=?,crypt_type=? where id=?"; $updateResult = $con->Execute($sql, array($encryptedPassword, $cryptType, $userId)); if(!is_object($updateResult)) { $_SESSION['migration_info']['user_messages'][] = "
". "Failed: ". "$sql
".var_export(array($encryptedPassword, $userId)).'
'; } } } function getEncryptedPassword($userName, $cryptType, $userPassword) { $salt = substr($userName, 0, 2); // For more details on salt format look at: http://in.php.net/crypt if($cryptType == 'MD5') { $salt = '$1$' . $salt . '$'; } elseif($cryptType == 'BLOWFISH') { $salt = '$2$' . $salt . '$'; } elseif($cryptType == 'PHP5.3MD5') { //only change salt for php 5.3 or higher version for backward //compactibility. //crypt API is lot stricter in taking the value for salt. $salt = '$1$' . str_pad($salt, 9, '0'); } $computedEncryptedPassword = crypt($userPassword, $salt); return $computedEncryptedPassword; } ?>