From a89681482bc318253006d4437bc071e4f62b7140 Mon Sep 17 00:00:00 2001 From: Paul Huang Date: Wed, 19 Sep 2012 18:42:34 -0700 Subject: [PATCH] Release 6.5.5 --- ModuleInstall/ModuleInstaller.php | 2 +- ModuleInstall/ModuleScanner.php | 6 +- cache/include/javascript/sugar_grp1_jquery.js | 2 +- cache/include/javascript/sugar_grp_emails.js | 12 +- data/Link2.php | 26 +- .../EmailAddressRelationship.php | 4 + data/Relationships/M2MRelationship.php | 4 + data/Relationships/One2MBeanRelationship.php | 47 +-- .../Relationships/One2OneBeanRelationship.php | 2 +- data/Relationships/One2OneRelationship.php | 5 +- data/Relationships/RelationshipFactory.php | 8 +- data/Relationships/SugarRelationship.php | 14 +- data/SugarBean.php | 228 +++++++++----- files.md5 | 198 ++++++------ get_url.php | 63 ++++ include/Dashlets/DashletGenericChart.php | 2 +- include/DetailView/header.tpl | 10 +- include/ListView/ListViewData.php | 25 +- .../MVC/Controller/entry_point_registry.php | 1 + include/MVC/SugarApplication.php | 20 +- include/MVC/View/SugarView.php | 30 +- include/MySugar/MySugar.php | 4 +- include/SearchForm/SearchForm2.php | 53 ++-- .../Smarty/plugins/function.sugar_button.php | 2 +- include/SubPanel/SubPanelTiles.js | 2 +- include/SugarCharts/JsChart.php | 4 +- .../SugarEmailAddress/SugarEmailAddress.js | 12 +- .../SugarEmailAddress/SugarEmailAddress.php | 133 +++++--- .../Fields/Currency/SugarFieldCurrency.php | 18 ++ .../SugarFields/Fields/File/SearchView.tpl | 11 +- .../Fields/File/SugarFieldFile.php | 8 +- .../SugarFields/Fields/Text/DetailView.tpl | 3 +- include/SugarObjects/VardefManager.php | 2 +- .../SugarObjects/templates/person/Person.php | 4 + include/SugarTheme/SugarTheme.php | 8 +- .../connectors/utils/ConnectorHtmlHelper.php | 40 +-- include/database/DBManager.php | 14 +- include/database/MssqlManager.php | 2 +- include/generic/Save2.php | 111 ++++--- .../SugarWidgets/SugarWidgetFieldbool.php | 1 - .../SugarWidgets/SugarWidgetFieldcurrency.php | 69 +++-- .../SugarWidgets/SugarWidgetFieldlong.php | 56 ++++ .../SugarWidgetFieldmultienum.php | 50 +-- .../SugarWidgets/SugarWidgetReportField.php | 10 +- ...rWidgetSubPanelTopSelectContactsButton.php | 2 +- ...ugarWidgetSubPanelTopSelectUsersButton.php | 2 +- include/globalControlLinks.php | 4 +- include/javascript/getYUIComboFile.php | 2 +- .../javascript/jquery/jquery.hoverIntent.js | 2 +- include/language/en_us.lang.php | 1 + include/language/en_us.notify_template.html | 2 - include/phpmailer/class.phpmailer.php | 2 +- include/utils.php | 62 +--- .../include/SubPanel/SubPanelTiles.js | 4 + .../SugarEmailAddress/SugarEmailAddress.js | 35 ++- jssource/src_files/modules/Calendar/Cal.js | 96 +++--- modules/Administration/Administration.php | 12 +- modules/Administration/RebuildConfig.php | 5 +- modules/Audit/Audit.php | 7 +- modules/Bugs/Bug.php | 10 +- modules/Calendar/Cal.css | 1 - modules/Calendar/Cal.js | 21 +- modules/Calendar/Calendar.php | 2 +- modules/Calendar/CalendarGrid.php | 22 +- modules/Calls/language/en_us.lang.php | 3 + modules/Calls/metadata/additionalDetails.php | 8 + modules/Calls/metadata/editviewdefs.php | 2 +- modules/Cases/Case.php | 2 +- modules/Configurator/Configurator.php | 4 +- modules/Configurator/UploadFileCheck.php | 12 +- modules/Configurator/language/en_us.lang.php | 1 + modules/Configurator/tpls/EditView.tpl | 2 +- modules/Configurator/tpls/adminwizard.tpl | 2 +- .../ext/rest/linkedin/tpls/default.tpl | 5 +- modules/Documents/metadata/SearchFields.php | 8 + modules/Documents/vardefs.php | 2 + .../templates/Fields/TemplateField.php | 3 - .../templates/Fields/TemplateInt.php | 23 +- modules/EmailMan/tpls/config.tpl | 8 +- modules/EmailTemplates/EmailTemplate.php | 132 +++++--- .../Dashlets/ChartsDashlet/ChartsDashlet.php | 2 +- modules/Home/tour.css | 8 +- modules/Import/views/view.last.php | 13 +- modules/InboundEmail/InboundEmail.php | 8 +- modules/Leads/vardefs.php | 2 - modules/Meetings/language/en_us.lang.php | 2 + .../Meetings/metadata/additionalDetails.php | 9 +- modules/Meetings/tpls/reminders.tpl | 6 +- .../ModuleBuilder/Module/DropDownBrowser.php | 7 +- .../views/GridLayoutMetaDataParser.php | 6 +- modules/ModuleBuilder/tpls/layoutView.tpl | 8 +- modules/MySettings/TabController.php | 12 +- modules/Prospects/vardefs.php | 2 - modules/Relationships/Relationship.php | 13 +- modules/Tasks/metadata/SearchFields.php | 2 +- modules/Users/language/en_us.lang.php | 1 + modules/Users/reassignUserRecords.php | 5 +- modules/Users/tpls/EditViewHeader.tpl | 14 +- soap/SoapSugarUsers.php | 39 ++- sugar_version.php | 8 +- tests/SugarTestHelper.php | 130 +++++++- tests/SugarTestOpportunityUtilities.php | 141 +++++++++ tests/SugarTestProspectListsUtilities.php | 65 ++++ tests/SugarTestRelationshipUtilities.php | 146 +++++++++ tests/data/Bug33036Test.php | 86 ++++++ tests/data/Bug45896Test.php | 212 ------------- tests/data/SaveRelationshipChangesTest.php | 285 ++++++++++++++++++ ...g45709Test.php => Bug45709_53785_Test.php} | 49 ++- .../Fields/Currency/Bug55733Test.php | 77 +++++ tests/include/connectors/Bug50800Test.php | 5 +- tests/include/generic/Bug53288Test.php | 1 + tests/include/utils/Bug55650Test.php | 81 +++++ tests/modules/Calls/CallTest.php | 3 +- tests/modules/EmailTemplates/Bug46984Test.php | 145 +++++++++ tests/modules/Home/Bug43395Test.php | 3 +- tests/modules/Home/QuickSearchTests.php | 10 +- tests/modules/ModuleBuilder/Bug47406Test.php | 11 +- tests/modules/ModuleBuilder/Bug52063Test.php | 1 + tests/modules/UpgradeWizard/Bug42490Test.php | 36 ++- tests/service/RESTAPI3Test.php | 2 +- 120 files changed, 2513 insertions(+), 980 deletions(-) create mode 100644 get_url.php create mode 100644 include/generic/SugarWidgets/SugarWidgetFieldlong.php create mode 100755 tests/SugarTestOpportunityUtilities.php create mode 100755 tests/SugarTestProspectListsUtilities.php create mode 100755 tests/SugarTestRelationshipUtilities.php create mode 100755 tests/data/Bug33036Test.php delete mode 100755 tests/data/Bug45896Test.php create mode 100755 tests/data/SaveRelationshipChangesTest.php rename tests/include/SearchForm/{Bug45709Test.php => Bug45709_53785_Test.php} (77%) create mode 100755 tests/include/SugarFields/Fields/Currency/Bug55733Test.php create mode 100755 tests/include/generic/Bug53288Test.php create mode 100755 tests/include/utils/Bug55650Test.php create mode 100755 tests/modules/EmailTemplates/Bug46984Test.php diff --git a/ModuleInstall/ModuleInstaller.php b/ModuleInstall/ModuleInstaller.php index 7f7fd346..92fc2a6c 100644 --- a/ModuleInstall/ModuleInstaller.php +++ b/ModuleInstall/ModuleInstaller.php @@ -267,7 +267,7 @@ class ModuleInstaller{ function install_copy(){ if(isset($this->installdefs['copy'])){ /* BEGIN - RESTORE POINT - by MR. MILK August 31, 2005 02:22:11 PM */ - $backup_path = clean_path( remove_file_extension(urldecode(hashToFile($_REQUEST['install_file'])))."-restore" ); + $backup_path = clean_path( remove_file_extension(urldecode($_REQUEST['install_file']))."-restore" ); /* END - RESTORE POINT - by MR. MILK August 31, 2005 02:22:18 PM */ foreach($this->installdefs['copy'] as $cp){ $GLOBALS['log']->debug("Copying ..." . $cp['from']. " to " .$cp['to'] ); diff --git a/ModuleInstall/ModuleScanner.php b/ModuleInstall/ModuleScanner.php index b8a468ca..884a25e4 100644 --- a/ModuleInstall/ModuleScanner.php +++ b/ModuleInstall/ModuleScanner.php @@ -85,11 +85,8 @@ class ModuleScanner{ 'proc_close', 'proc_get_status', 'proc_nice', - 'basename', 'passthru', 'clearstatcache', - 'delete', - 'dirname', 'disk_free_space', 'disk_total_space', 'diskfreespace', @@ -161,8 +158,10 @@ class ModuleScanner{ 'linkinfo', 'lstat', 'mkdir', + 'mkdir_recursive', 'parse_ini_file', 'rmdir', + 'rmdir_recursive', 'stat', 'tempnam', 'touch', @@ -175,6 +174,7 @@ class ModuleScanner{ //mutliple files per function call 'copy', + 'copy_recursive', 'link', 'rename', 'symlink', diff --git a/cache/include/javascript/sugar_grp1_jquery.js b/cache/include/javascript/sugar_grp1_jquery.js index f1d8c0fa..661a6219 100644 --- a/cache/include/javascript/sugar_grp1_jquery.js +++ b/cache/include/javascript/sugar_grp1_jquery.js @@ -828,7 +828,7 @@ b.dequeue()})})}})(jQuery); })( jQuery ); /* End of File include/javascript/jquery/jquery.json-2.3.js */ -/******************************************************************************* +/******************************************************************************* jquery.mb.components Copyright (c) 2001-2010. Matteo Bicocchi (Pupunzi); Open lab srl, Firenze - Italy email: info@pupunzi.com diff --git a/cache/include/javascript/sugar_grp_emails.js b/cache/include/javascript/sugar_grp_emails.js index 309419ff..592b8204 100644 --- a/cache/include/javascript/sugar_grp_emails.js +++ b/cache/include/javascript/sugar_grp_emails.js @@ -181,7 +181,7 @@ ygDDListBoundary.prototype = new YAHOO.util.DDTarget(); (function(){if(SUGAR.EmailAddressWidget)return;var Dom=YAHOO.util.Dom;SUGAR.EmailAddressWidget=function(module){if(!SUGAR.EmailAddressWidget.count[module])SUGAR.EmailAddressWidget.count[module]=0;this.count=SUGAR.EmailAddressWidget.count[module];SUGAR.EmailAddressWidget.count[module]++;this.module=module;this.id=this.module+this.count;if(document.getElementById(module+'_email_widget_id')) document.getElementById(module+'_email_widget_id').value=this.id;SUGAR.EmailAddressWidget.instances[this.id]=this;} -SUGAR.EmailAddressWidget.instances={};SUGAR.EmailAddressWidget.count={};SUGAR.EmailAddressWidget.prototype={emailTemplate:''+''+' '+''+''+''+''+'',numberEmailAddresses:0,replyToFlagObject:new Object(),verifying:false,enterPressed:false,tabPressed:false,emailView:"",emailIsRequired:false,tabIndex:-1,prefillEmailAddresses:function(tableId,o){for(i=0;i'+''+' '+''+''+''+''+'',numberEmailAddresses:0,replyToFlagObject:new Object(),verifying:false,enterPressed:false,tabPressed:false,emailView:"",emailIsRequired:false,tabIndex:-1,prefillEmailAddresses:function(tableId,o){for(i=0;i1){verifyElementFlag.parentNode.removeChild(verifyElementFlag.parentNode.lastChild);} var verifiedTextNode=document.createElement('span');verifiedTextNode.innerHTML='';verifyElementFlag.parentNode.appendChild(verifiedTextNode);verifyElementFlag.value="true";this.verifyElementValue=Dom.get(this.id+'emailAddressVerifiedValue'+index);this.verifyElementValue.value=Dom.get(this.id+'emailAddress'+index).value;this.verifying=false;var savePressed=false;if(event){var elm=document.activeElement||event.explicitOriginalTarget;if(typeof elm.type!='undefined'&&/submit|button/.test(elm.type.toLowerCase())){if(/save|full|cancel|change/.test(elm.value.toLowerCase())){savePressed=true;}}} @@ -190,15 +190,15 @@ var event=this.getEvent(event);var targetEl=this.getEventElement(event);var inde this.verifyElementValue=Dom.get(this.id+'emailAddressVerifiedValue'+index);verifyElementFlag.value=(trim(targetEl.value)==''||targetEl.value==this.verifyElementValue.value)?"true":"false" if(verifyElementFlag.parentNode.childNodes.length>1){verifyElementFlag.parentNode.removeChild(verifyElementFlag.parentNode.lastChild);} if(/emailAddress\d+$/.test(targetEl.id)&&isValidEmail(targetEl.value)&&!this.verifying&&verifyElementFlag.value=="false"){verifiedTextNode=document.createElement('span');verifyElementFlag.parentNode.appendChild(verifiedTextNode);verifiedTextNode.innerHTML=SUGAR.language.get('app_strings','LBL_VERIFY_EMAIL_ADDRESS');this.verifying=true;var cObj=YAHOO.util.Connect.asyncRequest('GET','index.php?module=Contacts&action=RetrieveEmail&target='+targetEl.id+'&email='+targetEl.value,{success:callbackFunction,failure:callbackFunction,scope:this});}},handleKeyDown:function(event){var e=this.getEvent(event);var eL=this.getEventElement(e);if((kc=e["keyCode"])){this.enterPressed=(kc==13)?true:false;this.tabPressed=(kc==9)?true:false;if(this.enterPressed||this.tabPressed){this.retrieveEmailAddress(e);if(this.enterPressed) -this.freezeEvent(e);}}},getEvent:function(event){return(event?event:window.event);},getEventElement:function(e){return(e.srcElement?e.srcElement:(e.target?e.target:e.currentTarget));},freezeEvent:function(e){if(e.preventDefault)e.preventDefault();e.returnValue=false;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();return false;},addEmailAddress:function(tableId,address,primaryFlag,replyToFlag,optOutFlag,invalidFlag){if(this.addInProgress) +this.freezeEvent(e);}}},getEvent:function(event){return(event?event:window.event);},getEventElement:function(e){return(e.srcElement?e.srcElement:(e.target?e.target:e.currentTarget));},freezeEvent:function(e){if(e.preventDefault)e.preventDefault();e.returnValue=false;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();return false;},addEmailAddress:function(tableId,address,primaryFlag,replyToFlag,optOutFlag,invalidFlag,emailId){if(this.addInProgress) return;this.addInProgress=true;if(!address) -address="";var insertInto=Dom.get(tableId);var parentObj=insertInto.parentNode;var newContent=document.createElement("input");var nav=new String(navigator.appVersion);var newContentPrimaryFlag=document.createElement("input");var newContentReplyToFlag=document.createElement("input");var newContentOptOutFlag=document.createElement("input");var newContentInvalidFlag=document.createElement("input");var newContentVerifiedFlag=document.createElement("input");var newContentVerifiedValue=document.createElement("input");var removeButton=document.createElement("button");var removeButtonImg=document.createElement('img');var tbody=document.createElement("tbody");var tr=document.createElement("tr");var td1=document.createElement("td");var td2=document.createElement("td");var td3=document.createElement("td");var td4=document.createElement("td");var td5=document.createElement("td");var td6=document.createElement("td");var td7=document.createElement("td");var td8=document.createElement("td");var tabIndexCount=0;if(typeof(SUGAR.TabFields)!='undefined'&&typeof(SUGAR.TabFields['email1'])!='undefined'){tabIndexCount=SUGAR.TabFields['email1'];} +address="";var insertInto=Dom.get(tableId);var parentObj=insertInto.parentNode;var newContent=document.createElement("input");var nav=new String(navigator.appVersion);var newContentRecordId=document.createElement("input");var newContentPrimaryFlag=document.createElement("input");var newContentReplyToFlag=document.createElement("input");var newContentOptOutFlag=document.createElement("input");var newContentInvalidFlag=document.createElement("input");var newContentVerifiedFlag=document.createElement("input");var newContentVerifiedValue=document.createElement("input");var removeButton=document.createElement("button");var removeButtonImg=document.createElement('img');var tbody=document.createElement("tbody");var tr=document.createElement("tr");var td1=document.createElement("td");var td2=document.createElement("td");var td3=document.createElement("td");var td4=document.createElement("td");var td5=document.createElement("td");var td6=document.createElement("td");var td7=document.createElement("td");var td8=document.createElement("td");var tabIndexCount=0;if(typeof(SUGAR.TabFields)!='undefined'&&typeof(SUGAR.TabFields['email1'])!='undefined'){tabIndexCount=SUGAR.TabFields['email1'];} newContent.setAttribute("type","text");newContent.setAttribute("name",this.id+"emailAddress"+this.numberEmailAddresses);newContent.setAttribute("id",this.id+"emailAddress"+this.numberEmailAddresses);newContent.setAttribute("tabindex",tabIndexCount);newContent.setAttribute("size","30");newContent.setAttribute("title",SUGAR.language.get('app_strings','LBL_EMAIL_TITLE'));if(address!=''){newContent.setAttribute("value",address);} -removeButtonImg.setAttribute('src',"index.php?entryPoint=getImage&themeName="+SUGAR.themes.theme_name+"&imageName=id-ff-remove-nobg.png");removeButton.setAttribute("id",this.id+"removeButton"+this.numberEmailAddresses);removeButton.setAttribute("class","id-ff-remove");removeButton.setAttribute("name",this.numberEmailAddresses);removeButton.eaw=this;removeButton.setAttribute("tabindex",tabIndexCount);removeButton.onclick=function(){this.eaw.removeEmailAddress(this.name);return false;};removeButton.appendChild(removeButtonImg);newContentPrimaryFlag.setAttribute("type","radio");newContentPrimaryFlag.setAttribute("name",this.id+"emailAddressPrimaryFlag");newContentPrimaryFlag.setAttribute("id",this.id+"emailAddressPrimaryFlag"+this.numberEmailAddresses);newContentPrimaryFlag.setAttribute("value",this.id+"emailAddress"+this.numberEmailAddresses);newContentPrimaryFlag.setAttribute("enabled","true");newContentPrimaryFlag.setAttribute("tabindex",tabIndexCount);newContentReplyToFlag.setAttribute("type","radio");newContentReplyToFlag.setAttribute("name",this.id+"emailAddressReplyToFlag");newContentReplyToFlag.setAttribute("id",this.id+"emailAddressReplyToFlag"+this.numberEmailAddresses);newContentReplyToFlag.setAttribute("value",this.id+"emailAddress"+this.numberEmailAddresses);newContentReplyToFlag.setAttribute("enabled","true");newContentReplyToFlag.setAttribute("tabindex",tabIndexCount);newContentReplyToFlag.eaw=this;newContentReplyToFlag['onclick']=function(){var form=document.forms[this.eaw.emailView];if(!form){form=document.forms['editContactForm'];} +removeButtonImg.setAttribute('src',"index.php?entryPoint=getImage&themeName="+SUGAR.themes.theme_name+"&imageName=id-ff-remove-nobg.png");removeButton.setAttribute("id",this.id+"removeButton"+this.numberEmailAddresses);removeButton.setAttribute("class","id-ff-remove");removeButton.setAttribute("name",this.numberEmailAddresses);removeButton.setAttribute("type","button");removeButton.setAttribute("tabindex",tabIndexCount);removeButton.onclick=(function(eaw){return function(){eaw.removeEmailAddress(this.name);}})(this);removeButton.appendChild(removeButtonImg);newContentRecordId.setAttribute("type","hidden");newContentRecordId.setAttribute("name",this.id+"emailAddressId"+this.numberEmailAddresses);newContentRecordId.setAttribute("id",this.id+"emailAddressId"+this.numberEmailAddresses);newContentRecordId.setAttribute("value",typeof(emailId)!='undefined'?emailId:'');newContentRecordId.setAttribute("enabled","true");newContentPrimaryFlag.setAttribute("type","radio");newContentPrimaryFlag.setAttribute("name",this.id+"emailAddressPrimaryFlag");newContentPrimaryFlag.setAttribute("id",this.id+"emailAddressPrimaryFlag"+this.numberEmailAddresses);newContentPrimaryFlag.setAttribute("value",this.id+"emailAddress"+this.numberEmailAddresses);newContentPrimaryFlag.setAttribute("enabled","true");newContentPrimaryFlag.setAttribute("tabindex",tabIndexCount);newContentReplyToFlag.setAttribute("type","radio");newContentReplyToFlag.setAttribute("name",this.id+"emailAddressReplyToFlag");newContentReplyToFlag.setAttribute("id",this.id+"emailAddressReplyToFlag"+this.numberEmailAddresses);newContentReplyToFlag.setAttribute("value",this.id+"emailAddress"+this.numberEmailAddresses);newContentReplyToFlag.setAttribute("enabled","true");newContentReplyToFlag.setAttribute("tabindex",tabIndexCount);newContentReplyToFlag.eaw=this;newContentReplyToFlag['onclick']=function(){var form=document.forms[this.eaw.emailView];if(!form){form=document.forms['editContactForm'];} var nav=new String(navigator.appVersion);if(nav.match(/MSIE/gim)){for(i=0;i0){var emailcontainer=Dom.getAncestorByTagName(insertInto,'span');YAHOO.util.Event.addListener(newContent,"change",function(ev,el){SUGAR.util.callOnChangeListers(el);},emailcontainer);} -this.EmailAddressValidation(this.emailView,this.id+'emailAddress'+this.numberEmailAddresses,this.emailIsRequired,SUGAR.language.get('app_strings','LBL_EMAIL_ADDRESS_BOOK_EMAIL_ADDR'));this.numberEmailAddresses++;this.addInProgress=false;},EmailAddressValidation:function(ev,fn,r,stR){YAHOO.util.Event.onContentReady(fn,function(){addToValidate(ev,fn,'email',r,stR);});},removeEmailAddress:function(index){removeFromValidate(this.emailView,this.id+'emailAddress'+index);var oNodeToRemove=$("#"+this.id+'emailAddressRow'+index);var form=oNodeToRemove.parents("form")[0];oNodeToRemove.find("input").each(function(index,node){$(node).remove();});oNodeToRemove.css("display","none");var removedIndex=parseInt(index);if(this.numberEmailAddresses!=removedIndex){for(var x=removedIndex+1;xgetSide() == REL_LHS) { - $this->relationship->add($this->focus, $key, $additional_values); + $success = $this->relationship->add($this->focus, $key, $additional_values); } else { - $this->relationship->add($key, $this->focus, $additional_values); + $success = $this->relationship->add($key, $this->focus, $additional_values); + } + + if($success == false) { + $failures[] = $key->id; } } + + if(!empty($failures)) { + return $failures; + } + + return true; } @@ -501,7 +513,7 @@ class Link2 { * Marks the relationship delted for this given record pair. * @param $id id of the Parent/Focus SugarBean * @param string $related_id id or SugarBean to unrelate. Pass a SugarBean if you have it. - * @return void + * @return boolean true if delete was successful or false if it was not */ function delete($id, $related_id='') { if (empty($this->focus->id)) @@ -512,15 +524,15 @@ class Link2 { $related_id = $this->getRelatedBean($related_id); } if ($this->getSide() == REL_LHS) { - $this->relationship->remove($this->focus, $related_id); + return $this->relationship->remove($this->focus, $related_id); } else { - $this->relationship->remove($related_id, $this->focus); + return $this->relationship->remove($related_id, $this->focus); } } else { - $this->relationship->removeAll($this); + return $this->relationship->removeAll($this); } } diff --git a/data/Relationships/EmailAddressRelationship.php b/data/Relationships/EmailAddressRelationship.php index dff9ef95..8ff4a473 100644 --- a/data/Relationships/EmailAddressRelationship.php +++ b/data/Relationships/EmailAddressRelationship.php @@ -79,6 +79,8 @@ class EmailAddressRelationship extends M2MRelationship $lhs->$lhsLinkName->addBean($rhs); $this->callAfterAdd($lhs, $rhs, $lhsLinkName); + + return true; } public function remove($lhs, $rhs) @@ -126,5 +128,7 @@ class EmailAddressRelationship extends M2MRelationship $this->callAfterDelete($lhs, $rhs, $lhsLinkName); } } + + return true; } } \ No newline at end of file diff --git a/data/Relationships/M2MRelationship.php b/data/Relationships/M2MRelationship.php index f0a4e6bf..d626b3ad 100644 --- a/data/Relationships/M2MRelationship.php +++ b/data/Relationships/M2MRelationship.php @@ -160,6 +160,8 @@ class M2MRelationship extends SugarRelationship $this->callAfterAdd($lhs, $rhs, $lhsLinkName); $this->callAfterAdd($rhs, $lhs, $rhsLinkName); + + return true; } protected function getRowToInsert($lhs, $rhs, $additionalFields = array()) @@ -279,6 +281,8 @@ class M2MRelationship extends SugarRelationship $this->callAfterDelete($rhs, $lhs, $rhsLinkName); } } + + return true; } /** diff --git a/data/Relationships/One2MBeanRelationship.php b/data/Relationships/One2MBeanRelationship.php index f858fb37..bfe0026d 100644 --- a/data/Relationships/One2MBeanRelationship.php +++ b/data/Relationships/One2MBeanRelationship.php @@ -109,6 +109,8 @@ class One2MBeanRelationship extends One2MRelationship //If we aren't already in a relationship save, intitiate a save now. if (empty($GLOBALS['resavingRelatedBeans'])) SugarRelationship::resaveRelatedBeans(); + + return true; } protected function updateLinks($lhs, $lhsLinkName, $rhs, $rhsLinkName) @@ -143,7 +145,7 @@ class One2MBeanRelationship extends One2MRelationship //If this relationship has already been removed, we can just return if ($rhs->$rhsID != $lhs->id) - return; + return false; $rhs->$rhsID = ''; @@ -164,6 +166,8 @@ class One2MBeanRelationship extends One2MRelationship $this->callAfterDelete($lhs, $rhs); $this->callAfterDelete($rhs, $lhs); } + + return true; } /** @@ -315,28 +319,25 @@ class One2MBeanRelationship extends One2MRelationship $alias = $GLOBALS['db']->getValidDBName($alias, false, 'alias'); $tableInRoleFilter = ""; - if (($targetTable == "meetings" || - $targetTable == "notes" || - $targetTable == "tasks" || - $targetTable == "calls") && $linkIsLHS == false) { - if (substr($alias, -25) == "activities_1_meetings_rel" || - substr($alias, -22) == "activities_1_tasks_rel" || - substr($alias, -22) == "activities_1_calls_rel" || - substr($alias, -23) == "activities_1_emails_rel" || - substr($alias, -22) == "activities_1_notes_rel") - $tableInRoleFilter = $alias; - } - else if (($startingTable == "meetings" || - $startingTable == "notes" || - $startingTable == "tasks" || - $startingTable == "calls" || - $startingTable == "emails") && empty($linkIsLHS)) { - if (substr($alias, -23) == "activities_meetings_rel" || - substr($alias, -20) == "activities_tasks_rel" || - substr($alias, -20) == "activities_calls_rel" || - substr($alias, -21) == "activities_emails_rel" || - substr($alias, -20) == "activities_notes_rel") - $tableInRoleFilter = $startingTable; + if ( + ( + $startingTable == "meetings" + || $startingTable == "notes" + || $startingTable == "tasks" + || $startingTable == "calls" + || $startingTable == "emails" + ) + && + ( + $targetTable == "meetings" + || $targetTable == "notes" + || $targetTable == "tasks" + || $targetTable == "calls" + ) + && substr($alias, 0, 12 + strlen($targetTable)) == $targetTable . "_activities_" + ) + { + $tableInRoleFilter = $linkIsLHS ? $alias : $startingTable; } //Set up any table aliases required diff --git a/data/Relationships/One2OneBeanRelationship.php b/data/Relationships/One2OneBeanRelationship.php index 65d7cd51..f8496962 100644 --- a/data/Relationships/One2OneBeanRelationship.php +++ b/data/Relationships/One2OneBeanRelationship.php @@ -63,7 +63,7 @@ class One2OneBeanRelationship extends One2MBeanRelationship $lhs->load_relationship($lhsLinkName); $this->removeAll($lhs->$lhsLinkName); - parent::add($lhs, $rhs, $additionalFields); + return parent::add($lhs, $rhs, $additionalFields); } protected function updateLinks($lhs, $lhsLinkName, $rhs, $rhsLinkName) diff --git a/data/Relationships/One2OneRelationship.php b/data/Relationships/One2OneRelationship.php index 40621774..3cfecd73 100644 --- a/data/Relationships/One2OneRelationship.php +++ b/data/Relationships/One2OneRelationship.php @@ -71,8 +71,11 @@ class One2OneRelationship extends M2MRelationship $rhs->load_relationship($rhsLinkName); $this->removeAll($rhs->$rhsLinkName); - parent::add($lhs, $rhs, $additionalFields); + return parent::add($lhs, $rhs, $additionalFields); } + + // data matched what was there so return false, since nothing happened + return false; } diff --git a/data/Relationships/RelationshipFactory.php b/data/Relationships/RelationshipFactory.php index 4c405ad5..b82456f0 100644 --- a/data/Relationships/RelationshipFactory.php +++ b/data/Relationships/RelationshipFactory.php @@ -161,7 +161,7 @@ class SugarRelationshipFactory { if ($buildingRelCache) return; $buildingRelCache = true; - include_once("modules/TableDictionary.php"); + include("modules/TableDictionary.php"); if (empty($beanList)) include("include/modules.php"); @@ -194,8 +194,8 @@ class SugarRelationshipFactory { } //Save it out sugar_mkdir(dirname($this->getCacheFile()), null, true); - $out="getCacheFile(), $out); + $out = "getCacheFile(), $out); $this->relationships = $relationships; $buildingRelCache = false; @@ -207,4 +207,4 @@ class SugarRelationshipFactory { -} \ No newline at end of file +} diff --git a/data/Relationships/SugarRelationship.php b/data/Relationships/SugarRelationship.php index ac6b2df5..10d4549c 100644 --- a/data/Relationships/SugarRelationship.php +++ b/data/Relationships/SugarRelationship.php @@ -71,7 +71,7 @@ abstract class SugarRelationship * @abstract * @param $lhs SugarBean * @param $rhs SugarBean - * @return void + * @return boolean */ public abstract function remove($lhs, $rhs); @@ -115,7 +115,7 @@ abstract class SugarRelationship /** * @param $link Link2 removes all the beans associated with this link from the relationship - * @return void + * @return boolean true if it was successful, false if it was not */ public function removeAll($link) { @@ -128,10 +128,12 @@ abstract class SugarRelationship } if ($link->getSide() == REL_LHS) - $this->remove($focus, $relBean); + return $this->remove($focus, $relBean); else - $this->remove($relBean, $focus); + return $this->remove($relBean, $focus); } + + return false; } /** @@ -184,7 +186,7 @@ abstract class SugarRelationship /** * @param array $row values to be inserted into the relationship - * @return bool|void null if new row was inserted and true if an exesting row was updated + * @return bool|void null if new row was inserted and true if an existing row was updated */ protected function addRow($row) { @@ -483,4 +485,4 @@ abstract class SugarRelationship return null; } -} \ No newline at end of file +} diff --git a/data/SugarBean.php b/data/SugarBean.php index 216de980..72a46b68 100644 --- a/data/SugarBean.php +++ b/data/SugarBean.php @@ -218,6 +218,7 @@ class SugarBean var $relationship_fields = array(); var $current_notify_user; var $fetched_row=false; + var $fetched_rel_row = array(); var $layout_def; var $force_load_details = false; var $optimistic_lock = false; @@ -1651,33 +1652,51 @@ class SugarBean } /** - * This function is a good location to save changes that have been made to a relationship. - * This should be overriden in subclasses that have something to save. - * - * @param $is_update true if this save is an update. - */ -function save_relationship_changes($is_update, $exclude=array()) + * This function is a good location to save changes that have been made to a relationship. + * This should be overridden in subclasses that have something to save. + * + * @param boolean $is_update true if this save is an update. + * @param array $exclude a way to exclude relationships + */ + public function save_relationship_changes($is_update, $exclude = array()) + { + list($new_rel_id, $new_rel_link) = $this->set_relationship_info($exclude); + + $new_rel_id = $this->handle_preset_relationships($new_rel_id, $new_rel_link, $exclude); + + $this->handle_remaining_relate_fields($exclude); + + $this->handle_request_relate($new_rel_id, $new_rel_link); + } + + /** + * Look in the bean for the new relationship_id and relationship_name if $this->not_use_rel_in_req is set to true, + * otherwise check the $_REQUEST param for a relate_id and relate_to field. Once we have that make sure that it's + * not excluded from the passed in array of relationships to exclude + * + * @param array $exclude any relationship's to exclude + * @return array The relationship_id and relationship_name in an array + */ + protected function set_relationship_info($exclude = array()) { + $new_rel_id = false; $new_rel_link = false; - // check incoming data - if(isset($this->not_use_rel_in_req) && $this->not_use_rel_in_req) - { + if (isset($this->not_use_rel_in_req) && $this->not_use_rel_in_req == true) { // if we should use relation data from properties (for REQUEST-independent calls) - $rel_id=isset($this->new_rel_id) ? $this->new_rel_id : ''; - $rel_link=isset($this->new_rel_relname) ? $this->new_rel_relname : ''; + $rel_id = isset($this->new_rel_id) ? $this->new_rel_id : ''; + $rel_link = isset($this->new_rel_relname) ? $this->new_rel_relname : ''; } - else - { + else + { // if we should use relation data from REQUEST - $rel_id=isset($_REQUEST['relate_id']) ? $_REQUEST['relate_id'] : ''; - $rel_link=isset($_REQUEST['relate_to']) ? $_REQUEST['relate_to'] : ''; + $rel_id = isset($_REQUEST['relate_id']) ? $_REQUEST['relate_id'] : ''; + $rel_link = isset($_REQUEST['relate_to']) ? $_REQUEST['relate_to'] : ''; } // filter relation data - if($rel_id && $rel_link && !in_array($rel_link, $exclude) && $rel_id != $this->id) - { + if ($rel_id && $rel_link && !in_array($rel_link, $exclude) && $rel_id != $this->id) { $new_rel_id = $rel_id; $new_rel_link = $rel_link; // Bug #53223 : wrong relationship from subpanel create button @@ -1700,17 +1719,30 @@ function save_relationship_changes($is_update, $exclude=array()) } } } - } + } + return array($new_rel_id, $new_rel_link); + } - // First we handle the preset fields listed in the fixed relationship_fields array hardcoded into the OOB beans - // TODO: remove this mechanism and replace with mechanism exclusively based on the vardefs - if (isset($this->relationship_fields) && is_array($this->relationship_fields)) - { - foreach ($this->relationship_fields as $id=>$rel_name) + /** + * Handle the preset fields listed in the fixed relationship_fields array hardcoded into the OOB beans + * + * TODO: remove this mechanism and replace with mechanism exclusively based on the vardefs + * + * @api + * @see save_relationship_changes + * @param string|boolean $new_rel_id String of the ID to add + * @param string Relationship Name + * @param array $exclude any relationship's to exclude + * @return string|boolean Return the new_rel_id if it was not used. False if it was used. + */ + protected function handle_preset_relationships($new_rel_id, $new_rel_link, $exclude = array()) + { + if (isset($this->relationship_fields) && is_array($this->relationship_fields)) { + foreach ($this->relationship_fields as $id => $rel_name) { - if(in_array($id, $exclude))continue; + if (in_array($id, $exclude)) continue; if(!empty($this->$id)) { @@ -1721,60 +1753,82 @@ function save_relationship_changes($is_update, $exclude=array()) } $GLOBALS['log']->debug('save_relationship_changes(): From relationship_field array - adding a relationship record: '.$rel_name . ' = ' . $this->$id); //already related the new relationship id so let's set it to false so we don't add it again using the _REQUEST['relate_i'] mechanism in a later block - if($this->$id == $new_rel_id){ + $this->load_relationship($rel_name); + $rel_add = $this->$rel_name->add($this->$id); + // move this around to only take out the id if it was save successfully + if ($this->$id == $new_rel_id && $rel_add == true) { $new_rel_id = false; } - $this->load_relationship($rel_name); - $this->$rel_name->add($this->$id); - $related = true; - } - else - { + } else { //if before value is not empty then attempt to delete relationship - if(!empty($this->rel_fields_before_value[$id])) - { - $GLOBALS['log']->debug('save_relationship_changes(): From relationship_field array - attempting to remove the relationship record, using relationship attribute'.$rel_name); + if (!empty($this->rel_fields_before_value[$id])) { + $GLOBALS['log']->debug('save_relationship_changes(): From relationship_field array - attempting to remove the relationship record, using relationship attribute' . $rel_name); $this->load_relationship($rel_name); - $this->$rel_name->delete($this->id,$this->rel_fields_before_value[$id]); + $this->$rel_name->delete($this->id, $this->rel_fields_before_value[$id]); } } } } -/* Next, we'll attempt to update all of the remaining relate fields in the vardefs that have 'save' set in their field_def - Only the 'save' fields should be saved as some vardef entries today are not for display only purposes and break the application if saved - If the vardef has entries for field of type relate, where a->id_name = and field of type link - then we receive a value for b from the MVC in the _REQUEST, and it should be set in the bean as $this->$b -*/ + return $new_rel_id; + } - foreach ( $this->field_defs as $def ) - { - if ($def [ 'type' ] == 'relate' && isset ( $def [ 'id_name'] ) && isset ( $def [ 'link'] ) && isset ( $def[ 'save' ]) ) - { - if ( in_array( $def['id_name'], $exclude) || in_array( $def['id_name'], $this->relationship_fields ) ) - continue ; // continue to honor the exclude array and exclude any relationships that will be handled by the relationship_fields mechanism + /** + * Next, we'll attempt to update all of the remaining relate fields in the vardefs that have 'save' set in their field_def + * Only the 'save' fields should be saved as some vardef entries today are not for display only purposes and break the application if saved + * If the vardef has entries for field of type relate, where a->id_name = and field of type link + * then we receive a value for b from the MVC in the _REQUEST, and it should be set in the bean as $this->$b + * + * @api + * @see save_relationship_changes + * @param array $exclude any relationship's to exclude + * @return array the list of relationships that were added or removed successfully or if they were a failure + */ + protected function handle_remaining_relate_fields($exclude = array()) + { - $linkField = $def [ 'link' ] ; - if (isset( $this->field_defs[$linkField ] )) - { - $linkfield = $this->field_defs[$linkField] ; + $modified_relationships = array( + 'add' => array('success' => array(), 'failure' => array()), + 'remove' => array('success' => array(), 'failure' => array()), + ); - if ($this->load_relationship ( $linkField)) - { + foreach ($this->field_defs as $def) + { + if ($def ['type'] == 'relate' && isset ($def ['id_name']) && isset ($def ['link']) && isset ($def['save'])) { + if (in_array($def['id_name'], $exclude) || in_array($def['id_name'], $this->relationship_fields)) + continue; // continue to honor the exclude array and exclude any relationships that will be handled by the relationship_fields mechanism + + $linkField = $def ['link']; + if (isset($this->field_defs[$linkField])) { + if ($this->load_relationship($linkField)) { $idName = $def['id_name']; - if (!empty($this->rel_fields_before_value[$idName]) && empty($this->$idName)) - { + if (!empty($this->rel_fields_before_value[$idName]) && empty($this->$idName)) { //if before value is not empty then attempt to delete relationship $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - attempting to remove the relationship record: {$def [ 'link' ]} = {$this->rel_fields_before_value[$def [ 'id_name' ]]}"); - $this->$def ['link' ]->delete($this->id, $this->rel_fields_before_value[$def [ 'id_name' ]] ); + $success = $this->$def ['link']->delete($this->id, $this->rel_fields_before_value[$def ['id_name']]); + // just need to make sure it's true and not an array as it's possible to return an array + if($success == true) { + $modified_relationships['remove']['success'][] = $def['link']; + } else { + $modified_relationships['remove']['failure'][] = $def['link']; + } + $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - attempting to remove the relationship record returned " . var_export($success, true)); } - if (!empty($this->$idName) && is_string($this->$idName)) - { - $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - attempting to add a relationship record - {$def [ 'link' ]} = {$this->$def [ 'id_name' ]}" ); + if (!empty($this->$idName) && is_string($this->$idName)) { + $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - attempting to add a relationship record - {$def [ 'link' ]} = {$this->$def [ 'id_name' ]}"); + + $success = $this->$linkField->add($this->$idName); - $this->$linkField->add($this->$idName); + // just need to make sure it's true and not an array as it's possible to return an array + if($success == true) { + $modified_relationships['add']['success'][] = $linkField; + } else { + $modified_relationships['add']['failure'][] = $linkField; + } + + $GLOBALS['log']->debug("save_relationship_changes(): From field_defs - add a relationship record returned " . var_export($success, true)); } } else { $GLOBALS['log']->fatal("Failed to load relationship {$linkField} while saving {$this->module_dir}"); @@ -1783,40 +1837,52 @@ function save_relationship_changes($is_update, $exclude=array()) } } - // Finally, we update a field listed in the _REQUEST['*/relate_id']/_REQUEST['relate_to'] mechanism (if it hasn't already been updated above) - if(!empty($new_rel_id)){ + return $modified_relationships; + } - if($this->load_relationship($new_rel_link)){ - $this->$new_rel_link->add($new_rel_id); + /** + * Finally, we update a field listed in the _REQUEST['%/relate_id']/_REQUEST['relate_to'] mechanism (if it has not already been updated) + * + * @api + * @see save_relationship_changes + * @param string|boolean $new_rel_id + * @param string $new_rel_link + * @return boolean + */ + protected function handle_request_relate($new_rel_id, $new_rel_link) + { + if (!empty($new_rel_id)) { - }else{ + if ($this->load_relationship($new_rel_link)) { + return $this->$new_rel_link->add($new_rel_id); + } else { $lower_link = strtolower($new_rel_link); - if($this->load_relationship($lower_link)){ - $this->$lower_link->add($new_rel_id); + if ($this->load_relationship($lower_link)) { + return $this->$lower_link->add($new_rel_id); - }else{ + } else { require_once('data/Link2.php'); - $rel = Relationship::retrieve_by_modules($new_rel_link, $this->module_dir, $GLOBALS['db'], 'many-to-many'); + $rel = Relationship::retrieve_by_modules($new_rel_link, $this->module_dir, $this->db, 'many-to-many'); - if(!empty($rel)){ - foreach($this->field_defs as $field=>$def){ - if($def['type'] == 'link' && !empty($def['relationship']) && $def['relationship'] == $rel){ + if (!empty($rel)) { + foreach ($this->field_defs as $field => $def) { + if ($def['type'] == 'link' && !empty($def['relationship']) && $def['relationship'] == $rel) { $this->load_relationship($field); - $this->$field->add($new_rel_id); - return; - + return $this->$field->add($new_rel_id); } } //ok so we didn't find it in the field defs let's save it anyway if we have the relationshp - $this->$rel=new Link2($rel, $this, array()); - $this->$rel->add($new_rel_id); + $this->$rel = new Link2($rel, $this, array()); + return $this->$rel->add($new_rel_id); } } - } } + + // nothing was saved so just return false; + return false; } /** @@ -2147,6 +2213,14 @@ function save_relationship_changes($is_update, $exclude=array()) $this->is_updated_dependent_fields = false; $this->fill_in_additional_detail_fields(); $this->fill_in_relationship_fields(); +// save related fields values for audit + foreach ($this->get_related_fields() as $rel_field_name) + { + if (! empty($this->$rel_field_name['name'])) + { + $this->fetched_rel_row[$rel_field_name['name']] = $this->$rel_field_name['name']; + } + } //make a copy of fields in the relationship_fields array. These field values will be used to //clear relationship. foreach ( $this->field_defs as $key => $def ) diff --git a/files.md5 b/files.md5 index c998b30f..5ff7f98c 100644 --- a/files.md5 +++ b/files.md5 @@ -1,5 +1,5 @@ 'd3f150e4a5bed444763ebe8a81742a95', './.htaccess' => 'd41d8cd98f00b204e9800998ecf8427e', @@ -10,7 +10,7 @@ $md5_string = array ( './log_file_restricted.html' => 'c060f5a22a297b26a3c27fab7e99e4a9', './soap.php' => 'b507c82aa35ff6765a082a1b875d4865', './include/SugarObjects/SugarRegistry.php' => '9983aad8fa1c984c64d2c8e439851cee', - './include/SugarObjects/VardefManager.php' => '798628a21af15a4257f21be0ab51aaf4', + './include/SugarObjects/VardefManager.php' => '714b74371c5800d9b3cd86e8d278a950', './include/SugarObjects/SugarSession.php' => '3f1cdefe0f810a15ef344e0086905be5', './include/SugarObjects/templates/file/vardefs.php' => 'cc7113aa9fb7713ce89be4bb35b061d5', './include/SugarObjects/templates/file/icons/Createfile.gif' => '3ed1d93938f715b1af93c0e99e900af5', @@ -82,7 +82,7 @@ $md5_string = array ( './include/SugarObjects/templates/person/metadata/listviewdefs.php' => '05ce4144900a1e6d3949cb3d50c0ea5d', './include/SugarObjects/templates/person/metadata/detailviewdefs.php' => '3345c1e3c927e0ed0ba010cb0cc7fdfe', './include/SugarObjects/templates/person/language/en_us.lang.php' => '03d26660f443329319c29b1bd14c478d', - './include/SugarObjects/templates/person/Person.php' => '4082948ab2cf15be8f910f8f57cb284c', + './include/SugarObjects/templates/person/Person.php' => '763305f02b1506a2f0e00f9408b5cfdc', './include/SugarObjects/templates/basic/vardefs.php' => '595e708242310b7863643e48d397263a', './include/SugarObjects/templates/basic/icons/Createbasic.gif' => 'e25889cd660d838655f5e213fe565f0d', './include/SugarObjects/templates/basic/icons/basic_32.gif' => 'd92dc1c8a1ef6e0351b6948d78bf1436', @@ -272,7 +272,7 @@ $md5_string = array ( './include/HTMLPurifier/LICENSE' => 'a1b3d3e45e8422eed104489842a6f546', './include/HTMLPurifier/CREDITS' => 'a5f9ddecea015543001404c0a9bfd181', './include/SugarHtml/SugarHtml.php' => '058c02dae665d65a0c630927988e9594', - './include/SubPanel/SubPanelTiles.js' => 'cc46637bcf0873d50a36ad07b4552eb9', + './include/SubPanel/SubPanelTiles.js' => '0b6bbd54ff641c36526097d4b67fe4e1', './include/SubPanel/SugarTab.php' => '398584e6128906ecf4b4b5154ced95ee', './include/SubPanel/SubPanelDynamic.html' => '4f74fcd4211256ec95d0054799608906', './include/SubPanel/tpls/singletabmenu.tpl' => '252c751fac27affd042dc7ba1ee83a00', @@ -336,7 +336,7 @@ $md5_string = array ( './include/SugarFields/Fields/Html/DetailView.tpl' => '3b17bdfd071fd66de1a712d1c5bfe55b', './include/SugarFields/Fields/Html/SugarFieldHtml.php' => '42f4294287877b0e04b4cb4df7afeca5', './include/SugarFields/Fields/Text/SugarFieldText.php' => 'c30eb065bcb75d70df33a67d0faae2c8', - './include/SugarFields/Fields/Text/DetailView.tpl' => 'cbf8e46def8846161dbc6ccfd8e4ee1b', + './include/SugarFields/Fields/Text/DetailView.tpl' => '3b3a6ce31ef527f9d92513c3ff764a5e', './include/SugarFields/Fields/Text/EditView.tpl' => '26aa7313fd3fe83db6f16c1de80a2823', './include/SugarFields/Fields/Text/ClassicEditView.tpl' => 'b0b4eba7ded342f4b26d79d4b8c3a723', './include/SugarFields/Fields/Datetime/SugarFieldDatetime.php' => '4d6c3b36c232f8ee13caab372e8b39f2', @@ -347,7 +347,7 @@ $md5_string = array ( './include/SugarFields/Fields/Float/EditView.tpl' => '7f8f08b4f16fbb26cb172aa162f95d01', './include/SugarFields/Fields/Currency/DetailView.tpl' => 'd66275d18e5f54d81e39fe27040f6a24', './include/SugarFields/Fields/Currency/EditView.tpl' => '047c303129e89b26ad0da1741cd28e90', - './include/SugarFields/Fields/Currency/SugarFieldCurrency.php' => '7e8de8cbec2d09cbd8cd0c3d41f467aa', + './include/SugarFields/Fields/Currency/SugarFieldCurrency.php' => 'f03ea5587d686eec357bd97b6b342dd4', './include/SugarFields/Fields/Currency/ListView.tpl' => '9b169f665697516c771151a27ab7dc3a', './include/SugarFields/Fields/Password/SugarFieldPassword.php' => '50644b74c6a8bc8d1a62b81bbb4d7d80', './include/SugarFields/Fields/Password/EditView.tpl' => 'aa42f8ace5d954a82a0cecd46b9fd549', @@ -434,11 +434,11 @@ $md5_string = array ( './include/SugarFields/Fields/Download/SugarFieldDownload.php' => '9aff3c7f986153faf4946a8c7d9e657b', './include/SugarFields/Fields/Download/DetailView.tpl' => 'f768b45ff7bed5b8f4fc7857e295e0e0', './include/SugarFields/Fields/File/SugarFieldFile.js' => '61c18b22e384c93c0727459380d0f94d', - './include/SugarFields/Fields/File/SugarFieldFile.php' => 'b1c9e0b918b501e92d7409d407598cb5', + './include/SugarFields/Fields/File/SugarFieldFile.php' => '6d2a8e59593d80619f40c753514586e2', './include/SugarFields/Fields/File/DetailView.tpl' => 'c53209bd4256bfe36c907885ce676de0', './include/SugarFields/Fields/File/EditView.tpl' => 'b6f309a0fd9fb2d14fbe7a5106144810', './include/SugarFields/Fields/File/ListView.tpl' => '95e874bab3a46d7de4c46d46507f914a', - './include/SugarFields/Fields/File/SearchView.tpl' => '03bcd06cd7f6dd1f013481a62a0ef5f5', + './include/SugarFields/Fields/File/SearchView.tpl' => 'f2b8bfd0b333ed8413f546f9feb715d0', './include/SugarFields/SugarFieldHandler.php' => '947f17f87ecef6408acd7119aaad7e2d', './include/SugarFields/Parsers/SearchFormMetaParser.php' => '24f0ee643d56d67ccce0428b2f1c5b0d', './include/SugarFields/Parsers/Rules/ProductsParseRule.php' => '2a301608bfab0f56067becaa4ee4d439', @@ -476,7 +476,7 @@ $md5_string = array ( './include/SugarCharts/swf/chart.swf' => 'afda6fe91342c4864d1991d3c1ccbfff', './include/SugarCharts/swf/groupByChart.swf' => '2eca03fe41128001349bacf997b1fedc', './include/SugarCharts/SugarChartFactory.php' => '4873cc48dd3a2258af3a7998713b2398', - './include/SugarCharts/JsChart.php' => '64c1b3c0eaab3527751574a4b6d91c6c', + './include/SugarCharts/JsChart.php' => '93080932f4335c6ef0c74049d3c566ce', './include/SugarCharts/SugarChart.php' => 'b7e886ffcb138fe982de53cbdf508bef', './include/SugarCharts/Jit/js/sugarCharts.js' => '643ed60792a2efe2c62c6ee3f094d735', './include/SugarCharts/Jit/js/mySugarCharts.js' => '6b3dd85fe7c6d5714b6d12c63e536982', @@ -578,7 +578,7 @@ $md5_string = array ( './include/nusoap/license.txt' => '25823f4a2e463ab2c6b5873f07e428e1', './include/nusoap/class.wsdl.php' => 'cd7f1a43ca08891ac1ce04d4d1282c49', './include/nusoap/class.soap_val.php' => '084a898ecf261c201427fd41d4ee40e0', - './include/utils.php' => '87619e6f38a183a132596606fa5c16fb', + './include/utils.php' => 'fce96348de7f3adadd99220c84d4757c', './include/SugarHttpClient.php' => '87fa99a397caaaceb121a21d91ed5260', './include/Sugar_Smarty.php' => 'ac140125309e194a7f43747d41417cd4', './include/phpmailer/extras/htmlfilter.php' => '4d5143899340a690d41a4959428ea674', @@ -610,9 +610,9 @@ $md5_string = array ( './include/phpmailer/language/phpmailer.lang-ar.php' => '646c785bc6a11f13671a59ea62a8cdb1', './include/phpmailer/language/phpmailer.lang-ca.php' => 'd62aa6dcbbf9922a0ff5b3157493d34f', './include/phpmailer/language/phpmailer.lang-br.php' => 'a1364ab381ebdf3f05999b31bada24bd', - './include/phpmailer/class.phpmailer.php' => '2252f7b9a03504be7c83d0ea7997bff4', + './include/phpmailer/class.phpmailer.php' => 'f5db91a4a2a3889d87bf62f05723cb6b', './include/php-sql-parser.php' => '4fd316e1251bd1134a46134ad7ddaf57', - './include/database/DBManager.php' => '9a60fc7b5ac377121f8817b617c566e9', + './include/database/DBManager.php' => '42f443e30bb586e94da21462070650e6', './include/database/MysqlHelper.php' => '6081c98891b401e3653bde7ec539b6d9', './include/database/DBHelper.php' => '74b36f164c288872a50d1f6132d4875e', './include/database/MysqlManager.php' => '968d27d3e911f4e34bed9a9aa24f19d6', @@ -622,13 +622,13 @@ $md5_string = array ( './include/database/MssqlHelper.php' => '6b3a36ab4462e0f838c35e0e74e0f02b', './include/database/DBManagerFactory.php' => '021c6c562cd96f304544af0e336dc736', './include/database/SqlsrvManager.php' => '4a3d6c5e56ae8fe5fdb07ead522c324e', - './include/database/MssqlManager.php' => 'b671c14e37f76ddf22f22fcb9e1889da', + './include/database/MssqlManager.php' => 'ca46f743f0d54ae40ed8b3de54329fc1', './include/timezone/timezones.php' => '15844342704f03ef8d40603abe9aa99b', './include/SugarSQLValidate.php' => 'eb288af9ccb9828370ef3999ad926619', './include/connectors/ConnectorFactory.php' => '33d27fc539bbd684cf7deb0cea6ed37d', './include/connectors/utils/ConnectorUtils.php' => 'e0f8c33d5ab473259db9c246f169b23b', './include/connectors/utils/ConnectorHtmlHelperFactory.php' => '992e79942eb00bdd0e2fe071d61ef652', - './include/connectors/utils/ConnectorHtmlHelper.php' => '9933bf6a050cb1d439f3f3c97c737a6f', + './include/connectors/utils/ConnectorHtmlHelper.php' => '28820022d59b71de4533dc5955a09d2a', './include/connectors/component.php' => '95c819efe3484a6d1dcba9aefbb4ce0e', './include/connectors/filters/default/filter.php' => '45977b4a20344dccb602ece1e48e50d1', './include/connectors/filters/FilterFactory.php' => '8b1dd8be358b3c9401383fa9adbb94e5', @@ -653,7 +653,7 @@ $md5_string = array ( './include/templates/Template.php' => '36ef9b944d7e36d9853d9879f6194969', './include/templates/TemplateGroupChooser.php' => '6ae99e0ff3795b613d03ec0474e52c46', './include/TemplateHandler/TemplateHandler.php' => '2c70ff6e5927aeedf93da151b9124397', - './include/SugarTheme/SugarTheme.php' => 'cf9766ea68d6faab44025adde04320b6', + './include/SugarTheme/SugarTheme.php' => 'dcebbc005e58ed68b7923423e614f516', './include/SugarTheme/getImage.php' => '0cdce763d79863dcdfc6b9e1b13a3516', './include/SugarTheme/SugarSprites.php' => '10818287a033eed727e4269522cc7044', './include/SugarTheme/cssmin.php' => '05384ba957435def09368425e4480688', @@ -661,7 +661,7 @@ $md5_string = array ( './include/SugarDependentDropdown/javascript/SugarDependentDropdown.js' => '4d077b3991c83098e4bca166bc715071', './include/SugarDependentDropdown/SugarDependentDropdown.php' => '86eb13e7c54068ec87679e98a4e0d406', './include/export_utils.php' => '885a0dd6cda051658520a90f522f787f', - './include/globalControlLinks.php' => 'dfa767d1960f89fddeea3f519cf3427f', + './include/globalControlLinks.php' => 'e5ce2b2390cb6a83129779cfe6d20f57', './include/SugarTinyMCE.php' => 'a00a969d2a2df9dbbc80ead4af9b40de', './include/tabs.php' => '7cf9418691424c673218c535fec27a05', './include/SugarOAuthServer.php' => '2213c81d7cef1884997b4a0d38216fd9', @@ -867,14 +867,14 @@ $md5_string = array ( './include/javascript/jquery/themes/base/jquery.ui.autocomplete.css' => '71a83bea119d7ed1ac42636a50d4c53d', './include/javascript/jquery/themes/base/jquery.ui.base.css' => '61035f9b4c191adb57badc1f558f4bc3', './include/javascript/jquery/themes/base/jquery.ui.accordion.css' => '4a87fc350a66bd0c9179eb9554e1cea0', - './include/javascript/jquery/jquery.hoverIntent.js' => '0aaea26d96fc385b1540879c41c2b2dd', + './include/javascript/jquery/jquery.hoverIntent.js' => 'e0958ddcb4674772e81c90f656d3f7f3', './include/javascript/jquery/jquery.sugarMenu.js' => '7fcfff2632e3dc508892a3d07650fe8a', './include/javascript/jquery/jquery.superfish.js' => 'decbe8f5b51bf16e3750da2c41d9265c', './include/javascript/jquery/jquery.showLoading.js' => '573787c855a3389081b878302f905df7', './include/javascript/sugarwidgets/SugarYUILoader.js' => 'c8198074c79a9df405d87800127c4e96', './include/javascript/sugarwidgets/SugarYUIWidgets.js' => '0cb717a8613fc8389e8ff416c5f1af09', './include/javascript/javascript.php' => '302783deea1447541d58f199ed58e8a4', - './include/javascript/getYUIComboFile.php' => '79212b9800ede659ec34081b99ad0517', + './include/javascript/getYUIComboFile.php' => '4445ac6a0e847e8e8a7279a9b380a2fb', './include/javascript/phpjs/get_html_translation_table.js' => '054b9c1274686f591c68909704b112fb', './include/javascript/phpjs/html_entity_decode.js' => '5ba6eed789f2a2f171e5b8fa5cef04c4', './include/javascript/phpjs/license.js' => 'a13c8584b8c04a59d9d8675b6565c516', @@ -2583,11 +2583,11 @@ $md5_string = array ( './include/MVC/View/views/view.classic.php' => '36203ddc3461f3b8c2e24f2c2dbe69e3', './include/MVC/View/views/view.detail.php' => 'bd0d0ff2a23f06455082c98a0a058857', './include/MVC/View/ViewFactory.php' => '56116e594364b8a34b3d8986e93fce1e', - './include/MVC/View/SugarView.php' => 'ed5c6cb004cb28478d409b806f6bd6ce', + './include/MVC/View/SugarView.php' => '2934558e5e0e9b11dee7b2d2c82fd664', './include/MVC/SugarModule.php' => '1d53f536613de51c996600e26c14ca97', - './include/MVC/SugarApplication.php' => 'a3267786d2ea203ab5c027aae36c8d1d', + './include/MVC/SugarApplication.php' => 'ef96e41cf130618b759cba91a83d949b', './include/MVC/Controller/file_access_control_map.php' => '6bf1388c2830450cb92d8b9e374a04d5', - './include/MVC/Controller/entry_point_registry.php' => '5b7aef0d506fb3cf9d635e49f714d7ed', + './include/MVC/Controller/entry_point_registry.php' => '070df1183cc98ae22d1914f5617203fb', './include/MVC/Controller/SugarController.php' => 'bdea5e50de511437f75f0f4f093afeb3', './include/MVC/Controller/action_file_map.php' => '43531cea8d74490f8b465b4e5049e5e9', './include/MVC/Controller/action_view_map.php' => '8fb8da97e553c4fa470f26d5d8b5d456', @@ -2600,14 +2600,14 @@ $md5_string = array ( './include/SearchForm/tpls/SearchFormGeneric.tpl' => '2e5f84f3de4d7e15d122e57253acfa91', './include/SearchForm/SugarSpot.php' => 'a899046092d8a1bdb1fd93352b209ab4', './include/SearchForm/SearchForm.php' => '37a79061b1ef9fc6be0ada54cf4b9a9b', - './include/SearchForm/SearchForm2.php' => 'abde2c406294aa4837c9695bef5e521e', + './include/SearchForm/SearchForm2.php' => 'cbb644f1fb4c87020537ffef88cbcdce', './include/Dashlets/DashletRssFeedTitle.php' => '10771bdc817e8ae49e4a9938d2bcf9d8', './include/Dashlets/DashletGenericAutoRefreshDynamic.tpl' => '355b7490fa2339a87e1fbc7e479dfb73', './include/Dashlets/DashletCacheBuilder.php' => 'a0c56547321767e6b599f98293d2fa39', './include/Dashlets/DashletGenericConfigure.tpl' => 'f8bcde927cd58fe4f1e03a6ba63aa607', './include/Dashlets/DashletGeneric.php' => '7baac46cf83d3b81474060e0947ebe23', './include/Dashlets/DashletGenericDisplay.tpl' => 'f8170fd89384065ed6fad8f8b4181b37', - './include/Dashlets/DashletGenericChart.php' => 'bbc3f371a3d4db0e44b1f9196bad47d3', + './include/Dashlets/DashletGenericChart.php' => 'f55797a82e08a7e8444d48b022f7070d', './include/Dashlets/Dashlet.php' => 'e82515c4bab666685a1c4d7e47e04e9a', './include/Dashlets/DashletGenericAutoRefresh.tpl' => 'c4b3caa740d9105e20bcf69924957a2e', './include/Dashlets/DashletGenericChartConfigure.tpl' => 'e71612ba829ca02bd0b89aa66d60e3bc', @@ -2620,7 +2620,7 @@ $md5_string = array ( './include/Pear/XML_HTMLSax3/LICENSE' => 'a45bb1bbeed9e26b26c5763df1d3913d', './include/Pear/XML_HTMLSax3/HTMLSax3.php' => '11107d97b19feb13feb394cd858603f0', './include/ListView/ListViewSmarty.php' => 'a69eeef5b31ce1e1fa029519006f9f35', - './include/ListView/ListViewData.php' => 'b9721e6b1f1288904b956923b8fb287c', + './include/ListView/ListViewData.php' => '3797a56eeb35041d403100afc200bc26', './include/ListView/ListViewGeneric.tpl' => '32370f4af0164b0985b20c7b7079800c', './include/ListView/ListView.php' => '3ac177d210dbfa86f9408de539306385', './include/ListView/ListViewFacade.php' => 'e82b5372d43acd05f1dbe5855c40cdbd', @@ -2639,13 +2639,13 @@ $md5_string = array ( './include/resource/Observers/ResourceObserver.php' => 'd93dc69d2372859fe8fb0f1068587d54', './include/resource/Observers/SoapResourceObserver.php' => 'bff762397d04d958883d06ed160d8bd1', './include/language/jsLanguage.php' => '3aade005a1d8758085838ed1a22ebf34', - './include/language/en_us.lang.php' => 'be145284eadc6d4229415b10cefc5f71', - './include/language/en_us.notify_template.html' => 'd443be0488e3ce72c2e10984e891d275', + './include/language/en_us.lang.php' => 'ca9f3df7c3c371fa332b715cc9ad75c7', + './include/language/en_us.notify_template.html' => 'ca23107160665bd7ebb6e94177a3a1ba', './include/pclzip/readme.txt' => '2265cad9ccb84cfcd4093ce26b22dc97', './include/pclzip/gnu-lgpl.txt' => '7fbc338309ac38fefcd64b04bb903e34', './include/pclzip/pclzip.lib.php' => 'f42cfbdfccc2dcd85df39638ae2d141c', - './include/SugarEmailAddress/SugarEmailAddress.js' => 'b91373772e9f4c269336890689bc32a5', - './include/SugarEmailAddress/SugarEmailAddress.php' => '24768ff72c278c7d2f30b98d1bfcbdf5', + './include/SugarEmailAddress/SugarEmailAddress.js' => '6217eae817e6af59e21666cc3087a9d9', + './include/SugarEmailAddress/SugarEmailAddress.php' => '4d99e6c0a205463857b61e9ce0acf220', './include/SugarEmailAddress/templates/forDuplicatesView.tpl' => '7606911a788f6fa0f4aca806679e4098', './include/SugarEmailAddress/templates/forDetailView.tpl' => '8a913b1d6cbaf35ff7237c8c6022af9c', './include/SugarEmailAddress/templates/forWideFormBodyView.tpl' => '0dc9422da0b8ec60a58ae06d7215c3fb', @@ -2708,7 +2708,7 @@ $md5_string = array ( './include/Smarty/plugins/modifier.lower.php' => '014241bdc9356e4db65ff84902e868d2', './include/Smarty/plugins/function.html_image.php' => '06abba1563143b4b1190ca07d53b0a0d', './include/Smarty/plugins/function.config_load.php' => '752a15886ca6ee831f2ab650ab09fe4e', - './include/Smarty/plugins/function.sugar_button.php' => 'd6d89da0b3af94df08a39131bac122c3', + './include/Smarty/plugins/function.sugar_button.php' => 'ff430938e7a1ca7f7d2cac229170779d', './include/Smarty/plugins/function.sugar_ajax_url.php' => 'a0f1b3ec9077718a4a020b2be4f12b66', './include/Smarty/plugins/function.popup.php' => 'cf231d09647d1b1cf0adf5904b66b6a6', './include/Smarty/plugins/function.sugar_variable_constructor.php' => '6561cdb5987f989d18090a4713c9a27a', @@ -2768,33 +2768,33 @@ $md5_string = array ( './include/Smarty/README' => '1a3fe37eed420a020489d1082ea150c8', './include/Smarty/Smarty_Compiler.class.php' => 'b9a859a96c0d005cee69253bac461599', './include/DetailView/footer.tpl' => '82f240a39faba85858e561048e23fffd', - './include/DetailView/header.tpl' => 'a9e6450bc57678a18a88e2a57b6530d2', + './include/DetailView/header.tpl' => 'a265fdffd2265242afdd508cf9e2863b', './include/DetailView/DetailView.tpl' => 'a3c4dd95d931815f9845a09fe2e3da33', './include/DetailView/DetailView.php' => '3df8ccba8aca6dffb5969c47001d7435', './include/DetailView/DetailView2.php' => '4f800afa17ab95068341a3474e78fb76', './include/generic/DeleteRelationship.php' => '73e87c09bc4e90c35a551a6d290965c1', - './include/generic/Save2.php' => '3d75c8fc6a726c477b405cc663037077', + './include/generic/Save2.php' => '86436c1acbe31df170b88d9d4f4a3d5e', './include/generic/LayoutManager.php' => '48a5feb70ed0fc1f360d6ba9d917d139', './include/generic/SugarWidgets/SugarWidgetSubPanelEditRoleButton.php' => 'ffd2ba1b7c2b0124a3b70dc00009a94d', './include/generic/SugarWidgets/SugarWidgetSubPanelTopComposeEmailButton.php' => 'b6375e51b1f1f3b827c9aa300cdd065e', './include/generic/SugarWidgets/SugarWidgetFieldurl.php' => '8909a2b419250e770cd07129da34b6d7', - './include/generic/SugarWidgets/SugarWidgetFieldcurrency.php' => '5a93ce41bb40b604c337bf2367491c9f', + './include/generic/SugarWidgets/SugarWidgetFieldcurrency.php' => '2839093eafaefeeaaf94933f5a66b904', './include/generic/SugarWidgets/SugarWidgetSubPanelTopCreateAccountNameButton.php' => 'be445affddc003efff8e6206031385a0', './include/generic/SugarWidgets/SugarWidgetFielddatepicker.php' => 'dee020ff9030fee04b450be6d2f57db4', './include/generic/SugarWidgets/SugarWidgetFieldchar.php' => 'ff4c04e9e87b53eabd82a38fe8c16e35', - './include/generic/SugarWidgets/SugarWidgetFieldmultienum.php' => 'ef4f0eec6d7fb12bd9b76d9f26ce0cb6', + './include/generic/SugarWidgets/SugarWidgetFieldmultienum.php' => '67c9e3e9789e3f8798dec1156bf4656f', './include/generic/SugarWidgets/SugarWidgetField.php' => '677f2d56818b2b35611e73799d80140b', './include/generic/SugarWidgets/SugarWidgetSubPanelIcon.php' => '2a22c376b999d71977dcbcf33b48941c', './include/generic/SugarWidgets/SugarWidgetSubPanelTopMessage.php' => 'a61dac690bca32a9da19652d34d277a5', './include/generic/SugarWidgets/SugarWidgetFieldvarchar.php' => 'e5b8d2c27312e5494f0020949e4d6d83', - './include/generic/SugarWidgets/SugarWidgetFieldbool.php' => '36271858b5a70373b5d10004d146fd0c', + './include/generic/SugarWidgets/SugarWidgetFieldbool.php' => '16a9aa475696846daf03073c8b107a86', './include/generic/SugarWidgets/SugarWidgetFieldlongtext.php' => '56e1f8cf36f90d42fec5eceac7c98a5c', './include/generic/SugarWidgets/SugarWidgetFieldenum.php' => 'cd5f2bf63051e5d2d26e6bdd7e6f3ac9', './include/generic/SugarWidgets/SugarWidgetFielddecimal.php' => 'de2b9da14bee9fb4a0fa6999c7cce7ea', './include/generic/SugarWidgets/SugarWidgetSubPanelGetLatestButton.php' => '76ce22a0b5906b3ceabcbd89a9c31e42', './include/generic/SugarWidgets/SugarWidgetFieldsingleenum.php' => '0338edf920bf35a9d965509024f94473', './include/generic/SugarWidgets/SugarWidgetSubPanelLoadSignedButton.php' => '1ec69a812e9d70198969fc8c753e6256', - './include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectContactsButton.php' => '4a430d77f2f105f30d23876f63581076', + './include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectContactsButton.php' => 'b9e8b558ba286954747abfde1920fb24', './include/generic/SugarWidgets/SugarWidgetFielddate.php' => 'efccab584bdb7950220abab57c1290aa', './include/generic/SugarWidgets/SugarWidgetFielduser_name.php' => 'ac7581e728a68f2f08292dd2ff53def4', './include/generic/SugarWidgets/SugarWidgetFieldid.php' => 'c8e80e951a61d6edbab6051cececa3c7', @@ -2803,6 +2803,7 @@ $md5_string = array ( './include/generic/SugarWidgets/SugarWidgetSubPanelTopScheduleMeetingButton.php' => 'c2c7faa6003bf8ee8741c7a75aa7d73f', './include/generic/SugarWidgets/SugarWidgetFieldradioenum.php' => '0e82e38ab02f701c778bec444f4e93e5', './include/generic/SugarWidgets/SugarWidgetSubPanelActivitiesStatusField.php' => 'af2bbbbd647c9a72eaedda8647f4de5c', + './include/generic/SugarWidgets/SugarWidgetFieldlong.php' => '081362208278d4b48346c1986eca0b0f', './include/generic/SugarWidgets/SugarWidgetFieldparent_type.php' => 'ee2dddadb3f8c070e48e8fc3c7bc5f99', './include/generic/SugarWidgets/SugarWidgetSubPanelTopCreateLeadNameButton.php' => '1cf768f82d9ed9f72163068dcb3184e1', './include/generic/SugarWidgets/SugarWidgetSubPanelDeleteButton.php' => '9a3cff40f4f16c4ef6973622c5f728cb', @@ -2828,7 +2829,7 @@ $md5_string = array ( './include/generic/SugarWidgets/SugarWidgetSubPanelTopButton.php' => '934a6ff7977d2b3501d1551e31445b3b', './include/generic/SugarWidgets/SugarWidgetSubPanelEditButton.php' => '396cf26585199d9f4709af3e21de089c', './include/generic/SugarWidgets/SugarWidgetSubPanelTopCreateCampaignLogEntryButton.php' => 'eda0760a68c648b6924ff97e44d294e5', - './include/generic/SugarWidgets/SugarWidgetReportField.php' => '14b211abee99ce2b82279c3145b43aff', + './include/generic/SugarWidgets/SugarWidgetReportField.php' => '4289b5997f1ab0a3861fd157b1a2faa4', './include/generic/SugarWidgets/SugarWidgetSubPanelCloseButton.php' => '8add175bc8b9b0576efc420c9211d7b1', './include/generic/SugarWidgets/SugarWidgetSubPanelTopCreateNoteButton.php' => '3d0a6b29a27135a455a781a0a81e24f8', './include/generic/SugarWidgets/SugarWidgetFieldnum.php' => '15c06a35b7f2ee9f0a41716d5b6d393d', @@ -2838,7 +2839,7 @@ $md5_string = array ( './include/generic/SugarWidgets/SugarWidgetSubPanelEmailLink.php' => '7b67281f140b86aad81ec6e817453467', './include/generic/SugarWidgets/SugarWidgetSubPanelRemoveButtonMeetings.php' => 'b122f559be91ce0a6ea228dc4c94b4c7', './include/generic/SugarWidgets/SugarWidgetFieldfloat.php' => 'c666c7874c49637db91c03b53abaa572', - './include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectUsersButton.php' => '9567e8dd9dd600c63a1aa7a2bc8547ca', + './include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectUsersButton.php' => 'e2bfbdbf5a8ac9da9008d802615a1ada', './include/generic/SugarWidgets/SugarWidgetSubPanelRemoveButtonProjects.php' => '4c568d07ae9bc35c0e61b02aa1d09370', './include/generic/SugarWidgets/SugarWidgetFieldfullname.php' => '0f864cbd375ff831306ded8cbb3df426', './include/generic/SugarWidgets/SugarWidgetFielddatetimecombo.php' => '396fdadd308d80ae58390314c518dbda', @@ -2868,7 +2869,7 @@ $md5_string = array ( './include/MySugar/tpls/chartDashletsSearchResults.tpl' => '594c737584658863ee36e5ca1a8a8297', './include/MySugar/tpls/retrievePage.tpl' => 'd028fc0782cfe9ae75f5f1f53ef4d592', './include/MySugar/javascript/MySugar.js' => 'c82c6b7676250718269e4cafbb09d6db', - './include/MySugar/MySugar.php' => 'c4ca2a251ce208df906eef9502c312ca', + './include/MySugar/MySugar.php' => '4d163b583b7c3d5566f0a8802ee86578', './examples/FormValidationTest.php' => '6a3742bd1c5607b2cfe2f2e8e21064f6', './examples/SoapTest.php' => 'fa782c475fc7f677f4f71dc058e7fcac', './examples/EXAMPLES_README.txt' => 'b55744b5e2684d91f6d3f98db4553673', @@ -2882,8 +2883,8 @@ $md5_string = array ( './dictionary.php' => '19245b9374ee0cfc7048c87c7548652e', './HandleAjaxCall.php' => 'e8f0cb63050a3f85e26d5f295c54d8b6', './ModuleInstall/extensions.php' => 'd17953438bdd75848cce5a5dbe929e5e', - './ModuleInstall/ModuleScanner.php' => '822b419917fa94e60d8a6f60bd1ff16d', - './ModuleInstall/ModuleInstaller.php' => '8b09838949b4e3c9bae139b607c81cdd', + './ModuleInstall/ModuleScanner.php' => 'ca20e34ae03ca921c68eb4195d4efe4b', + './ModuleInstall/ModuleInstaller.php' => '7595862d0c0fbaaba337058ed6e61ba7', './ModuleInstall/PackageManager/tpls/PackageForm.tpl' => 'b0f7f452c6c32251c1e88f3f06422018', './ModuleInstall/PackageManager/tpls/PackageManagerScripts.tpl' => '305b5d5a2ea5f04c533b982a5f1422ee', './ModuleInstall/PackageManager/tpls/ModuleLoaderListView.tpl' => '33005aa5481b731ec31fd6c15c173e78', @@ -2896,6 +2897,7 @@ $md5_string = array ( './ModuleInstall/PackageManager/ListViewPackages.php' => '9ad64855ae4721d76eac402fd7adc524', './ModuleInstall/PackageManager/PackageManagerDownloader.php' => '3b65a83bab1ad8099252ca9c8a89c530', './campaign_tracker.php' => 'b8e18a8e61ee585466aeb48a938204e7', + './get_url.php' => 'e7f96ff048e98e751e9e6adfc6d9ad9d', './metagen.php' => '69e532d54a987eaba70f67738755cd78', './removeme.php' => '0332e4dfe6b07ec10e64d56b321917af', './image.php' => 'b0c5fc46ffdd7231bfd45ad267e23773', @@ -3303,17 +3305,17 @@ $md5_string = array ( './SugarSecurity.php' => 'e87f1efee51af1d8801dc2376068cee3', './export.php' => '7639b2373c4d0c73765033d70abfb55d', './data/BeanFactory.php' => '5148eb779611ca40e342900456fc6f29', - './data/SugarBean.php' => '1b38c08d405ddd5414e7015602fbbe14', + './data/SugarBean.php' => '19643e48de769ecb959fb1cf5ce94f4a', './data/Link.php' => 'de95f31cf30c2f46a234c4a840c01f84', - './data/Relationships/One2OneRelationship.php' => 'f72bfcb39e5c6c6092c41e148f464abf', - './data/Relationships/EmailAddressRelationship.php' => '469a91798fa6a92e91766867b145a628', - './data/Relationships/M2MRelationship.php' => '048619c6fdf80ac7033447c911bb157b', - './data/Relationships/RelationshipFactory.php' => 'd1b759cda7b9dc92f1032ed1be661816', - './data/Relationships/One2MBeanRelationship.php' => 'aaab2fb06f8b888fb7bf12825f6ff411', - './data/Relationships/One2OneBeanRelationship.php' => 'ec639e887d2ff4bb0d16725b2a33b9ac', - './data/Relationships/SugarRelationship.php' => '7ecdecd5a7623b1f5a251286ffa48893', + './data/Relationships/One2OneRelationship.php' => '88194998edcdad83a887aa1ef014d5de', + './data/Relationships/EmailAddressRelationship.php' => '1a46e6504810e22a7854b64af2377fdf', + './data/Relationships/M2MRelationship.php' => 'bbeac74a733f37995f1c80b9a192648e', + './data/Relationships/RelationshipFactory.php' => '4c70024ff9b3bbfa9eeb76095f33d472', + './data/Relationships/One2MBeanRelationship.php' => '18c6acb5e2f0f51d31fb5078a689102c', + './data/Relationships/One2OneBeanRelationship.php' => '654eafffcc24bad9f464a76f0973843e', + './data/Relationships/SugarRelationship.php' => 'f80aa20b39d590f2007c218fee7fba67', './data/Relationships/One2MRelationship.php' => 'ec99c10eadc77da58700a0418995d78a', - './data/Link2.php' => '08607d058075f66208b31b82037563b3', + './data/Link2.php' => 'c2a24b7c7b5eb91e22fb6ad2eb27b8c5', './data/Tracker.php' => '78c6ca1fadfe9e7984b001fed296f332', './service/core/SugarRestUtils.php' => '183a0d813c88928451133af63934b686', './service/core/webservice.php' => 'e27d4bc434ba5536dce4022124104126', @@ -3364,7 +3366,7 @@ $md5_string = array ( './service/v4/SugarWebServiceUtilv4.php' => 'e0c1a0e4d61fd6c97cf68f4c90cd6d8b', './custom/index.html' => '601a18f179c2ac55779c9bac46942525', './modules/EmailTemplates/EmailTemplate.js' => 'c8ab748acfbda3ad0c5d8f6aa17f267b', - './modules/EmailTemplates/EmailTemplate.php' => 'f649e9e4e3b1775ed5a68dbb16219b11', + './modules/EmailTemplates/EmailTemplate.php' => '34875a194aa7527c4582fe80825ece80', './modules/EmailTemplates/Save.php' => '307b6446f617d164735636906d4971de', './modules/EmailTemplates/PopupDocumentsCampaignTemplate.html' => '8db4aacafa0252d4cc7cecc08eae3dd1', './modules/EmailTemplates/AttachFiles.php' => '3c4b8a3c10bd740599100d3be76ac927', @@ -3396,7 +3398,7 @@ $md5_string = array ( './modules/Leads/tpls/DetailViewHeader.tpl' => 'e0b101be788e4d8244d1943d54e51cf8', './modules/Leads/tpls/ConvertLeadFooter.tpl' => 'b0f1a9fd5d92f7e29b28cd8c58289911', './modules/Leads/Menu.php' => 'e41cf004f788a5488e8e035cafa00f4e', - './modules/Leads/vardefs.php' => 'f016e7d19cd1c6ffb36fbb808dad8574', + './modules/Leads/vardefs.php' => 'e1bf0e1bfc03d62cffc448afccb2f911', './modules/Leads/views/view.showduplicates.php' => 'c9eac311e3979edb0a67b62beae4d46e', './modules/Leads/views/view.list.php' => '47e14d2db5e9b71d410c74ef07142f53', './modules/Leads/views/view.edit.php' => '4208b82205cf63936b78da5eac7df01f', @@ -3462,7 +3464,7 @@ $md5_string = array ( './modules/Notes/NotesQuickCreate.php' => 'f0bfe4f266b67290c0c0b890c0028c97', './modules/TableDictionary.php' => 'ef9c0976beae149cd4433a39fd01ef94', './modules/Audit/vardefs.php' => 'ec42b4a21b5baa7a3e43d546350ced8c', - './modules/Audit/Audit.php' => 'd43bf5585473b05f91ab6c11c36695f6', + './modules/Audit/Audit.php' => '9bcff57e4079aa1c812df074b5e0ab10', './modules/Audit/field_assoc.php' => '00f694000b29379563ab90fb21a88ecb', './modules/Audit/Popup_picker.html' => 'b8b1dcfcc518c978155496285ff7dcaa', './modules/Audit/Popup_picker.php' => '369ed37e8871947cae810838e9ad3f8d', @@ -3506,13 +3508,13 @@ $md5_string = array ( './modules/Cases/Dashlets/MyCasesDashlet/MyCasesDashlet.php' => '6681a60a934612ae489592f2fd976d11', './modules/Cases/Dashlets/MyCasesDashlet/MyCasesDashlet.data.php' => '78590a9ee41fffceb0b06f1a05d711e4', './modules/Cases/language/en_us.lang.php' => '0130e84c1b1b56106feadeac5847e1ff', - './modules/Cases/Case.php' => '2cb2cf7d9559c484dc319f923496c49f', + './modules/Cases/Case.php' => '861df4f7a833be8214429234b4b48a25', './modules/Cases/SugarFeeds/CaseFeed.php' => 'f28ac1cf2e358afa0981b2c50d699669', './modules/Documents/documents.js' => '711c1c3534c03089c931006ba71abbaa', './modules/Documents/GetLatestRevision.php' => '4810e123a8d2793523ba6010bcf3a55f', './modules/Documents/tpls/view.extdoc.tpl' => '1ca19fa9546ede05285d2f84a7dad8b1', './modules/Documents/Menu.php' => '380b1812ad68a9b70f6940ee3ffb3590', - './modules/Documents/vardefs.php' => '1dbee77a59d3edfd6dd2f4a085cc0c8b', + './modules/Documents/vardefs.php' => 'f6e24627374f2b0359f89ba9e62875be', './modules/Documents/DocumentExternalApiDropDown.php' => 'd4a205ecc9c70686ba90822eede2e54a', './modules/Documents/views/view.edit.php' => '51ffc2415e3a6d4f3f3fd8f310451256', './modules/Documents/views/view.extdoc.php' => '4952ce7d1ad95f8544ab63eba854eec0', @@ -3524,7 +3526,7 @@ $md5_string = array ( './modules/Documents/metadata/subpaneldefs.php' => '759fad9cc6489413f566a6a7ad3a794e', './modules/Documents/metadata/quickcreatedefs.php' => '05b82e7da22c28c818fc2523a66263ce', './modules/Documents/metadata/editviewdefs.php' => '77320823297fcada95e446f1cd64d81e', - './modules/Documents/metadata/SearchFields.php' => '608a6c85b7ddbef2a920b1a1ea1fec29', + './modules/Documents/metadata/SearchFields.php' => 'ee5ae6688cde34397b7ab992d031fdc6', './modules/Documents/metadata/subpanels/ForContractType.php' => 'feeaf252241c5250193c3253b05ed029', './modules/Documents/metadata/subpanels/default.php' => '7e26119a66c3d78871cbfe8e8ada5599', './modules/Documents/metadata/listviewdefs.php' => '1568c1a339cd9ec2cb21bc31a41b2bed', @@ -3547,7 +3549,7 @@ $md5_string = array ( './modules/DynamicFields/templates/Fields/TemplateRelatedTextField.php' => '5f5e0cbb4e4f7781176cfd2338267580', './modules/DynamicFields/templates/Fields/TemplateAddressCountry.php' => 'b6c42b51c77c9c260677a0c9a3990c5b', './modules/DynamicFields/templates/Fields/TemplateHTML.php' => '54a7b54e35652a082428b4680b93cc95', - './modules/DynamicFields/templates/Fields/TemplateInt.php' => '0938d72d6c7ec85dbd6abeae7a25456c', + './modules/DynamicFields/templates/Fields/TemplateInt.php' => '9d02b6819753b1ccf617eb4c5c70ec8b', './modules/DynamicFields/templates/Fields/TemplateIFrame.php' => 'e7b366897709c12396ac423cdf77b9dc', './modules/DynamicFields/templates/Fields/TemplateEncrypt.php' => '28db5af0d64cff070439a52b22588f50', './modules/DynamicFields/templates/Fields/TemplateBoolean.php' => 'a64de32021cb733c65fe52e7d886516a', @@ -3604,7 +3606,7 @@ $md5_string = array ( './modules/DynamicFields/templates/Fields/TemplateRadioEnum.php' => 'fd593ace4380d03f814902ef3c72acc0', './modules/DynamicFields/templates/Fields/TemplateURL.php' => '42ad0725334368ae17b70d6bb77be92e', './modules/DynamicFields/templates/Fields/TemplateId.php' => '1e60856dfe5c3b955d0ffb04337b7b8f', - './modules/DynamicFields/templates/Fields/TemplateField.php' => '554a321a19ab27f46dcc8d3380e27272', + './modules/DynamicFields/templates/Fields/TemplateField.php' => 'a86c6031fbd920a9e93accce1cd12411', './modules/DynamicFields/templates/Fields/TemplateCurrency.php' => 'ea510b1868f5dc211521653c976f4b1e', './modules/DynamicFields/templates/Files/EditView.php' => '8f438261aedc77e16c79c1cae4d3a9ac', './modules/DynamicFields/templates/Files/DetailView.php' => '6761c1d44ae1c7931778addfec404c4e', @@ -3653,9 +3655,9 @@ $md5_string = array ( './modules/Charts/code/Chart_my_pipeline_by_sales_stage.php' => 'b113bc62d9939b9c88de397e0dbf4281', './modules/Charts/code/Chart_pipeline_by_sales_stage.php' => '1206aa03a657c8742077b049c6cffec9', './modules/Charts/code/Chart_pipeline_by_lead_source.php' => 'ba05404a1f840ff230b153b35b912c23', - './modules/Calendar/Cal.js' => 'f3f00cbef5407be1ce27a7ba6f033b99', - './modules/Calendar/CalendarGrid.php' => '68c7e798f08e112dee5a8f3542ad8368', - './modules/Calendar/Cal.css' => '1ed34bc3e3f614b7e9e5a18b373512dd', + './modules/Calendar/Cal.js' => '08fc0b75cdcd21404730b44e2f807421', + './modules/Calendar/CalendarGrid.php' => '5d18df889c49932ea8b36f5bea07e62e', + './modules/Calendar/Cal.css' => '386d40836c98a4c8de44da1f169e593f', './modules/Calendar/tpls/footer.tpl' => '8587ef6903693da23a0ad7d27755c553', './modules/Calendar/tpls/repeat.tpl' => 'a522ad903cfad55945eff151fb0e223b', './modules/Calendar/tpls/shared_users.tpl' => '06446eeee9f3f40013e89d185706e3f7', @@ -3674,7 +3676,7 @@ $md5_string = array ( './modules/Calendar/views/view.json.php' => '2a93cc143f5d3f87dc59471e882259cc', './modules/Calendar/views/view.createinvitee.php' => '5cc0043299bc87a50f11f39b0237f02d', './modules/Calendar/controller.php' => '8d44b719477f93a1b98672f2f6242eff', - './modules/Calendar/Calendar.php' => '02a041c637f16e47d3e959fdf20e24a8', + './modules/Calendar/Calendar.php' => '342096ff1511f3576e0d4463a4347599', './modules/Calendar/CalendarActivity.php' => '9eac3e1869f800aa628952c4c4c93497', './modules/Calendar/action_view_map.php' => 'b74c6e6a7f6077bc55b65e804d05ff87', './modules/Calendar/Dashlets/CalendarDashlet/CalendarDashletOptions.tpl' => 'a0f81fa8cfa7eb8101515590d669f551', @@ -3832,13 +3834,13 @@ $md5_string = array ( './modules/Help/language/en_us.lang.php' => '5d812d2e4d54e4d42a183759d37a08d5', './modules/Configurator/tpls/addFontView.tpl' => 'e9648c46d6531dd171be401321a65209', './modules/Configurator/tpls/SugarpdfSettings.tpl' => '531e1a326d57e6fc4ad8d13c2396725e', - './modules/Configurator/tpls/adminwizard.tpl' => 'e7e09002098922f095c198018d8751f8', + './modules/Configurator/tpls/adminwizard.tpl' => '8ca3b6a6ff4601c1497a48a86183f89f', './modules/Configurator/tpls/fontmanager.tpl' => '1825567230ccefbe24318f6e87fd18a8', - './modules/Configurator/tpls/EditView.tpl' => '5783783b2a2ef3c8d60fb764fe2e9158', + './modules/Configurator/tpls/EditView.tpl' => '1dcfefd2b20650c81d68d40ebb02c687', './modules/Configurator/tpls/SugarpdfSettingsFields.tpl' => '220de2fecf8bd16f2a6bde807a3d1196', './modules/Configurator/tpls/addFontResult.tpl' => '883aab2f2c47f7dd78d69d8094257a79', './modules/Configurator/Menu.php' => '5cbc243dd9e97433e65b6c2c97a5249b', - './modules/Configurator/Configurator.php' => '22552174f794a9099e8df3232ac5a0ba', + './modules/Configurator/Configurator.php' => '446d8302f497e594b7007d9ffb146ae3', './modules/Configurator/views/view.sugarpdfsettings.php' => 'c103556cc9abd3acaa666fb9787e1aee', './modules/Configurator/views/view.addfontresult.php' => '2e92eedd9ae52db5903bb11d5286b77b', './modules/Configurator/views/view.addfontview.php' => '4219a23aa0e9d936b847dc353aa1bd2b', @@ -3846,11 +3848,11 @@ $md5_string = array ( './modules/Configurator/views/view.adminwizard.php' => '9480e2203342deabc404d9768bee258f', './modules/Configurator/views/view.fontmanager.php' => 'ce7094f56148716bbf592e6ee39c5c79', './modules/Configurator/controller.php' => 'b0a13efcd7259e5228b0e4e5153aa69c', - './modules/Configurator/UploadFileCheck.php' => '29d3d018e9753c078562f9c945a4cf4a', + './modules/Configurator/UploadFileCheck.php' => '9a1798632fb86b8f1d4e8dc244f51f6e', './modules/Configurator/LogView.php' => '765205bf61f4ccf357703f41fec2c61b', './modules/Configurator/metadata/SugarpdfSettingsdefs.php' => '11e35d8657b2f5fa72588ec9fab24f54', './modules/Configurator/action_view_map.php' => '335f3982fdb42f04ed981f930a82c733', - './modules/Configurator/language/en_us.lang.php' => '8ced23a587b14a9e951f5c8797584dc9', + './modules/Configurator/language/en_us.lang.php' => '8810b74c01358876bdeaf1eeee5b042e', './modules/Configurator/Forms.php' => 'ce7ede2f412813db12e761d60c2eeff1', './modules/Schedulers/Schedulers.js' => 'ce310f70ad5579397f7af6609a4d6601', './modules/Schedulers/_AddJobsHere.php' => '2b34d37bb8897cdd0d1100e9f90e6dba', @@ -3919,14 +3921,14 @@ $md5_string = array ( './modules/InboundEmail/DetailView.php' => 'a171268c4c9e85ac2fc62efce30deeb7', './modules/InboundEmail/Delete.php' => 'b49ee65d8850ff8ff370ebf237b0acb5', './modules/InboundEmail/Popup.php' => '472052c2da7990c6e8d63a0a2dccbbd2', - './modules/InboundEmail/InboundEmail.php' => '06b4db5d0b2a6f0febff7b538897f237', + './modules/InboundEmail/InboundEmail.php' => 'ca1009a956a5d7740a576b0e05c397ec', './modules/InboundEmail/ListView.html' => 'd76aa28386e3f7165f62dabfc6f0beb7', './modules/InboundEmail/index.php' => '6b54e0739c45bd059cc2da5f3aa41d9a', './modules/InboundEmail/language/en_us.lang.php' => 'ae833e99a3be579da67788c144af7ee2', './modules/InboundEmail/InboundEmailTest.php' => '04ac2888e0372a0315d4086ec2e765f5', './modules/InboundEmail/SaveGroupFolder.php' => '59a7d467ab0166f09f5b0e746898fecb', './modules/InboundEmail/EditView.html' => 'b6bd18a951e87e1867709dd48b1be198', - './modules/ModuleBuilder/tpls/layoutView.tpl' => 'cb1e0bd7dddfe9f9280cef0cd7841c4c', + './modules/ModuleBuilder/tpls/layoutView.tpl' => '20e973581c87254cb0ff8535722eab38', './modules/ModuleBuilder/tpls/tabBG.png' => '8e2561b0bba66f327d602e6c5f06aa08', './modules/ModuleBuilder/tpls/LayoutEditor.css' => 'd05c482d3367fb032f5314210df2ffee', './modules/ModuleBuilder/tpls/includes.tpl' => '10927a4f55674bb2ab628a67dfa6c696', @@ -3979,7 +3981,7 @@ $md5_string = array ( './modules/ModuleBuilder/parsers/relationships/OneToManyRelationship.php' => '76761d4122cd790065a59f92bd64bc96', './modules/ModuleBuilder/parsers/views/UndeployedMetaDataImplementation.php' => 'd08c83158fc599313de72722cc8d9ea9', './modules/ModuleBuilder/parsers/views/UndeployedSubpanelImplementation.php' => '9bf70fa555014fd415478b66ee2de930', - './modules/ModuleBuilder/parsers/views/GridLayoutMetaDataParser.php' => 'bdc0b4a67e68bb9832792ea411c9b851', + './modules/ModuleBuilder/parsers/views/GridLayoutMetaDataParser.php' => '077c65a76467be03f17fd0c677b090fa', './modules/ModuleBuilder/parsers/views/PopupMetaDataParser.php' => '983372e3529c23ff91237434f7c3e9bb', './modules/ModuleBuilder/parsers/views/MetaDataImplementationInterface.php' => '96a4fcfa2ee73ff09cb2d868c3ac686f', './modules/ModuleBuilder/parsers/views/DashletMetaDataParser.php' => '5135692589012551cd63d5efd43419e1', @@ -4006,7 +4008,7 @@ $md5_string = array ( './modules/ModuleBuilder/Module/StudioBrowser.php' => '92c13d7c173dd243c2a72c821c17189f', './modules/ModuleBuilder/Module/StudioModule.php' => '0e155825ee6a96f535e3c6af592dd63d', './modules/ModuleBuilder/Module/DropDownTree.php' => '1efd3171700422c9bb838a0e8a8c8699', - './modules/ModuleBuilder/Module/DropDownBrowser.php' => '70c0cff3e4a7abee8a2a4bac01539837', + './modules/ModuleBuilder/Module/DropDownBrowser.php' => '54941ae8cd4c1e03a9f1be7c3e3d2986', './modules/ModuleBuilder/views/view.modulefield.php' => '0ddd7c1412185c73d3aa2428d7ca8ecb', './modules/ModuleBuilder/views/view.relationship.php' => '59e94a5659c958248c3b6353e19ad4d0', './modules/ModuleBuilder/views/view.history.php' => '300fe8425bd9b4758ed01d7796c295c1', @@ -4152,7 +4154,7 @@ $md5_string = array ( './modules/Tasks/metadata/subpaneldefs.php' => 'cfa7544de231f3daffbaece1d48655c9', './modules/Tasks/metadata/quickcreatedefs.php' => '9d385c050c7ead7d2d698887eb3fe1a2', './modules/Tasks/metadata/editviewdefs.php' => '461320d490b0398fffba60497a02d594', - './modules/Tasks/metadata/SearchFields.php' => '2e08c8ce66caa17c674e6b809ccdbbb0', + './modules/Tasks/metadata/SearchFields.php' => '81e93ca7dfd9de7981ebda84362746ff', './modules/Tasks/metadata/subpanels/ForHistory.php' => '1eea93c5de3105495821a023a45198cd', './modules/Tasks/metadata/subpanels/ForActivities.php' => '738f9593ba4cd389426340287c179eea', './modules/Tasks/metadata/subpanels/default.php' => '2d260e7503281518adee7ced2a4d1158', @@ -4231,7 +4233,7 @@ $md5_string = array ( './modules/Relationships/field_arrays.php' => '0e9ae35075b93e5f19410f91588acb31', './modules/Relationships/action_view_map.php' => '571dd4e63fb4538d31137ac12311c3b1', './modules/Relationships/language/en_us.lang.php' => 'aedca7f749595dbd168ea856a8c8a994', - './modules/Relationships/Relationship.php' => 'fb440b8891482cf38346f03c0129070e', + './modules/Relationships/Relationship.php' => '453b5c687260c99a9460c1c5d80098bb', './modules/Relationships/editFields.tpl' => '07ad08575936353bba4ebe7515a96294', './modules/Versions/vardefs.php' => '91041d04251a8b15600e27294b7b41a2', './modules/Versions/CheckVersions.php' => 'fefc1527a49913ca604a58355c09d922', @@ -4243,7 +4245,7 @@ $md5_string = array ( './modules/Versions/index.html' => 'af8417bd71dc406e87cc5068181d93d4', './modules/Versions/ExpectedVersions.php' => 'fd957e25b1f781c4bfcc2634982cb0fb', './modules/EmailMan/EmailManDelivery.php' => 'e8df08d36ff1722cb5e0e2f6932beadf', - './modules/EmailMan/tpls/config.tpl' => '7e55d7fa49f3392f7ce2e221da9c8615', + './modules/EmailMan/tpls/config.tpl' => '71227a0e614394d2dbd88c454c48f61f', './modules/EmailMan/tpls/campaignconfig.tpl' => '48dfd3bdc7b02bf2790f5baa8cf74911', './modules/EmailMan/EmailMan.php' => '2ca8c32e6bdb94fa586c3a88e1cc5a47', './modules/EmailMan/Menu.php' => 'e42681e7ce08924a06d020bd27f291c4', @@ -4273,7 +4275,7 @@ $md5_string = array ( './modules/Users/Save.php' => '51cbd4dede5b4547eb3075830664dbd5', './modules/Users/tpls/DetailViewFooter.tpl' => '41360606a7be7665511d0a4edfb4924b', './modules/Users/tpls/EditViewFooter.tpl' => 'd9e9670a7b2eaa592ea7f72897bf80b7', - './modules/Users/tpls/EditViewHeader.tpl' => '970b6de2f23eeac8d273ff4e1694a589', + './modules/Users/tpls/EditViewHeader.tpl' => 'a3db8cb89fe92f5d15ad18aee0587848', './modules/Users/tpls/wizard.tpl' => 'f8f87728585eb6f754f0d5ec52d640ff', './modules/Users/tpls/QuickEditFooter.tpl' => 'ca1415ac61ae726339e359a43a25d97e', './modules/Users/tpls/DetailViewHeader.tpl' => '19474abc8c3237969d39112b812770ca', @@ -4303,7 +4305,7 @@ $md5_string = array ( './modules/Users/authentication/LDAPAuthenticate/LDAPConfigs/default.php' => 'ca2447e635257835058b49b06d2234a8', './modules/Users/authentication/LDAPAuthenticate/LDAPAuthenticate.php' => '772663335111c6ced3f8adffe3fd78c2', './modules/Users/login.css' => '7bd919080a241940a69df4cdf31247b3', - './modules/Users/reassignUserRecords.php' => '74bab799f0fa4591090d3f7c6c29c250', + './modules/Users/reassignUserRecords.php' => 'c056d5516a8173b4eba06c60c12ed496', './modules/Users/views/view.quickedit.php' => '5a458c0188281d6ef893bf9e066ad4c6', './modules/Users/views/view.wizard.php' => '0ee43721692818879c9ccf06e102bf3b', './modules/Users/views/view.list.php' => '2da7405c724b558b493865af34b4523c', @@ -4347,7 +4349,7 @@ $md5_string = array ( './modules/Users/UserSignature.php' => '410eac350e431f5f5e88ca59a01ad7d3', './modules/Users/Popup_picker.html' => '44ecf49fcfd43110437ff32d25736fa1', './modules/Users/Changenewpassword.php' => 'a4c0bfaaf278973c844be58320b81e53', - './modules/Users/language/en_us.lang.php' => '4bb673fcd8bc1a00b98bbe7cd2a476a2', + './modules/Users/language/en_us.lang.php' => '358d4575a02576bd6931e1f2df59fb1e', './modules/Users/Logout.php' => '4d8773fffd6b85b1f39a61e05faf472f', './modules/Users/Popup_Users_picker.html' => '72ca55f89e936ccf6c8b1f252ee54236', './modules/Users/Changenewpassword.tpl' => '8d01c6786232a13cb1ced470885ca4b5', @@ -4493,19 +4495,19 @@ $md5_string = array ( './modules/Calls/metadata/searchdefs.php' => '892464b109427176fc0dc9ca870ae1e4', './modules/Calls/metadata/subpaneldefs.php' => '74cfe6de17819f40cc6aca39a688a4bd', './modules/Calls/metadata/quickcreatedefs.php' => 'b9a18b440a38cffd04461985c688cbbd', - './modules/Calls/metadata/editviewdefs.php' => '6c787c7222f694f7fe39dbc834ca7304', + './modules/Calls/metadata/editviewdefs.php' => '716496f9957a632976fa583a0d075196', './modules/Calls/metadata/SearchFields.php' => '478819054d7ea0c931e4601ccbfd62b4', './modules/Calls/metadata/subpanels/ForHistory.php' => 'f645f3a7148de0c2ad69f2c8c9797784', './modules/Calls/metadata/subpanels/ForActivities.php' => '9c8bae8ce3153c87403ea4b9c3ee0d19', './modules/Calls/metadata/subpanels/default.php' => '4fbf82faf4dba22e06c831a53ccec22b', './modules/Calls/metadata/listviewdefs.php' => 'd8fbb386c9825e95b0d20a90bef4a1fc', - './modules/Calls/metadata/additionalDetails.php' => '806492f1654ddb97a247b3d7957b0abf', + './modules/Calls/metadata/additionalDetails.php' => 'cc43fbd7765ff15ae91a8af69e0a6870', './modules/Calls/metadata/studio.php' => 'fe87c7c9d8abf393806b94bbb9313d60', './modules/Calls/metadata/detailviewdefs.php' => '6136bdc6c445025f4f874ac29ccc065f', './modules/Calls/Dashlets/MyCallsDashlet/MyCallsDashlet.data.php' => 'bbb096633528bb22b112d6e3dc78d9d1', './modules/Calls/Dashlets/MyCallsDashlet/MyCallsDashlet.meta.php' => '81158ed6fa50d810929b4ff429657161', './modules/Calls/Dashlets/MyCallsDashlet/MyCallsDashlet.php' => '6bf0c16b793ffcadcf14333530dafe83', - './modules/Calls/language/en_us.lang.php' => '5f6da2cf0046ce8a179f4f6f68397618', + './modules/Calls/language/en_us.lang.php' => '7fb36747cd1457db91de6f2f10f04a5f', './modules/Calls/SubPanelViewInvitees.html' => '4e7eeaa3d0ea3807ce8632669df1e176', './modules/ACLActions/ACLAction.php' => '46bd8be93b5b7dc499a1e6da89e3e4e9', './modules/ACLActions/Menu.php' => '8e2a919d4a5ef7be81da1d595c040756', @@ -4557,7 +4559,7 @@ $md5_string = array ( './modules/Connectors/connectors/sources/ext/rest/insideview/mapping.php' => 'f1eaaa85b15bbdcf4a2471d92830e663', './modules/Connectors/connectors/sources/ext/rest/insideview/language/en_us.lang.php' => 'd5b5b276a5aee95b4d9dcb26d3c4dacf', './modules/Connectors/connectors/formatters/ext/rest/linkedin/tpls/linkedin.gif' => '3440ba160f32d8eb17a5b2ed03be60c6', - './modules/Connectors/connectors/formatters/ext/rest/linkedin/tpls/default.tpl' => '4178c90549d8462d9f69355379ce50a1', + './modules/Connectors/connectors/formatters/ext/rest/linkedin/tpls/default.tpl' => 'ff87541a5010e346747596c6cfd05285', './modules/Connectors/connectors/formatters/ext/rest/linkedin/linkedin.php' => '58409ed6395326c6f7a2607a482acd59', './modules/Connectors/connectors/formatters/ext/rest/twitter/tpls/twitter.gif' => '025ad081fbafed4577cc09c9eddb9a8d', './modules/Connectors/metadata/searchdefs.php' => 'a0644cec088c95ecbb1af6013c77099b', @@ -4622,7 +4624,7 @@ $md5_string = array ( './modules/Accounts/Popup_picker.html' => 'fc87828927b063bf8b812253e9f470df', './modules/Accounts/AccountFormBase.php' => '0529447d14b2e49f73d47a8c2e1bb714', './modules/Accounts/language/en_us.lang.php' => '863b8d5a0bfed32de162df9dbb6292ae', - './modules/MySettings/TabController.php' => '1cd4a3c2b61bb33621899c23c0c9620f', + './modules/MySettings/TabController.php' => '2f5db02f78197c3828226441a57ea84f', './modules/MySettings/LoadTabSubpanels.php' => 'bf5d62359fbaf54c44c4fb564f4cece0', './modules/MySettings/language/en_us.lang.php' => 'd4abf88d2579a1d47f25be4b8f7bc531', './modules/MySettings/StoreQuery.php' => '8423a5e81861ef165e3b628f0b4c3b3a', @@ -4779,7 +4781,7 @@ $md5_string = array ( './modules/vCals/HTTP_WebDAV_Server_vCal.php' => '5a6b18b368756d72906cb30a6a8c5bbe', './modules/vCals/field_arrays.php' => 'edf597f757a7476101f8c0a6f9ae7bd5', './modules/vCals/vCal.php' => 'fa6be09ed4e177d569a1427d64862f7a', - './modules/Bugs/Bug.php' => '3badfdca740aa6547bc04644efa3c470', + './modules/Bugs/Bug.php' => '4d81ce0448c970a0f04287e359dd02ed', './modules/Bugs/tpls/QuickCreate.tpl' => '8cb257fc67aa10e35b93927896fcc61f', './modules/Bugs/Menu.php' => '08b918b895b6e4e30507e6329482da6e', './modules/Bugs/vardefs.php' => 'f5ea3eb73c1778791525d349a803d06f', @@ -4916,7 +4918,7 @@ $md5_string = array ( './modules/Import/views/view.step2.php' => '0d92e6b7b74f46b33ad4764cc10bbb4a', './modules/Import/views/ImportListView.php' => '8a86c159a94446b315785c4ca0f8fa25', './modules/Import/views/view.step4.php' => '2759ba63cac39f2d75fa521bbc9c2b3d', - './modules/Import/views/view.last.php' => 'bc5a15d0de7e49c018e5f4514afc373f', + './modules/Import/views/view.last.php' => '7de2a0605e5f6dc2989f0b7ee75a98c5', './modules/Import/views/ImportView.php' => '2f5f4cdad18fe3d61da136238dc07fd0', './modules/Import/views/view.undo.php' => '445e58df91429d47e2e34192ea4f7892', './modules/Import/views/view.step1.php' => '7a6f866ef1917412702b560b613d2a9c', @@ -4994,7 +4996,7 @@ $md5_string = array ( './modules/Meetings/tpls/extMeetingNotInvited.tpl' => '4cd1dd9a2f232673e7828455bb0df98e', './modules/Meetings/tpls/extMeetingNoStart.tpl' => '4f0e0734534e99f878aa68196f46678f', './modules/Meetings/tpls/detailHeader.tpl' => '80c5550af52dc424831101182a9a0dce', - './modules/Meetings/tpls/reminders.tpl' => '9d18ebe8e3a253e5643ecc5384367c2f', + './modules/Meetings/tpls/reminders.tpl' => '394f1ff57bdfef5047e57e3e7807631b', './modules/Meetings/Menu.php' => '63348eb6a3845e5d48389fe80ed6bfff', './modules/Meetings/vardefs.php' => '36101b541ce81f67bb17078a3bc17063', './modules/Meetings/JoinExternalMeeting.php' => 'b71a1a110ff5483fc45d49859d1a5ed4', @@ -5013,7 +5015,7 @@ $md5_string = array ( './modules/Meetings/metadata/subpanels/ForActivities.php' => '06fbdaca02a664e63b06dd5cef35ca0a', './modules/Meetings/metadata/subpanels/default.php' => 'e8eee50236ef267923a9e5953ac2e48c', './modules/Meetings/metadata/listviewdefs.php' => 'fa302246f3795a3fcfe46455158eccc7', - './modules/Meetings/metadata/additionalDetails.php' => 'c98a17cfb10dade0d36e0596c87a6a72', + './modules/Meetings/metadata/additionalDetails.php' => '2001e3dfc42f3667b3abfc25125ee621', './modules/Meetings/metadata/studio.php' => 'd8ec9c1a4d2c17483fdce4a8753e61ca', './modules/Meetings/metadata/detailviewdefs.php' => 'c1e4cacdb55a8d50419815b28764b5da', './modules/Meetings/action_view_map.php' => '783a7b699c3b3ce049ca2e3bde08d856', @@ -5021,7 +5023,7 @@ $md5_string = array ( './modules/Meetings/Dashlets/MyMeetingsDashlet/MyMeetingsDashlet.meta.php' => '1f17c035ab5229249ccb4dbbb51a1d39', './modules/Meetings/Dashlets/MyMeetingsDashlet/MyMeetingsDashlet.php' => '4a6c86deb8c094a5eee079604ea3af3b', './modules/Meetings/MeetingsQuickCreate.php' => '5e67b447ae39ad80afe5588a4a293388', - './modules/Meetings/language/en_us.lang.php' => '4fcd9d9fce88d839ec13baa9600f7cd2', + './modules/Meetings/language/en_us.lang.php' => '5fdc57290ad2a3267928821da294b0dc', './modules/Meetings/SubPanelViewInvitees.html' => '7f9d1da5e8384457cadabf14412a88a5', './modules/Meetings/MeetingFormBase.php' => '125d67b87d70e61e2e074c9279bb4090', './modules/Administration/RepairIndex.php' => '31d55e4ce8069277191685e503ade848', @@ -5046,12 +5048,12 @@ $md5_string = array ( './modules/Administration/UpgradeWizardCommon.php' => '6692078482ee14f39d6120ed762a83d8', './modules/Administration/index.tpl' => 'c934bbbb1b6c1d224160d3eb2474f880', './modules/Administration/ExportCustomFieldStructure.php' => 'ee31a1faf8364f2164b6b0dd3561c920', - './modules/Administration/RebuildConfig.php' => '6d675ab605c6d2414cea49a31d1a867c', + './modules/Administration/RebuildConfig.php' => '39fe5857d01ec5a38c41f25deba490e3', './modules/Administration/expandDatabase.php' => 'e8a4f5cbf41fd945eb7cfd1304ffcaed', './modules/Administration/UpgradeWizard_commit.php' => '79ad4c6de14e1d3c8fe3cd28088d6d1a', './modules/Administration/RebuildSchedulers.php' => '8a019b515ec6b861b5d8389d8db6cbc4', './modules/Administration/RebuildJSLang.php' => 'c805d230536a0a2588b2f354bebca2f7', - './modules/Administration/Administration.php' => '8a972beb37ff7f35f024f96c42fea740', + './modules/Administration/Administration.php' => '573341a9042e3eeacd70e1ac2f7541a5', './modules/Administration/DiagnosticRun.php' => '71ec61f38b53d9c45430ad010f073744', './modules/Administration/views/view.configureajaxui.php' => '3668e9bc0b0bb4cb389d8a848d4c4ec4', './modules/Administration/views/view.themesettings.php' => 'ebb08498472f303fc6833164c9dc35db', @@ -5179,7 +5181,7 @@ $md5_string = array ( './modules/Prospects/tpls/QuickCreate.tpl' => '48ace80607d75ccb2269d253f881b2cc', './modules/Prospects/tpls/DetailViewHeader.tpl' => 'dd705a91289d9c51886ecc83e55a0a3b', './modules/Prospects/Menu.php' => '031eb2423070dee242ec8f0a7c7d43e1', - './modules/Prospects/vardefs.php' => 'a2f530627be82745b14f1da5a4e54b6a', + './modules/Prospects/vardefs.php' => 'c932d472671510e6917825b69f5c484e', './modules/Prospects/ProspectFormBase.php' => 'e5fa28819dd0ea142f07e3d476ac607b', './modules/Prospects/views/view.list.php' => '5b3e15e3d2b5c7da3eb281a234de5a3e', './modules/Prospects/views/view.edit.php' => 'b170b99f193319f44795cdea735b3cdd', @@ -5203,7 +5205,7 @@ $md5_string = array ( './modules/Prospects/Import.php' => '614497f986383f860516ab61657971cc', './modules/Home/about.js' => '03fa705aef3b3a4b5ab6ac20d2fed0c0', './modules/Home/tour.js' => '02de392c74cf4fe1ee3d2420b1909853', - './modules/Home/tour.css' => '010dec86c845782e324a5a24d6ed7766', + './modules/Home/tour.css' => '50c0d1290fa8a412910733605d3739fe', './modules/Home/Home.html' => 'db09f83e17d4b882ef673c2cd01751ec', './modules/Home/tour.tpl' => '990ef52a6086b790c4ee6f40c312015d', './modules/Home/SubpanelEdits.php' => 'a7c382727fd45ea8e3f3be39846b7ada', @@ -5223,7 +5225,7 @@ $md5_string = array ( './modules/Home/UnifiedSearchAdvanced.tpl' => 'e0c7d63a16de2718887838c5617ac706', './modules/Home/action_view_map.php' => 'a4266c315f2561350486347856a74b34', './modules/Home/TrainingPortal.tpl' => '1e181d4b3f021a74b7ce165a71558863', - './modules/Home/Dashlets/ChartsDashlet/ChartsDashlet.php' => 'b1d170d157bdbd192a1aab8d2141fa56', + './modules/Home/Dashlets/ChartsDashlet/ChartsDashlet.php' => '90315fd8af602895c044715df7eef137', './modules/Home/Dashlets/ChartsDashlet/ChartsDashletScript.tpl' => '2df14de190bfe8608d647ab00264fd0e', './modules/Home/Dashlets/ChartsDashlet/ChartsDashlet.en_us.lang.php' => 'eba1a456bf639ba649b8bec503776be2', './modules/Home/Dashlets/ChartsDashlet/ChartsDashlet.meta.php' => '4a0ce2d02f29a09782be1eeb4ce5c00d', @@ -5270,13 +5272,13 @@ $md5_string = array ( './modules/Home/TrainingPortal.php' => '1ec4a300d6dfd51f80eb642eee05f0f0', './cache/include/javascript/sugar_grp_jsolait.js' => '9aced6d7d2669515690f61e506834ed9', './cache/include/javascript/sugar_grp_quickcomp.js' => '464a1159cee19a73c9a4035b47a6e18e', - './cache/include/javascript/sugar_grp_emails.js' => '966628c4d758082a9a8250ef64d1c5b1', + './cache/include/javascript/sugar_grp_emails.js' => 'f7b4e51bb49e38469713799426d8eca6', './cache/include/javascript/sugar_grp_yui2.js' => '53c8d4d026a0adc7ea775e6488245de5', './cache/include/javascript/sugar_grp_yui_widgets.css' => '17f5b268fda1a8a3e27b41ebefe4d408', './cache/include/javascript/sugar_grp_yui_widgets.js' => '35fe43cba48260f75b169dd1af5c64fe', './cache/include/javascript/sugar_grp1_yui.js' => '9c3853420e26cad638181691de71e991', './cache/include/javascript/sugar_field_grp.js' => '339b3b1d92f554dbac7fad410360c8f1', - './cache/include/javascript/sugar_grp1_jquery.js' => '49498e5d14244f125e6bcadbd6e1ea7d', + './cache/include/javascript/sugar_grp1_jquery.js' => '9c164fdc669d8af0c3e11559154a214c', './cache/include/javascript/sugar_grp1.js' => '7a7f9d3e7e0ec6f805b291f9d905db63', './cache/layout/index.html' => '9cd784063d39b18d308932c28c385853', './cache/images/index.html' => '9cd784063d39b18d308932c28c385853', @@ -5348,7 +5350,7 @@ $md5_string = array ( './metadata/prospect_lists_prospectsMetaData.php' => 'fe3dc7d813428ca0fa774884a88ef5c4', './metadata/inboundEmail_autoreplyMetaData.php' => '7c670a62c7142827bbdf675c8b4be221', './metadata/acl_roles_actionsMetaData.php' => 'a3446107943a271bf6e329a80deb06e8', - './sugar_version.php' => '0cebec6c0b594e0b0ec24f6752d3cda8', + './sugar_version.php' => '4f6fe3fd3b40543a4fa4362a8ec2291f', './cron.php' => '96a6fd7893809132e902086e77dde30c', './log4php/LoggerManager.php' => 'fa34194306cd50c01b71d8d5060ee362', './TreeData.php' => '7040af43bf01c450f4e225ece5e3f30c', @@ -6642,13 +6644,13 @@ $md5_string = array ( './jssource/src_files/modules/EAPM/EAPMEdit.js' => '127511d0f21897d3424692d2fa3b7b3f', './jssource/src_files/modules/Schedulers/Schedulers.js' => '60e06fbc7695f413cc76aef1f2c393ff', './jssource/src_files/modules/ACLRoles/ACLRoles.js' => 'a4e950601a92d86219b5b2c00c41fd74', - './jssource/src_files/modules/Calendar/Cal.js' => '7fa9105922a341193356923f36d71c08', + './jssource/src_files/modules/Calendar/Cal.js' => '1da5052ead1952855103a596421b8ac1', './jssource/src_files/modules/Documents/documents.js' => 'b15b9c6f9ec7ea2bc2ad3dbfb5de46bd', './jssource/src_files/modules/Leads/Lead.js' => 'c81abe209fd0eb0b07fe03e822181221', './jssource/src_files/modules/EmailTemplates/EmailTemplate.js' => '3ba07abfef8bbfbba604ed19ebd52fd0', './jssource/src_files/service/utils/SugarRest.js' => '25bb6ba045022c695e3b3582f4a00ce6', './jssource/src_files/include/MySugar/javascript/MySugar.js' => '33dea628a26df11e8d89eb78f4684db4', - './jssource/src_files/include/SugarEmailAddress/SugarEmailAddress.js' => '45cf765b2ff9dfe06a975df8464c615b', + './jssource/src_files/include/SugarEmailAddress/SugarEmailAddress.js' => '38bed07b58bbd3f74ab81c169089650e', './jssource/src_files/include/javascript/ajaxUI.js' => '47b2ebed0ecf6c97c8c676fa578a176d', './jssource/src_files/include/javascript/calendar.js' => '8a64349697d88a99b897514e60afcb4d', './jssource/src_files/include/javascript/iscroll.js' => 'b6c232e3c54b2a1320b22c7ad920c842', @@ -7460,7 +7462,7 @@ $md5_string = array ( './jssource/src_files/include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'c3b0f7249b491eafd0a09aaa2caceea5', './jssource/src_files/include/SugarFields/Fields/Time/Time.js' => 'e3ce55d6cf0f0e0a6ad6ab9edb3456e3', './jssource/src_files/include/SugarFields/Fields/Datetimecombo/Datetimecombo.js' => 'd98b2a1cd2cf9c9b6739015f98b1a9d4', - './jssource/src_files/include/SubPanel/SubPanelTiles.js' => '5744614fd3975ef20e3d876211d174ff', + './jssource/src_files/include/SubPanel/SubPanelTiles.js' => '2f2b0df84f862f7d6faf8bf0bc227c46', './jssource/src_files/include/HTMLPurifier/standalone/HTMLPurifier/Printer/ConfigForm.js' => 'ee5990d6bb62017463a7a8d72c8288b5', './jssource/minify.php' => '0af28efb7b3fb17907385d14b30672a3', './jssource/minify_utils.php' => 'f8041fdf57fcd09505abcb86e7f2f7b4', @@ -7515,7 +7517,7 @@ $md5_string = array ( './soap/SoapError.php' => 'dff0c6fc02f66fbb4f86a91691ee300e', './soap/SoapHelperFunctions.php' => '0cda7e6e106832d2b04dc2ce607ea614', './soap/SoapPortalHelper.php' => '302d5e90cf56d708b6d3f087fec2e72f', - './soap/SoapSugarUsers.php' => '139d0b860d8efdae004c89c28417e96c', + './soap/SoapSugarUsers.php' => 'c13cd8250bfdf16f6bcf7c9b8ade9e96', './soap/SoapStudio.php' => '0fd81758942a52940c119f3afa134fcd', './soap/SoapRelationshipHelper.php' => '03cfb58253ac766d90ddf57d38d36afe', './soap/SoapErrorDefinitions.php' => '0ba2c58cdbdaec479860537420e4cf30', diff --git a/get_url.php b/get_url.php new file mode 100644 index 00000000..1effe0c4 --- /dev/null +++ b/get_url.php @@ -0,0 +1,63 @@ +getComponent()->getSource()->getConfig(); + $url = $url['properties']['company_url']; + break; +} + +if ($url == '') +{ + return; +} + +$ch = curl_init(); +curl_setopt($ch, CURLOPT_URL, $url); +curl_setopt($ch, CURLOPT_TIMEOUT, '30'); +curl_exec($ch); +curl_close($ch); diff --git a/include/Dashlets/DashletGenericChart.php b/include/Dashlets/DashletGenericChart.php index 2319f54e..62f53fc7 100644 --- a/include/Dashlets/DashletGenericChart.php +++ b/include/Dashlets/DashletGenericChart.php @@ -138,7 +138,7 @@ abstract class DashletGenericChart extends Dashlet if($this->isRefreshable) $additionalTitle .= '' . translate('LBL_DASHLET_REFRESH', 'Home') . '' . translate('LBL_DASHLET_REFRESH', 'Home') . ''; return $additionalTitle; diff --git a/include/DetailView/header.tpl b/include/DetailView/header.tpl index 71bf7d09..2e4109e2 100644 --- a/include/DetailView/header.tpl +++ b/include/DetailView/header.tpl @@ -112,10 +112,12 @@ SUGAR.util.doWhen(function(){ {{* Add $form.links if they are defined *}} {{if !empty($form) && isset($form.links)}}   - - {{foreach from=$form.links item=link}} - {{$link}}  - {{/foreach}} + +
+ {{foreach from=$form.links item=link}} + {{$link}}  + {{/foreach}} +
{{/if}} diff --git a/include/ListView/ListViewData.php b/include/ListView/ListViewData.php index d8acba57..1de25c20 100644 --- a/include/ListView/ListViewData.php +++ b/include/ListView/ListViewData.php @@ -92,6 +92,13 @@ class ListViewData { $direction = 'DESC'; } } + if(!empty($direction)) { + if(strtolower($direction) == "desc") { + $direction = 'DESC'; + } else { + $direction = 'ASC'; + } + } return array('orderBy' => $orderBy, 'sortOrder' => $direction); } @@ -485,10 +492,10 @@ class ListViewData { if(!$this->seed->ACLAccess('ListView')) { $pageData['error'] = 'ACL restricted access'; } - + $queryString = ''; - - if( isset($_REQUEST["searchFormTab"]) && $_REQUEST["searchFormTab"] == "advanced_search" || + + if( isset($_REQUEST["searchFormTab"]) && $_REQUEST["searchFormTab"] == "advanced_search" || isset($_REQUEST["type_basic"]) && (count($_REQUEST["type_basic"] > 1) || $_REQUEST["type_basic"][0] != "") || isset($_REQUEST["module"]) && $_REQUEST["module"] == "MergeRecords") { @@ -596,12 +603,12 @@ class ListViewData { { $results['string'] = $app_strings['LBL_NONE']; } - $close = false; + $close = false; $extra = "{$app_strings['), $results['string']) ; $extra .= "','
{$app_strings['LBL_ADDITIONAL_DETAILS']}
"; - + if($editAccess && !empty($results['editLink'])) { $extra .= "getImageURL('edit_inline.png')."\'>"; @@ -609,12 +616,12 @@ class ListViewData { } $close = (!empty($results['viewLink'])) ? true : $close; $extra .= (!empty($results['viewLink']) ? "" : ''); - + if($close == true) { - $closeVal = "true"; + $closeVal = "true"; $extra .= "getImageURL('close.png')."\'>"; } else { - $closeVal = "false"; + $closeVal = "false"; } $extra .= "',".$closeVal.")\" src='".SugarThemeRegistry::current()->getImageURL('info_inline.png')."' class='info'>"; diff --git a/include/MVC/Controller/entry_point_registry.php b/include/MVC/Controller/entry_point_registry.php index 5d35e15c..78625261 100644 --- a/include/MVC/Controller/entry_point_registry.php +++ b/include/MVC/Controller/entry_point_registry.php @@ -53,6 +53,7 @@ $entry_point_registry = array( 'pdf' => array('file' => 'pdf.php', 'auth' => true), 'minify' => array('file' => 'jssource/minify.php', 'auth' => true), 'json_server' => array('file' => 'json_server.php', 'auth' => true), + 'get_url' => array('file' => 'get_url.php', 'auth' => true), 'HandleAjaxCall' => array('file' => 'HandleAjaxCall.php', 'auth' => true), 'TreeData' => array('file' => 'TreeData.php', 'auth' => true), 'image' => array('file' => 'modules/Campaigns/image.php', 'auth' => false), diff --git a/include/MVC/SugarApplication.php b/include/MVC/SugarApplication.php index 62486f7c..1f16b77f 100644 --- a/include/MVC/SugarApplication.php +++ b/include/MVC/SugarApplication.php @@ -359,10 +359,10 @@ class SugarApplication function checkDatabaseVersion($dieOnFailure = true) { $row_count = sugar_cache_retrieve('checkDatabaseVersion_row_count'); - if ( empty($row_count) ) { - global $sugar_db_version; + if ( empty($row_count) ) + { $version_query = "SELECT count(*) as the_count FROM config WHERE category='info' AND name='sugar_version' AND ". - $GLOBALS['db']->convert('value', 'text2char')." = ".$GLOBALS['db']->quoted($sugar_db_version); + $GLOBALS['db']->convert('value', 'text2char')." = ".$GLOBALS['db']->quoted($GLOBALS['sugar_db_version']); $result = $GLOBALS['db']->query($version_query); $row = $GLOBALS['db']->fetchByAssoc($result); @@ -370,12 +370,20 @@ class SugarApplication sugar_cache_put('checkDatabaseVersion_row_count', $row_count); } - if($row_count == 0 && empty($GLOBALS['sugar_config']['disc_client'])){ - $sugar_version = $GLOBALS['sugar_version']; + if ($row_count == 0 && empty($GLOBALS['sugar_config']['disc_client'])) + { if ( $dieOnFailure ) - sugar_die("Sugar CRM $sugar_version Files May Only Be Used With A Sugar CRM $sugar_db_version Database."); + { + $replacementStrings = array( + 0 => $GLOBALS['sugar_version'], + 1 => $GLOBALS['sugar_db_version'], + ); + sugar_die(string_format($GLOBALS['app_strings']['ERR_DB_VERSION'], $replacementStrings)); + } else + { return false; + } } return true; diff --git a/include/MVC/View/SugarView.php b/include/MVC/View/SugarView.php index b6e3bed8..c989ad75 100644 --- a/include/MVC/View/SugarView.php +++ b/include/MVC/View/SugarView.php @@ -442,7 +442,7 @@ class SugarView $tracker = new Tracker(); $history = $tracker->get_recently_viewed($current_user->id); foreach ( $history as $key => $row ) { - $history[$key]['item_summary_short'] = getTrackerSubstring($row['item_summary']); + $history[$key]['item_summary_short'] = to_html(getTrackerSubstring($row['item_summary'])); //bug 56373 - need to re-HTML-encode $history[$key]['image'] = SugarThemeRegistry::current() ->getImage($row['module_name'],'border="0" align="absmiddle"',null,null,'.gif',$row['item_summary']); } @@ -985,6 +985,18 @@ EOHTML; // End Required Image $ss->assign('COPYRIGHT',$copyright); + // here we allocate the help link data + $help_actions_blacklist = array('Login'); // we don't want to show a context help link here + if (!in_array($this->action,$help_actions_blacklist)) { + $url = 'javascript:void(window.open(\'index.php?module=Administration&action=SupportPortal&view=documentation&version='.$GLOBALS['sugar_version'].'&edition='.$GLOBALS['sugar_flavor'].'&lang='.$GLOBALS['current_language']. + '&help_module='.$this->module.'&help_action='.$this->action.'&key='.$GLOBALS['server_unique_key'].'\'))'; + $label = (isset($GLOBALS['app_list_strings']['moduleList'][$this->module]) ? + $GLOBALS['app_list_strings']['moduleList'][$this->module] : $this->module). ' '.$app_strings['LNK_HELP']; + $ss->assign('HELP_LINK',SugarThemeRegistry::current()->getLink($url, $label, "id='help_link_two'", + 'help-dashlet.png', 'class="icon"',null,null,'','left')); + } + // end + $ss->display(SugarThemeRegistry::current()->getTemplate('footer.tpl')); } @@ -1281,10 +1293,14 @@ EOHTML; if(!empty($paramString)){ $theTitle .= "

$paramString

\n"; } - $theTitle .= ""; - $createImageURL = SugarThemeRegistry::current()->getImageURL('create-record.gif'); - $url = ajaxLink("index.php?module=$module&action=EditView&return_module=$module&return_action=DetailView"); - $theTitle .= <<getImageURL('create-record.gif'); + $url = ajaxLink("index.php?module=$module&action=EditView&return_module=$module&return_action=DetailView"); + $theTitle .= << {$GLOBALS[ @@ -1292,8 +1308,10 @@ EOHTML; {$GLOBALS['app_strings']['LNK_CREATE']} EOHTML; + $theTitle .= ""; + } - $theTitle .= "
\n"; + $theTitle .= "
\n"; return $theTitle; } diff --git a/include/MySugar/MySugar.php b/include/MySugar/MySugar.php index a8bb2eab..8b055107 100644 --- a/include/MySugar/MySugar.php +++ b/include/MySugar/MySugar.php @@ -122,7 +122,7 @@ class MySugar{ } function displayDashlet(){ - global $current_user, $mod_strings; + global $current_user, $mod_strings, $app_strings; if(!empty($_REQUEST['id'])) { $id = $_REQUEST['id']; @@ -151,7 +151,7 @@ class MySugar{ } if(!empty($_REQUEST['dynamic']) && $_REQUEST['dynamic'] == 'true' && $dashlet->hasScript) { $dashlet->isConfigurable = false; - echo $dashlet->getTitle('') . $mod_strings['LBL_RELOAD_PAGE']; + echo $dashlet->getTitle('') . $app_strings['LBL_RELOAD_PAGE']; } else { $lvsParams = array(); diff --git a/include/SearchForm/SearchForm2.php b/include/SearchForm/SearchForm2.php index a72587cb..f156dd21 100644 --- a/include/SearchForm/SearchForm2.php +++ b/include/SearchForm/SearchForm2.php @@ -1007,36 +1007,45 @@ require_once('include/EditView/EditView2.php'); break; case 'like': - if($type == 'bool' && $field_value == 0) { + if($type == 'bool' && $field_value == 0) + { // Bug 43452 - FG - Added parenthesis surrounding the OR (without them the WHERE clause would be broken) $where .= "( " . $db_field . " = '0' OR " . $db_field . " IS NULL )"; } - else { - //check to see if this is coming from unified search or not + else + { + // check to see if this is coming from unified search or not $UnifiedSearch = !empty($parms['force_unifiedsearch']); if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'UnifiedSearch'){ $UnifiedSearch = true; } - - //check to see if this is a universal search OR the field has db_concat_fields set in vardefs, AND the field name is "last_name" - //BUG 45709: Tasks Advanced Search: Contact Name field does not return matches on full names - //Frank: Adding Surabhi's fix back which seem to have gone missing in CottonCandy merge - if(($UnifiedSearch || !empty($this->seed->field_name_map[$field]['db_concat_fields'])) && strpos($db_field, 'last_name') !== false){ - //split the string value, and the db field name - $string = explode(' ', $field_value); - $column_name = explode('.', $db_field); - //when a search is done with a space, we concatenate and search against the full name. - if(count($string)>1){ - //add where clause against concatenated fields - $where .= $this->seed->db->concat($column_name[0],array('first_name','last_name')) . " LIKE ".$this->seed->db->quoted($field_value.'%'); - $where .= ' OR ' . $this->seed->db->concat($column_name[0],array('last_name','first_name')) . " LIKE ".$this->seed->db->quoted($field_value.'%'); - }else{ - //no space was found, add normal where clause - $where .= $db_field . " like ".$this->seed->db->quoted(sql_like_string($field_value, $like_char)); + + // If it is a unified search and if the search contains more then 1 word (contains space) + // and if it's the last element from db_field (so we do the concat only once, not for every db_field element) + // we concat the db_field array() (both original, and in reverse order) and search for the whole string in it + if ( $UnifiedSearch && strpos($field_value, ' ') !== false && strpos($db_field, $parms['db_field'][count($parms['db_field']) - 1]) !== false ) + { + // Get the table name used for concat + $concat_table = explode('.', $db_field); + $concat_table = $concat_table[0]; + // Get the fields for concatenating + $concat_fields = $parms['db_field']; + + // If db_fields (e.g. contacts.first_name) contain table name, need to remove it + for ($i = 0; $i < count($concat_fields); $i++) + { + if (strpos($concat_fields[$i], $concat_table) !== false) + { + $concat_fields[$i] = substr($concat_fields[$i], strlen($concat_table) + 1); + } } - - }else { - + + // Concat the fields and search for the value + $where .= $this->seed->db->concat($concat_table, $concat_fields) . " LIKE " . $this->seed->db->quoted($field_value . $like_char); + $where .= ' OR ' . $this->seed->db->concat($concat_table, array_reverse($concat_fields)) . " LIKE " . $this->seed->db->quoted($field_value . $like_char); + } + else + { //Check if this is a first_name, last_name search if(isset($this->seed->field_name_map) && isset($this->seed->field_name_map[$db_field])) { diff --git a/include/Smarty/plugins/function.sugar_button.php b/include/Smarty/plugins/function.sugar_button.php index cffebda0..49bbfc8e 100644 --- a/include/Smarty/plugins/function.sugar_button.php +++ b/include/Smarty/plugins/function.sugar_button.php @@ -338,7 +338,7 @@ function smarty_function_sugar_button($params, &$smarty) break; case "SUBPANELSAVE": - if($view == 'QuickCreate' || (isset($_REQUEST['target_action']) && strtolower($_REQUEST['target_action'])) == 'quickcreate') $view = "form_SubpanelQuickCreate_{$module}"; + if($view == 'QuickCreate' || (isset($_REQUEST['target_action']) && strtolower($_REQUEST['target_action']) == 'quickcreate')) $view = "form_SubpanelQuickCreate_{$module}"; $output = '{if $bean->aclAccess("save")}{/if} '; break; diff --git a/include/SubPanel/SubPanelTiles.js b/include/SubPanel/SubPanelTiles.js index 83934223..83ca4594 100644 --- a/include/SubPanel/SubPanelTiles.js +++ b/include/SubPanel/SubPanelTiles.js @@ -69,7 +69,7 @@ else var selection_list=popup_reply_data.selection_list;if(selection_list!='undefined'){for(var the_key in selection_list) {query_array.push('subpanel_id[]='+selection_list[the_key])}} var module=get_module_name();var id=get_record_id();query_array.push('value=DetailView');query_array.push('module='+module);query_array.push('http_method=get');query_array.push('return_module='+module);query_array.push('return_id='+id);query_array.push('record='+id);query_array.push('isDuplicate=false');query_array.push('action=Save2');query_array.push('inline=1');query_array.push('select_entire_list='+select_entire_list);if(select_entire_list==1){query_array.push('current_query_by_page='+current_query_by_page);} -var refresh_page=escape(passthru_data['refresh_page']);for(prop in passthru_data){if(prop=='link_field_name'){query_array.push('subpanel_field_name='+escape(passthru_data[prop]));}else{if(prop=='module_name'){query_array.push('subpanel_module_name='+escape(passthru_data[prop]));}else{query_array.push(prop+'='+escape(passthru_data[prop]));}}} +var refresh_page=escape(passthru_data['refresh_page']);for(prop in passthru_data){if(prop=='link_field_name'){query_array.push('subpanel_field_name='+escape(passthru_data[prop]));}else{if(prop=='module_name'){query_array.push('subpanel_module_name='+escape(passthru_data[prop]));}else if(prop=='prospect_ids'){for(var i=0;isaveJsonFile($json); $this->ss->assign("chartId", $this->chartId); $this->ss->assign("filename", $this->jsonFilename); - global $mod_strings; + global $mod_strings, $app_strings; if (isset($mod_strings['LBL_REPORT_SHOW_CHART'])) $this->ss->assign("showchart", $mod_strings['LBL_REPORT_SHOW_CHART']); @@ -119,7 +119,7 @@ class JsChart extends SugarChart { $chartConfig['imageExportType'] = $this->image_export_type; $this->ss->assign("config", $chartConfig); if($json == "No Data") { - $this->ss->assign("error", "No Data"); + $this->ss->assign("error", $app_strings['LBL_NO_DATA']); } if(!$this->isSupported($this->chartType)) { diff --git a/include/SugarEmailAddress/SugarEmailAddress.js b/include/SugarEmailAddress/SugarEmailAddress.js index dc558c2c..97db5d54 100644 --- a/include/SugarEmailAddress/SugarEmailAddress.js +++ b/include/SugarEmailAddress/SugarEmailAddress.js @@ -34,7 +34,7 @@ ********************************************************************************/ (function(){if(SUGAR.EmailAddressWidget)return;var Dom=YAHOO.util.Dom;SUGAR.EmailAddressWidget=function(module){if(!SUGAR.EmailAddressWidget.count[module])SUGAR.EmailAddressWidget.count[module]=0;this.count=SUGAR.EmailAddressWidget.count[module];SUGAR.EmailAddressWidget.count[module]++;this.module=module;this.id=this.module+this.count;if(document.getElementById(module+'_email_widget_id')) document.getElementById(module+'_email_widget_id').value=this.id;SUGAR.EmailAddressWidget.instances[this.id]=this;} -SUGAR.EmailAddressWidget.instances={};SUGAR.EmailAddressWidget.count={};SUGAR.EmailAddressWidget.prototype={emailTemplate:''+''+' '+''+''+''+''+'',numberEmailAddresses:0,replyToFlagObject:new Object(),verifying:false,enterPressed:false,tabPressed:false,emailView:"",emailIsRequired:false,tabIndex:-1,prefillEmailAddresses:function(tableId,o){for(i=0;i'+''+' '+''+''+''+''+'',numberEmailAddresses:0,replyToFlagObject:new Object(),verifying:false,enterPressed:false,tabPressed:false,emailView:"",emailIsRequired:false,tabIndex:-1,prefillEmailAddresses:function(tableId,o){for(i=0;i1){verifyElementFlag.parentNode.removeChild(verifyElementFlag.parentNode.lastChild);} var verifiedTextNode=document.createElement('span');verifiedTextNode.innerHTML='';verifyElementFlag.parentNode.appendChild(verifiedTextNode);verifyElementFlag.value="true";this.verifyElementValue=Dom.get(this.id+'emailAddressVerifiedValue'+index);this.verifyElementValue.value=Dom.get(this.id+'emailAddress'+index).value;this.verifying=false;var savePressed=false;if(event){var elm=document.activeElement||event.explicitOriginalTarget;if(typeof elm.type!='undefined'&&/submit|button/.test(elm.type.toLowerCase())){if(/save|full|cancel|change/.test(elm.value.toLowerCase())){savePressed=true;}}} @@ -43,15 +43,15 @@ var event=this.getEvent(event);var targetEl=this.getEventElement(event);var inde this.verifyElementValue=Dom.get(this.id+'emailAddressVerifiedValue'+index);verifyElementFlag.value=(trim(targetEl.value)==''||targetEl.value==this.verifyElementValue.value)?"true":"false" if(verifyElementFlag.parentNode.childNodes.length>1){verifyElementFlag.parentNode.removeChild(verifyElementFlag.parentNode.lastChild);} if(/emailAddress\d+$/.test(targetEl.id)&&isValidEmail(targetEl.value)&&!this.verifying&&verifyElementFlag.value=="false"){verifiedTextNode=document.createElement('span');verifyElementFlag.parentNode.appendChild(verifiedTextNode);verifiedTextNode.innerHTML=SUGAR.language.get('app_strings','LBL_VERIFY_EMAIL_ADDRESS');this.verifying=true;var cObj=YAHOO.util.Connect.asyncRequest('GET','index.php?module=Contacts&action=RetrieveEmail&target='+targetEl.id+'&email='+targetEl.value,{success:callbackFunction,failure:callbackFunction,scope:this});}},handleKeyDown:function(event){var e=this.getEvent(event);var eL=this.getEventElement(e);if((kc=e["keyCode"])){this.enterPressed=(kc==13)?true:false;this.tabPressed=(kc==9)?true:false;if(this.enterPressed||this.tabPressed){this.retrieveEmailAddress(e);if(this.enterPressed) -this.freezeEvent(e);}}},getEvent:function(event){return(event?event:window.event);},getEventElement:function(e){return(e.srcElement?e.srcElement:(e.target?e.target:e.currentTarget));},freezeEvent:function(e){if(e.preventDefault)e.preventDefault();e.returnValue=false;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();return false;},addEmailAddress:function(tableId,address,primaryFlag,replyToFlag,optOutFlag,invalidFlag){if(this.addInProgress) +this.freezeEvent(e);}}},getEvent:function(event){return(event?event:window.event);},getEventElement:function(e){return(e.srcElement?e.srcElement:(e.target?e.target:e.currentTarget));},freezeEvent:function(e){if(e.preventDefault)e.preventDefault();e.returnValue=false;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();return false;},addEmailAddress:function(tableId,address,primaryFlag,replyToFlag,optOutFlag,invalidFlag,emailId){if(this.addInProgress) return;this.addInProgress=true;if(!address) -address="";var insertInto=Dom.get(tableId);var parentObj=insertInto.parentNode;var newContent=document.createElement("input");var nav=new String(navigator.appVersion);var newContentPrimaryFlag=document.createElement("input");var newContentReplyToFlag=document.createElement("input");var newContentOptOutFlag=document.createElement("input");var newContentInvalidFlag=document.createElement("input");var newContentVerifiedFlag=document.createElement("input");var newContentVerifiedValue=document.createElement("input");var removeButton=document.createElement("button");var removeButtonImg=document.createElement('img');var tbody=document.createElement("tbody");var tr=document.createElement("tr");var td1=document.createElement("td");var td2=document.createElement("td");var td3=document.createElement("td");var td4=document.createElement("td");var td5=document.createElement("td");var td6=document.createElement("td");var td7=document.createElement("td");var td8=document.createElement("td");var tabIndexCount=0;if(typeof(SUGAR.TabFields)!='undefined'&&typeof(SUGAR.TabFields['email1'])!='undefined'){tabIndexCount=SUGAR.TabFields['email1'];} +address="";var insertInto=Dom.get(tableId);var parentObj=insertInto.parentNode;var newContent=document.createElement("input");var nav=new String(navigator.appVersion);var newContentRecordId=document.createElement("input");var newContentPrimaryFlag=document.createElement("input");var newContentReplyToFlag=document.createElement("input");var newContentOptOutFlag=document.createElement("input");var newContentInvalidFlag=document.createElement("input");var newContentVerifiedFlag=document.createElement("input");var newContentVerifiedValue=document.createElement("input");var removeButton=document.createElement("button");var removeButtonImg=document.createElement('img');var tbody=document.createElement("tbody");var tr=document.createElement("tr");var td1=document.createElement("td");var td2=document.createElement("td");var td3=document.createElement("td");var td4=document.createElement("td");var td5=document.createElement("td");var td6=document.createElement("td");var td7=document.createElement("td");var td8=document.createElement("td");var tabIndexCount=0;if(typeof(SUGAR.TabFields)!='undefined'&&typeof(SUGAR.TabFields['email1'])!='undefined'){tabIndexCount=SUGAR.TabFields['email1'];} newContent.setAttribute("type","text");newContent.setAttribute("name",this.id+"emailAddress"+this.numberEmailAddresses);newContent.setAttribute("id",this.id+"emailAddress"+this.numberEmailAddresses);newContent.setAttribute("tabindex",tabIndexCount);newContent.setAttribute("size","30");newContent.setAttribute("title",SUGAR.language.get('app_strings','LBL_EMAIL_TITLE'));if(address!=''){newContent.setAttribute("value",address);} -removeButtonImg.setAttribute('src',"index.php?entryPoint=getImage&themeName="+SUGAR.themes.theme_name+"&imageName=id-ff-remove-nobg.png");removeButton.setAttribute("id",this.id+"removeButton"+this.numberEmailAddresses);removeButton.setAttribute("class","id-ff-remove");removeButton.setAttribute("name",this.numberEmailAddresses);removeButton.eaw=this;removeButton.setAttribute("tabindex",tabIndexCount);removeButton.onclick=function(){this.eaw.removeEmailAddress(this.name);return false;};removeButton.appendChild(removeButtonImg);newContentPrimaryFlag.setAttribute("type","radio");newContentPrimaryFlag.setAttribute("name",this.id+"emailAddressPrimaryFlag");newContentPrimaryFlag.setAttribute("id",this.id+"emailAddressPrimaryFlag"+this.numberEmailAddresses);newContentPrimaryFlag.setAttribute("value",this.id+"emailAddress"+this.numberEmailAddresses);newContentPrimaryFlag.setAttribute("enabled","true");newContentPrimaryFlag.setAttribute("tabindex",tabIndexCount);newContentReplyToFlag.setAttribute("type","radio");newContentReplyToFlag.setAttribute("name",this.id+"emailAddressReplyToFlag");newContentReplyToFlag.setAttribute("id",this.id+"emailAddressReplyToFlag"+this.numberEmailAddresses);newContentReplyToFlag.setAttribute("value",this.id+"emailAddress"+this.numberEmailAddresses);newContentReplyToFlag.setAttribute("enabled","true");newContentReplyToFlag.setAttribute("tabindex",tabIndexCount);newContentReplyToFlag.eaw=this;newContentReplyToFlag['onclick']=function(){var form=document.forms[this.eaw.emailView];if(!form){form=document.forms['editContactForm'];} +removeButtonImg.setAttribute('src',"index.php?entryPoint=getImage&themeName="+SUGAR.themes.theme_name+"&imageName=id-ff-remove-nobg.png");removeButton.setAttribute("id",this.id+"removeButton"+this.numberEmailAddresses);removeButton.setAttribute("class","id-ff-remove");removeButton.setAttribute("name",this.numberEmailAddresses);removeButton.setAttribute("type","button");removeButton.setAttribute("tabindex",tabIndexCount);removeButton.onclick=(function(eaw){return function(){eaw.removeEmailAddress(this.name);}})(this);removeButton.appendChild(removeButtonImg);newContentRecordId.setAttribute("type","hidden");newContentRecordId.setAttribute("name",this.id+"emailAddressId"+this.numberEmailAddresses);newContentRecordId.setAttribute("id",this.id+"emailAddressId"+this.numberEmailAddresses);newContentRecordId.setAttribute("value",typeof(emailId)!='undefined'?emailId:'');newContentRecordId.setAttribute("enabled","true");newContentPrimaryFlag.setAttribute("type","radio");newContentPrimaryFlag.setAttribute("name",this.id+"emailAddressPrimaryFlag");newContentPrimaryFlag.setAttribute("id",this.id+"emailAddressPrimaryFlag"+this.numberEmailAddresses);newContentPrimaryFlag.setAttribute("value",this.id+"emailAddress"+this.numberEmailAddresses);newContentPrimaryFlag.setAttribute("enabled","true");newContentPrimaryFlag.setAttribute("tabindex",tabIndexCount);newContentReplyToFlag.setAttribute("type","radio");newContentReplyToFlag.setAttribute("name",this.id+"emailAddressReplyToFlag");newContentReplyToFlag.setAttribute("id",this.id+"emailAddressReplyToFlag"+this.numberEmailAddresses);newContentReplyToFlag.setAttribute("value",this.id+"emailAddress"+this.numberEmailAddresses);newContentReplyToFlag.setAttribute("enabled","true");newContentReplyToFlag.setAttribute("tabindex",tabIndexCount);newContentReplyToFlag.eaw=this;newContentReplyToFlag['onclick']=function(){var form=document.forms[this.eaw.emailView];if(!form){form=document.forms['editContactForm'];} var nav=new String(navigator.appVersion);if(nav.match(/MSIE/gim)){for(i=0;i0){var emailcontainer=Dom.getAncestorByTagName(insertInto,'span');YAHOO.util.Event.addListener(newContent,"change",function(ev,el){SUGAR.util.callOnChangeListers(el);},emailcontainer);} -this.EmailAddressValidation(this.emailView,this.id+'emailAddress'+this.numberEmailAddresses,this.emailIsRequired,SUGAR.language.get('app_strings','LBL_EMAIL_ADDRESS_BOOK_EMAIL_ADDR'));this.numberEmailAddresses++;this.addInProgress=false;},EmailAddressValidation:function(ev,fn,r,stR){YAHOO.util.Event.onContentReady(fn,function(){addToValidate(ev,fn,'email',r,stR);});},removeEmailAddress:function(index){removeFromValidate(this.emailView,this.id+'emailAddress'+index);var oNodeToRemove=$("#"+this.id+'emailAddressRow'+index);var form=oNodeToRemove.parents("form")[0];oNodeToRemove.find("input").each(function(index,node){$(node).remove();});oNodeToRemove.css("display","none");var removedIndex=parseInt(index);if(this.numberEmailAddresses!=removedIndex){for(var x=removedIndex+1;xgetCorrectedModule($module); - $q2="select * from email_addr_bean_rel eabr WHERE eabr.bean_id = '{$id}' AND eabr.bean_module = '{$module}' and eabr.deleted=0"; + $q2="select * from email_addr_bean_rel eabr WHERE eabr.bean_id = '".$this->db->quote($id)."' AND eabr.bean_module = '".$this->db->quote($module)."' and eabr.deleted=0"; $r2 = $this->db->query($q2); while(($row2=$this->db->fetchByAssoc($r2)) != null ) { $current_links[$row2['email_address_id']]=$row2; @@ -189,14 +190,19 @@ class SugarEmailAddress extends SugarBean { foreach($this->addresses as $address) { if(!empty($address['email_address'])) { $guid = create_guid(); - $emailId = $this->AddUpdateEmailAddress($address['email_address'],$address['invalid_email'],$address['opt_out']);// this will save the email address if not found + $emailId = $this->AddUpdateEmailAddress($address['email_address'], + $address['invalid_email'], + $address['opt_out'], + isset($address['email_address_id']) ? + $address['email_address_id'] : + null);// this will save the email address if not found //verify linkage and flags. $upd_eabr=""; if (isset($current_links[$emailId])) { if (!$isConversion) { // do not update anything if this is for lead conversion if ($address['primary_address'] != $current_links[$emailId]['primary_address'] or $address['reply_to_address'] != $current_links[$emailId]['reply_to_address'] ) { - $upd_eabr="UPDATE email_addr_bean_rel SET primary_address='{$address['primary_address']}', reply_to_address='{$address['reply_to_address']}' WHERE id='{$current_links[$emailId]['id']}'"; + $upd_eabr="UPDATE email_addr_bean_rel SET primary_address='".$this->db->quote($address['primary_address'])."', reply_to_address='".$this->db->quote($address['reply_to_address'])."' WHERE id='".$this->db->quote($current_links[$emailId]['id'])."'"; } unset($current_links[$emailId]); @@ -213,7 +219,7 @@ class SugarEmailAddress extends SugarBean { } } $now = $this->db->now(); - $upd_eabr = "INSERT INTO email_addr_bean_rel (id, email_address_id,bean_id, bean_module,primary_address,reply_to_address,date_created,date_modified,deleted) VALUES('{$guid}', '{$emailId}', '{$id}', '{$module}', {$primary}, {$address['reply_to_address']}, $now, $now, 0)"; + $upd_eabr = "INSERT INTO email_addr_bean_rel (id, email_address_id,bean_id, bean_module,primary_address,reply_to_address,date_created,date_modified,deleted) VALUES('".$this->db->quote($guid)."', '".$this->db->quote($emailId)."', '".$this->db->quote($id)."', '".$this->db->quote($module)."', ".intval($primary).", ".intval($address['reply_to_address']).", $now, $now, 0)"; } if (!empty($upd_eabr)) { @@ -230,12 +236,13 @@ class SugarEmailAddress extends SugarBean { $delete=""; foreach ($current_links as $eabr) { - $delete.=empty($delete) ? "'".$eabr['id'] . "' " : ",'" . $eabr['id'] . "'"; + $delete.=empty($delete) ? "'".$this->db->quote($eabr['id']) . "' " : ",'" . $this->db->quote($eabr['id']) . "'"; } $eabr_unlink="update email_addr_bean_rel set deleted=1 where id in ({$delete})"; $this->db->query($eabr_unlink); } + $this->stateBeforeWorkflow = null; return; } @@ -262,9 +269,9 @@ class SugarEmailAddress extends SugarBean { ON (ea.id = eabl.email_address_id) JOIN {$bean->table_name} bean ON (eabl.bean_id = bean.id) - WHERE ea.email_address_caps = '{$emailCaps}' - and eabl.bean_module = '{$bean->module_dir}' - and eabl.primary_address = '{$addresstype}' + WHERE ea.email_address_caps = '".$this->db->quote($emailCaps)."' + and eabl.bean_module = '".$this->db->quote($bean->module_dir)."' + and eabl.primary_address = '".$this->db->quote($addresstype)."' and eabl.deleted=0 "; $r = $this->db->query($q); @@ -282,12 +289,12 @@ class SugarEmailAddress extends SugarBean { * @param $table which table to query */ function getRelatedId($email, $module) { - $email = trim(strtoupper($email)); - $module = ucfirst($module); + $email = $this->db->quote(trim(strtoupper($email))); + $module = $this->db->quote(ucfirst($module)); $q = "SELECT bean_id FROM email_addr_bean_rel eabr JOIN email_addresses ea ON (eabr.email_address_id = ea.id) - WHERE bean_module = '{$module}' AND ea.email_address_caps = '{$email}' AND eabr.deleted=0"; + WHERE bean_module = '$module' AND ea.email_address_caps = '$email' AND eabr.deleted=0"; $r = $this->db->query($q, true); @@ -319,9 +326,9 @@ class SugarEmailAddress extends SugarBean { return array(); } - $emailCaps = strtoupper($email); + $emailCaps = "'".$this->db->quote(strtoupper($email))."'"; $q = "SELECT * FROM email_addr_bean_rel eabl JOIN email_addresses ea ON (ea.id = eabl.email_address_id) - WHERE ea.email_address_caps = '{$emailCaps}' and eabl.deleted=0 "; + WHERE ea.email_address_caps = $emailCaps and eabl.deleted=0 "; $r = $this->db->query($q); while($a = $this->db->fetchByAssoc($r)) { @@ -366,6 +373,7 @@ class SugarEmailAddress extends SugarBean { $primaryValue = $primary; $widgetCount = 0; $hasEmailValue = false; + $email_ids = array(); if (isset($_REQUEST) && isset($_REQUEST[$module .'_email_widget_id'])) { @@ -440,6 +448,14 @@ class SugarEmailAddress extends SugarBean { } } } + if($fromRequest && empty($email_ids)) { + foreach($_REQUEST as $k => $v) { + if(preg_match('/'.$eId.'emailAddressId[0-9]+$/i', $k) && !empty($v)) { + $key = str_replace('emailAddressId', 'emailAddress', $k); + $email_ids[$key] = $v; + } + } + } if($fromRequest && empty($new_addrs)) { foreach($_REQUEST as $k => $v) { @@ -460,7 +476,7 @@ class SugarEmailAddress extends SugarBean { foreach($new_addrs as $k=>$email) { preg_match('/emailAddress([0-9])+$/', $k, $matches); $count = $matches[1]; - $result = $this->db->query("SELECT opt_out, invalid_email from email_addresses where email_address_caps = '" . strtoupper($email) . "'"); + $result = $this->db->query("SELECT opt_out, invalid_email from email_addresses where email_address_caps = '" . $this->db->quote(strtoupper($email)) . "'"); if(!empty($result)) { $row=$this->db->fetchByAssoc($result); if(!empty($row['opt_out'])) { @@ -479,11 +495,12 @@ class SugarEmailAddress extends SugarBean { $reqVar = trim($reqVar); if(strpos($k, 'emailAddress') !== false) { if(!empty($reqVar) && !in_array($k, $deleteValues)) { + $email_id = (array_key_exists($k, $email_ids)) ? $email_ids[$k] : null; $primary = ($k == $primaryValue) ? true : false; $replyTo = ($k == $replyToField) ? true : false; $invalid = (in_array($k, $invalidValues)) ? true : false; $optOut = (in_array($k, $optOutValues)) ? true : false; - $this->addAddress(trim($new_addrs[$k]), $primary, $replyTo, $invalid, $optOut); + $this->addAddress(trim($new_addrs[$k]), $primary, $replyTo, $invalid, $optOut, $email_id); } } } //foreach @@ -505,7 +522,7 @@ class SugarEmailAddress extends SugarBean { * @param bool $primary Default false * @param bool $replyTo Default false */ - function addAddress($addr, $primary=false, $replyTo=false, $invalid=false, $optOut=false) { + function addAddress($addr, $primary=false, $replyTo=false, $invalid=false, $optOut=false, $email_id = null) { $addr = html_entity_decode($addr, ENT_QUOTES); if(preg_match($this->regex, $addr)) { $primaryFlag = ($primary) ? '1' : '0'; @@ -532,6 +549,7 @@ class SugarEmailAddress extends SugarBean { 'reply_to_address' => $replyToFlag, 'invalid_email' => $invalidFlag, 'opt_out' => $optOutFlag, + 'email_address_id' => $email_id, ); } else { $GLOBALS['log']->fatal("SUGAREMAILADDRESS: address did not validate [ {$addr} ]"); @@ -545,7 +563,7 @@ class SugarEmailAddress extends SugarBean { if(!empty($this->addresses)) { foreach($this->addresses as $addressMeta) { if(isset($addressMeta['email_address']) && !empty($addressMeta['email_address'])) { - $address = $this->_cleanAddress($addressMeta['email_address']); + $address = $this->db->quote($this->_cleanAddress($addressMeta['email_address'])); $q = "SELECT * FROM email_addresses WHERE email_address = '{$address}'"; $r = $this->db->query($q); @@ -553,7 +571,7 @@ class SugarEmailAddress extends SugarBean { if(!empty($a)) { if(isset($a['invalid_email']) && isset($addressMeta['invalid_email']) && isset($addressMeta['opt_out']) && $a['invalid_email'] != $addressMeta['invalid_email'] || $a['opt_out'] != $addressMeta['opt_out']) { - $qUpdate = "UPDATE email_addresses SET invalid_email = {$addressMeta['invalid_email']}, opt_out = {$addressMeta['opt_out']}, date_modified = '".TimeDate::getInstance()->nowDb()."' WHERE id = '{$a['id']}'"; + $qUpdate = "UPDATE email_addresses SET invalid_email = ".intval($addressMeta['invalid_email']).", opt_out = ".intval($addressMeta['opt_out']).", date_modified = '".TimeDate::getInstance()->nowDb()."' WHERE id = '".$this->db->quote($a['id'])."'"; $rUpdate = $this->db->query($qUpdate); } } @@ -609,7 +627,6 @@ class SugarEmailAddress extends SugarBean { $guid = ''; if(!empty($address)){ $guid = create_guid(); - $address = $GLOBALS['db']->quote($address); $now = TimeDate::getInstance()->nowDb(); $qa = "INSERT INTO email_addresses (id, email_address, email_address_caps, date_created, date_modified, deleted) VALUES('{$guid}', '{$address}', '{$addressCaps}', '$now', '$now', 0)"; @@ -619,20 +636,47 @@ class SugarEmailAddress extends SugarBean { } } - function AddUpdateEmailAddress($addr,$invalid=0,$opt_out=0) + function AddUpdateEmailAddress($addr,$invalid=0,$opt_out=0,$id=null) { + // sanity checks to avoid SQL injection. + $invalid = intval($invalid); + $opt_out = intval($opt_out); + $address = $this->db->quote($this->_cleanAddress($addr)); $addressCaps = strtoupper($address); - $q = "SELECT * FROM email_addresses WHERE email_address_caps = '{$addressCaps}' and deleted=0"; - $r = $this->db->query($q); - $a = $this->db->fetchByAssoc($r); + if ($id) + { + $r = $this->db->query("SELECT * FROM email_addresses WHERE id='".$this->db->quote($id)."'"); + $a = $this->db->fetchByAssoc($r); + } + else + { + $a = null; + } + if(!empty($a) && !empty($a['id'])) { - //verify the opt out and invalid flags. - //bug# 39378- did not allow change of case of an email address - if ($a['invalid_email'] != $invalid or $a['opt_out'] != $opt_out or strcasecmp(trim($a['email_address']), trim($address))==0) { - $upd_q="update email_addresses set email_address='{$address}', invalid_email={$invalid}, opt_out={$opt_out},date_modified = '".gmdate($GLOBALS['timedate']->get_db_date_time_format())."' where id='{$a['id']}'"; - $upd_r= $this->db->query($upd_q); + if ($a['invalid_email'] != $invalid || + $a['opt_out'] != $opt_out || + // bug #39378 - did not allow change of case of an email address + strnatcmp(trim($a['email_address']), trim($address)) != 0) + { + if (isset($this->stateBeforeWorkflow[$a['id']])) + { + $data = $this->stateBeforeWorkflow[$a['id']]; + } + else + { + $data = array(); + } + + $upd_q = 'UPDATE ' . $this->table_name . ' ' . + 'SET email_address=\'' . $address . '\', '. + (isset($data['invalid_email']) && $data['invalid_email'] == $a['invalid_email'] ? ('invalid_email=' . $invalid . ', ') : '') . + (isset($data['opt_out']) && $data['opt_out'] == $a['opt_out'] ? ('opt_out=' . $opt_out . ', ') : '') . + 'date_modified=\'' . gmdate($GLOBALS['timedate']->get_db_date_time_format()) . '\' ' . + 'WHERE id=\'' . $this->db->quote($a['id']) . '\''; + $upd_r = $this->db->query($upd_q); } return $a['id']; } else { @@ -660,8 +704,8 @@ class SugarEmailAddress extends SugarBean { $q = "SELECT ea.email_address FROM email_addresses ea LEFT JOIN email_addr_bean_rel ear ON ea.id = ear.email_address_id - WHERE ear.bean_module = '{$parent_type}' - AND ear.bean_id = '{$parent_id}' + WHERE ear.bean_module = '".$this->db->quote($parent_type)."' + AND ear.bean_id = '".$this->db->quote($parent_id)."' AND ear.deleted = 0 AND ea.invalid_email = 0 ORDER BY ear.primary_address DESC"; @@ -687,8 +731,8 @@ class SugarEmailAddress extends SugarBean { function getReplyToAddress($focus, $replyToOnly = false) { $q = "SELECT ea.email_address FROM email_addresses ea LEFT JOIN email_addr_bean_rel ear ON ea.id = ear.email_address_id - WHERE ear.bean_module = '{$focus->module_dir}' - AND ear.bean_id = '{$focus->id}' + WHERE ear.bean_module = '".$this->db->quote($focus->module_dir)."' + AND ear.bean_id = '".$this->db->quote($focus->id)."' AND ear.deleted = 0 AND ea.invalid_email = 0"; @@ -728,8 +772,8 @@ class SugarEmailAddress extends SugarBean { $q = "SELECT ea.email_address, ea.email_address_caps, ea.invalid_email, ea.opt_out, ea.date_created, ea.date_modified, ear.id, ear.email_address_id, ear.bean_id, ear.bean_module, ear.primary_address, ear.reply_to_address, ear.deleted FROM email_addresses ea LEFT JOIN email_addr_bean_rel ear ON ea.id = ear.email_address_id - WHERE ear.bean_module = '{$module}' - AND ear.bean_id = '{$id}' + WHERE ear.bean_module = '".$this->db->quote($module)."' + AND ear.bean_id = '".$this->db->quote($id)."' AND ear.deleted = 0 ORDER BY ear.reply_to_address, ear.primary_address DESC"; $r = $this->db->query($q); @@ -1008,6 +1052,27 @@ class SugarEmailAddress extends SugarBean { function getCorrectedModule(&$module) { return ($module == "Employees")? "Users" : $module; } + + public function stash($parentBeanId, $moduleName) + { + $result = $this->db->query("select email_address_id from email_addr_bean_rel eabr WHERE eabr.bean_id = '".$this->db->quote($parentBeanId)."' AND eabr.bean_module = '".$this->db->quote($moduleName)."' and eabr.deleted=0"); + $this->stateBeforeWorkflow = array(); + $ids = array(); + while ($row = $this->db->fetchByAssoc($result, false)) + { + $ids[] =$this->db->quote($row['email_address_id']); // avoid 2nd order SQL Injection + } + if (!empty($ids)) + { + $ids = implode("', '", $ids); + $queryEmailData = "SELECT id, email_address, invalid_email, opt_out FROM {$this->table_name} WHERE id IN ('$ids') AND deleted=0"; + $result = $this->db->query($queryEmailData); + while ($row = $this->db->fetchByAssoc($result, false)) + { + $this->stateBeforeWorkflow[$row['id']] = array_diff_key($row, array('id' => null)); + } + } + } } // end class def diff --git a/include/SugarFields/Fields/Currency/SugarFieldCurrency.php b/include/SugarFields/Fields/Currency/SugarFieldCurrency.php index b86f6eb8..ccedd069 100644 --- a/include/SugarFields/Fields/Currency/SugarFieldCurrency.php +++ b/include/SugarFields/Fields/Currency/SugarFieldCurrency.php @@ -73,4 +73,22 @@ class SugarFieldCurrency extends SugarFieldFloat return $settings->float($value,$vardef,$focus); } + + /** + * format the currency field based on system locale values for currency + * Note that this may be different from the precision specified in the vardefs. + * @param string $rawfield value of the field + * @param string $somewhere vardef for the field being processed + * @return number formatted according to currency settings + */ + public function formatField($rawField, $vardef){ + // for currency fields, use the user or system precision, not the precision in the vardef + //this is achived by passing in $precision as null + $precision = null; + + if ( $rawField === '' || $rawField === NULL ) { + return ''; + } + return format_number($rawField,$precision,$precision); + } } \ No newline at end of file diff --git a/include/SugarFields/Fields/File/SearchView.tpl b/include/SugarFields/Fields/File/SearchView.tpl index 69aa73c6..9874254e 100644 --- a/include/SugarFields/Fields/File/SearchView.tpl +++ b/include/SugarFields/Fields/File/SearchView.tpl @@ -36,4 +36,13 @@ *} - +{if strlen({{sugarvar key='value' string=true}}) <= 0} +{assign var="value" value={{sugarvar key='default_value' string=true}} } +{else} +{assign var="value" value={{sugarvar key='value' string=true}} } +{/if} + diff --git a/include/SugarFields/Fields/File/SugarFieldFile.php b/include/SugarFields/Fields/File/SugarFieldFile.php index edc509ce..ed4a4ae9 100644 --- a/include/SugarFields/Fields/File/SugarFieldFile.php +++ b/include/SugarFields/Fields/File/SugarFieldFile.php @@ -89,7 +89,11 @@ class SugarFieldFile extends SugarFieldBase { return parent::getEditViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex); } - public function save(&$bean, $params, $field, $vardef, $prefix = ''){ + function getSearchViewSmarty($parentFieldArray, $vardef, $displayParams, $tabindex) { + return $this->getSmartyView($parentFieldArray, $vardef, $displayParams, $tabindex, 'SearchView'); + } + + public function save(&$bean, $params, $field, $vardef, $prefix = ''){ $fakeDisplayParams = array(); $this->fillInOptions($vardef,$fakeDisplayParams); @@ -187,5 +191,5 @@ class SugarFieldFile extends SugarFieldBase { $bean->$clearField = ''; } } - } + } } diff --git a/include/SugarFields/Fields/Text/DetailView.tpl b/include/SugarFields/Fields/Text/DetailView.tpl index 0192c443..85c091f8 100644 --- a/include/SugarFields/Fields/Text/DetailView.tpl +++ b/include/SugarFields/Fields/Text/DetailView.tpl @@ -37,7 +37,8 @@ *} {{if empty($displayParams.textonly)}}{{sugarvar key='value' htmlentitydecode='true'}}{{else}}{{sugarvar key='value'}}{{/if}} {{if !empty($displayParams.enableConnectors)}} -{if !empty({{sugarvar key='value'}})} +{assign var="value" value={{sugarvar key='value' string='true'}} } +{if !empty($value)} {{sugarvar_connector view='DetailView'}} {/if} {{/if}} diff --git a/include/SugarObjects/VardefManager.php b/include/SugarObjects/VardefManager.php index f4b590ff..8f3ba2af 100644 --- a/include/SugarObjects/VardefManager.php +++ b/include/SugarObjects/VardefManager.php @@ -434,7 +434,7 @@ class VardefManager{ { if (is_readable($cachedfile)) { - include_once($cachedfile); + include($cachedfile); } // now that we hae loaded the data from disk, put it in the cache. if(!empty($GLOBALS['dictionary'][$object])) diff --git a/include/SugarObjects/templates/person/Person.php b/include/SugarObjects/templates/person/Person.php index bed0e7ff..db7aa13b 100644 --- a/include/SugarObjects/templates/person/Person.php +++ b/include/SugarObjects/templates/person/Person.php @@ -136,7 +136,10 @@ class Person extends Basic $this->add_address_streets('alt_address_street'); $ori_in_workflow = empty($this->in_workflow) ? false : true; $this->emailAddress->handleLegacySave($this, $this->module_dir); + // bug #39188 - store emails state before workflow make any changes + $this->emailAddress->stash($this->id, $this->module_dir); parent::save($check_notify); + // $this->emailAddress->evaluateWorkflowChanges($this->id, $this->module_dir); $override_email = array(); if(!empty($this->email1_set_in_workflow)) { $override_email['emailAddress0'] = $this->email1_set_in_workflow; @@ -149,6 +152,7 @@ class Person extends Basic } if($ori_in_workflow === false || !empty($override_email)){ $this->emailAddress->save($this->id, $this->module_dir, $override_email,'','','','',$this->in_workflow); + // $this->emailAddress->applyWorkflowChanges($this->id, $this->module_dir); } return $this->id; } diff --git a/include/SugarTheme/SugarTheme.php b/include/SugarTheme/SugarTheme.php index faa33e0d..2eee2a5a 100644 --- a/include/SugarTheme/SugarTheme.php +++ b/include/SugarTheme/SugarTheme.php @@ -696,8 +696,12 @@ EOHTML; if( (!is_null($width) && $sp['width'] == $width) || (is_null($width)) && (!is_null($height) && $sp['height'] == $height) || (is_null($height)) ) { - if($sprite = $this->getSprite($sp['class'], $other_attributes, $alt)) - return $sprite; + $other_attributes .= ' data-orig="'.$imageName.'"'; + + if($sprite = $this->getSprite($sp['class'], $other_attributes, $alt)) + { + return $sprite; + } } } } diff --git a/include/connectors/utils/ConnectorHtmlHelper.php b/include/connectors/utils/ConnectorHtmlHelper.php index 1843ade8..b0a9a389 100644 --- a/include/connectors/utils/ConnectorHtmlHelper.php +++ b/include/connectors/utils/ConnectorHtmlHelper.php @@ -54,17 +54,7 @@ class ConnectorHtmlHelper { require_once('include/connectors/formatters/FormatterFactory.php'); - //If there is only one source, just show the icon or some standalone view - if (count($shown_sources) == 1) - { - $code = $this->getButton($shown_sources[0], $module, $smarty); - } - else - { - $code = $this->getPopup($shown_sources, $module, $smarty); - } - - return $code; + return $this->getButton($shown_sources, $module, $smarty); } /** @@ -75,25 +65,27 @@ class ConnectorHtmlHelper * @param mixed $smarty * @return string */ - private function getButton($shown_source, $module, $smarty) + private function getButton(array $shown_sources, $module, $smarty) { $code = ''; - $formatter = FormatterFactory::getInstance($shown_source); - $formatter->setModule($module); - $formatter->setSmarty($smarty); - $formatter_code = $formatter->getDetailViewFormat(); - if (!empty($formatter_code)) - { - $iconFilePath = $formatter->getIconFilePath(); - $iconFilePath = empty($iconFilePath) ? 'themes/default/images/MoreDetail.png' : $iconFilePath; + foreach($shown_sources as $id) { + $formatter = FormatterFactory::getInstance($id); + $formatter->setModule($module); + $formatter->setSmarty($smarty); + $formatter_code = $formatter->getDetailViewFormat(); + if (!empty($formatter_code)) + { + $iconFilePath = $formatter->getIconFilePath(); + $iconFilePath = empty($iconFilePath) ? 'themes/default/images/MoreDetail.png' : $iconFilePath; - $code = ''
-                    . $shown_source .''; + $code .= ''
+                         . $id .''; $code .= ""; - $code .= $formatter->getDetailViewFormat(); - $code .= $formatter_code; + //$code .= $formatter->getDetailViewFormat(); + $code .= $formatter_code; + } } return $code; diff --git a/include/database/DBManager.php b/include/database/DBManager.php index 45cfabf0..c95333ce 100644 --- a/include/database/DBManager.php +++ b/include/database/DBManager.php @@ -2818,7 +2818,7 @@ protected function checkQuery($sql, $object_name = false) /** * Uses the audit enabled fields array to find fields whose value has changed. * The before and after values are stored in the bean. - * Uses $bean->fetched_row to compare + * Uses $bean->fetched_row && $bean->fetched_rel_row to compare * * @param SugarBean $bean Sugarbean instance that was changed * @return array @@ -2828,10 +2828,16 @@ protected function checkQuery($sql, $object_name = false) $changed_values=array(); $audit_fields=$bean->getAuditEnabledFieldDefinitions(); - if (is_array($audit_fields) and count($audit_fields) > 0) { + $fetched_row = array(); + if (is_array($bean->fetched_row)) + { + $fetched_row = array_merge($bean->fetched_row, $bean->fetched_rel_row); + } + + if ($fetched_row && is_array($audit_fields) and count($audit_fields) > 0) { foreach ($audit_fields as $field=>$properties) { - if (!empty($bean->fetched_row) && array_key_exists($field, $bean->fetched_row)) { - $before_value=$bean->fetched_row[$field]; + if (array_key_exists($field, $fetched_row)) { + $before_value = $fetched_row[$field]; $after_value=$bean->$field; if (isset($properties['type'])) { $field_type=$properties['type']; diff --git a/include/database/MssqlManager.php b/include/database/MssqlManager.php index 10d188dc..204aee0d 100644 --- a/include/database/MssqlManager.php +++ b/include/database/MssqlManager.php @@ -1403,7 +1403,7 @@ class MssqlManager extends DBManager { if($start_value > 1) $start_value -= 1; - $this->query("DBCC CHECKIDENT ('$table', RESEED, $start_value)"); + $this->query("DBCC CHECKIDENT ('$table', RESEED, $start_value) WITH NO_INFOMSGS"); return true; } diff --git a/include/generic/Save2.php b/include/generic/Save2.php index 5bd8fb53..f27a9aa0 100644 --- a/include/generic/Save2.php +++ b/include/generic/Save2.php @@ -58,36 +58,65 @@ ARGS: require_once('include/formbase.php'); -function add_prospects_to_prospect_list($query_panel,$parent_module,$parent_type,$parent_id,$child_id,$link_attribute,$link_type, $parent) +function add_prospects_to_prospect_list($parent_id,$child_id) { - $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$query_panel); - $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$parent_module); - $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$parent_type); - $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$parent_id); - $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$child_id); - $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$link_attribute); - $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$link_type); + $focus=BeanFactory::getBean('Prospects'); + if(is_array($child_id)){ + $uids = $child_id; + } + else{ + $uids = array($child_id); + } + + $relationship = ''; + foreach($focus->get_linked_fields() as $field => $def) { + if ($focus->load_relationship($field)) { + if ( $focus->$field->getRelatedModuleName() == 'ProspectLists' ) { + $relationship = $field; + break; + } + } + } + + if ( $relationship != '' ) { + foreach ( $uids as $id) { + $focus->retrieve($id); + $focus->load_relationship($relationship); + $focus->prospect_lists->add( $parent_id ); + } + } +} + +function add_to_prospect_list($query_panel,$parent_module,$parent_type,$parent_id,$child_id,$link_attribute,$link_type,$parent) +{ + $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$query_panel); + $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$parent_module); + $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$parent_type); + $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$parent_id); + $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$child_id); + $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$link_attribute); + $GLOBALS['log']->debug('add_prospects_to_prospect_list:parameters:'.$link_type); require_once('include/SubPanel/SubPanelTiles.php'); - if (!class_exists($parent_type)) { - require_once('modules/'.cleanDirName($parent_module).'/'.cleanDirName($parent_type).'.php'); - } - $focus = new $parent_type(); - $focus->retrieve($parent_id); - if(empty($focus->id)) { - return false; - } - if(empty($parent)) { - return false; - } + if (!class_exists($parent_type)) { + require_once('modules/'.cleanDirName($parent_module).'/'.cleanDirName($parent_type).'.php'); + } + $focus = new $parent_type(); + $focus->retrieve($parent_id); + if(empty($focus->id)) { + return false; + } + if(empty($parent)) { + return false; + } - //if link_type is default then load relationship once and add all the child ids. - $relationship_attribute=$link_attribute; + //if link_type is default then load relationship once and add all the child ids. + $relationship_attribute=$link_attribute; - //find all prospects based on the query + //find all prospects based on the query - $subpanel = new SubPanelTiles($parent, $parent->module_dir); + $subpanel = new SubPanelTiles($parent, $parent->module_dir); $thisPanel=$subpanel->subpanel_definitions->load_subpanel($query_panel); if(empty($thisPanel)) { return false; @@ -96,16 +125,16 @@ function add_prospects_to_prospect_list($query_panel,$parent_module,$parent_type if(!empty($result['list'])) { foreach($result['list'] as $object) { - if ($link_type != 'default') { - $relationship_attribute=strtolower($object->$link_attribute); - } + if ($link_type != 'default') { + $relationship_attribute=strtolower($object->$link_attribute); + } $GLOBALS['log']->debug('add_prospects_to_prospect_list:relationship_attribute:'.$relationship_attribute); - // load relationship for the first time or on change of relationship atribute. - if (empty($focus->$relationship_attribute)) { - $focus->load_relationship($relationship_attribute); - } - //add - $focus->$relationship_attribute->add($object->$child_id); + // load relationship for the first time or on change of relationship atribute. + if (empty($focus->$relationship_attribute)) { + $focus->load_relationship($relationship_attribute); + } + //add + $focus->$relationship_attribute->add($object->$child_id); } } } @@ -163,9 +192,19 @@ if (isset($_REQUEST['return_type']) && $_REQUEST['return_type'] == 'report') { } else if (isset($_REQUEST['return_type']) && $_REQUEST['return_type'] == 'addtoprospectlist') { $GLOBALS['log']->debug(print_r($_REQUEST,true)); - $parent = BeanFactory::getBean($_REQUEST['module'], $_REQUEST['record']); - add_prospects_to_prospect_list(urldecode($_REQUEST['subpanel_module_name']),$_REQUEST['parent_module'],$_REQUEST['parent_type'],$_REQUEST['subpanel_id'], - $_REQUEST['child_id'],$_REQUEST['link_attribute'],$_REQUEST['link_type'], $parent); + if(!empty($_REQUEST['prospect_list_id']) and !empty($_REQUEST['prospect_ids'])) + { + add_prospects_to_prospect_list( + $_REQUEST['prospect_list_id'], + $_REQUEST['prospect_ids'] + ); + } + else + { + $parent = BeanFactory::getBean($_REQUEST['module'], $_REQUEST['record']); + add_to_prospect_list(urldecode($_REQUEST['subpanel_module_name']),$_REQUEST['parent_module'],$_REQUEST['parent_type'],$_REQUEST['subpanel_id'], + $_REQUEST['child_id'],$_REQUEST['link_attribute'],$_REQUEST['link_type'], $parent); + } $refreshsubpanel=false; }else if (isset($_REQUEST['return_type']) && $_REQUEST['return_type'] == 'addcampaignlog') { @@ -292,5 +331,5 @@ if ($refreshsubpanel) { $inline = isset($_REQUEST['inline'])?$_REQUEST['inline']: $inline; header("Location: index.php?sugar_body_only=1&module=".$_REQUEST['module']."&subpanel=".$_REQUEST['subpanel_module_name']."&action=SubPanelViewer&inline=$inline&record=".$_REQUEST['record']); } + exit; } -exit; diff --git a/include/generic/SugarWidgets/SugarWidgetFieldbool.php b/include/generic/SugarWidgets/SugarWidgetFieldbool.php index 03a87360..66076cd6 100644 --- a/include/generic/SugarWidgets/SugarWidgetFieldbool.php +++ b/include/generic/SugarWidgets/SugarWidgetFieldbool.php @@ -55,7 +55,6 @@ class SugarWidgetFieldBool extends SugarWidgetReportField function displayListPlain($layout_def) { $value = $this->_get_list_value($layout_def); - $module = $this->reporter->all_fields[$layout_def['column_key']]['module']; $name = $layout_def['name']; $layout_def['name'] = 'id'; $key = $this->_get_column_alias($layout_def); diff --git a/include/generic/SugarWidgets/SugarWidgetFieldcurrency.php b/include/generic/SugarWidgets/SugarWidgetFieldcurrency.php index c897796b..ebf9ead1 100644 --- a/include/generic/SugarWidgets/SugarWidgetFieldcurrency.php +++ b/include/generic/SugarWidgets/SugarWidgetFieldcurrency.php @@ -185,38 +185,55 @@ class SugarWidgetFieldCurrency extends SugarWidgetFieldInt function querySelect(&$layout_def) { - // We need to fetch the currency id as well - if ( !$this->isSystemCurrency($layout_def) && empty($layout_def['group_function'])) { - + // add currency column to select + $table = $this->getCurrencyIdTable($layout_def); + if($table) { + return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)." , ".$table.".currency_id ". $this->getTruncatedColumnAlias($this->_get_column_alias($layout_def)."_currency") . "\n"; + } + return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)."\n"; + } + + function queryGroupBy($layout_def) + { + // add currency column to group by + $table = $this->getCurrencyIdTable($layout_def); + if($table) { + return $this->_get_column_select($layout_def)." , ".$table.".currency_id \n"; + } + return $this->_get_column_select($layout_def)." \n"; + } + + function getCurrencyIdTable($layout_def) + { + // We need to fetch the currency id as well + if ( !$this->isSystemCurrency($layout_def) && empty($layout_def['group_function'])) { + if ( !empty($layout_def['table_alias']) ) { - $table = $layout_def['table_alias']; - } else { - $table = ''; - } - - $real_table = ''; - if (!empty($this->reporter->all_fields[$layout_def['column_key']]['real_table'])) + $table = $layout_def['table_alias']; + } else { + $table = ''; + } + + $real_table = ''; + if (!empty($this->reporter->all_fields[$layout_def['column_key']]['real_table'])) $real_table = $this->reporter->all_fields[$layout_def['column_key']]['real_table']; - - $add_currency_id = false; - if(!empty($table)) { + + $add_currency_id = false; + if(!empty($table)) { $cols = $GLOBALS['db']->getHelper()->get_columns($real_table); $add_currency_id = isset($cols['currency_id']) ? true : false; - + if(!$add_currency_id && preg_match('/.*?_cstm$/i', $real_table)) { - $table = str_replace('_cstm', '', $table); - $cols = $GLOBALS['db']->getHelper()->get_columns($table); - $add_currency_id = isset($cols['currency_id']) ? true : false; + $table = str_replace('_cstm', '', $table); + $cols = $GLOBALS['db']->getHelper()->get_columns($table); + $add_currency_id = isset($cols['currency_id']) ? true : false; } - } - if($add_currency_id) { - return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)." , ".$table.".currency_id ". $this->getTruncatedColumnAlias($this->_get_column_alias($layout_def)."_currency") . "\n"; - } else { - return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)."\n"; - } - } else { - return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)."\n"; - } + if($add_currency_id) { + return $table; + } + } + } + return false; } } diff --git a/include/generic/SugarWidgets/SugarWidgetFieldlong.php b/include/generic/SugarWidgets/SugarWidgetFieldlong.php new file mode 100644 index 00000000..b31ff355 --- /dev/null +++ b/include/generic/SugarWidgets/SugarWidgetFieldlong.php @@ -0,0 +1,56 @@ + diff --git a/include/generic/SugarWidgets/SugarWidgetFieldmultienum.php b/include/generic/SugarWidgets/SugarWidgetFieldmultienum.php index baeefbb8..e1418ffa 100644 --- a/include/generic/SugarWidgets/SugarWidgetFieldmultienum.php +++ b/include/generic/SugarWidgets/SugarWidgetFieldmultienum.php @@ -39,45 +39,23 @@ if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); class SugarWidgetFieldMultiEnum extends SugarWidgetFieldEnum { public function queryFilternot_one_of(&$layout_def) { - $arr = array (); - foreach ($layout_def['input_name0'] as $value) { - array_push($arr, "'".$GLOBALS['db']->quote($value)."'"); - } - $reporter = $this->layout_manager->getAttribute("reporter"); - - $col_name = $this->_get_column_select($layout_def) . " NOT LIKE " ; - $arr_count = count($arr); - $query = ""; - foreach($arr as $key=>$val) { - $query .= $col_name; - $value = preg_replace("/^'/", "'%", $val, 1); - $value = preg_replace("/'$/", "%'", $value, 1); - $query .= $value; - if ($key != ($arr_count - 1)) - $query.= " OR " ; - } - return '('.$query.')'; + $col_name = $this->_get_column_select($layout_def) . " NOT LIKE " ; + $query = array(); + foreach ($layout_def['input_name0'] as $val) + { + $query[] = $col_name . $this->reporter->db->quoted('%' . $this->encodeMultienumCustom($layout_def, $val) . '%'); + } + return '('. implode(' AND ', $query) .')'; } public function queryFilterone_of(&$layout_def) { - $arr = array (); - foreach ($layout_def['input_name0'] as $value) { - array_push($arr, "'".$GLOBALS['db']->quote($value)."'"); - } - $reporter = $this->layout_manager->getAttribute("reporter"); - - $col_name = $this->_get_column_select($layout_def) . " LIKE " ; - $arr_count = count($arr); - $query = ""; - foreach($arr as $key=>$val) { - $query .= $col_name; - $value = preg_replace("/^'/", "'%", $val, 1); - $value = preg_replace("/'$/", "%'", $value, 1); - $query .= $value; - if ($key != ($arr_count - 1)) - $query.= " OR " ; - } - return '('.$query.')'; + $col_name = $this->_get_column_select($layout_def) . " LIKE " ; + $query = array(); + foreach ($layout_def['input_name0'] as $val) + { + $query[] = $col_name . $this->reporter->db->quoted('%' . $this->encodeMultienumCustom($layout_def, $val) . '%'); + } + return '('. implode(' OR ', $query) .')'; } public function queryFilteris($layout_def) { diff --git a/include/generic/SugarWidgets/SugarWidgetReportField.php b/include/generic/SugarWidgets/SugarWidgetReportField.php index 8acaadc3..2836fdcd 100644 --- a/include/generic/SugarWidgets/SugarWidgetReportField.php +++ b/include/generic/SugarWidgets/SugarWidgetReportField.php @@ -250,11 +250,13 @@ class SugarWidgetReportField extends SugarWidgetField { $alias_arr = array(); - if ($layout_def['table_key'] == 'self' && !empty($layout_def['name']) && $layout_def['name'] == 'id') - { - return 'primaryid'; - } + if (!empty($layout_def['table_key']) && $layout_def['table_key'] == 'self' && !empty($layout_def['name']) && $layout_def['name'] == 'id') + { + return 'primaryid'; + } + // Bug: 44605 + // this comment is being added to trigger the upgrade package if ( ! empty($layout_def['group_function']) && $layout_def['group_function']=='count') { return 'count'; diff --git a/include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectContactsButton.php b/include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectContactsButton.php index 2c81b7d3..506119c4 100644 --- a/include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectContactsButton.php +++ b/include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectContactsButton.php @@ -148,7 +148,7 @@ class SugarWidgetSubPanelTopSelectContactsButton extends SugarWidgetSubPanelTopS 'return_url' => urlencode($return_url), 'link_field_name' => $link_field_name, 'module_name' => $this->module_name, - 'refresh_page'=>true, + 'refresh_page' => 1, ), ); diff --git a/include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectUsersButton.php b/include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectUsersButton.php index 8b90bb68..90a4b4c5 100644 --- a/include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectUsersButton.php +++ b/include/generic/SugarWidgets/SugarWidgetSubPanelTopSelectUsersButton.php @@ -152,7 +152,7 @@ class SugarWidgetSubPanelTopSelectUsersButton extends SugarWidgetSubPanelTopSele 'return_url' => urlencode($return_url), 'link_field_name' => $link_field_name, 'module_name' => $this->module_name, - 'refresh_page'=>true, + 'refresh_page' => 1, ), ); diff --git a/include/globalControlLinks.php b/include/globalControlLinks.php index 00ef66de..3a5becc4 100644 --- a/include/globalControlLinks.php +++ b/include/globalControlLinks.php @@ -68,8 +68,8 @@ $global_control_links['training'] = array( 'linkinfo' => array($app_strings['LBL_TRAINING'] => 'javascript:void(window.open(\'http://support.sugarcrm.com\'))'), 'submenu' => '' ); -/* - Bug#53922: Remove the help link until its target is decided. + +/* no longer goes in the menubar - now implemented in the bottom bar. $global_control_links['help'] = array( 'linkinfo' => array($app_strings['LNK_HELP'] => ' javascript:void window.open(\'index.php?module=Administration&action=SupportPortal&view=documentation&version='.$sugar_version.'&edition='.$sugar_flavor.'&lang='.$current_language.'&help_module='.$GLOBALS['module'].'&help_action='.$action.'&key='.$server_unique_key.'\')'), 'submenu' => '' diff --git a/include/javascript/getYUIComboFile.php b/include/javascript/getYUIComboFile.php index e938276d..514de02c 100644 --- a/include/javascript/getYUIComboFile.php +++ b/include/javascript/getYUIComboFile.php @@ -44,7 +44,7 @@ $yui_path = array( "3_3_0" => "include/javascript/yui3" ); $types = array( - "js" => "application/x-javascript", + "js" => "application/javascript", "css" => "text/css", ); $out = ""; diff --git a/include/javascript/jquery/jquery.hoverIntent.js b/include/javascript/jquery/jquery.hoverIntent.js index 5ce329f0..be69d66f 100644 --- a/include/javascript/jquery/jquery.hoverIntent.js +++ b/include/javascript/jquery/jquery.hoverIntent.js @@ -1,4 +1,4 @@ -/******************************************************************************* +/******************************************************************************* jquery.mb.components Copyright (c) 2001-2010. Matteo Bicocchi (Pupunzi); Open lab srl, Firenze - Italy email: info@pupunzi.com diff --git a/include/language/en_us.lang.php b/include/language/en_us.lang.php index 15ef098e..ae6b51cb 100644 --- a/include/language/en_us.lang.php +++ b/include/language/en_us.lang.php @@ -1663,6 +1663,7 @@ $app_strings = array ( 'ERR_NO_DB' => 'Could not connect to the database. Please refer to sugarcrm.log for details.', 'ERR_DB_FAIL' => 'Database failure. Please refer to sugarcrm.log for details.', 'ERR_EXTERNAL_API_403' => 'Permission Denied. File type is not supported.', + 'ERR_DB_VERSION' => 'Sugar CRM {0} Files May Only Be Used With A Sugar CRM {1} Database.', 'LBL_ACCOUNT'=>'Account', diff --git a/include/language/en_us.notify_template.html b/include/language/en_us.notify_template.html index 1cbd932a..b98e5ed6 100644 --- a/include/language/en_us.notify_template.html +++ b/include/language/en_us.notify_template.html @@ -358,7 +358,6 @@ Title: {MEETING_SUBJECT} When: {MEETING_STARTDATE} Location: {MEETING_LOCATION} Created By: {MEETING_CREATED_BY} -Description: {MEETING_DESCRIPTION} @@ -368,5 +367,4 @@ Call Reminder - {CALL_SUBJECT} Title: {CALL_SUBJECT} When: {CALL_STARTDATE} Created By: {CALL_CREATED_BY} -Description: {CALL_DESCRIPTION} diff --git a/include/phpmailer/class.phpmailer.php b/include/phpmailer/class.phpmailer.php index f3d05381..0f6d39eb 100644 --- a/include/phpmailer/class.phpmailer.php +++ b/include/phpmailer/class.phpmailer.php @@ -2287,7 +2287,7 @@ class PHPMailer { 'php3' => 'application/x-httpd-php', 'phtml' => 'application/x-httpd-php', 'phps' => 'application/x-httpd-php-source', - 'js' => 'application/x-javascript', + 'js' => 'application/javascript', 'swf' => 'application/x-shockwave-flash', 'sit' => 'application/x-stuffit', 'tar' => 'application/x-tar', diff --git a/include/utils.php b/include/utils.php index 78570c7d..e7c85e1a 100644 --- a/include/utils.php +++ b/include/utils.php @@ -890,6 +890,7 @@ function _mergeCustomAppListStrings($file , $app_list_strings){ // FG - bug 45525 - Specific codelists must NOT be overwritten $exemptDropdowns[] = "moduleList"; + $exemptDropdowns[] = "moduleListSingular"; $exemptDropdowns[] = "parent_type_display"; $exemptDropdowns[] = "record_type_display"; $exemptDropdowns[] = "record_type_display_notes"; @@ -3801,7 +3802,7 @@ function getTrackerSubstring($name) { $chopped = $name; } - return to_html($chopped); + return $chopped; } function generate_search_where ($field_list=array(),$values=array(),&$bean,$add_custom_fields=false,$module='') { $where_clauses= array(); @@ -3910,6 +3911,18 @@ function rebuildConfigFile($sugar_config, $sugar_version) { } } +/** + * Loads clean configuration, not overridden by config_override.php + * + * @return array + */ +function loadCleanConfig() +{ + $sugar_config = array(); + require 'config.php'; + return $sugar_config; +} + /** * getJavascriptSiteURL * This function returns a URL for the client javascript calls to access @@ -4802,51 +4815,6 @@ function generateETagHeader($etag){ } } -/** - * isSearchEngineDown - * - * This function checks the existence of a cache file - * - * @return boolean true if file found, false otherwise - */ -function isSearchEngineDown() -{ - $cacheDir = empty($GLOBALS['sugar_config']['cache_dir']) ? 'cache/' : $GLOBALS['sugar_config']['cache_dir']; - if (file_exists($cacheDir.'fts/fts_down')) - { - return true; - } - return false; -} - -/** - * searchEngineDown - * - * This function creates a cache file to indicate search engine is down - * - */ -function searchEngineDown() -{ - $cacheDir = create_cache_directory('fts/'); - sugar_touch($cacheDir.'/fts_down'); -} - -/** - * restoreSearchEngine - * - * This function removes the cache file to indicate search engine has been restored - * - */ -function restoreSearchEngine() -{ - $cacheDir = empty($GLOBALS['sugar_config']['cache_dir']) ? 'cache/' : $GLOBALS['sugar_config']['cache_dir']; - $down_file = $cacheDir.'fts/fts_down'; - if (file_exists($down_file)) - { - unlink($down_file); - } -} - /** * getReportNameTranslation * @@ -4894,4 +4862,4 @@ function clean_sensitive_data($defs, $data) } } return $data; -} \ No newline at end of file +} diff --git a/jssource/src_files/include/SubPanel/SubPanelTiles.js b/jssource/src_files/include/SubPanel/SubPanelTiles.js index 1f2602e7..52b0c6c8 100644 --- a/jssource/src_files/include/SubPanel/SubPanelTiles.js +++ b/jssource/src_files/include/SubPanel/SubPanelTiles.js @@ -195,6 +195,10 @@ function set_return_and_save_background(popup_reply_data) } else { if (prop=='module_name') { query_array.push('subpanel_module_name='+escape(passthru_data[prop])); + } else if(prop == 'prospect_ids'){ + for(var i=0;isettings = $settings_cache; - return $this; + if (!empty($this->settings[$category])) + { + return $this; + } } - $query = "SELECT category, name, value FROM {$this->table_name}"; + if ( ! empty($category) ) { + $query = "SELECT category, name, value FROM {$this->table_name} WHERE category = '{$category}'"; + } else { + $query = "SELECT category, name, value FROM {$this->table_name}"; + } $result = $this->db->query($query, true, "Unable to retrieve system settings"); @@ -101,6 +108,7 @@ class Administration extends SugarBean { else $this->settings[$row['category']."_".$row['name']] = $row['value']; } + $this->settings[$category] = true; // outbound email settings $oe = new OutboundEmail(); diff --git a/modules/Administration/RebuildConfig.php b/modules/Administration/RebuildConfig.php index 7308589b..6923406e 100644 --- a/modules/Administration/RebuildConfig.php +++ b/modules/Administration/RebuildConfig.php @@ -61,7 +61,10 @@ else { // only do the rebuild if config file checks out and user has posted back if( !empty($_POST['perform_rebuild']) && $config_file_ready ){ - if ( rebuildConfigFile($sugar_config, $sugar_version) ) { + // retrieve configuration from file so that contents of config_override.php + // is not merged (bug #54403) + $clean_config = loadCleanConfig(); + if ( rebuildConfigFile($clean_config, $sugar_version) ) { $config_check = $mod_strings['MSG_CONFIG_FILE_REBUILD_SUCCESS']; $disable_config_rebuild = 'disabled="disabled"'; } diff --git a/modules/Audit/Audit.php b/modules/Audit/Audit.php index 16093640..c7b97956 100644 --- a/modules/Audit/Audit.php +++ b/modules/Audit/Audit.php @@ -127,7 +127,12 @@ class Audit extends SugarBean { } if ($field['name'] == 'date_created') { - $temp_list[$field['name']]=$timedate->to_display_date_time($temp_list[$field['name']]); + $date_created = ''; + if (!empty($temp_list[$field['name']])) { + $date_created = $timedate->to_display_date_time($temp_list[$field['name']]); + $date_created = !empty($date_created)?$date_created:$temp_list[$field['name']]; + } + $temp_list[$field['name']]=$date_created; } if(($field['name'] == 'before_value_string' || $field['name'] == 'after_value_string') && ($row['data_type'] == "enum" || $row['data_type'] == "multienum")) { diff --git a/modules/Bugs/Bug.php b/modules/Bugs/Bug.php index e8116126..56620445 100644 --- a/modules/Bugs/Bug.php +++ b/modules/Bugs/Bug.php @@ -323,13 +323,11 @@ class Bug extends SugarBean { // The new listview code only fetches columns that we're displaying and not all // the columns so we need these checks. $the_array['NAME'] = (($this->name == "") ? "blank" : $this->name); - if (!empty($this->priority)) - $the_array['PRIORITY'] = $app_list_strings['bug_priority_dom'][$this->priority]; - if (!empty($this->status)) - $the_array['STATUS'] =$app_list_strings['bug_status_dom'][$this->status]; + $the_array['PRIORITY'] = empty($this->priority)? "" : (!isset($app_list_strings[$this->field_name_map['priority']['options']][$this->priority]) ? $this->priority : $app_list_strings[$this->field_name_map['priority']['options']][$this->priority]); + $the_array['STATUS'] = empty($this->status)? "" : (!isset($app_list_strings[$this->field_name_map['status']['options']][$this->status]) ? $this->status : $app_list_strings[$this->field_name_map['status']['options']][$this->status]); + $the_array['TYPE'] = empty($this->type)? "" : (!isset($app_list_strings[$this->field_name_map['type']['options']][$this->type]) ? $this->type : $app_list_strings[$this->field_name_map['type']['options']][$this->type]); + $the_array['RELEASE']= $this->release_name; - if (!empty($this->type)) - $the_array['TYPE']= $app_list_strings['bug_type_dom'][$this->type]; $the_array['BUG_NUMBER'] = $this->bug_number; $the_array['ENCODED_NAME']=$this->name; diff --git a/modules/Calendar/Cal.css b/modules/Calendar/Cal.css index 89735c14..5adc255a 100644 --- a/modules/Calendar/Cal.css +++ b/modules/Calendar/Cal.css @@ -36,7 +36,6 @@ #cal-grid { border-left: 1px solid silver; - width: 100%; overflow: hidden; } diff --git a/modules/Calendar/Cal.js b/modules/Calendar/Cal.js index 00edbe52..45d11a77 100644 --- a/modules/Calendar/Cal.js +++ b/modules/Calendar/Cal.js @@ -213,7 +213,7 @@ CAL.full_form=function(){var e=document.createElement('input');e.setAttribute('t CAL.disable_buttons=function(){CAL.get("btn-save").setAttribute("disabled","disabled");CAL.get("btn-send-invites").setAttribute("disabled","disabled");CAL.get("btn-delete").setAttribute("disabled","disabled");CAL.get("btn-full-form").setAttribute("disabled","disabled");if(CAL.enable_repeat){CAL.get("btn-edit-all-recurrences").setAttribute("disabled","disabled");CAL.get("btn-remove-all-recurrences").setAttribute("disabled","disabled");}} CAL.enable_buttons=function(){CAL.get("btn-save").removeAttribute("disabled");CAL.get("btn-send-invites").removeAttribute("disabled");if(CAL.get("record").value!="") CAL.get("btn-delete").removeAttribute("disabled");CAL.get("btn-full-form").removeAttribute("disabled");if(CAL.enable_repeat){CAL.get("btn-edit-all-recurrences").removeAttribute("disabled");CAL.get("btn-remove-all-recurrences").removeAttribute("disabled");}} -CAL.dialog_create=function(cell){var e,user_id,user_name;CAL.get("title-cal-edit").innerHTML=CAL.lbl_loading;CAL.open_edit_dialog();CAL.disable_buttons();var module_name=CAL.get("current_module").value;if(CAL.view=='shared'){user_name=cell.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute("user_name");user_id=cell.parentNode.parentNode.parentNode.parentNode.parentNode.getAttribute("user_id");CAL.GR_update_user(user_id);}else{user_id=CAL.current_user_id;user_name=CAL.current_user_name;CAL.GR_update_user(CAL.current_user_id);} +CAL.dialog_create=function(cell){var e,user_id,user_name;CAL.get("title-cal-edit").innerHTML=CAL.lbl_loading;CAL.open_edit_dialog();CAL.disable_buttons();var module_name=CAL.get("current_module").value;if(CAL.view=='shared'){parentWithUserValues=$('div[user_id][user_name]');user_name=parentWithUserValues.attr('user_name');user_id=parentWithUserValues.attr('user_id');CAL.GR_update_user(user_id);}else{user_id=CAL.current_user_id;user_name=CAL.current_user_name;CAL.GR_update_user(CAL.current_user_id);} var params={'module_name':module_name,'user_id':user_id,'user_name':user_name,'date_start':cell.getAttribute("datetime")};CAL.current_params=params;CAL.load_create_form(CAL.current_params);} CAL.dialog_save=function(){CAL.disable_buttons();ajaxStatus.showStatus(SUGAR.language.get('app_strings','LBL_SAVING'));if(CAL.get("send_invites").value=="1"){CAL.get("title-cal-edit").innerHTML=CAL.lbl_sending;}else{CAL.get("title-cal-edit").innerHTML=CAL.lbl_saving;} CAL.fill_invitees();CAL.fill_repeat_data();var callback={success:function(o){try{res=eval("("+o.responseText+")");}catch(err){alert(CAL.lbl_error_saving);CAL.editDialog.cancel();ajaxStatus.hideStatus();return;} @@ -257,12 +257,15 @@ CAL.update_vcal=function(){var v=CAL.current_user_id;var callback={success:funct if(typeof GLOBAL_REGISTRY.freebusy_adjusted=='undefined'){GLOBAL_REGISTRY.freebusy_adjusted=new Object();} GLOBAL_REGISTRY.freebusy[v]=SugarVCalClient.parseResults(result.responseText,false);GLOBAL_REGISTRY.freebusy_adjusted[v]=SugarVCalClient.parseResults(result.responseText,true);SugarWidgetScheduler.update_time();}};var url="vcal_server.php?type=vfb&source=outlook&user_id="+v;YAHOO.util.Connect.asyncRequest('GET',url,callback,false);} CAL.fit_grid=function(control_call){if(CAL.view=='year'){return;} -var day_width;var cal_width=document.getElementById("cal-width-helper").offsetWidth;if(CAL.print){if(CAL.view=="day") -cal_width=720;else -cal_width=800;} -var left_width=80;if(CAL.style=="basic"){if(CAL.view!="month"){left_width=20;}else -left_width=60;} -if(CAL.view=="day"){day_width=parseInt((cal_width-left_width-10));if(typeof control_call=="undefined"||!control_call){setTimeout(function(){CAL.fit_grid(true);setTimeout(function(){CAL.fit_grid(true);},100);},100);}}else{day_width=parseInt((cal_width-left_width)/ 7);} -var nodes=CAL.query("#cal-grid div.col");CAL.each(nodes,function(i,v){nodes[i].style.width=day_width+"px";});var nodes=CAL.query("#cal-grid .cal-basic .act_item");CAL.each(nodes,function(i,v){var days=nodes[i].getAttribute('days');nodes[i].style.width=(day_width*days-1)+"px";});document.getElementById("cal-grid").style.visibility="";} -YAHOO.util.DDCAL=function(id,sGroup,config){this.cont=config.cont;YAHOO.util.DDCAL.superclass.constructor.apply(this,arguments);} +var container_width=document.getElementById("cal-width-helper").offsetWidth;var left_column_width=53;var scroll_padding=0;if(CAL.print){if(CAL.view=="day") +container_width=720;else +container_width=800;} +else{var is_scrollable=document.getElementById("cal-scrollable");if(is_scrollable){scroll_padding=30;}} +var data_width=container_width-left_column_width-scroll_padding;var num_columns;if(CAL.view=="day"){num_columns=1;if(typeof control_call=="undefined"||!control_call){setTimeout(function(){CAL.fit_grid(true);setTimeout(function(){CAL.fit_grid(true);},100);},100);}}else{num_columns=7;} +var columns_width=CAL.calculate_columns_width(data_width,num_columns);var cell_nodes=CAL.query("#cal-grid div.col");CAL.each(cell_nodes,function(i) +{cell_nodes[i].style.width=columns_width[i%num_columns]+"px";});document.getElementById("cal-grid").style.visibility="";};CAL.calculate_columns_width=function(width,count) +{var result=[];var integer=Math.floor(width / count);var remainder=width-count*integer;var dispensed=0;for(var i=1,value;i<=count;i++) +{value=integer;if(dispensed*countenable_repeat = SugarConfig::getInstance()->get('calendar.enable_repeat',true); - if(in_array($this->view,array('month','shared','year'))){ + if(in_array($this->view,array('month','year'))){ $this->style = "basic"; }else{ $displayTimeslots = $GLOBALS['current_user']->getPreference('calendar_display_timeslots'); diff --git a/modules/Calendar/CalendarGrid.php b/modules/Calendar/CalendarGrid.php index da78d8ba..a82cd909 100644 --- a/modules/Calendar/CalendarGrid.php +++ b/modules/Calendar/CalendarGrid.php @@ -117,6 +117,9 @@ class CalendarGrid { $str .= "
"; //if(!$this->scrollable) // $str .= "
".$head_content."
"; + $cell_number = 0; + $first_cell = $this->cal->scroll_slot; + $last_cell = $first_cell + $this->cal->celcount - 1; for($i = 0; $i < 24; $i++){ for($j = 0; $j < 60; $j += $this->time_step){ if($j == 0){ @@ -129,9 +132,13 @@ class CalendarGrid { }else{ $class = ""; } - $str .= "
".$innerText."
"; - } - } + if ($this->scrollable || ($cell_number >= $first_cell && $cell_number <= $last_cell)) + { + $str .= "
".$innerText."
"; + } + $cell_number++; + } + } $str .= "
"; return $str; } @@ -148,6 +155,9 @@ class CalendarGrid { $str = ""; $str .= "
"; //$str .= $this->get_day_head($start,$day); + $cell_number = 0; + $first_cell = $this->cal->scroll_slot; + $last_cell = $first_cell + $this->cal->celcount - 1; for($i = 0; $i < 24; $i++){ for($j = 0; $j < 60; $j += $this->time_step){ $timestr = $GLOBALS['timedate']->fromTimestamp($curr_time)->format($this->time_format); @@ -156,7 +166,11 @@ class CalendarGrid { }else{ $class = ""; } - $str .= "
fromTimestamp($curr_time)->format($this->date_time_format)."'>
"; + if ($this->scrollable || ($cell_number >= $first_cell && $cell_number <= $last_cell)) + { + $str .= "
fromTimestamp($curr_time)->format($this->date_time_format)."'>
"; + } + $cell_number++; $curr_time += $this->time_step*60; } } diff --git a/modules/Calls/language/en_us.lang.php b/modules/Calls/language/en_us.lang.php index 108cf407..855f6dcf 100644 --- a/modules/Calls/language/en_us.lang.php +++ b/modules/Calls/language/en_us.lang.php @@ -96,6 +96,7 @@ $mod_strings = array ( 'LBL_REMINDER' => 'Reminders:', 'LBL_REMINDER_POPUP' => 'Popup', 'LBL_REMINDER_EMAIL' => 'Email', + 'LBL_REMINDER_EMAIL_ALL_INVITEES' => 'Email all invitees', 'LBL_EMAIL_REMINDER' => 'Email Reminder', 'LBL_EMAIL_REMINDER_TIME' => 'Email Reminder Time', 'LBL_SEND_BUTTON_TITLE'=>'Save & Send Invites [Alt+I]', @@ -157,6 +158,8 @@ $mod_strings = array ( 'LBL_RECURRING_SOURCE' => 'Recurring Source', 'LBL_SYNCED_RECURRING_MSG' => 'This call originated in another system and was synced to Sugar. To make changes, go to the original call within the other system. Changes made in the other system can be synced to this record.', + 'LBL_RELATED_TO' => 'Related to:', + ); diff --git a/modules/Calls/metadata/additionalDetails.php b/modules/Calls/metadata/additionalDetails.php index 3d956dcd..8383050c 100644 --- a/modules/Calls/metadata/additionalDetails.php +++ b/modules/Calls/metadata/additionalDetails.php @@ -58,6 +58,14 @@ function additionalDetailsCall($fields) { } $overlib_string .= '
'; } + if (!empty($fields['PARENT_ID'])) + { + $overlib_string .= "". $mod_strings['LBL_RELATED_TO'] . " ". + "". + $fields['PARENT_NAME'] . ""; + $overlib_string .= '
'; + } + if(!empty($fields['DESCRIPTION'])) { $overlib_string .= ''. $mod_strings['LBL_DESCRIPTION'] . ' ' . substr($fields['DESCRIPTION'], 0, 300); if(strlen($fields['DESCRIPTION']) > 300) $overlib_string .= '...'; diff --git a/modules/Calls/metadata/editviewdefs.php b/modules/Calls/metadata/editviewdefs.php index b4897831..ba15b557 100644 --- a/modules/Calls/metadata/editviewdefs.php +++ b/modules/Calls/metadata/editviewdefs.php @@ -101,7 +101,7 @@ array ( 'javascript' => '{sugar_getscript file="cache/include/javascript/sugar_grp_jsolait.js"} ', +function formSubmitCheck(){ldelim}var duration=true;if(typeof(isValidDuration)!="undefined"){ldelim}duration=isValidDuration();{rdelim}if(check_form(\'EditView\') && duration){ldelim}SUGAR.ajaxUI.submitForm("EditView");{rdelim}{rdelim}', 'useTabs' => false, ), 'panels' => diff --git a/modules/Cases/Case.php b/modules/Cases/Case.php index d41f72f2..d9bbb44c 100644 --- a/modules/Cases/Case.php +++ b/modules/Cases/Case.php @@ -226,7 +226,7 @@ class aCase extends Basic { $temp_array = $this->get_list_view_array(); $temp_array['NAME'] = (($this->name == "") ? "blank" : $this->name); $temp_array['PRIORITY'] = empty($this->priority)? "" : (!isset($app_list_strings[$this->field_name_map['priority']['options']][$this->priority]) ? $this->priority : $app_list_strings[$this->field_name_map['priority']['options']][$this->priority]); - $temp_array['STATUS'] = empty($this->priority)? "" : (!isset($app_list_strings[$this->field_name_map['status']['options']][$this->status]) ? $this->status : $app_list_strings[$this->field_name_map['status']['options']][$this->status]); + $temp_array['STATUS'] = empty($this->status)? "" : (!isset($app_list_strings[$this->field_name_map['status']['options']][$this->status]) ? $this->status : $app_list_strings[$this->field_name_map['status']['options']][$this->status]); $temp_array['ENCODED_NAME'] = $this->name; $temp_array['CASE_NUMBER'] = $this->case_number; $temp_array['SET_COMPLETE'] = "".SugarThemeRegistry::current()->getImage("close_inline","title=".translate('LBL_LIST_CLOSE','Cases')." border='0'",null,null,'.gif',translate('LBL_LIST_CLOSE','Cases')).""; diff --git a/modules/Configurator/Configurator.php b/modules/Configurator/Configurator.php index 3fd4a2d4..529571cb 100644 --- a/modules/Configurator/Configurator.php +++ b/modules/Configurator/Configurator.php @@ -121,11 +121,11 @@ class Configurator { foreach($overrideArray as $key => $val) { if (in_array($key, $this->allow_undefined) || isset ($sugar_config[$key])) { - if (strcmp("$val", 'true') == 0) { + if (is_string($val) && strcmp($val, 'true') == 0) { $val = true; $this->config[$key] = $val; } - if (strcmp("$val", 'false') == 0) { + if (is_string($val) && strcmp($val, 'false') == 0) { $val = false; $this->config[$key] = false; } diff --git a/modules/Configurator/UploadFileCheck.php b/modules/Configurator/UploadFileCheck.php index 93fe0093..d34e7903 100644 --- a/modules/Configurator/UploadFileCheck.php +++ b/modules/Configurator/UploadFileCheck.php @@ -51,12 +51,13 @@ if($json->decode(html_entity_decode($_REQUEST['forQuotes']))){ $returnArray['forQuotes']="company"; } $upload_ok = false; +$upload_path = 'tmp_logo_' . $returnArray['forQuotes'] . '_upload'; if(isset($_FILES['file_1'])){ $upload = new UploadFile('file_1'); if($upload->confirm_upload()) { - $dir = "upload://cache/images"; - UploadStream::ensureDir($dir); - $file_name = $dir."/".$upload->get_stored_file_name(); + $upload_dir = 'upload://' . $upload_path; + UploadStream::ensureDir($upload_dir); + $file_name = $upload_dir."/".$upload->get_stored_file_name(); if($upload->final_move($file_name)) { $upload_ok = true; } @@ -69,8 +70,9 @@ if(!$upload_ok) { exit(); } if(file_exists($file_name) && is_file($file_name)) { - $returnArray['path']=substr($file_name, 9); // strip upload prefix - $returnArray['url']= 'cache/images/'.$upload->get_stored_file_name(); + $encoded_file_name = rawurlencode($upload->get_stored_file_name()); + $returnArray['path'] = $upload_path . '/' . $encoded_file_name; + $returnArray['url']= 'cache/images/'.$encoded_file_name; if(!verify_uploaded_image($file_name, $returnArray['forQuotes'] == 'quotes')) { $returnArray['data']='other'; $returnArray['path'] = ''; diff --git a/modules/Configurator/language/en_us.lang.php b/modules/Configurator/language/en_us.lang.php index ff2429f9..b70d202c 100644 --- a/modules/Configurator/language/en_us.lang.php +++ b/modules/Configurator/language/en_us.lang.php @@ -127,6 +127,7 @@ $mod_strings = array ( 'CURRENT_LOGO_HELP'=>'This logo is displayed in the left-hand corner of the footer of the Sugar application.', 'NEW_LOGO'=>'Select Logo:', 'NEW_LOGO_HELP'=>'The image file format can be either .png or .jpg. The maximum height is 17px, and the maximum width is 450px. Any image uploaded that is larger in any direction will be scaled to these max dimensions.', + 'NEW_LOGO_HELP_NO_SPACE'=>'The image file format can be either .png or .jpg. The maximum height is 17px, and the maximum width is 450px. Any image uploaded that is larger in any direction will be scaled to these max dimensions. Image file name must not contain a space character.', 'NEW_QUOTE_LOGO'=>'Upload new Quotes logo', 'NEW_QUOTE_LOGO_HELP'=>'The required image file format is .jpg.
The recommended size is 867x74 px.', 'QUOTES_CURRENT_LOGO'=>'Quotes logo', diff --git a/modules/Configurator/tpls/EditView.tpl b/modules/Configurator/tpls/EditView.tpl index 216217fd..7291930d 100644 --- a/modules/Configurator/tpls/EditView.tpl +++ b/modules/Configurator/tpls/EditView.tpl @@ -146,7 +146,7 @@ - {$MOD.NEW_LOGO} {sugar_help text=$MOD.NEW_LOGO_HELP} + {$MOD.NEW_LOGO} {sugar_help text=$MOD.NEW_LOGO_HELP_NO_SPACE}
diff --git a/modules/Configurator/tpls/adminwizard.tpl b/modules/Configurator/tpls/adminwizard.tpl index 765531e9..a8032197 100644 --- a/modules/Configurator/tpls/adminwizard.tpl +++ b/modules/Configurator/tpls/adminwizard.tpl @@ -120,7 +120,7 @@ function disableReturnSubmission(e) { - {$MOD.NEW_LOGO} {sugar_help text=$MOD.NEW_LOGO_HELP} + {$MOD.NEW_LOGO} {sugar_help text=$MOD.NEW_LOGO_HELP_NO_SPACE}
diff --git a/modules/Connectors/connectors/formatters/ext/rest/linkedin/tpls/default.tpl b/modules/Connectors/connectors/formatters/ext/rest/linkedin/tpls/default.tpl index 0b16664e..5b2b18e1 100644 --- a/modules/Connectors/connectors/formatters/ext/rest/linkedin/tpls/default.tpl +++ b/modules/Connectors/connectors/formatters/ext/rest/linkedin/tpls/default.tpl @@ -35,8 +35,7 @@ ********************************************************************************/ *} - - + {literal}