From 565d59fcdab7902184cbdbc04da113875103ac53 Mon Sep 17 00:00:00 2001 From: Dillon Brown Date: Thu, 21 Sep 2017 13:39:26 +0100 Subject: [PATCH 01/25] Fixed #3279 - PHP Warning logged for Calendar Dashlet --- .../CalendarDashlet/CalendarDashlet.php | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php b/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php index e07238d538b..e8145567b55 100755 --- a/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php +++ b/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php @@ -1,11 +1,11 @@ view = $def['view']; - // seedBean is need to set the calendar icon - $this->seedBean = BeanFactory::newBean('Calendar'); + if (!isset($this->seedBean)) { + $this->seedBean = new stdClass(); + } $this->seedBean->module_name = 'Calendar'; - } function display(){ @@ -126,5 +130,3 @@ function displayScript(){ } - -?> From 65393780edb5a15feb5f92b3e352839056af4c15 Mon Sep 17 00:00:00 2001 From: Dillon Brown Date: Thu, 21 Sep 2017 14:09:36 +0100 Subject: [PATCH 02/25] Code cleanup --- .../CalendarDashlet/CalendarDashlet.php | 162 +++++++++++------- 1 file changed, 98 insertions(+), 64 deletions(-) diff --git a/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php b/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php index e8145567b55..76bae0fb68f 100755 --- a/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php +++ b/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php @@ -42,91 +42,125 @@ die('Not A Valid Entry Point'); } -require_once ('modules/Calendar/Calendar.php'); +require_once('modules/Calendar/Calendar.php'); require_once('include/Dashlets/Dashlet.php'); +class CalendarDashlet extends Dashlet +{ + public $view = 'week'; -class CalendarDashlet extends Dashlet { - var $view = 'week'; + /** + * @see Dashlet::__construct() + */ + public function __construct($id, $def) + { + $this->loadLanguage('CalendarDashlet', 'modules/Calendar/Dashlets/'); - function CalendarDashlet($id, $def) { - $this->loadLanguage('CalendarDashlet','modules/Calendar/Dashlets/'); + parent::__construct($id); - parent::Dashlet($id); - - $this->isConfigurable = true; - $this->hasScript = true; - - if(empty($def['title'])) - $this->title = $this->dashletStrings['LBL_TITLE']; - else - $this->title = $def['title']; - - if(!empty($def['view'])) - $this->view = $def['view']; + $this->isConfigurable = true; + $this->hasScript = true; + + if (empty($def['title'])) { + $this->title = $this->dashletStrings['LBL_TITLE']; + } else { + $this->title = $def['title']; + } + + if (!empty($def['view'])) { + $this->view = $def['view']; + } if (!isset($this->seedBean)) { $this->seedBean = new stdClass(); - } - $this->seedBean->module_name = 'Calendar'; + } + $this->seedBean->module_name = 'Calendar'; } - function display(){ - ob_start(); - - if(isset($GLOBALS['cal_strings'])) - return parent::display() . "Only one Calendar dashlet is allowed."; - - require_once('modules/Calendar/Calendar.php'); - require_once('modules/Calendar/CalendarDisplay.php'); - require_once("modules/Calendar/CalendarGrid.php"); - - global $cal_strings, $current_language; - $cal_strings = return_module_language($current_language, 'Calendar'); - - if(!ACLController::checkAccess('Calendar', 'list', true)) - ACLController::displayNoAccess(true); - - $cal = new Calendar($this->view); - $cal->dashlet = true; - $cal->add_activities($GLOBALS['current_user']); - $cal->load_activities(); - - $display = new CalendarDisplay($cal,$this->id); - $display->display_calendar_header(false); - - $display->display(); - - $str = ob_get_contents(); - ob_end_clean(); - - return parent::display() . $str; + /** + * @deprecated deprecated since version 7.6, PHP4 Style Constructors are deprecated and will be remove in 7.8, + * please update your code, use __construct instead + */ + public function CalendarDashlet($id, $def = null) + { + $deprecatedMessage = 'PHP4 Style Constructors are deprecated and will be removed in 7.8, + please update your code'; + if (isset($GLOBALS['log'])) { + $GLOBALS['log']->deprecated($deprecatedMessage); + } else { + trigger_error($deprecatedMessage, E_USER_DEPRECATED); + } + self::__construct($id, $def); } - - function displayOptions() { - global $app_strings,$mod_strings; + /** + * @see Dashlet::display() + */ + public function display() + { + ob_start(); + + if (isset($GLOBALS['cal_strings'])) { + return parent::display() . "Only one Calendar dashlet is allowed."; + } + + require_once('modules/Calendar/Calendar.php'); + require_once('modules/Calendar/CalendarDisplay.php'); + require_once("modules/Calendar/CalendarGrid.php"); + + global $cal_strings, $current_language; + $cal_strings = return_module_language($current_language, 'Calendar'); + + if (!ACLController::checkAccess('Calendar', 'list', true)) { + ACLController::displayNoAccess(true); + } + + $cal = new Calendar($this->view); + $cal->dashlet = true; + $cal->add_activities($GLOBALS['current_user']); + $cal->load_activities(); + + $display = new CalendarDisplay($cal, $this->id); + $display->display_calendar_header(false); + + $display->display(); + + $str = ob_get_contents(); + ob_end_clean(); + + return parent::display() . $str; + } + + /** + * @see Dashlet::displayOptions() + */ + public function displayOptions() + { + global $app_strings, $mod_strings; $ss = new Sugar_Smarty(); - $ss->assign('MOD', $this->dashletStrings); + $ss->assign('MOD', $this->dashletStrings); $ss->assign('title', $this->title); $ss->assign('view', $this->view); $ss->assign('id', $this->id); - return parent::displayOptions() . $ss->fetch('modules/Calendar/Dashlets/CalendarDashlet/CalendarDashletOptions.tpl'); - } + return parent::displayOptions() . + $ss->fetch('modules/Calendar/Dashlets/CalendarDashlet/CalendarDashletOptions.tpl'); + } - function saveOptions($req) { - global $sugar_config, $timedate, $current_user, $theme; + /** + * @see Dashlet::saveOptions() + */ + public function saveOptions($req) + { $options = array(); - $options['title'] = $_REQUEST['title']; - $options['view'] = $_REQUEST['view']; - + $options['title'] = $_REQUEST['title']; + $options['view'] = $_REQUEST['view']; + return $options; } - function displayScript(){ - return ""; + public function displayScript() + { + return ''; } - - } From 9e33949aaadc3b1a66513934ea6ff25331eb1478 Mon Sep 17 00:00:00 2001 From: Dillon Brown Date: Fri, 22 Sep 2017 16:43:31 +0100 Subject: [PATCH 03/25] Added logging --- .../Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php b/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php index 76bae0fb68f..a7469cf093e 100755 --- a/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php +++ b/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php @@ -71,10 +71,12 @@ public function __construct($id, $def) $this->view = $def['view']; } - if (!isset($this->seedBean)) { - $this->seedBean = new stdClass(); + // seedBean is need to set the calendar icon + if ($this->seedBean = BeanFactory::newBean('Calendar')) { + $this->seedBean->module_name = 'Calendar'; + } else { + $GLOBALS['log']->warn('Calendar bean not created'); } - $this->seedBean->module_name = 'Calendar'; } /** From bdeb94db0ebdd5c8fa850f6e679037409c0b8141 Mon Sep 17 00:00:00 2001 From: pgorod Date: Sat, 23 Dec 2017 11:58:03 +0000 Subject: [PATCH 04/25] Fix PHP Warning --- include/SugarFields/Fields/Multienum/SugarFieldMultienum.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/SugarFields/Fields/Multienum/SugarFieldMultienum.php b/include/SugarFields/Fields/Multienum/SugarFieldMultienum.php index 786586a370f..9221fc9ecb8 100755 --- a/include/SugarFields/Fields/Multienum/SugarFieldMultienum.php +++ b/include/SugarFields/Fields/Multienum/SugarFieldMultienum.php @@ -58,7 +58,7 @@ function getSearchViewSmarty($parentFieldArray, $vardef, $displayParams, $tabind } } - function displayFromFunc( $displayType, $parentFieldArray, $vardef, $displayParams, $tabindex ) { + function displayFromFunc( $displayType, $parentFieldArray, $vardef, $displayParams, $tabindex = 0) { if ( isset($vardef['function']['returns']) && $vardef['function']['returns'] == 'html' ) { return parent::displayFromFunc($displayType, $parentFieldArray, $vardef, $displayParams, $tabindex); } From b01b5f2fb7da2ddd68c3d83041b640a26125e4ad Mon Sep 17 00:00:00 2001 From: pgorod Date: Fri, 19 Jan 2018 15:25:55 +0000 Subject: [PATCH 05/25] add a very basic php doc --- .../SugarFields/Fields/Multienum/SugarFieldMultienum.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/SugarFields/Fields/Multienum/SugarFieldMultienum.php b/include/SugarFields/Fields/Multienum/SugarFieldMultienum.php index 9221fc9ecb8..90f9ae73f0f 100755 --- a/include/SugarFields/Fields/Multienum/SugarFieldMultienum.php +++ b/include/SugarFields/Fields/Multienum/SugarFieldMultienum.php @@ -58,6 +58,14 @@ function getSearchViewSmarty($parentFieldArray, $vardef, $displayParams, $tabind } } + /** + * @param $displayType + * @param $parentFieldArray + * @param $vardef + * @param $displayParams + * @param int $tabindex + * @return string + */ function displayFromFunc( $displayType, $parentFieldArray, $vardef, $displayParams, $tabindex = 0) { if ( isset($vardef['function']['returns']) && $vardef['function']['returns'] == 'html' ) { return parent::displayFromFunc($displayType, $parentFieldArray, $vardef, $displayParams, $tabindex); From 9f76aa71180123cd08beeca39e9468cd50a78662 Mon Sep 17 00:00:00 2001 From: Dillon Brown Date: Thu, 25 Jan 2018 11:18:27 +0000 Subject: [PATCH 06/25] Review comments --- .../Dashlets/CalendarDashlet/CalendarDashlet.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php b/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php index a7469cf093e..53974e53625 100755 --- a/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php +++ b/modules/Calendar/Dashlets/CalendarDashlet/CalendarDashlet.php @@ -5,7 +5,7 @@ * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc. * * SuiteCRM is an extension to SugarCRM Community Edition developed by SalesAgility Ltd. - * Copyright (C) 2011 - 2017 SalesAgility Ltd. + * Copyright (C) 2011 - 2018 SalesAgility Ltd. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by the @@ -50,7 +50,9 @@ class CalendarDashlet extends Dashlet public $view = 'week'; /** - * @see Dashlet::__construct() + * CalendarDashlet constructor. + * @param $id string + * @param $def array */ public function __construct($id, $def) { @@ -150,13 +152,14 @@ public function displayOptions() } /** - * @see Dashlet::saveOptions() + * @param $req array + * @return array */ public function saveOptions($req) { $options = array(); - $options['title'] = $_REQUEST['title']; - $options['view'] = $_REQUEST['view']; + $options['title'] = $req['title']; + $options['view'] = $req['view']; return $options; } From 3dc7630554b0216d2a6f66dbcbfc1749da36f7fa Mon Sep 17 00:00:00 2001 From: zoltan kocsardi Date: Fri, 26 Jan 2018 14:12:54 +0000 Subject: [PATCH 07/25] fix calendar tpl --- modules/Calendar/tpls/repeat.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/Calendar/tpls/repeat.tpl b/modules/Calendar/tpls/repeat.tpl index 2f2c2796c41..aef74aeda82 100755 --- a/modules/Calendar/tpls/repeat.tpl +++ b/modules/Calendar/tpls/repeat.tpl @@ -143,7 +143,7 @@ if(typeof validate != "undefined" && typeof validate['CalendarRepeatForm'] != "undefined"){ removeFromValidate('CalendarRepeatForm', 'repeat_until'); } - addToValidateMoreThan('CalendarRepeatForm', 'repeat_count', 'int', true,'{/literal}{$MOD.LBL_REPEAT_COUNT}{literal}', 1); + addToValidateMoreThan('CalendarRepeatForm', 'repeat_count', 'int', true, "{/literal}{$MOD.LBL_REPEAT_COUNT}{literal}", 1); }else{ document.forms['CalendarRepeatForm'].repeat_count.setAttribute("disabled","disabled"); document.forms['CalendarRepeatForm'].repeat_until.removeAttribute("disabled"); @@ -152,7 +152,7 @@ if(typeof validate != "undefined" && typeof validate['CalendarRepeatForm'] != "undefined"){ removeFromValidate('CalendarRepeatForm', 'repeat_count'); } - addToValidate('CalendarRepeatForm', 'repeat_until', 'date', true,'{/literal}{$MOD.LBL_REPEAT_UNTIL}{literal}'); + addToValidate('CalendarRepeatForm', 'repeat_until', 'date', true, "{/literal}{$MOD.LBL_REPEAT_UNTIL}{literal}"); } // prevent an issue when a calendar date picker is hidden under a dialog From e2c81f44f147fce236956f4f553c10d6d7222c66 Mon Sep 17 00:00:00 2001 From: Dillon Brown Date: Mon, 29 Jan 2018 10:16:17 +0000 Subject: [PATCH 08/25] Fixed #5054 - Broken HTML in new module dialog in module builder --- modules/ModuleBuilder/MB/MBModule.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ModuleBuilder/MB/MBModule.php b/modules/ModuleBuilder/MB/MBModule.php index 7950688cb42..de74ee8c36a 100755 --- a/modules/ModuleBuilder/MB/MBModule.php +++ b/modules/ModuleBuilder/MB/MBModule.php @@ -5,7 +5,7 @@ * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc. * * SuiteCRM is an extension to SugarCRM Community Edition developed by SalesAgility Ltd. - * Copyright (C) 2011 - 2017 SalesAgility Ltd. + * Copyright (C) 2011 - 2018 SalesAgility Ltd. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by the @@ -596,7 +596,7 @@ function getProvidedSubpanels () return $this->providedSubpanels; } - function getTypes () + static function getTypes() { $types = array ( ) ; $d = dir ( MB_TEMPLATES ) ; From 567ebcc4d670afea315fc912bee4b36fcfea7d65 Mon Sep 17 00:00:00 2001 From: Matt Lorimer Date: Mon, 29 Jan 2018 18:18:55 +0000 Subject: [PATCH 09/25] Fix #2882 - Report Module condition fields from related modules does not work --- modules/AOW_WorkFlow/aow_utils.php | 35 +++++++++++++++++++----------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/modules/AOW_WorkFlow/aow_utils.php b/modules/AOW_WorkFlow/aow_utils.php index 90c04d5fd09..661a243be98 100755 --- a/modules/AOW_WorkFlow/aow_utils.php +++ b/modules/AOW_WorkFlow/aow_utils.php @@ -5,7 +5,7 @@ * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc. * * SuiteCRM is an extension to SugarCRM Community Edition developed by SalesAgility Ltd. - * Copyright (C) 2011 - 2017 SalesAgility Ltd. + * Copyright (C) 2011 - 2018 SalesAgility Ltd. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by the @@ -141,23 +141,32 @@ function getRelModuleFields($module, $rel_field, $view='EditView',$value = ''){ } -function getRelatedModule($module, $rel_field){ - global $beanList; - - if($module == $rel_field){ - return $module; - } +/** + * @param string $module + * @param string $linkFields + * @return string + */ +function getRelatedModule($module, $linkFields) +{ + $linkField = explode(':', $linkFields, 2); - $mod = new $beanList[$module](); + $link = $linkField[0]; + $relatedModule = $module; - if(isset($arr['module']) && $arr['module'] != '') { - return $arr['module']; - } else if($mod->load_relationship($rel_field)){ - return $mod->$rel_field->getRelatedModuleName(); + if ($module === $link) { + $relatedModule = $module; + } else { + $bean = BeanFactory::newBean($module); + if ($bean && $bean->load_relationship($link)) { + $relatedModule = $bean->$link->getRelatedModuleName(); + } } - return $module; + if (!empty($linkField[1])) { + return getRelatedModule($relatedModule, $linkField[1]); + } + return $relatedModule; } function getModuleTreeData($module){ From 858bd41967409ccd853491c7841e1c906aee2789 Mon Sep 17 00:00:00 2001 From: zoltan kocsardi Date: Tue, 30 Jan 2018 15:44:59 +0000 Subject: [PATCH 10/25] make save buttons work --- modules/Spots/tpl/ShowSpots.tpl | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/modules/Spots/tpl/ShowSpots.tpl b/modules/Spots/tpl/ShowSpots.tpl index 777eb1a8861..57822483185 100755 --- a/modules/Spots/tpl/ShowSpots.tpl +++ b/modules/Spots/tpl/ShowSpots.tpl @@ -86,6 +86,35 @@ return snapshotTxt; } + + var SpotsObj = (function () { + const _this = this; + const buttonIds = ['SAVE_HEADER', 'SAVE_FOOTER', 'save_and_continue']; + + this.setEvents = function (buttons) { + for (var i = 0; i < buttons.length; i++) { + var button = document.getElementById(buttons[i]); + + if (button) { + button.addEventListener('click', function () { + window.onbeforeunload = sendAndRedirect('EditView', 'Saving Spots...', '?module=Spots'); + }); + } + } + }; + function resetButtons() { + if (document.getElementById('EditView')) { + _this.setEvents(buttonIds); + } + } + + var result = {}; + result.resetButtons = resetButtons; + + return result; + })(); + + SpotsObj.resetButtons(); {/literal} From 2d60fefc9d69188a79c8bf47196b76cae77c87f0 Mon Sep 17 00:00:00 2001 From: zoltan kocsardi Date: Wed, 31 Jan 2018 15:02:45 +0000 Subject: [PATCH 11/25] remove unnecessary quotes --- modules/Campaigns/utils.php | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/Campaigns/utils.php b/modules/Campaigns/utils.php index 95738870b52..51ad73efb94 100755 --- a/modules/Campaigns/utils.php +++ b/modules/Campaigns/utils.php @@ -193,14 +193,14 @@ function log_campaign_activity($identifier, $activity, $update = true, $clicked_ $data['target_id'] = "'" . create_guid() . "'"; $data['target_type'] = "'Prospects'"; $data['id'] = "'" . create_guid() . "'"; - $data['campaign_id'] = "'" . $row['campaign_id'] . "'"; - $data['target_tracker_key'] = "'" . $identifier . "'"; - $data['activity_type'] = "'" . $activity . "'"; + $data['campaign_id'] = $db->quoted($row['campaign_id']); + $data['target_tracker_key'] = $db->quoted($identifier); + $data['activity_type'] = $db->quoted($activity); $data['activity_date'] = "'" . TimeDate::getInstance()->nowDb() . "'"; $data['hits'] = 1; $data['deleted'] = 0; if (!empty($clicked_url_key)) { - $data['related_id'] = "'" . $clicked_url_key . "'"; + $data['related_id'] = $db->quoted($clicked_url_key); $data['related_type'] = "'" . 'CampaignTrackers' . "'"; } @@ -223,7 +223,7 @@ function log_campaign_activity($identifier, $activity, $update = true, $clicked_ $dataArrayValues = array_values($data); $dataArrayValuesQuoted = array(); foreach ($dataArrayValues as $dataArrayValue) { - $dataArrayValuesQuoted[] = $db->quote($dataArrayValue); + $dataArrayValuesQuoted[] = $dataArrayValue; } $dataArrayValuesQuotedImplode = implode(', ', $dataArrayValuesQuoted); @@ -276,18 +276,18 @@ function log_campaign_activity($identifier, $activity, $update = true, $clicked_ return $return_array; } elseif ($row) { $data['id'] = "'" . create_guid() . "'"; - $data['campaign_id'] = "'" . $row['campaign_id'] . "'"; - $data['target_tracker_key'] = "'" . $identifier . "'"; - $data['target_id'] = "'" . $row['target_id'] . "'"; - $data['target_type'] = "'" . $row['target_type'] . "'"; - $data['activity_type'] = "'" . $activity . "'"; + $data['campaign_id'] = $db->quoted($row['campaign_id']); + $data['target_tracker_key'] = $db->quoted($identifier); + $data['target_id'] = $db->quoted($row['target_id']); + $data['target_type'] = $db->quoted($row['target_type']); + $data['activity_type'] = $db->quoted($activity); $data['activity_date'] = "'" . TimeDate::getInstance()->nowDb() . "'"; - $data['list_id'] = "'" . $row['list_id'] . "'"; - $data['marketing_id'] = "'" . $row['marketing_id'] . "'"; + $data['list_id'] = $db->quoted($row['list_id']); + $data['marketing_id'] = $db->quoted($row['marketing_id']); $data['hits'] = 1; $data['deleted'] = 0; if (!empty($clicked_url_key)) { - $data['related_id'] = "'" . $clicked_url_key . "'"; + $data['related_id'] = $db->quoted($clicked_url_key); $data['related_type'] = "'" . 'CampaignTrackers' . "'"; } //values for return array.. @@ -308,7 +308,7 @@ function log_campaign_activity($identifier, $activity, $update = true, $clicked_ $dataArrayValues = array_values($data); $dataArrayValuesQuoted = array(); foreach ($dataArrayValues as $dataArrayValue) { - $dataArrayValuesQuoted[] = $db->quote($dataArrayValue); + $dataArrayValuesQuoted[] = $dataArrayValue; } $dataArrayValuesQuotedImplode = implode(', ', $dataArrayValuesQuoted); From a48ae4d180b697779d9439c3225dc1db658f2bcb Mon Sep 17 00:00:00 2001 From: zoltan kocsardi Date: Wed, 31 Jan 2018 15:36:46 +0000 Subject: [PATCH 12/25] remove unnecessary iterations --- modules/Campaigns/utils.php | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/modules/Campaigns/utils.php b/modules/Campaigns/utils.php index 51ad73efb94..8e091ee729a 100755 --- a/modules/Campaigns/utils.php +++ b/modules/Campaigns/utils.php @@ -219,13 +219,7 @@ function log_campaign_activity($identifier, $activity, $update = true, $clicked_ $insert_query = "INSERT into campaign_log (" . $dataArrayKeysQuotedImplode . ")"; - // quote variable first - $dataArrayValues = array_values($data); - $dataArrayValuesQuoted = array(); - foreach ($dataArrayValues as $dataArrayValue) { - $dataArrayValuesQuoted[] = $dataArrayValue; - } - $dataArrayValuesQuotedImplode = implode(', ', $dataArrayValuesQuoted); + $dataArrayValuesQuotedImplode = implode(', ', array_values($data)); $insert_query .= " VALUES (" . $dataArrayValuesQuotedImplode . ")"; @@ -304,13 +298,7 @@ function log_campaign_activity($identifier, $activity, $update = true, $clicked_ $insert_query = "INSERT into campaign_log (" . $dataArrayKeysQuotedImplode . ")"; - // quote variable first - $dataArrayValues = array_values($data); - $dataArrayValuesQuoted = array(); - foreach ($dataArrayValues as $dataArrayValue) { - $dataArrayValuesQuoted[] = $dataArrayValue; - } - $dataArrayValuesQuotedImplode = implode(', ', $dataArrayValuesQuoted); + $dataArrayValuesQuotedImplode = implode(', ', array_values($data)); $insert_query .= " VALUES (" . $dataArrayValuesQuotedImplode . ")"; From 4c2af9310ff655a70765b0bbc8fa2420a659be66 Mon Sep 17 00:00:00 2001 From: "p.ernst" Date: Mon, 5 Feb 2018 09:37:13 +0000 Subject: [PATCH 13/25] Take into account emails sent from activities subpanel --- modules/Emails/Email.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/Emails/Email.php b/modules/Emails/Email.php index 8303ad1c6bb..9e8a3fa6af2 100755 --- a/modules/Emails/Email.php +++ b/modules/Emails/Email.php @@ -566,7 +566,7 @@ function email2Send($request) { } // This code is 7.8.x LTS specific, from 7.9 onwards it is found in EmailsController and can be deleted here - if (!empty($_REQUEST['data_parent_id1'])) { + if (!empty($_REQUEST['data_parent_id1']) || !empty($_REQUEST['data_parent_id0'])) { $macro_nv = array(); $focusName = $request['parent_type']; $focus = BeanFactory::getBean($focusName, $request['parent_id']); From 1d034c0dd84157cab7965382ca53308ac6f05862 Mon Sep 17 00:00:00 2001 From: "p.ernst" Date: Tue, 6 Feb 2018 09:41:00 +0000 Subject: [PATCH 14/25] Fix #5097 Do not interpret DB format as user format --- modules/AOS_Products_Quotes/AOS_Utils.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/AOS_Products_Quotes/AOS_Utils.php b/modules/AOS_Products_Quotes/AOS_Utils.php index 312fe8b374a..0d5175ab324 100644 --- a/modules/AOS_Products_Quotes/AOS_Utils.php +++ b/modules/AOS_Products_Quotes/AOS_Utils.php @@ -38,10 +38,26 @@ function perform_aos_save($focus){ if(!number_empty($focus->field_defs[$field['name']])){ $currency = new Currency(); $currency->retrieve($focus->currency_id); - $focus->$fieldNameDollar = $currency->convertToDollar(unformat_number($focus->$fieldName)); + + $amountToConvert = $focus->$fieldName; + if (!amountToConvertIsDatabaseValue($focus, $fieldName)) { + $amountToConvert = unformat_number($focus->$fieldName); + } + + $focus->$fieldNameDollar = $currency->convertToDollar($amountToConvert); } } } +} + +function amountToConvertIsDatabaseValue($focus, $fieldName) +{ + if (isset($focus->fetched_row) + && isset($focus->fetched_row[$fieldName]) + && $focus->fetched_row[$fieldName] == $focus->$fieldName) { + return true; + } + return false; } \ No newline at end of file From edcc44cede5e71b4c67d04ac1d92e73f10baa912 Mon Sep 17 00:00:00 2001 From: "p.ernst" Date: Tue, 6 Feb 2018 09:41:49 +0000 Subject: [PATCH 15/25] Missing empty line at end of file --- modules/AOS_Products_Quotes/AOS_Utils.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/AOS_Products_Quotes/AOS_Utils.php b/modules/AOS_Products_Quotes/AOS_Utils.php index 0d5175ab324..431462e5209 100644 --- a/modules/AOS_Products_Quotes/AOS_Utils.php +++ b/modules/AOS_Products_Quotes/AOS_Utils.php @@ -60,4 +60,4 @@ function amountToConvertIsDatabaseValue($focus, $fieldName) return true; } return false; -} \ No newline at end of file +} From 4cd041c69ff74522f346ed7407602e11c9c3fb34 Mon Sep 17 00:00:00 2001 From: "p.ernst" Date: Tue, 6 Feb 2018 10:19:50 +0000 Subject: [PATCH 16/25] Fix #5095 Pass parameter that gets modified by reference --- modules/DynamicFields/DynamicField.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/DynamicFields/DynamicField.php b/modules/DynamicFields/DynamicField.php index 0d447b5be40..f862215de46 100755 --- a/modules/DynamicFields/DynamicField.php +++ b/modules/DynamicFields/DynamicField.php @@ -312,7 +312,7 @@ public function saveToVardef($module, $result, $saveCache = true) * * @return array select=>select columns, join=>prebuilt join statement */ - public function getJOIN($expandedList = false, $includeRelates = false, $where = false) + public function getJOIN($expandedList = false, $includeRelates = false, &$where = false) { if (!$this->bean->hasCustomFields()) { return array( @@ -346,7 +346,7 @@ public function getJOIN($expandedList = false, $includeRelates = false, $where = $relateJoinInfo = $this->getRelateJoin($field, $jtAlias . $jtCount); $select .= $relateJoinInfo['select']; $join .= $relateJoinInfo['from']; - //bug 27654 martin + if ($where) { $pattern = '/' . $field['name'] . '\slike/i'; $replacement = $relateJoinInfo['name_field'] . ' like'; From f5d0c83ec590594bbacc3f22c79cdb8fe531e6c6 Mon Sep 17 00:00:00 2001 From: "p.ernst" Date: Tue, 6 Feb 2018 11:31:49 +0000 Subject: [PATCH 17/25] Fix #5074 Make ellipsis consistent across language files --- include/language/en_us.lang.php | 16 ++++++++-------- install/language/en_us.lang.php | 2 +- modules/Calendar/language/en_us.lang.php | 6 +++--- modules/Campaigns/language/en_us.lang.php | 4 ++-- .../JotPadDashlet/JotPadDashlet.en_us.lang.php | 2 +- .../RSSDashlet/RSSDashlet.en_us.lang.php | 2 +- modules/Home/language/en_us.lang.php | 6 +++--- modules/ModuleBuilder/language/en_us.lang.php | 8 ++++---- .../SpotsDashlet/SpotsDashlet.en_us.lang.php | 2 +- modules/Studio/language/en_us.lang.php | 2 +- 10 files changed, 25 insertions(+), 25 deletions(-) diff --git a/include/language/en_us.lang.php b/include/language/en_us.lang.php index a1584e61697..9e200186c71 100755 --- a/include/language/en_us.lang.php +++ b/include/language/en_us.lang.php @@ -2035,9 +2035,9 @@ 'LBL_SUBSCRIBE' => 'Subscribe', 'LBL_UNSUBSCRIBE' => 'Unsubscribe', // Ajax status strings - 'LBL_LOADING' => 'Loading ...', + 'LBL_LOADING' => 'Loading...', 'LBL_SEARCHING' => 'Searching...', - 'LBL_SAVING_LAYOUT' => 'Saving Layout ...', + 'LBL_SAVING_LAYOUT' => 'Saving Layout...', 'LBL_SAVED_LAYOUT' => 'Layout has been saved.', 'LBL_SAVED' => 'Saved', 'LBL_SAVING' => 'Saving', @@ -2046,7 +2046,7 @@ 'LBL_HIDE_COLUMNS' => 'Hide Columns', 'LBL_SEARCH_CRITERIA' => 'Search Criteria', 'LBL_SAVED_VIEWS' => 'Saved Views', - 'LBL_PROCESSING_REQUEST' => 'Processing..', + 'LBL_PROCESSING_REQUEST' => 'Processing...', 'LBL_REQUEST_PROCESSED' => 'Done', 'LBL_AJAX_FAILURE' => 'Ajax failure', 'LBL_MERGE_DUPLICATES' => 'Merge', @@ -2136,16 +2136,16 @@ 'LBL_DASHLET_CONFIGURE_DISPLAY_ROWS' => 'Display Rows', // MySugar status strings - 'LBL_CREATING_NEW_PAGE' => 'Creating New Page ...', + 'LBL_CREATING_NEW_PAGE' => 'Creating New Page...', 'LBL_NEW_PAGE_FEEDBACK' => 'You have created a new page. You may add new content with the Add Dashlets menu option.', 'LBL_DELETE_PAGE_CONFIRM' => 'Are you sure you want to delete this page?', - 'LBL_SAVING_PAGE_TITLE' => 'Saving Page Title ...', - 'LBL_RETRIEVING_PAGE' => 'Retrieving Page ...', + 'LBL_SAVING_PAGE_TITLE' => 'Saving Page Title...', + 'LBL_RETRIEVING_PAGE' => 'Retrieving Page...', 'LBL_MAX_DASHLETS_REACHED' => 'You have reached the maximum number of SuiteCRM Dashlets your adminstrator has set. Please remove a SuiteCRM Dashlet to add more.', - 'LBL_ADDING_DASHLET' => 'Adding SuiteCRM Dashlet ...', + 'LBL_ADDING_DASHLET' => 'Adding SuiteCRM Dashlet...', 'LBL_ADDED_DASHLET' => 'SuiteCRM Dashlet Added', 'LBL_REMOVE_DASHLET_CONFIRM' => 'Are you sure you want to remove this SuiteCRM Dashlet?', - 'LBL_REMOVING_DASHLET' => 'Removing SuiteCRM Dashlet ...', + 'LBL_REMOVING_DASHLET' => 'Removing SuiteCRM Dashlet...', 'LBL_REMOVED_DASHLET' => 'SuiteCRM Dashlet Removed', // MySugar Menu Options diff --git a/install/language/en_us.lang.php b/install/language/en_us.lang.php index 7bea90741a9..d9ec5b14df1 100755 --- a/install/language/en_us.lang.php +++ b/install/language/en_us.lang.php @@ -652,7 +652,7 @@ 'LBL_NUMBER_GROUPING_SEP' => '1000s separator:', 'LBL_DECIMAL_SEP' => 'Decimal symbol:', 'LBL_NAME_FORMAT' => 'Name Format:', - 'UPLOAD_LOGO' => 'Please wait, logo uploading..', + 'UPLOAD_LOGO' => 'Please wait, logo uploading...', 'ERR_UPLOAD_FILETYPE' => 'File type not allowed, please upload a jpeg or png.', 'ERR_LANG_UPLOAD_UNKNOWN' => 'Unknown file upload error occured.', 'ERR_UPLOAD_FILE_UPLOAD_ERR_INI_SIZE' => 'The uploaded file exceeds the upload_max_filesize directive in php.ini.', diff --git a/modules/Calendar/language/en_us.lang.php b/modules/Calendar/language/en_us.lang.php index bfc149a98d0..630803befd5 100755 --- a/modules/Calendar/language/en_us.lang.php +++ b/modules/Calendar/language/en_us.lang.php @@ -101,9 +101,9 @@ 'LBL_NO' => 'No', 'LBL_SETTINGS' => 'Settings', 'LBL_CREATE_NEW_RECORD' => 'Create Activity', - 'LBL_LOADING' => 'Loading ......', - 'LBL_SAVING' => 'Saving ......', - 'LBL_SENDING_INVITES' => 'Saving & Sending Invites .....', + 'LBL_LOADING' => 'Loading...', + 'LBL_SAVING' => 'Saving...', + 'LBL_SENDING_INVITES' => 'Saving & Sending Invites...', 'LBL_CONFIRM_REMOVE' => 'Are you sure you want to remove the record?', 'LBL_CONFIRM_REMOVE_ALL_RECURRING' => 'Are you sure you want to remove all recurring records?', 'LBL_EDIT_RECORD' => 'Edit Activity', diff --git a/modules/Campaigns/language/en_us.lang.php b/modules/Campaigns/language/en_us.lang.php index 4df10ce575c..261f3347fe4 100755 --- a/modules/Campaigns/language/en_us.lang.php +++ b/modules/Campaigns/language/en_us.lang.php @@ -495,7 +495,7 @@ 'LBL_CHOOSE_TEMPLATES' => 'Choose Templates', 'LBL_CHOOSE_TARGETS' => 'Choose Targets', 'LBL_CAMPAIGN_DETAILS_AND_CONDITIONS' => 'Campaign Details and Conditions', - 'LBL_OPEN_IN_NEW_WINDOW' => 'Open in new window..', + 'LBL_OPEN_IN_NEW_WINDOW' => 'Open in new window...', 'LBL_OVERWRITE_TEMPLATE_CONFIRM_DIALOG' => 'Do you wish to overwrite the selected template? Select "Cancel" to continue without saving.', 'LBL_CREATE_MARKETING_RECORD' => 'Next', 'LBL_NO_TEMPLATE_SELECTED' => 'Email Template not selected', @@ -529,7 +529,7 @@ 'LBL_NEWSLETTER_TITLE' => ' A newsletter campaign is a type of email campaign, which allows you to send an email to a single target list.', 'LBL_EMAIL_TITLE' => 'An email campaign is a type of email campaign, which allows you to send an email to multiple target lists.', 'LBL_NON_EMAIL_TITLE' => 'A non email campaign is a campaign that does not send an email.', - 'LBL_TEMPLATE_SAVING' => 'Please wait, template saving..', + 'LBL_TEMPLATE_SAVING' => 'Please wait, template saving...', 'LBL_TEMPLATE_SAVED' => 'Template successfully saved.', 'LBL_PLEASE_SELECT_OPTION' => 'Please select which option you prefer', 'LBL_OPTION_SELECT_TEMPLATE' => 'Select an existing template', diff --git a/modules/Home/Dashlets/JotPadDashlet/JotPadDashlet.en_us.lang.php b/modules/Home/Dashlets/JotPadDashlet/JotPadDashlet.en_us.lang.php index a227c01f28b..50da550ee45 100755 --- a/modules/Home/Dashlets/JotPadDashlet/JotPadDashlet.en_us.lang.php +++ b/modules/Home/Dashlets/JotPadDashlet/JotPadDashlet.en_us.lang.php @@ -44,7 +44,7 @@ $defaultText = ""; $dashletStrings['JotPadDashlet'] = array('LBL_TITLE' => 'JotPad', 'LBL_DESCRIPTION' => 'A dashlet to keep your notes', - 'LBL_SAVING' => 'Saving JotPad ...', + 'LBL_SAVING' => 'Saving JotPad...', 'LBL_SAVED' => 'Saved', 'LBL_CONFIGURE_TITLE' => 'Title', 'LBL_CONFIGURE_HEIGHT' => 'Height (1 - 300)', diff --git a/modules/Home/Dashlets/RSSDashlet/RSSDashlet.en_us.lang.php b/modules/Home/Dashlets/RSSDashlet/RSSDashlet.en_us.lang.php index 6dacb345695..8501a74c476 100755 --- a/modules/Home/Dashlets/RSSDashlet/RSSDashlet.en_us.lang.php +++ b/modules/Home/Dashlets/RSSDashlet/RSSDashlet.en_us.lang.php @@ -45,7 +45,7 @@ $dashletStrings['RSSDashlet'] = array( 'LBL_TITLE' => 'News Feed', 'LBL_DESCRIPTION' => 'News Feed', - 'LBL_SAVING' => 'Parsing ...', + 'LBL_SAVING' => 'Parsing...', 'LBL_SAVED' => 'Complete', 'LBL_AUTO_SCROLL' => 'Auto Scroll', 'LBL_SCROLL_SPEED' => 'Scroll Speed (%)', diff --git a/modules/Home/language/en_us.lang.php b/modules/Home/language/en_us.lang.php index c94f2bdfedd..fee65277439 100755 --- a/modules/Home/language/en_us.lang.php +++ b/modules/Home/language/en_us.lang.php @@ -77,7 +77,7 @@ 'LNK_NEW_TASK' => 'Create Task', 'LNK_NEW_BUG' => 'Report Bug', 'LBL_ADD_BUSINESSCARD' => 'Enter Business Card', - 'ERR_ONE_CHAR' => 'Please enter at least one letter or number for your search ...', + 'ERR_ONE_CHAR' => 'Please enter at least one letter or number for your search...', 'LBL_OPEN_TASKS' => 'My Open Tasks', 'LBL_SEARCH_RESULTS_IN' => 'in', 'LNK_NEW_SEND_EMAIL' => 'Compose Email', @@ -130,10 +130,10 @@ 'Tools' => 'Tools', 'Miscellaneous' => 'Miscellaneous'), 'LBL_MAX_DASHLETS_REACHED' => 'You have reached the maximum number of SuiteCRM Dashlets your administrator has set. Please remove a SuiteCRM Dashlet to add a new one.', - 'LBL_ADDING_DASHLET' => 'Adding SuiteCRM Dashlet ...', + 'LBL_ADDING_DASHLET' => 'Adding SuiteCRM Dashlet...', 'LBL_ADDED_DASHLET' => 'SuiteCRM Dashlet Added', 'LBL_REMOVE_DASHLET_CONFIRM' => 'Are you sure you want to remove this SuiteCRM Dashlet?', - 'LBL_REMOVING_DASHLET' => 'Removing SuiteCRM Dashlet ...', + 'LBL_REMOVING_DASHLET' => 'Removing SuiteCRM Dashlet...', 'LBL_REMOVED_DASHLET' => 'SuiteCRM Dashlet Removed', 'LBL_DASHLET_CONFIGURE_GENERAL' => 'General', 'LBL_DASHLET_CONFIGURE_FILTERS' => 'Filters', diff --git a/modules/ModuleBuilder/language/en_us.lang.php b/modules/ModuleBuilder/language/en_us.lang.php index 923155f1feb..16690aa4a90 100755 --- a/modules/ModuleBuilder/language/en_us.lang.php +++ b/modules/ModuleBuilder/language/en_us.lang.php @@ -229,7 +229,7 @@ ), 'relationshipsHelp' => array( 'default' => 'The Relationships that have been created between the module and other modules appear here.

