Loading modules/Contacts/ContactsHandler.php +37 −22 Original line number Diff line number Diff line Loading @@ -15,21 +15,24 @@ function Contacts_sendCustomerPortalLoginDetails($entityData){ $parts = explode('x', $wsId); $entityId = $parts[1]; $entityDelta = new VTEntityDelta(); $portalChanged = $entityDelta->hasChanged($moduleName, $entityId, 'portal'); $email = $entityData->get('email'); if ($entityData->get('portal') == 'on' || $entityData->get('portal') == '1') { $isEmailChanged = $entityDelta->hasChanged($moduleName, $entityId, 'email') && $email;//changed and not empty $isPortalEnabled = $entityData->get('portal') == 'on' || $entityData->get('portal') == '1'; if ($isPortalEnabled) { //If portal enabled / disabled, then trigger following actions $sql = "SELECT id, user_name, user_password, isactive FROM vtiger_portalinfo WHERE id=?"; $result = $adb->pquery($sql, array($entityId)); $insert = false; if($adb->num_rows($result) == 0){ $insert = true; }else{ if ($adb->num_rows($result)) { $insert = false; $dbusername = $adb->query_result($result,0,'user_name'); $isactive = $adb->query_result($result,0,'isactive'); if($email == $dbusername && $isactive == 1 && !$entityData->isNew()){ $update = false; } else if($entityData->get('portal') == 'on' || $entityData->get('portal') == '1'){ } else if($isPortalEnabled) { $sql = "UPDATE vtiger_portalinfo SET user_name=?, isactive=? WHERE id=?"; $adb->pquery($sql, array($email, 1, $entityId)); $update = true; Loading @@ -39,19 +42,30 @@ function Contacts_sendCustomerPortalLoginDetails($entityData){ $update = false; } } //generate new password $password = makeRandomPassword(); $enc_password = Vtiger_Functions::generateEncryptedPassword($password); if ($insert == true) { //create new portal user $sendEmail = false; if ($insert) { $sql = "INSERT INTO vtiger_portalinfo(id,user_name,user_password,cryptmode,type,isactive) VALUES(?,?,?,?,?,?)"; $params = array($entityId, $email, $enc_password, 'CRYPT', 'C', 1); $adb->pquery($sql, $params); $sendEmail = true; } if ($update == true && $portalChanged == true) { //update existing portal user password if ($update && $isEmailChanged) { $sql = "UPDATE vtiger_portalinfo SET user_password=?, cryptmode=? WHERE id=?"; $params = array($enc_password, 'CRYPT', $entityId); $adb->pquery($sql, $params); $sendEmail = true; } if (($insert == true || ($update = true && $portalChanged == true)) && $entityData->get('emailoptout') == 0) { //trigger send email if ($sendEmail && $entityData->get('emailoptout') == 0) { global $current_user,$HELPDESK_SUPPORT_EMAIL_ID, $HELPDESK_SUPPORT_NAME; require_once("modules/Emails/mail.php"); $emailData = Contacts::getPortalEmailContents($entityData,$password,'LoginDetails'); Loading @@ -59,19 +73,20 @@ function Contacts_sendCustomerPortalLoginDetails($entityData){ if(empty($subject)) { $subject = 'Customer Portal Login Details'; } $contents = $emailData['body']; $contents= decode_html(getMergedDescription($contents, $entityId, 'Contacts')); if(empty($contents)) { require_once 'config.inc.php'; global $PORTAL_URL; $contents = 'LoginDetails'; $contents .= "<br><br> User ID : ".$entityData->get('email'); $contents .= "<br><br> User ID : $email"; $contents .= "<br> Password: ".$password; $portalURL = vtranslate('Please ',$moduleName).'<a href="'.$PORTAL_URL.'" style="font-family:Arial, Helvetica, sans-serif;font-size:13px;">'. vtranslate('click here', $moduleName).'</a>'; $contents .= "<br>".$portalURL; } $subject = decode_html(getMergedDescription($subject, $entityId,'Contacts')); send_mail('Contacts', $entityData->get('email'), $HELPDESK_SUPPORT_NAME, $HELPDESK_SUPPORT_EMAIL_ID, $subject, $contents,'','','','','',true); send_mail('Contacts', $email, $HELPDESK_SUPPORT_NAME, $HELPDESK_SUPPORT_EMAIL_ID, $subject, $contents,'','','','','',true); } } else { $sql = "UPDATE vtiger_portalinfo SET user_name=?,isactive=0 WHERE id=?"; Loading run-migration-script.php 0 → 100644 +59 −0 Original line number Diff line number Diff line <?php /*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. *************************************************************************************/ ini_set('error_reporting', 6135); ini_set('display_errors', 'On'); require_once 'include/utils/utils.php'; require_once 'includes/runtime/LanguageHandler.php'; require_once 'includes/main/WebUI.php'; global $current_user; $current_user = Users_Record_Model::getInstanceFromPreferenceFile(1); //migration script started $db = PearDatabase::getInstance(); $result = $db->pquery('SELECT workflow_id FROM com_vtiger_workflows WHERE test LIKE ? AND module_name=? AND defaultworkflow=?', array('%portal%', 'Contacts', 1)); if ($db->num_rows($result) == 1) { $workflowId = $db->query_result($result, 0, 'workflow_id'); $workflowModel = Settings_Workflows_Record_Model::getInstance($workflowId); $workflowModel->set('execution_condition', 3); $conditions = array( array( 'fieldname' => 'portal', 'operation' => 'is', 'value' => '1', 'valuetype' => 'rawtext', 'joincondition' => 'and', 'groupjoin' => 'and', 'groupid' => '0' ), array( 'fieldname' => 'email', 'operation' => 'has changed', 'value' => '', 'valuetype' => 'rawtext', 'joincondition' => 'and', 'groupjoin' => 'and', 'groupid' => '0', ), array( 'fieldname' => 'email', 'operation' => 'is not empty', 'value' => '', 'valuetype' => 'rawtext', 'joincondition' => '', 'groupjoin' => 'and', 'groupid' => '0' ) ); $workflowModel->set('conditions', $conditions); $workflowModel->set('filtersavedinnew', 6); $workflowModel->save(); echo '<b>"#261 - vtiger_portalinfo doesnt update contact"</b> fixed'; } Loading
modules/Contacts/ContactsHandler.php +37 −22 Original line number Diff line number Diff line Loading @@ -15,21 +15,24 @@ function Contacts_sendCustomerPortalLoginDetails($entityData){ $parts = explode('x', $wsId); $entityId = $parts[1]; $entityDelta = new VTEntityDelta(); $portalChanged = $entityDelta->hasChanged($moduleName, $entityId, 'portal'); $email = $entityData->get('email'); if ($entityData->get('portal') == 'on' || $entityData->get('portal') == '1') { $isEmailChanged = $entityDelta->hasChanged($moduleName, $entityId, 'email') && $email;//changed and not empty $isPortalEnabled = $entityData->get('portal') == 'on' || $entityData->get('portal') == '1'; if ($isPortalEnabled) { //If portal enabled / disabled, then trigger following actions $sql = "SELECT id, user_name, user_password, isactive FROM vtiger_portalinfo WHERE id=?"; $result = $adb->pquery($sql, array($entityId)); $insert = false; if($adb->num_rows($result) == 0){ $insert = true; }else{ if ($adb->num_rows($result)) { $insert = false; $dbusername = $adb->query_result($result,0,'user_name'); $isactive = $adb->query_result($result,0,'isactive'); if($email == $dbusername && $isactive == 1 && !$entityData->isNew()){ $update = false; } else if($entityData->get('portal') == 'on' || $entityData->get('portal') == '1'){ } else if($isPortalEnabled) { $sql = "UPDATE vtiger_portalinfo SET user_name=?, isactive=? WHERE id=?"; $adb->pquery($sql, array($email, 1, $entityId)); $update = true; Loading @@ -39,19 +42,30 @@ function Contacts_sendCustomerPortalLoginDetails($entityData){ $update = false; } } //generate new password $password = makeRandomPassword(); $enc_password = Vtiger_Functions::generateEncryptedPassword($password); if ($insert == true) { //create new portal user $sendEmail = false; if ($insert) { $sql = "INSERT INTO vtiger_portalinfo(id,user_name,user_password,cryptmode,type,isactive) VALUES(?,?,?,?,?,?)"; $params = array($entityId, $email, $enc_password, 'CRYPT', 'C', 1); $adb->pquery($sql, $params); $sendEmail = true; } if ($update == true && $portalChanged == true) { //update existing portal user password if ($update && $isEmailChanged) { $sql = "UPDATE vtiger_portalinfo SET user_password=?, cryptmode=? WHERE id=?"; $params = array($enc_password, 'CRYPT', $entityId); $adb->pquery($sql, $params); $sendEmail = true; } if (($insert == true || ($update = true && $portalChanged == true)) && $entityData->get('emailoptout') == 0) { //trigger send email if ($sendEmail && $entityData->get('emailoptout') == 0) { global $current_user,$HELPDESK_SUPPORT_EMAIL_ID, $HELPDESK_SUPPORT_NAME; require_once("modules/Emails/mail.php"); $emailData = Contacts::getPortalEmailContents($entityData,$password,'LoginDetails'); Loading @@ -59,19 +73,20 @@ function Contacts_sendCustomerPortalLoginDetails($entityData){ if(empty($subject)) { $subject = 'Customer Portal Login Details'; } $contents = $emailData['body']; $contents= decode_html(getMergedDescription($contents, $entityId, 'Contacts')); if(empty($contents)) { require_once 'config.inc.php'; global $PORTAL_URL; $contents = 'LoginDetails'; $contents .= "<br><br> User ID : ".$entityData->get('email'); $contents .= "<br><br> User ID : $email"; $contents .= "<br> Password: ".$password; $portalURL = vtranslate('Please ',$moduleName).'<a href="'.$PORTAL_URL.'" style="font-family:Arial, Helvetica, sans-serif;font-size:13px;">'. vtranslate('click here', $moduleName).'</a>'; $contents .= "<br>".$portalURL; } $subject = decode_html(getMergedDescription($subject, $entityId,'Contacts')); send_mail('Contacts', $entityData->get('email'), $HELPDESK_SUPPORT_NAME, $HELPDESK_SUPPORT_EMAIL_ID, $subject, $contents,'','','','','',true); send_mail('Contacts', $email, $HELPDESK_SUPPORT_NAME, $HELPDESK_SUPPORT_EMAIL_ID, $subject, $contents,'','','','','',true); } } else { $sql = "UPDATE vtiger_portalinfo SET user_name=?,isactive=0 WHERE id=?"; Loading
run-migration-script.php 0 → 100644 +59 −0 Original line number Diff line number Diff line <?php /*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. *************************************************************************************/ ini_set('error_reporting', 6135); ini_set('display_errors', 'On'); require_once 'include/utils/utils.php'; require_once 'includes/runtime/LanguageHandler.php'; require_once 'includes/main/WebUI.php'; global $current_user; $current_user = Users_Record_Model::getInstanceFromPreferenceFile(1); //migration script started $db = PearDatabase::getInstance(); $result = $db->pquery('SELECT workflow_id FROM com_vtiger_workflows WHERE test LIKE ? AND module_name=? AND defaultworkflow=?', array('%portal%', 'Contacts', 1)); if ($db->num_rows($result) == 1) { $workflowId = $db->query_result($result, 0, 'workflow_id'); $workflowModel = Settings_Workflows_Record_Model::getInstance($workflowId); $workflowModel->set('execution_condition', 3); $conditions = array( array( 'fieldname' => 'portal', 'operation' => 'is', 'value' => '1', 'valuetype' => 'rawtext', 'joincondition' => 'and', 'groupjoin' => 'and', 'groupid' => '0' ), array( 'fieldname' => 'email', 'operation' => 'has changed', 'value' => '', 'valuetype' => 'rawtext', 'joincondition' => 'and', 'groupjoin' => 'and', 'groupid' => '0', ), array( 'fieldname' => 'email', 'operation' => 'is not empty', 'value' => '', 'valuetype' => 'rawtext', 'joincondition' => '', 'groupjoin' => 'and', 'groupid' => '0' ) ); $workflowModel->set('conditions', $conditions); $workflowModel->set('filtersavedinnew', 6); $workflowModel->save(); echo '<b>"#261 - vtiger_portalinfo doesnt update contact"</b> fixed'; }