Squashed 'public/legacy/' changes from 4e205ecf45..92c30d9960

92c30d9960 SuiteCRM 7.13.2 Release
e3d6036790 Fix Surveys text labels
ac66701d90 Add new modules to unit tests
a3ca5cc324 Update goggle/apiclient to 2.13.0
9c346b259f Fix #9900 - Conditions doesn't recognize some of the characters set
f6cc372db3 Fix #9926 - Add missing check on product image upload
dc68a7164a Fix #9914 - Update dashboard.scss for dashlet options overflow
70f684abde Fix #9909 - Default empty item when creating a new Dropdown field
63fac08ea5 Fix #9883 -  Security Groups do not work with modules whose name exceeds 36 characters.
e3605783b5 Fix #9882 - opcache install module copy action
40a646c7f4 Fix #9871 -  Javascript message error when bulk updating all user records
1a9d821ee2 Fix #9873 - Plesk php.ini disable_functions = opcache_get_status
0c6e039eb6 Fix #9835 - Case Updates save bug
c1d90382b3 Fix #4646 - Hard coded messages in Surveys module
7efb6a7dd8  Fix salesagility#9750 - Receive related parameters of type dynamicenum in workflow formulas
bd8f86e70a Closing count bracket before condition
ec8a5e6aee Fix #9665 - Set unique id for "Reset module" button in studio
5783ac3acc Fix #9954 - Fix Campaigns parenthesis
20270e7639 FIX #9344 Error in Browsers console after adding tabs to Quickcreate: selectTabOnError

git-subtree-dir: public/legacy
git-subtree-split: 92c30d9960dd8da3146fcf0b09d41854026ee77f
This commit is contained in:
SAgility Dev 2023-02-28 14:10:15 +00:00
parent c5f636e5bc
commit 444c2169fe
42 changed files with 368 additions and 120 deletions

View file