The relationship Name is the system-generated name for the relationship.

The Primary Module is the module that owns the relationships. The relationship properties are stored in the database tables belonging to the primary module.

The Type is the type of relationship exists between the Primary module and the Related Module.

Click a column title to sort by the column.

Click a row in the relationship table to view and edit the properties associated with the relationship.

Click Add Relationship to create a new relationship.', - 'addrelbtn' => 'mouse over help for add relationship..', + 'addrelbtn' => 'mouse over help for add relationship...', 'addRelationship' => 'Relationships can be created between the module and another custom module or a deployed module.

Relationships are visually expressed through subpanels and relate fields in the module records.

Select one of the following relationship Types for the module:

One-to-One - Both modules\' records will contain relate fields.

One-to-Many - The Primary Module\'s record will contain a subpanel, and the Related Module\'s record will contain a relate field.

Many-to-Many - Both modules\' records will display subpanels.

Select the Related Module for the relationship.

If the relationship type involves subpanels, select the subpanel view for the appropriate modules.

Click Save to create the relationship.', ), 'labelsHelp' => array( @@ -389,7 +389,7 @@ 'LBL_NEW_PANEL' => 'New Panel', 'LBL_NEW_ROW' => 'New Row', 'LBL_PACKAGE_DELETED' => 'Package Deleted', - 'LBL_PUBLISHING' => 'Publishing ...', + 'LBL_PUBLISHING' => 'Publishing...', 'LBL_PUBLISHED' => 'Published', 'LBL_SELECT_FILE' => 'Select File', 'LBL_SAVE_LAYOUT' => 'Save Layout', @@ -645,8 +645,8 @@ 'LBL_AJAX_RESPONSE_TITLE' => 'Result', 'LBL_AJAX_RESPONSE_MESSAGE' => 'This operation is completed successfully', - 'LBL_AJAX_LOADING_TITLE' => 'In Progress..', - 'LBL_AJAX_LOADING_MESSAGE' => 'Please wait, loading..', + 'LBL_AJAX_LOADING_TITLE' => 'In Progress...', + 'LBL_AJAX_LOADING_MESSAGE' => 'Please wait, loading...', //JS 'LBL_JS_REMOVE_PACKAGE' => 'Are you sure you wish to remove this package? This will permanently delete all files associated with this package.', diff --git a/modules/Spots/Dashlets/SpotsDashlet/SpotsDashlet.en_us.lang.php b/modules/Spots/Dashlets/SpotsDashlet/SpotsDashlet.en_us.lang.php index bc3607f6674..3a370908396 100755 --- a/modules/Spots/Dashlets/SpotsDashlet/SpotsDashlet.en_us.lang.php +++ b/modules/Spots/Dashlets/SpotsDashlet/SpotsDashlet.en_us.lang.php @@ -41,7 +41,7 @@ $dashletStrings['SpotsDashlet'] = array( 'LBL_TITLE' => 'Spots', 'LBL_DESCRIPTION' => 'Spots report of your data', - 'LBL_SAVING' => 'Saving Spots ...', + 'LBL_SAVING' => 'Saving Spots...', 'LBL_SAVED' => 'Saved', 'LBL_CONFIGURE_TITLE' => 'Title', 'LBL_SPOTS_TO_LOAD' => 'Spots to Load', diff --git a/modules/Studio/language/en_us.lang.php b/modules/Studio/language/en_us.lang.php index 76997dd7a59..d038992e891 100755 --- a/modules/Studio/language/en_us.lang.php +++ b/modules/Studio/language/en_us.lang.php @@ -64,7 +64,7 @@ 'LBL_VIEW_SUGAR_BIN' => 'View SuiteCRM Bin', 'LBL_FAILED_TO_SAVE' => 'Failed To Save', 'LBL_CONFIRM_UNSAVE' => 'Any changes will go unsaved. Are you sure you would like to continue?', -'LBL_PUBLISHING' => 'Publishing ...', +'LBL_PUBLISHING' => 'Publishing...', 'LBL_PUBLISHED' => 'Published', 'LBL_FAILED_PUBLISHED' => 'Failed to Publish', 'LBL_DROP_HERE' => '[Drop Here]', From 724783a46898401815de0883e51f174940b585a7 Mon Sep 17 00:00:00 2001 From: "p.ernst" Date: Tue, 6 Feb 2018 11:40:07 +0000 Subject: [PATCH 18/25] Fix #5074 Make ellipsis consistent across language files --- install/language/en_us.lang.php | 2 +- modules/Import/language/en_us.lang.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/language/en_us.lang.php b/install/language/en_us.lang.php index d9ec5b14df1..8be8b737f2f 100755 --- a/install/language/en_us.lang.php +++ b/install/language/en_us.lang.php @@ -371,7 +371,7 @@ 'LBL_PERFORM_OUTRO_5' => 'Approximate memory used: ', 'LBL_PERFORM_OUTRO_6' => ' bytes.', 'LBL_PERFORM_OUTRO_7' => 'Your system is now installed and configured for use.', - 'LBL_PERFORM_REL_META' => 'relationship meta ... ', + 'LBL_PERFORM_REL_META' => 'relationship meta... ', 'LBL_PERFORM_SUCCESS' => 'Success!', 'LBL_PERFORM_TABLES' => 'Creating SuiteCRM application tables, audit tables and relationship metadata', 'LBL_PERFORM_TITLE' => 'Perform Setup', diff --git a/modules/Import/language/en_us.lang.php b/modules/Import/language/en_us.lang.php index 2a135b60ac6..c66f7a27edd 100755 --- a/modules/Import/language/en_us.lang.php +++ b/modules/Import/language/en_us.lang.php @@ -175,7 +175,7 @@ 'LBL_NOW_CHOOSE' => 'Now choose that file to import:', 'LBL_IMPORT_OUTLOOK_TITLE' => 'Microsoft Outlook 98 and 2000 can export data in the Comma Separated Values format, which can be used to import data into the system. To export your data from Outlook, follow the steps below:', 'LBL_OUTLOOK_NUM_1' => 'Start Outlook', - 'LBL_OUTLOOK_NUM_2' => 'Select the File menu, then the Import and Export ... menu option', + 'LBL_OUTLOOK_NUM_2' => 'Select the File menu, then the Import and Export... menu option', 'LBL_OUTLOOK_NUM_3' => 'Choose Export to a file and click Next', 'LBL_OUTLOOK_NUM_4' => 'Choose Comma Separated Values (Windows) and click Next.
Note: You may be prompted to install the export component', 'LBL_OUTLOOK_NUM_5' => 'Select the Contacts folder and click Next. You can select different contacts folders if your contacts are stored in multiple folders', From d03902db95f636f50675e993a4241b6d518dcaea Mon Sep 17 00:00:00 2001 From: "p.ernst" Date: Tue, 6 Feb 2018 13:57:43 +0000 Subject: [PATCH 19/25] Fix #5012 Remove client side password length limitation --- install/dbConfig_a.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/dbConfig_a.php b/install/dbConfig_a.php index b31cb6fab59..629602025ff 100755 --- a/install/dbConfig_a.php +++ b/install/dbConfig_a.php @@ -198,7 +198,7 @@