Merge next into suite 8

This commit is contained in:
Jack Anderson 2023-02-28 14:12:02 +00:00
commit caf6df3b43
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)

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

@ -2759,6 +2759,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)) {
@ -6216,3 +6237,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

@ -92,4 +92,15 @@ $mod_strings = array(
'LBL_SURVEYS_SURVEYRESPONSES_FROM_SURVEYRESPONSES_TITLE' => 'Survey Responses',
'LBL_SHOW_RESPONSES' => 'Show responses',
'LNK_LIST_SURVEY_RESPONSES' => 'Show Survey 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>
@ -130,10 +130,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>";
@ -173,4 +173,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

@ -4,5 +4,5 @@ if (!defined('sugarEntry') || !sugarEntry) {
}
$suitecrm_version = '8.2.3';
$suitecrm_legacy = '7.13.1';
$suitecrm_timestamp = '2023-01-25 12:00:00';
$suitecrm_legacy = '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', '');