@ -61,6 +61,8 @@ require_once('include/utils/progress_bar_utils.php');
require_once('ModuleInstall/ModuleScanner.php');
define('DISABLED_PATH', 'Disabled');
require_once 'include/SugarCache/SugarCache.php';
class ModuleInstaller
{
public $modules = array();
@ -2091,6 +2093,9 @@ class ModuleInstaller
if (is_writable($dest)) {
sugar_touch($dest, filemtime($source));
}
if ((new SplFileInfo($dest))->getExtension() == 'php') {
SugarCache::cleanFile($dest);
}
return(unlink($source));
} else {
$GLOBALS['log']->debug("Can't restore file: " . $source);
@ -2108,11 +2113,18 @@ class ModuleInstaller
if (is_writable($rest)) {
sugar_touch($rest, filemtime($dest));
}
if ((new SplFileInfo($rest))->getExtension() == 'php') {
SugarCache::cleanFile($rest);
}
} else {
$GLOBALS['log']->debug("Can't backup file: " . $dest);
}
}
return(copy($source, $dest));
$result = copy($source, $dest);
if ((new SplFileInfo($dest))->getExtension() == 'php') {
SugarCache::cleanFile($dest);
}
return $result;
}
} elseif (!is_dir($source)) {
if ($uninstall) {

View file

@ -2,7 +2,7 @@
<img width="180px" height="41px" src="https://suitecrm.com/wp-content/uploads/2017/12/logo.png" align="right" />
</a>
# SuiteCRM 7.13.1
# SuiteCRM 7.13.2
[![LICENSE](https://img.shields.io/github/license/suitecrm/suitecrm.svg)](https://github.com/salesagility/suitecrm/blob/hotfix/LICENSE.txt)
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/salesagility/SuiteCRM-Core/issues)

8
composer.lock generated
View file

@ -902,16 +902,16 @@
},
{
"name": "google/apiclient",
"version": "v2.12.6",
"version": "v2.13.0",
"source": {
"type": "git",
"url": "https://github.com/googleapis/google-api-php-client.git",
"reference": "f92aa126903a9e2da5bd41a280d9633cb249e79e"
"reference": "b653a338c5a658adf6df4bb2f44c2cc02fe7eb1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/f92aa126903a9e2da5bd41a280d9633cb249e79e",
"reference": "f92aa126903a9e2da5bd41a280d9633cb249e79e",
"url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/b653a338c5a658adf6df4bb2f44c2cc02fe7eb1d",
"reference": "b653a338c5a658adf6df4bb2f44c2cc02fe7eb1d",
"shasum": ""
},
"require": {

View file

@ -1,5 +1,5 @@
<?php
// created: 2023-01-23 17:00:00
// created: 2023-02-27 17:00:00
$md5_string = array (
'./Api/Core/Config/ApiConfig.php' => '69a1e7b3d7755a2a63499a16ddae81cf',
'./Api/Core/Config/slim.php' => 'b134e68765e6a1403577e2a5a06322b8',
@ -102,7 +102,7 @@ $md5_string = array (
'./HandleAjaxCall.php' => '954cebdd8ea2ab1e5c03658b184322fd',
'./LICENSE.txt' => 'd3f150e4a5bed444763ebe8a81742a95',
'./ModuleInstall/ExtensionManager.php' => 'e9699caa01beb5c4fdae7cc9c8cc4bc6',
'./ModuleInstall/ModuleInstaller.php' => '526a3e11024b84f3602f9857d69a8e47',
'./ModuleInstall/ModuleInstaller.php' => '3b475e896de4476bffaa026184bef72a',
'./ModuleInstall/ModuleScanner.php' => '5bd029e1955c5c243ce4cc567cc99367',
'./ModuleInstall/PackageManager/ListViewPackages.php' => 'dd40ddc497010be809cb03c63499ac4f',
'./ModuleInstall/PackageManager/PackageController.php' => '03db58edbce570e532e1c55dbb657889',
@ -116,7 +116,7 @@ $md5_string = array (
'./ModuleInstall/PackageManager/tpls/PackageManagerLicense.tpl' => 'df5e267d1df5ce08fb9406e42d5b4816',
'./ModuleInstall/PackageManager/tpls/PackageManagerScripts.tpl' => '98e396c0aa57329731fda19c790fffb2',
'./ModuleInstall/extensions.php' => 'de30837895f67175b7fbc04274a837a6',
'./README.md' => '3c49e53b583be73441c2a9a7d3b86cc7',
'./README.md' => '92d28c27542d1ec479f07123ef7231cf',
'./RoboFile.php' => '045b82c1df69553824d0e4ffcce6e03c',
'./SugarSecurity.php' => '47e316b2d408e8c5192c8ea4a4f921b3',
'./TreeData.php' => '32873e20cb5fd33f9d1cdaf18c3cac5c',
@ -508,7 +508,7 @@ $md5_string = array (
'./build/travis-ci-apache' => 'e1e212c4eaf679b6ec620cd0b12f4571',
'./campaign_tracker.php' => '321e43ca8b664e6ca57ae5589e8c0667',
'./composer.json' => '6bd6f8c467d45fa7b42f41a565c3c15b',
'./composer.lock' => '7651f60b1796ac7aec447c2c341ebcba',
'./composer.lock' => '0fe6766d5b5428b16abaa4da96e2af12',
'./cron.php' => '0b8b6bd839a2232a8da074b31feaa708',
'./crossdomain.xml' => '24b7711640c652b21aa89c9d83d6ec13',
'./data/BeanFactory.php' => '3007bf65ebc77baa76c338ce6a068790',
@ -541,7 +541,7 @@ $md5_string = array (
'./include/Dashlets/DashletGenericConfigure.tpl' => '48f74b38e7d5b0fe2604716a12657948',
'./include/Dashlets/DashletGenericDisplay.tpl' => 'c80c7333525eec262638be62b297b0df',
'./include/Dashlets/DashletHeader.tpl' => '8b8ce31451810ba6e2df4da49ab1eed2',
'./include/Dashlets/DashletRssFeedTitle.php' => '40032748c6a72a8d0929c608ea16f6a7',
'./include/Dashlets/DashletRssFeedTitle.php' => '21ccfa30aefc13238f5c62fa987677f1',
'./include/DatabaseTransactions.php' => '430f1e917f9d65f1304f6094e946bb1a',
'./include/DetailView/DetailView.php' => 'd10f95d0b370f1fdb67b9bfff7540deb',
'./include/DetailView/DetailView.tpl' => 'd58cd38e065ff5b213e152408d4b900c',
@ -609,7 +609,7 @@ $md5_string = array (
'./include/ListView/ListViewColumnsFilterDialog.tpl' => '658c6c89bed39b4b77d5576c6279d215',
'./include/ListView/ListViewColumnsFilterLink.tpl' => 'f72bf5e08fb157aaa12151efb71ffd50',
'./include/ListView/ListViewDCMenu.tpl' => 'b65d91f4e0974fb3bad725c4a10dbd38',
'./include/ListView/ListViewData.php' => '13fd111566fabfe310ca2df58c19820e',
'./include/ListView/ListViewData.php' => '9fca13822da66e7e26991a87865ba088',
'./include/ListView/ListViewDisplay.php' => '516709b2a7e1d11ab5193369ecd1d7d8',
'./include/ListView/ListViewEval.tpl' => '15d45a3ed170599634d26860dc2e9e56',
'./include/ListView/ListViewFacade.php' => '9b0f0b4cec02511bebbc62beef368744',
@ -823,7 +823,7 @@ $md5_string = array (
'./include/SubPanel/tpls/SubPanelDynamic.tpl' => 'ab76d9f5f3db9bb26a6d9921176f2d99',
'./include/SubPanel/tpls/SubPanelTiles.tpl' => 'c879bcb62aa989f18b85a6ad4291ce71',
'./include/SubPanel/tpls/singletabmenu.tpl' => 'e334b8892ae7cc289d31173e1e05a1c5',
'./include/SugarCache/SugarCache.php' => '7ff4740fc54fc8689394d725b88f5d45',
'./include/SugarCache/SugarCache.php' => 'edb78a9feecb5ca8f10a891e703ec740',
'./include/SugarCache/SugarCacheAPC.php' => 'd253bb2162a329aff721b9e3df38eec9',
'./include/SugarCache/SugarCacheAbstract.php' => '8e289b27e8180a75c69a59e398c773a3',
'./include/SugarCache/SugarCacheFile.php' => '7a057412047cc01ef2ccfaaad2700f44',
@ -2389,7 +2389,7 @@ $md5_string = array (
'./include/utils/db_utils.php' => '7fa7c67aec162fd9da259a1f33cef514',
'./include/utils/encryption_utils.php' => 'cf87e84efe3764464056e6473aac9c79',
'./include/utils/external_cache.php' => '7439d9b6252e242a9c852ecb58df44ec',
'./include/utils/file_utils.php' => '32ed2174485ae7cdc829415d4dcaef86',
'./include/utils/file_utils.php' => '183eb1e7ccac560fb976c81803949716',
'./include/utils/layout_utils.php' => 'f1bfbecd81ffaea9483b39ee7925a523',
'./include/utils/logic_utils.php' => 'df0882131989fd10f9855cc3b66d4572',
'./include/utils/mvc_utils.php' => '38de4382713debfb1cbbe33442a8fc5b',
@ -2400,7 +2400,7 @@ $md5_string = array (
'./include/utils/recaptcha_utils.php' => '73f5eddf707788c1dff4b7d07dc82656',
'./include/utils/security_utils.php' => 'e953d0b673df3df313ecf1ac975e8f57',
'./include/utils/sugar_file_utils.php' => '1c1915cad8c88feb0edbf5bbaee106c4',
'./include/utils.php' => 'cced923f608d95518b88dfc27997a0d1',
'./include/utils.php' => 'c480479dc541aa24577afd445574a9d5',
'./include/vCard.php' => '44052bbedcdaba3fdf67cfc10a112e75',
'./include/ytree/ExtNode.php' => '000d4ccbdb6e0a7628c636128781b5e3',
'./include/ytree/JQueryTree.php' => '3712d2224b93818b990b876f8405b745',
@ -2931,7 +2931,7 @@ $md5_string = array (
'./metadata/schedulers_timesMetaData.php' => '472d004c825229f165ca5a27e3c85718',
'./metadata/securitygroups_acl_rolesMetaData.php' => 'f9dab1fc5449341673a8698a0e247b2c',
'./metadata/securitygroups_defaultsMetaData.php' => '63f2b46fdee0aba691d7bf7fc86ef0aa',
'./metadata/securitygroups_recordsMetaData.php' => 'c8e1eec38153f88f0735f929b6b7c857',
'./metadata/securitygroups_recordsMetaData.php' => 'b6d2594a27d0c76c82fb3b746ee5c4c7',
'./metadata/securitygroups_usersMetaData.php' => '8f40cb73a4a587b2429fd82a2b07028d',
'./metadata/surveyquestionoptions_surveyquestionresponsesMetaData.php' => '45a523649b88fde1ce1ca4ce2cc58a2b',
'./metadata/user_feedsMetaData.php' => '95afa64e44236f27a5ca6f8ed6c45b7a',
@ -3252,7 +3252,7 @@ $md5_string = array (
'./modules/AOP_Case_Updates/AOPAssignManager.php' => 'ecc13c6a6f19283ca117b723e4da66b0',
'./modules/AOP_Case_Updates/AOP_Case_Updates.php' => 'd30f3d009b0771ee2affc24df2b38583',
'./modules/AOP_Case_Updates/CaseUpdatesHook.php' => '807c6fd3beeacfc4ecafcfb6856f9029',
'./modules/AOP_Case_Updates/Case_Updates.php' => '29b7e3898d326b30046252a5e3998845',
'./modules/AOP_Case_Updates/Case_Updates.php' => '4cbb4fb52d025fa09300ff738fae895b',
'./modules/AOP_Case_Updates/language/en_us.lang.php' => '1de0ca09e21d68bdde37e3e9676109e8',
'./modules/AOP_Case_Updates/metadata/SearchFields.php' => '1c8b860ef1fb5e03c01858d167dc5b0f',
'./modules/AOP_Case_Updates/metadata/dashletviewdefs.php' => '8843f4ea1dcf8335ad7999efcbc3082f',
@ -3430,7 +3430,7 @@ $md5_string = array (
'./modules/AOS_Line_Item_Groups/language/en_us.lang.php' => 'd37c1dadfc78cc7fcea0d9c4979a074a',
'./modules/AOS_Line_Item_Groups/vardefs.php' => '46060ba279f6cb09a03bde31e4df3c5c',
'./modules/AOS_PDF_Templates/AOS_PDF_Templates.js' => '7fcfe37015e01fd38c820a4bb0cd781e',
'./modules/AOS_PDF_Templates/AOS_PDF_Templates.php' => '08d51d1d96b4225cb6c73170a35e50ab',
'./modules/AOS_PDF_Templates/AOS_PDF_Templates.php' => '50b2c744b3ba75223314c7872294ed80',
'./modules/AOS_PDF_Templates/AOS_PDF_Templates_sugar.php' => '992b26786dccf17e92fa7114a1e9876f',
'./modules/AOS_PDF_Templates/Dashlets/AOS_PDF_TemplatesDashlet/AOS_PDF_TemplatesDashlet.meta.php' => 'dc00131c990ff4134d6bc822e354f794',
'./modules/AOS_PDF_Templates/Dashlets/AOS_PDF_TemplatesDashlet/AOS_PDF_TemplatesDashlet.php' => '8f97c6ce7e0796bd1708a99152a9947c',
@ -3484,7 +3484,7 @@ $md5_string = array (
'./modules/AOS_Product_Categories/metadata/subpanels/default.php' => '99ad7a758b45868e9fd9b8ff47a0cb5a',
'./modules/AOS_Product_Categories/vardefs.php' => '61d4bb3451abc9b6670a568b639f4673',
'./modules/AOS_Product_Categories/views/view.edit.php' => 'a8d92ffd0a368d1a25a7649d29228293',
'./modules/AOS_Products/AOS_Products.php' => '0f4f0237cd42e4cdece3d894a53ea9c1',
'./modules/AOS_Products/AOS_Products.php' => '3af934d97df646151b8259d8ada7591a',
'./modules/AOS_Products/AOS_Products_sugar.php' => '6769da40aa102583900b9d4d32492906',
'./modules/AOS_Products/Dashlets/AOS_ProductsDashlet/AOS_ProductsDashlet.meta.php' => 'b7812541758289ffbefcf59e976a3f7e',
'./modules/AOS_Products/Dashlets/AOS_ProductsDashlet/AOS_ProductsDashlet.php' => 'ee6d24e58a380e0978c7e84c7cdd7005',
@ -3563,7 +3563,7 @@ $md5_string = array (
'./modules/AOW_Actions/actions/actionBase.php' => 'cc44a21a3198ee703b0390c7df0bcf49',
'./modules/AOW_Actions/actions/actionComputeField.css' => '4f63069fbf5aee464d8b0f24e7049276',
'./modules/AOW_Actions/actions/actionComputeField.js' => '2f39d2288a3dbe7dc85b3b185ce1fdc5',
'./modules/AOW_Actions/actions/actionComputeField.php' => '2e143b0afec7f3330e266cb9b697e8f6',
'./modules/AOW_Actions/actions/actionComputeField.php' => '81159ddc7e2d91425e9db4fbea2ef075',
'./modules/AOW_Actions/actions/actionCreateRecord.js' => 'd74993b3fd078cbd54a445c6b3470eda',
'./modules/AOW_Actions/actions/actionCreateRecord.php' => '537fbede6eeb62ac3ba1e5e77c6e4ada',
'./modules/AOW_Actions/actions/actionModifyRecord.php' => 'a382c7b13f2896df64d70055ad92b2d0',
@ -3595,7 +3595,7 @@ $md5_string = array (
'./modules/AOW_Processed/metadata/subpanels/default.php' => 'a854bad4c87fee3ae01b971e88041b66',
'./modules/AOW_Processed/vardefs.php' => 'b8116bafbeac63b860466832c444da40',
'./modules/AOW_Processed/views/view.list.php' => '2f4404c998460f095e3affe63ce1958d',
'./modules/AOW_WorkFlow/AOW_WorkFlow.php' => '833251519ed4737591a021df6cc5c6c3',
'./modules/AOW_WorkFlow/AOW_WorkFlow.php' => '08c0f9f3a9a15bc332e4bc1b77b1808c',
'./modules/AOW_WorkFlow/Dashlets/AOW_WorkFlowDashlet/AOW_WorkFlowDashlet.meta.php' => '307d5c5c4e36070f26fcd7019a7c3ce7',
'./modules/AOW_WorkFlow/Dashlets/AOW_WorkFlowDashlet/AOW_WorkFlowDashlet.php' => '9b68831e41b81207bf2e3a1a42b266b2',
'./modules/AOW_WorkFlow/Menu.php' => 'bda4b71d876e065f7661bce4a91bde57',
@ -4035,7 +4035,7 @@ $md5_string = array (
'./modules/CampaignTrackers/vardefs.php' => 'bc3f35b69c922008f5ed3f71d1e7e557',
'./modules/Campaigns/Campaign.php' => '83dda271352bdaf2c2741bd91e81e681',
'./modules/Campaigns/CampaignDiagnostic.html' => '60080d757c3e55758872387e86ad3b6a',
'./modules/Campaigns/CampaignDiagnostic.php' => '838ca95c838d4648b198866503ded0ed',
'./modules/Campaigns/CampaignDiagnostic.php' => 'b54c5ba2e763937aab20adb5c5a341d5',
'./modules/Campaigns/CaptchaValidate.php' => 'b3120831810a3081319b8b741104724f',
'./modules/Campaigns/Charts.php' => '0ec076f700155b1261e7fa8b9eb05093',
'./modules/Campaigns/Charts1.php' => '0e0f100a44c3d70add09f7cf978e63a4',
@ -4414,12 +4414,12 @@ $md5_string = array (
'./modules/DynamicFields/templates/Fields/Forms/date.tpl' => 'b598cdb6ff09af426d9fab2ee25ed2fb',
'./modules/DynamicFields/templates/Fields/Forms/datetimecombo.php' => '996af122c9934911836ea3e2d5d7add4',
'./modules/DynamicFields/templates/Fields/Forms/datetimecombo.tpl' => 'c9cabde3aab3102710766b397bb9ac13',
'./modules/DynamicFields/templates/Fields/Forms/dynamicenum.php' => 'c115d3cf7133603bf9d146286fef9214',
'./modules/DynamicFields/templates/Fields/Forms/dynamicenum.php' => 'e5212bdbe8ef1d91f09459a5f84ee7e4',
'./modules/DynamicFields/templates/Fields/Forms/dynamicenum.tpl' => 'e34b75bfbe6292e4da24b465eb5bf0fc',
'./modules/DynamicFields/templates/Fields/Forms/encrypt.php' => 'd474243a66e47c980a01dd3d8a9f4e37',
'./modules/DynamicFields/templates/Fields/Forms/encrypt.tpl' => 'b597c29e6563965ffc5ed293e1e209a4',
'./modules/DynamicFields/templates/Fields/Forms/enum.tpl' => 'bb0d6d3b2b5459ac0499364925311206',
'./modules/DynamicFields/templates/Fields/Forms/enum2.php' => 'f771b3e129a3711cc4dd389064c0cde9',
'./modules/DynamicFields/templates/Fields/Forms/enum2.php' => '46d3c4bda0ead3308169969d3a586735',
'./modules/DynamicFields/templates/Fields/Forms/float.tpl' => '130ccfff19e94a1b91ef7acc357252d8',
'./modules/DynamicFields/templates/Fields/Forms/html.php' => 'b4eab2b9a6a1e2eaa0ed49f10add2b63',
'./modules/DynamicFields/templates/Fields/Forms/html.tpl' => 'a6a3b34f27a04159a1b2935839696053',
@ -4895,7 +4895,7 @@ $md5_string = array (
'./modules/Home/Dashlets/RSSDashlet/RSSDashlet.en_us.lang.php' => '38dfd68f0650982c6fa21c2eeee6aba6',
'./modules/Home/Dashlets/RSSDashlet/RSSDashlet.icon.jpg' => '7b0cb2ec97ce8e71d74d60a0da81ba53',
'./modules/Home/Dashlets/RSSDashlet/RSSDashlet.meta.php' => '1459f453feef74419625bec9321ded98',
'./modules/Home/Dashlets/RSSDashlet/RSSDashlet.php' => 'c229f2a09f532c9ebd80bdb4856038f4',
'./modules/Home/Dashlets/RSSDashlet/RSSDashlet.php' => 'fbb53a01488d0b30e9c4c6d79b7266a5',
'./modules/Home/Dashlets/RSSDashlet/RSSDashlet.tpl' => '3ee156d25a96c948c178d96e39b2c631',
'./modules/Home/Dashlets/RSSDashlet/RSSDashletOptions.tpl' => '99ae1ed4f2c06a602e1dd135c4374ee6',
'./modules/Home/Dashlets/SugarNewsDashlet/SugarNewsDashlet.meta.php' => 'f73e225e468d0ae0e6830506d2100f28',
@ -4903,7 +4903,7 @@ $md5_string = array (
'./modules/Home/Dashlets/SugarNewsDashlet/configure.tpl' => '6c3072812274ce23bedb1ac5762e13e6',
'./modules/Home/Dashlets/iFrameDashlet/configure.tpl' => 'ebc20fab7fd7df07b93070c220021724',
'./modules/Home/Dashlets/iFrameDashlet/iFrameDashlet.meta.php' => '273c9862acbd509e3f98d6f3e9762fff',
'./modules/Home/Dashlets/iFrameDashlet/iFrameDashlet.php' => '140323ce38d23fc6e136633831f343cb',
'./modules/Home/Dashlets/iFrameDashlet/iFrameDashlet.php' => '5c759c965f052fe0414a989b1c2b49fa',
'./modules/Home/DynamicAction.php' => 'fffc490cddd16f75af733b84a7ee4353',
'./modules/Home/Home.html' => '0a20273a89c3ca0178d7930e92534778',
'./modules/Home/Home.tpl' => 'd85f7dbd921f6c5adc9ebe7a1129aebb',
@ -4988,7 +4988,7 @@ $md5_string = array (
'./modules/InboundEmail/Delete.php' => '2dec384b7a0c8bc29bf2dcfdfc26506c',
'./modules/InboundEmail/EditGroupFolder.php' => 'd7c41e935f01bfe5b6ce52c2f0385c9b',
'./modules/InboundEmail/InboundEmail.js' => 'f5d19901b247cdc225a999b08204cf45',
'./modules/InboundEmail/InboundEmail.php' => '14c6126769c4e9afd7ae88e46c45e1c8',
'./modules/InboundEmail/InboundEmail.php' => '72d8092646ec8cceadfa847738821046',
'./modules/InboundEmail/Menu.php' => 'bfb4c000e482ae7206a9c0dea76acafe',
'./modules/InboundEmail/Overview.php' => 'e12117e0d20035b2c04dad6526783f07',
'./modules/InboundEmail/Popup.php' => 'b37711aaab32543d3a6a1fb0386c679e',
@ -5197,7 +5197,7 @@ $md5_string = array (
'./modules/ModuleBuilder/javascript/studio2RowDD.js' => 'ce2a4bfa3dbaca4249d73df0bc5dfaad',
'./modules/ModuleBuilder/javascript/studiotabgroups.js' => 'c3d48dec838914e457aa099d9225d174',
'./modules/ModuleBuilder/javascript/wizardTemplate.js' => '92c65dce9153db13c20731de44d14d87',
'./modules/ModuleBuilder/language/en_us.lang.php' => 'b73ec441c51179efa58d1a65e2160252',
'./modules/ModuleBuilder/language/en_us.lang.php' => 'e96b54ade1f348feb3ca068264b2e2ad',
'./modules/ModuleBuilder/parsers/ModuleBuilderParser.php' => '1a5d8c3c8c7736c4e9011960732c4647',
'./modules/ModuleBuilder/parsers/ParserFactory.php' => '9f49fbae9d8aadc97257d4cf18672978',
'./modules/ModuleBuilder/parsers/StandardField.php' => '4cbf549bc313959427dc126e9afe01e7',
@ -5298,7 +5298,7 @@ $md5_string = array (
'./modules/ModuleBuilder/views/view.resetmodule.php' => 'e610a32e319a3af44dc8c5159362f2cb',
'./modules/ModuleBuilder/views/view.searchview.php' => 'fbca76bd29e0bcdb3a4ca10e281ac57c',
'./modules/ModuleBuilder/views/view.tree.php' => '6143b1a6ed18d5d13a3593864603cd5d',
'./modules/ModuleBuilder/views/view.wizard.php' => '53a882aeaa9661bd054100e094b52d69',
'./modules/ModuleBuilder/views/view.wizard.php' => 'e7c7c593744cd212e637dec031038b08',
'./modules/MySettings/LoadTabSubpanels.php' => 'fb6ed3f130674e770789a6882474d59f',
'./modules/MySettings/StoreQuery.php' => 'b3d2df1adc23630516b958b72eae1374',
'./modules/MySettings/TabController.php' => '22e5503c0120f292d2ccdb75ca9619c8',
@ -5880,7 +5880,7 @@ $md5_string = array (
'./modules/SurveyResponses/Lines/Lines.php' => 'dd2ecbdc3c1b29da73f4a1717ba5b0ba',
'./modules/SurveyResponses/Menu.php' => '3b2c2396d71dfddccdb0b98746a288f0',
'./modules/SurveyResponses/SurveyResponses.php' => '63d5a947ac39277353387f12d5270f2a',
'./modules/SurveyResponses/language/en_us.lang.php' => 'ab5ab93ca20c03e1b86d1635f9e6690f',
'./modules/SurveyResponses/language/en_us.lang.php' => '568e6587ec744766727cc387357f334c',
'./modules/SurveyResponses/metadata/SearchFields.php' => 'aaf7a531d8d11e7fc8e3cb56dae52607',
'./modules/SurveyResponses/metadata/dashletviewdefs.php' => '136b191a7bddb1e43390dbb18f1b08d1',
'./modules/SurveyResponses/metadata/detailviewdefs.php' => 'e45fcd03a9173c85b062bb8081cda746',
@ -5892,7 +5892,7 @@ $md5_string = array (
'./modules/SurveyResponses/metadata/searchdefs.php' => '8b892e08a5990b9ddb94b25431bccbeb',
'./modules/SurveyResponses/metadata/studio.php' => 'd1a4aee4586f29bc1d22f2719b156bd1',
'./modules/SurveyResponses/metadata/subpanels/default.php' => 'fcece223dc6df7455f9d979e50d17ef1',
'./modules/SurveyResponses/tpls/detailquestionresponses.tpl' => '62f93a1680df7e68c7f92639afb6ea8f',
'./modules/SurveyResponses/tpls/detailquestionresponses.tpl' => 'e721176cde9db9ee091ae29b11e68ac8',
'./modules/SurveyResponses/vardefs.php' => '0282afec38f3202a4227f3596e3e9b2c',
'./modules/Surveys/Dashlets/SurveysDashlet/SurveysDashlet.meta.php' => '8a0be697554c54281b29bd9bc8facfd8',
'./modules/Surveys/Dashlets/SurveysDashlet/SurveysDashlet.php' => '533474ccb58910c160091f6898494202',
@ -5906,12 +5906,12 @@ $md5_string = array (
'./modules/Surveys/controller.php' => '0dd5f1a9f4feca78ee0d64f124f47285',
'./modules/Surveys/imgs/checked.png' => '8d88dd0730a9244ae89fcc8489901e02',
'./modules/Surveys/imgs/star.png' => '5013f180ca30e373d68b76434cb60fd8',
'./modules/Surveys/javascript/Survey.js' => 'd0d5c63b482c8d17ba2386a4897f0b6c',
'./modules/Surveys/javascript/Survey.js' => '43fc1976def4fb715e652eb07e993fd1',
'./modules/Surveys/javascript/datetimepicker/jquery-ui-timepicker-addon.css' => '431ab7d4ef48afd9c39a647c5c990b0a',
'./modules/Surveys/javascript/datetimepicker/jquery-ui-timepicker-addon.js' => 'b6ad4a032a5ffdf1281dce85be39d1ac',
'./modules/Surveys/javascript/rating/rating.min.css' => 'ec3c6782be846dde7698763665c4b8aa',
'./modules/Surveys/javascript/rating/rating.min.js' => '5cab9c748cf8c51b4937cb8e6cf0d306',
'./modules/Surveys/language/en_us.lang.php' => 'd841f552cc018e65e71e5da1f81f4d9b',
'./modules/Surveys/language/en_us.lang.php' => 'bf60bf3bb241addf2cfa09365cece496',
'./modules/Surveys/metadata/SearchFields.php' => '3a46b501de002ace41567522ca610f19',
'./modules/Surveys/metadata/dashletviewdefs.php' => '1b452908eba467626368913d10cd7907',
'./modules/Surveys/metadata/detailviewdefs.php' => 'cecff50a910efbefec58267b8d37c31f',
@ -5928,11 +5928,11 @@ $md5_string = array (
'./modules/Surveys/tpls/Reports/matrix.tpl' => '9c16699e27e5b4b2c22ce6578b7c18f6',
'./modules/Surveys/tpls/Reports/option.tpl' => '76d3a3693e2b8cf5676c97ee0261127e',
'./modules/Surveys/tpls/Reports/other.tpl' => '55005aed79e23a6fb678431e9811b8ae',
'./modules/Surveys/tpls/detailsurveyquestions.tpl' => 'a560394d0b633d5c6248b7ee3fdad183',
'./modules/Surveys/tpls/editsurveyquestions.tpl' => 'e86030c8099dcfc340bef06b809c695b',
'./modules/Surveys/tpls/reports.tpl' => 'cb3ede64b235bbc733148e9309a0e3a5',
'./modules/Surveys/vardefs.php' => 'ea23a99938d3e5551cc646f803767972',
'./modules/Surveys/views/view.reports.php' => 'bbac23cdfcaf1c6df079c3f9f279b340',
'./modules/Surveys/tpls/detailsurveyquestions.tpl' => 'c7cd1dde1f83de06be388597c808ccb4',
'./modules/Surveys/tpls/editsurveyquestions.tpl' => '9c6001603a226942b8f5fc65f9f39a9e',
'./modules/Surveys/tpls/reports.tpl' => '201f977a9cfbc3502357ea6031b499e7',
'./modules/Surveys/vardefs.php' => '8ba03c326fe7a12af30a5f4c70c8021c',
'./modules/Surveys/views/view.reports.php' => '07a634fe6e40a18d01b91e2b837ce158',
'./modules/TableDictionary.php' => 'd54fad44ac64f0d099e4e6b4a72c6c5d',
'./modules/Tasks/Dashlets/MyTasksDashlet/MyTasksDashlet.data.php' => '46bcde1490f71a79f095ea558596ad46',
'./modules/Tasks/Dashlets/MyTasksDashlet/MyTasksDashlet.meta.php' => '3246d00a64e98df8c4bb908b3905df79',
@ -6099,7 +6099,7 @@ $md5_string = array (
'./modules/Users/entryPointSaveGoogleApiKey.php' => 'af2395a659fbe4c935ac555e4f3b592b',
'./modules/Users/field_arrays.php' => 'b2de6918c313caef59c28582475ab3a6',
'./modules/Users/googleApiKeySaverEntryPointError.tpl' => '5b45b5ce045c459e3e6c571d43eef873',
'./modules/Users/language/en_us.lang.php' => '6300b22349c2b3ee79d98d856c44f694',
'./modules/Users/language/en_us.lang.php' => '902ee1623678580b43dd29fde2b52c14',
'./modules/Users/login.css' => '2c43ea9ba2bed908c545bde7ee7c4575',
'./modules/Users/login.js' => 'f54ae3775635f5cf93b7854e6dde656d',
'./modules/Users/login.tpl' => '76e56647f4334e8ee80ec2defa4d1659',
@ -6355,29 +6355,29 @@ $md5_string = array (
'./soap.php' => 'e28988c2e0b8e2c484587b537a710525',
'./sugar_version.json' => 'bdfbcefae2f9af559bef6a36367df7bb',
'./sugar_version.php' => 'db7b6c8d51f87879fce1e6172eedfbed',
'./suitecrm_version.php' => 'a674e4570a1576621197cb3a6ef36d51',
'./suitecrm_version.php' => 'b94f5eb3153f82f1259c2f4b62d036d9',
'./themes/SuiteP/css/Dawn/color-palette.scss' => 'e64677d79e1d68c069bdc2dc661c4f99',
'./themes/SuiteP/css/Dawn/icons.scss' => 'd59f8c5855e7a8df09542a663835a196',
'./themes/SuiteP/css/Dawn/select.ico' => '22393ad23f16c3f1462455bae8f20279',
'./themes/SuiteP/css/Dawn/style.css' => 'c26b4a0fe120e05ac9f6ff7002720682',
'./themes/SuiteP/css/Dawn/style.css' => 'e1c2535a8c85ae6d5f1e77a13173e770',
'./themes/SuiteP/css/Dawn/style.scss' => 'f027cdfded90564faebf0d52ba1ae8b3',
'./themes/SuiteP/css/Dawn/variables.scss' => 'f8f8acf976e6cb0f1d27ea46891ead2e',
'./themes/SuiteP/css/Day/color-palette.scss' => '91bed2ed878a141ccdc521512f0daa33',
'./themes/SuiteP/css/Day/icons.scss' => '7a77bb17a810866e1ec4e0667e58e536',
'./themes/SuiteP/css/Day/select.ico' => '22393ad23f16c3f1462455bae8f20279',
'./themes/SuiteP/css/Day/style.css' => 'e35540424d9d6de0d1e0ad18de3cf088',
'./themes/SuiteP/css/Day/style.css' => '1f90838c91afcbb051431e7a1389360d',
'./themes/SuiteP/css/Day/style.scss' => '61ac0ca8c47681b284ecbf14755d18ed',
'./themes/SuiteP/css/Day/variables.scss' => '31b6e279ea974581ad42f95a3bb694a4',
'./themes/SuiteP/css/Dusk/color-palette.scss' => '3fa059d1033bfd1bfa342ec0bc4ffe25',
'./themes/SuiteP/css/Dusk/icons.scss' => '7a77bb17a810866e1ec4e0667e58e536',
'./themes/SuiteP/css/Dusk/select.ico' => '22393ad23f16c3f1462455bae8f20279',
'./themes/SuiteP/css/Dusk/style.css' => '4223b5acc98b57005278fa9932a02aef',
'./themes/SuiteP/css/Dusk/style.css' => '2ec52babfa90922f3edca12d6910ec7f',
'./themes/SuiteP/css/Dusk/style.scss' => 'f027cdfded90564faebf0d52ba1ae8b3',
'./themes/SuiteP/css/Dusk/variables.scss' => 'ac38ee874a0668e1d3b86972a850f91d',
'./themes/SuiteP/css/Night/color-palette.scss' => '25653200b97822a2d0f2594b180858c8',
'./themes/SuiteP/css/Night/icons.scss' => '2adfbf917fd7f0748090ef79ec4657c9',
'./themes/SuiteP/css/Night/select.ico' => '22393ad23f16c3f1462455bae8f20279',
'./themes/SuiteP/css/Night/style.css' => 'ec06d43d204f4207ec5be5bb8e6ebfb1',
'./themes/SuiteP/css/Night/style.css' => '020de3bc9eb461cd75b49bd5d882f5da',
'./themes/SuiteP/css/Night/style.scss' => 'cda3113e25e5545fe11f33252fbcbe11',
'./themes/SuiteP/css/Night/variables.scss' => '4fc04d66ddb30f18da508b82e71a6cde',
'./themes/SuiteP/css/Noon/color-palette.scss' => '952a2c7a3fb020ca2232b24a9ac58fe4',
@ -6477,7 +6477,7 @@ $md5_string = array (
'./themes/SuiteP/css/suitep-base/calendar.scss' => 'e3678f282860d08d7693080a27fb9c1e',
'./themes/SuiteP/css/suitep-base/campaigns.scss' => 'e1f692e98be1538f5bf47702fbfa419a',
'./themes/SuiteP/css/suitep-base/cases.scss' => '24388474c9ceb4734d9b078377263f82',
'./themes/SuiteP/css/suitep-base/dashboard.scss' => '64f63cbdfbae00261a17b31bcaf2a98a',
'./themes/SuiteP/css/suitep-base/dashboard.scss' => 'a7f15c2915f3b14277c2dc2191b80377',
'./themes/SuiteP/css/suitep-base/detailview.scss' => 'a7ece4c3b5ab6c3cc9b2637ac46cf9b3',
'./themes/SuiteP/css/suitep-base/editview.scss' => '942de05cc187175393b9cba06f8e0ddb',
'./themes/SuiteP/css/suitep-base/email.scss' => '812aae974e2c6e066d8a81511d99b28a',
@ -7764,7 +7764,7 @@ $md5_string = array (
'./themes/SuiteP/images/wizmenu/right-empty.png' => 'd3037d7c75385e7d5a5708092e8cb94c',
'./themes/SuiteP/images/wizmenu/right-full.png' => '2f6f9936252b8c9dfd7bb71b140061e5',
'./themes/SuiteP/include/Dashlets/DashletHeader.tpl' => '09e4767d1ff01a830c0de2706e833a11',
'./themes/SuiteP/include/DetailView/DetailView.tpl' => 'ff62ab3dc8d5b6e91a4c1041c043592e',
'./themes/SuiteP/include/DetailView/DetailView.tpl' => 'ca729f1cf4e16c84566d69d5d471bdfb',
'./themes/SuiteP/include/DetailView/actions_buttons.tpl' => '8a6fff7933b92178c28f5a58feddef75',
'./themes/SuiteP/include/DetailView/actions_menu.tpl' => '43988446570fc2820b7b0fb3da42e199',
'./themes/SuiteP/include/DetailView/footer.tpl' => '74cd1da7edd3386ee51db3e8ba8bb53b',

View file

@ -98,9 +98,13 @@ class DashletRssFeedTitle
public function getTitle()
{
$matches = array();
preg_match("/<title>.*?<\/title>/i", $this->contents, $matches);
preg_match("/<title>(.*?)<\/title>/i", $this->contents, $matches);
if (isset($matches[0])) {
$this->title = str_replace(array('<![CDATA[', '<title>', '</title>', ']]>'), '', $matches[0]);
$match = $matches[0];
if (isset($matches[1])) {
$match = '<title>' . htmlentities($matches[1] ?? '') . '</title>';
}
$this->title = str_replace(array('<![CDATA[', '<title>', '</title>', ']]>'), '', $match);
}
}

View file

@ -513,7 +513,7 @@ class ListViewData
$queryString = '';
if (isset($_REQUEST["searchFormTab"]) && $_REQUEST["searchFormTab"] == "advanced_search" ||
isset($_REQUEST["type_basic"]) && (count($_REQUEST["type_basic"] > 1) || $_REQUEST["type_basic"][0] != "") ||
isset($_REQUEST["type_basic"]) && (count($_REQUEST["type_basic"]) > 1 || $_REQUEST["type_basic"][0] != "") ||
isset($_REQUEST["module"]) && $_REQUEST["module"] == "MergeRecords") {
$queryString = "-advanced_search";
} else {

View file

@ -141,11 +141,7 @@ class SugarCache
}
}
// Zend OPcache
if (
extension_loaded('Zend OPcache') &&
($opcache_status = opcache_get_status(false)) !== false &&
$opcache_status['opcache_enabled'] && $full_reset
) {
if ($full_reset && SugarCache::isOPcacheEnabled()) {
if (!opcache_reset()) {
LoggerManager::getLogger()->error("OPCache - could not reset");
}
@ -163,11 +159,7 @@ class SugarCache
}
// Zend OPcache
if (
extension_loaded('Zend OPcache') &&
($opcache_status = opcache_get_status(false)) !== false &&
$opcache_status['opcache_enabled']
) {
if (SugarCache::isOPcacheEnabled()) {
// three attempts incase concurrent opcache operations pose a lock
for ($i = 3; $i && !opcache_invalidate($file, true); --$i) {
sleep(0.2);
@ -194,6 +186,24 @@ class SugarCache
}
}
}
/**
* Check if OPcache is enabled
*
*/
public static function isOPcacheEnabled()
{
if (extension_loaded('Zend OPcache')) {
if (function_exists('opcache_get_status')) {
$opcache_status = opcache_get_status(false);
return $opcache_status !== false && ($opcache_status['opcache_enabled'] ?? false);
} else {
return ini_get('opcache.enable');
}
} else {
return false;
}
}
}
/**

View file

@ -2758,6 +2758,27 @@ function securexsskey($value, $die = true)
}
}
/**
* @param string|null $value
* @return string
*/
function purify_html(?string $value): string {
if (($value ?? '') === '') {
return '';
}
$cleanedValue = htmlentities(SugarCleaner::cleanHtml($value, true));
$decoded = html_entity_decode($cleanedValue);
$doubleDecoded = html_entity_decode($decoded);
if (stripos($decoded, '<script>') !== false || stripos($doubleDecoded, '<script>') !== false){
$cleanedValue = '';
}
return $cleanedValue;
}
function preprocess_param($value)
{
if (is_string($value)) {
@ -6215,3 +6236,21 @@ function isAllowedModuleName(string $value): bool {
return false;
}
/**
* @param $endpoint
* @return bool
*/
function isSelfRequest($endpoint) : bool {
$domain = 'localhost';
if (isset($_SERVER["HTTP_HOST"])) {
$domain = $_SERVER["HTTP_HOST"];
}
$siteUrl = SugarConfig::getInstance()->get('site_url');
if (empty($siteUrl)){
$siteUrl = '';
}
return stripos($endpoint, $domain) !== false || stripos($endpoint, $siteUrl) !== false;
}

View file

@ -142,12 +142,7 @@ function write_override_label_to_file($the_name, $the_array, $the_file, $mode =
$the_string .= '$' . "{$the_name}['{$labelName}'] = '{$labelValue}';\n";
}
$result = sugar_file_put_contents($the_file, $the_string, LOCK_EX) !== false;
if (function_exists('opcache_invalidate')) {
opcache_invalidate($the_file, true);
}
return $result;
return sugar_file_put_contents($the_file, $the_string, LOCK_EX) !== false;
}
function write_encoded_file($soap_result, $write_to_dir, $write_to_file="")

View file

@ -5,7 +5,7 @@ $dictionary['securitygroups_records'] = array(
array('name' =>'id', 'type' =>'char', 'len'=>'36', 'required'=>true, 'default'=>'')
, array('name' =>'securitygroup_id', 'type' =>'char', 'len'=>'36')
, array('name' =>'record_id', 'type' =>'char', 'len'=>'36')
, array('name' =>'module', 'type' =>'char', 'len'=>'36')
, array('name' =>'module', 'type' =>'varchar', 'len'=>'100')
, array('name' =>'date_modified','type' => 'datetime')
, array('name' =>'modified_user_id', 'type' =>'char', 'len'=>'36')
, array('name' =>'created_by', 'type' =>'char', 'len'=>'36')

View file

@ -123,7 +123,7 @@ function caseUpdates(record){
showSubPanel('history', null, true);
//Reload the case updates stream and history panels
$("#LBL_AOP_CASE_UPDATES").load("index.php?module=Cases&action=DetailView&record="+record + " #LBL_AOP_CASE_UPDATES", function(){
$("#aop_case_updates_threaded_span").load("index.php?module=Cases&action=DetailView&record="+record + " #aop_case_updates_threaded_span", function(){
//Collapse all except newest update

View file

@ -35,5 +35,11 @@ class AOS_PDF_Templates extends AOS_PDF_Templates_sugar
parent::__construct();
}
public function cleanBean()
{
parent::cleanBean();
$this->pdfheader = purify_html($this->pdfheader);
$this->description = purify_html($this->description);
$this->pdffooter = purify_html($this->pdffooter);
}
}

View file

@ -64,10 +64,12 @@ class AOS_Products extends AOS_Products_sugar
require_once('include/upload_file.php');
$GLOBALS['log']->debug('UPLOADING PRODUCT IMAGE');
$imageFileName = $_FILES['uploadimage']['name'] ?? '';
if (!has_valid_image_extension('AOS_Products Uploaded image file: ' . $imageFileName , $imageFileName)) {
LoggerManager::getLogger()->fatal("AOS_Products save - Invalid image file ext : '$imageFileName'.");
throw new RuntimeException('Invalid request');
if(!empty($_FILES['uploadimage']['name'])){
$imageFileName = $_FILES['uploadimage']['name'] ?? '';
if (!has_valid_image_extension('AOS_Products Uploaded image file: ' . $imageFileName , $imageFileName)) {
LoggerManager::getLogger()->fatal("AOS_Products save - Invalid image file ext : '$imageFileName'.");
throw new RuntimeException('Invalid request');
}
}
if (!empty($_FILES['uploadimage']['tmp_name']) && verify_uploaded_image($_FILES['uploadimage']['tmp_name'])) {

View file

@ -278,7 +278,7 @@ class actionComputeField extends actionBase
if ($relationParameterTypes[$i] == actionComputeField::FORMATTED_VALUE) {
$dataType = $entity->field_name_map[$relationParameterFields[$i]]['type'];
if ($dataType == 'enum') {
if ($dataType == 'enum' || $dataType == 'dynamicenum') {
$resolvedRelationParameters[$i] =
$GLOBALS['app_list_strings'][$entity->field_defs[$relationParameterFields[$i]]['options']][$entity->{$relationParameterFields[$i]}];
} else {
@ -472,7 +472,7 @@ class actionComputeField extends actionBase
function onFieldChange$line(dropdown, valueDropdown) {
var value = $(dropdown).find('option:selected').attr('dataType');
if (value == 'enum' || value == 'multienum') {
if (value == 'enum' || value == 'multienum' || value == 'dynamicenum') {
$(valueDropdown).show();
} else {
$(valueDropdown).hide();

View file

@ -823,6 +823,10 @@ class AOW_WorkFlow extends Basic
} elseif ($data['type'] == 'bool' && (!(bool)$value || strtolower($value) == 'false')) {
$value = 0;
}
$type = $data['dbType'] ?? $data['type'];
if ((strpos($type, 'char') !== false || strpos($type, 'text') !== false) && !empty($field)) {
$field = from_html($field);
}
break;
}

View file

@ -150,7 +150,7 @@ if (strstr($focus->settings['notify_fromaddress'], 'example.com')) {
$conf_msg .= "<tr><th scope='col' width='20%'><b>".$mod_strings['LBL_WIZ_FROM_NAME']."</b></th>"
. " <th scope='col' width='20%'><b>".$mod_strings['LBL_WIZ_FROM_ADDRESS']."</b></th>"
. " <th scope='col' width='20%'><b>".$mod_strings['LBL_MAIL_SENDTYPE']."</b></th>";
if (strtolower(isSmtp($focus->settings['mail_sendtype'] ?? '')) {
if (strtolower(isSmtp($focus->settings['mail_sendtype'] ?? ''))) {
$conf_msg .= " <th scope='col' width='20%'><b>".$mod_strings['LBL_MAIL_SMTPSERVER']."</b></th>"
. " <th scope='col' width='20%'><b>".$mod_strings['LBL_MAIL_SMTPUSER']."</b></th></tr>";
} else {

View file

@ -88,6 +88,8 @@ function get_body(&$ss, $vardef)
}
}
$dropdowns = array_keys($my_list_strings);
// Adding a default empty list
$dropdowns[] = '';
sort($dropdowns);
$default_dropdowns = array();
if (!empty($vardef['options']) && !empty($my_list_strings[$vardef['options']])) {

View file

@ -90,6 +90,8 @@
}
}
$dropdowns = array_keys($my_list_strings);
// Adding a default empty list
$dropdowns[] = '';
sort($dropdowns);
$default_dropdowns = array();
if (!empty($vardef['options']) && !empty($my_list_strings[$vardef['options']])) {

View file

@ -141,9 +141,7 @@ class RSSDashlet extends Dashlet
* @param array $req $_REQUEST
* @return array filtered options to save
*/
public function saveOptions(
array $req
) {
public function saveOptions($req) {
$options = array();
$options['title'] = $req['title'];
$options['url'] = $req['url'];

View file

@ -76,6 +76,10 @@ class iFrameDashlet extends Dashlet
$this->url = $options['url'];
}
if (isSelfRequest($this->url)) {
$this->url = '';
}
if (empty($options['height']) || (int)$options['height'] < 1) {
$this->height = 315;
} else {

View file

@ -6307,7 +6307,10 @@ class InboundEmail extends SugarBean
$service = empty($service) ? $this->getServiceString() : $service;
$mbox = empty($mbox) ? $this->mailbox : $mbox;
$connectString = '{' . $this->server_url . ':' . $this->port . '/service=' . $this->protocol . $service . '}';
$protocol = $this->protocol ?? 'imap';
$port = $this->port ?? '143';
$connectString = '{' . $this->server_url . ':' . $port . '/service=' . $protocol . $service . '}';
if (!empty($this->connection_string)){
$connectString = '{' . $this->connection_string . '}';

View file

@ -175,7 +175,7 @@ $mod_strings = array(
'backBtn' => 'Return to the previous step.',
'studioHelp' => 'Use <b>Studio</b> to determine what and how information is displayed in the modules.',
'moduleBtn' => 'Click to edit this module.',
'moduleHelp' => 'The components that you can customize for the module appear here.<br><br>Click an icon to select the component to edit.',
'moduleHelp' => 'The components that you can customize for the module appear here.<br><br>Click an icon to select the component to edit.<br><br>Click <b>Reset Module</b> to remove customizations and restore to original status.',
'fieldsBtn' => 'Create and customize <b>Fields</b> to store information in the module.',
'labelsBtn' => 'Edit the <b>Labels</b> that display for the fields and other titles in the module.',
'relationshipsBtn' => 'Add new or view existing <b>Relationships</b> for the module.',

View file

@ -172,7 +172,7 @@ class ModuleBuilderViewWizard extends SugarView
$this->help = 'moduleHelp' ;
global $current_user;
if (is_admin($current_user)) {
$this->actions = "<input class=\"button\" type=\"button\" id=\"exportBtn\" name=\"exportBtn\" "
$this->actions = "<input class=\"button\" type=\"button\" id=\"resetModule\" name=\"resetModule\" "
. "onclick=\"ModuleBuilder.getContent('module=ModuleBuilder&action=resetmodule&view_module=$this->editModule');\" value=\""
. translate('LBL_RESET_MODULE') . '">' ;
}

View file

@ -79,5 +79,7 @@ $mod_strings = array(
'LBL_SURVEYS_SURVEYRESPONSES_FROM_SURVEYS_TITLE' => 'Survey',
'LBL_QUESTION_RESPONSES_DISPLAY' => 'Question Responses',
'LBL_SURVEYRESPONSES_CAMPAIGNS_FROM_CAMPAIGNS_TITLE' => 'Campaign',
'LBL_QUESTION' => 'Question',
'LBL_RESPONSE' => 'Response'
);

View file

@ -3,10 +3,10 @@
<tr>
<th></th>
<th>
Question
{$MOD.LBL_QUESTION}
</th>
<th>
Response
{$MOD.LBL_RESPONSE}
</th>
</tr>
{foreach from=$questionResponses item=questionResponse}

View file

@ -6,7 +6,7 @@ var Survey = (function ($) {
var resultTable = $('#' + clickedElement.data('question-id') + 'List');
resultTable.slideToggle(500, function () {
clickedElement.text(resultTable.is(':visible') ? 'Hide responses' : 'Show responses');
clickedElement.text(resultTable.is(':visible') ? SUGAR.language.translate('Surveys', 'LBL_HIDE_RESPONSE') : SUGAR.language.translate('Surveys', 'LBL_SHOW_RESPONSE'));
});
};

View file

@ -91,4 +91,15 @@ $mod_strings = array(
'LBL_SURVEYS_SURVEYQUESTIONS_FROM_SURVEYQUESTIONS_TITLE' => 'Survey Questions',
'LBL_SURVEYS_SURVEYRESPONSES_FROM_SURVEYRESPONSES_TITLE' => 'Survey Responses',
'LBL_SHOW_RESPONSES' => 'Show responses',
'LBL_SURVEY_QUESTION' => 'Question',
'LBL_SURVEY_TEXT' => 'Text',
'LBL_SURVEY_TYPE' => 'Type',
'LBL_SURVEY_ACTIONS' => 'Actions',
'LBL_SURVEY_NEW_QUESTION' => 'New Question',
'LBL_SURVEY_RESPONSES' => 'New Question',
'LBL_SURVEYS_SENT' => 'Surveys Sent:',
'LBL_SURVEY_DISTINCT' => 'Distinct Surveys Sent:',
'LBL_DRAFT' => 'Draft',
'LBL_SUBMIT' => 'Submit',
'LBL_STARS' => 'Stars'
);

View file

@ -3,13 +3,13 @@
<table id="questionTable" class="table table-bordered">
<tr>
<th>
Question
{$MOD.LBL_SURVEY_QUESTION}
</th>
<th>
Text
{$MOD.LBL_SURVEY_TEXT}
</th>
<th>
Type
{$MOD.LBL_SURVEY_TYPE}
</th>
</tr>
{foreach from=$questions item=question}

View file

@ -2,19 +2,19 @@
<input type="hidden" name="survey_questions_supplied" value="1">
<table id="questionTable" class="table table-bordered">
<tr>
<th>
Question
</th>
<th>
Text
</th>
<th>
Type
</th>
<th>Actions</th>
<th>
{$MOD.LBL_SURVEY_QUESTION}
</th>
<th>
{$MOD.LBL_SURVEY_TEXT}
</th>
<th>
{$MOD.LBL_SURVEY_TYPE}
</th>
<th>{$MOD.LBL_SURVEY_ACTIONS}</th>
</tr>
</table>
<button type="button" class="button" id="newQuestionButton">New Question</button>
<button type="button" class="button" id="newQuestionButton">{$MOD.LBL_SURVEY_NEW_QUESTION}</button>
</div>
{literal}
<script>
@ -132,10 +132,10 @@
newRow += "<td>";
newRow += "</td>";
newRow += "<td>";
newRow += "<strong>Options</strong>";
newRow += "<strong>{/literal}{$MOD.LBL_OPTIONS}{literal}</strong>";
newRow += "<ul style='list-style: none;' class='optionList'>";
newRow += "</ul>";
newRow += "<button class='addOptionButton button' data-question-index='" + createQuestion.questionCount + "' type='button'>Add option</button>";
newRow += "<button class='addOptionButton button' data-question-index='" + createQuestion.questionCount + "' type='button'>{/literal}{$MOD.LBL_ADD_OPTION}{literal}</button>";
newRow += "</td>";
newRow += "<td>";
newRow += "</td>";
@ -175,4 +175,4 @@
});
</script>
{/literal}
{/literal}

View file

@ -1,15 +1,15 @@
<h1>{$survey.name}</h1>
<table>
<tr>
<th>Responses:</th>
<th>{$MOD.LBL_SURVEY_RESPONSES}</th>
<td>{$responsesCount}</td>
</tr>
<tr>
<th>Surveys Sent:</th>
<th>{$MOD.LBL_SURVEYS_SENT}</th>
<td>{$surveysSent}</td>
</tr>
<tr>
<th>Distinct Surveys Sent:</th>
<th>{$MOD.LBL_SURVEY_DISTINCT}</th>
<td>{$surveysSentDistinct}</td>
</tr>
</table>

View file

@ -50,7 +50,7 @@ $dictionary['Surveys'] = array(
'vname' => 'LBL_STATUS',
'type' => 'enum',
'massupdate' => 0,
'default' => 'Draft',
'default' => 'LBL_DRAFT',
'no_default' => false,
'comments' => '',
'help' => '',

View file

@ -182,12 +182,14 @@ EOF;
private function getRatingQuestionSkeleton($arr)
{
global $mod_strings;
for ($x = 1; $x <= 5; $x++) {
$arr['chartLabels'][$x] = $x . ' Stars';
$arr['chartLabels'][$x] = $x . $mod_strings['LBL_STARS'];
$arr['chartData'][$x] = 0;
$arr['responses'][$x] = array(
'count' => 0,
'label' => $x . ' Stars',
'label' => $x . $mod_strings['LBL_STARS'],
'order' => $x
);
}

View file

@ -97,6 +97,7 @@ $mod_strings = array(
'LBL_REGULAR_DESC' => 'User can access modules and records based on roles.',
'LBL_PHOTO' => 'Photo',
'LBL_ADMIN' => 'System Administrator',
'LBL_LAST_ADMIN_NOTICE' => 'Current selection could include yourself. You cannot change your own type of user or status.',
'LBL_ADVANCED' => 'Advanced',
'LBL_ANY_ADDRESS' => 'Any Address:',
'LBL_ANY_EMAIL' => 'Any Email',

View file

@ -3,5 +3,5 @@ if (!defined('sugarEntry') || !sugarEntry) {
die('Not A Valid Entry Point');
}
$suitecrm_version = '7.13.1';
$suitecrm_timestamp = '2023-01-25 12:00:00';
$suitecrm_version = '7.13.2';
$suitecrm_timestamp = '2023-03-02 12:00:00';

View file

@ -0,0 +1,136 @@
<?php
use SuiteCRM\Test\SuitePHPUnitFrameworkTestCase;
class AOD_IndexTest extends SuitePHPUnitFrameworkTestCase
{
public function testAOD_Index(): void
{
// Execute the constructor and check for the Object type and type attribute
$aod_index = BeanFactory::newBean('AOD_Index');
self::assertInstanceOf('AOD_Index', $aod_index);
self::assertInstanceOf('Basic', $aod_index);
self::assertInstanceOf('SugarBean', $aod_index);
self::assertEquals('AOD_Index', $aod_index->module_dir);
self::assertEquals('AOD_Index', $aod_index->object_name);
self::assertEquals('aod_index', $aod_index->table_name);
self::assertEquals(true, $aod_index->new_schema);
self::assertEquals(true, $aod_index->disable_row_level_security);
self::assertEquals(false, $aod_index->importable);
self::assertEquals(false, $aod_index->tracker_visibility);
}
public function testisEnabled(): void
{
// execute the method and verify that it returns true
$result = BeanFactory::newBean('AOD_Index')->isEnabled();
self::assertTrue($result);
}
public function testgetIndex(): void
{
$aod_index = BeanFactory::newBean('AOD_Index');
$result = $aod_index->getIndex();
//execute the method and verify it returns a different instance of samme type
self::assertInstanceOf('AOD_Index', $result);
self::assertNotSame($aod_index, $result);
}
public function testgetDocumentForBean(): void
{
$user = new User(1);
$result = BeanFactory::newBean('AOD_Index')->getDocumentForBean($user);
//execute the method and verify that it returns an array
self::assertIsArray($result);
//verify that returned array has a valid Zend_Search_Lucene_Document instance
self::assertInstanceOf('Zend_Search_Lucene_Document', $result['document']);
}
public function testisModuleSearchable(): void
{
//test with an invalid module
self::assertFalse(AOD_Index::isModuleSearchable('', ''));
//test for modules that are searchable
self::assertTrue(AOD_Index::isModuleSearchable('DocumentRevisions', 'DocumentRevision'));
self::assertTrue(AOD_Index::isModuleSearchable('Cases', 'Case'));
self::assertTrue(AOD_Index::isModuleSearchable('Accounts', 'Account'));
//test for modules that are not searchable
self::assertFalse(AOD_Index::isModuleSearchable('AOD_IndexEvent', 'AOD_IndexEvent'));
self::assertFalse(AOD_Index::isModuleSearchable('AOD_Index', 'AOD_Index'));
self::assertFalse(AOD_Index::isModuleSearchable('AOW_Actions', 'AOW_Action'));
self::assertFalse(AOD_Index::isModuleSearchable('AOW_Conditions', 'AOW_Condition'));
self::assertFalse(AOD_Index::isModuleSearchable('AOW_Processed', 'AOW_Processed'));
self::assertFalse(AOD_Index::isModuleSearchable('SchedulersJobs', 'SchedulersJob'));
self::assertFalse(AOD_Index::isModuleSearchable('Users', 'User'));
}
public function testindex(): void
{
$aod_index = BeanFactory::newBean('AOD_Index');
$aod_index->id = 1;
$aod_index->location = 'modules/AOD_Index/Index/Index';
//test with a not searchable module, it will return false
$result = $aod_index->index('Users', 1);
self::assertFalse($result);
//test with a searchable module but invalid bean id, it will still index it
$result = $aod_index->index('Accounts', 1);
self::assertEquals(null, $result);
}
public function testgetIndexableModules(): void
{
$expected = array(
'AM_ProjectTemplates' => 'AM_ProjectTemplates',
'AM_TaskTemplates' => 'AM_TaskTemplates',
'AOK_KnowledgeBase' => 'AOK_KnowledgeBase',
'AOK_Knowledge_Base_Categories' => 'AOK_Knowledge_Base_Categories',
'AOP_Case_Events' => 'AOP_Case_Events',
'AOP_Case_Updates' => 'AOP_Case_Updates',
'AOR_Charts' => 'AOR_Chart',
'AOR_Conditions' => 'AOR_Condition',
'AOR_Fields' => 'AOR_Field',
'AOR_Reports' => 'AOR_Report',
'AOS_Contracts' => 'AOS_Contracts',
'AOS_Product_Categories' => 'AOS_Product_Categories',
'AOW_WorkFlow' => 'AOW_WorkFlow',
'Accounts' => 'Account',
'Bugs' => 'Bug',
'Calls' => 'Call',
'Calls_Reschedule' => 'Calls_Reschedule',
'Campaigns' => 'Campaign',
'Cases' => 'aCase',
'Contacts' => 'Contact',
'DocumentRevisions' => 'DocumentRevision',
'Documents' => 'Document',
'FP_events' => 'FP_events',
'Leads' => 'Lead',
'Meetings' => 'Meeting',
'Notes' => 'Note',
'Opportunities' => 'Opportunity',
'OutboundEmailAccounts' => 'OutboundEmailAccounts',
'Project' => 'Project',
'ProjectTask' => 'ProjectTask',
'ProspectLists' => 'ProspectList',
'Prospects' => 'Prospect',
'SurveyQuestionOptions' => 'SurveyQuestionOptions',
'SurveyQuestionResponses' => 'SurveyQuestionResponses',
'SurveyQuestions' => 'SurveyQuestions',
'SurveyResponses' => 'SurveyResponses',
'Surveys' => 'Surveys',
'Tasks' => 'Task'
);
//execute the method and verify that it retunrs expected results
$actual = BeanFactory::newBean('AOD_Index')->getIndexableModules();
self::assertSame($expected, $actual);
}
}

View file

@ -2273,15 +2273,6 @@ class InboundEmailTest extends SuitePHPUnitFrameworkTestCase
'IS_PERSONAL' => '0',
'MAILBOX_TYPE_NAME' => null,
'GLOBAL_PERSONAL_STRING' => 'group',
'PORT' => '143',
'AUTH_TYPE' => 'Basic Auth',
'PROTOCOL' => 'imap',
'IS_SSL' => '0',
'IS_DEFAULT' => '0',
'IS_AUTO_IMPORT' => '0',
'IS_CREATE_CASE' => '0',
'ALLOW_OUTBOUND_GROUP_USAGE' => '0',
'MOVE_MESSAGES_TO_TRASH_AFTER_IMPORT' => '0'
);
self::assertIsArray($result);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -628,7 +628,7 @@ table #dashletPanel {
.yui-skin-sam.masked #dlg.SuiteP-configureDashlet.yui-module.yui-overlay.yui-panel .bd {
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
overflow: hidden;
overflow: auto;
max-height: 650px;
}

View file

@ -332,7 +332,7 @@
$('#content div.panel-content div.panel.tab-panel-' + tab).show();
};
let selectTabOnError = function(tab) {
var selectTabOnError = function(tab) {
selectTabDetailView(tab);
$('#content ul.nav.nav-tabs > li').removeClass('active');
$('#content ul.nav.nav-tabs > li a').css('color', '');