The following error is either thrown when installing a new Sugar instance or when clearing the cache:
Exception in Controller: exception 'SugarApiExceptionError' with message 'lessc fatal error:<br />load error: failed to find tmp_less_custom_compiler.less'
This means that your custom.less file has a syntax error. Fix any syntax errors and try again.
If your custom.less file is empty, just delete the file, clear the cache, and load the Page again.
Tuesday, April 24, 2018
mySQL - Time Out Error
The following error is thrown when importing a large database:
mysql server has gone away
If you are an admin or have sufficient privileges, update the my.cnf or mysql.cnf file by adding the following command:
[mysqld]
max_allowed_packet=500M
mysql server has gone away
If you are an admin or have sufficient privileges, update the my.cnf or mysql.cnf file by adding the following command:
[mysqld]
max_allowed_packet=500M
Monday, March 12, 2018
JAVASCRIPT: Date Current Year
In JavaScript, we can get the current year as follows:
var myDate = new Date('2017-02-12');
console.log(myDate.getFullYear());
Expected Output: 2017
Actual Output: 2017
But, what happens if we test a boundary value with the above function:
var myDate = new Date('2017-01-01');
console.log(myDate.getFullYear());
Expected Output: 2017
Actual Output: 2016
In this case, we need to call getUTCFullYear()
var myDate = new Date('2017-01-01');
console.log(myDate.getUTCFullYear());
Expected Output: 2017
Actual Output: 2017
var myDate = new Date('2017-02-12');
console.log(myDate.getFullYear());
Expected Output: 2017
Actual Output: 2017
But, what happens if we test a boundary value with the above function:
var myDate = new Date('2017-01-01');
console.log(myDate.getFullYear());
Expected Output: 2017
Actual Output: 2016
In this case, we need to call getUTCFullYear()
var myDate = new Date('2017-01-01');
console.log(myDate.getUTCFullYear());
Expected Output: 2017
Actual Output: 2017
Thursday, May 25, 2017
PHP: Set Datetime with a Specific Time Zone
// Some databases or systems use GMT or UTC, so we need to
// get the correct date time format at this point
$UTC = new DateTimeZone("UTC");
$dateTime = new DateTime($date, $UTC);
// Set your preferred time zone
$dateTime->setTimezone(new DateTimeZone('America/Los Angeles'));
// Extra: Format your date time
$dateTimeFormatted = $dateTime->format('Y-m-d H:i:s');
echo $dateTimeFormatted;
Friday, May 5, 2017
LINUX: Copying and Overwriting Files from a Folder to Parent Folder
cp -fR /source/files /dest
https://superuser.com/questions/358843/
how-to-replace-all-the-contents-from-one-folder-with-another-one
LINUX: Changing Group and Ownership
Note: You may need root/sudo permissions
Group:
> chgrp <group name> <directory or file name>
Owner:
> chown <user name> <directory>
Owner and Group:
> chown <user name>:<group name> <directory>
Owner and Group of all files and subfolders
> chown -R <user name>:<group name> <directory>
Group:
> chgrp <group name> <directory or file name>
Owner:
> chown <user name> <directory>
Owner and Group:
> chown <user name>:<group name> <directory>
Owner and Group of all files and subfolders
> chown -R <user name>:<group name> <directory>
Thursday, May 4, 2017
BACKBONE: Detecting Events for Several Elements
Problem:
Suppose you have several "select" elements in a table with the same data that triggers another "select" element, but you want to detect each "select" individually.
Solution:
In Backbone, we can add the "data-id" tag to the select element and dynamically populate the id in Backbone. Also, we need to add a class tag so all the "select" elements are fired without the need to construct a map or array of events. In the event you want to favor performance over simplicity, please consider the events collection approach.
Suppose you have several "select" elements in a table with the same data that triggers another "select" element, but you want to detect each "select" individually.
<table>
<tr>
<td><select>.....</select></td> <!--Select we want to detect-->
<td><select>.....</select></td> <!--Dependent Select-->
</tr>
<tr>
<td><select>.....</select></td> <!--Another Select-->
<td><select>.....</select></td> <!--Another dependent Select-->
</tr>
</table>Solution:
In Backbone, we can add the "data-id" tag to the select element and dynamically populate the id in Backbone. Also, we need to add a class tag so all the "select" elements are fired without the need to construct a map or array of events. In the event you want to favor performance over simplicity, please consider the events collection approach.
({
selectTable1:
{
selectCounter : 0
},
initialize: function()
{
// Add selects dynamically here (or create a helper function),
// or get other selects, etc.
},
events:
{
'change .myClass': 'detectEvent'
},
detectEvent: function(e)
{
e.preventDefault();
var id = $(e.currentTarget).data("id");
}
)}
Tuesday, May 2, 2017
SUGARCRM: Installation Error. Config File Screen Stops Responding
Problem:
When installing SugarCRM (in my case 7.8.2.0) I got the following error in my developer console using Chrome: "document.getElementById('button_next2') undefined" and my installation stops responding while configuring my config.php file
Solution:
On my previous screen, I used an existing database. Deleting (dropping) the database and letting sugar create a new one fixed the issue. Really?
When installing SugarCRM (in my case 7.8.2.0) I got the following error in my developer console using Chrome: "document.getElementById('button_next2') undefined" and my installation stops responding while configuring my config.php file
Solution:
On my previous screen, I used an existing database. Deleting (dropping) the database and letting sugar create a new one fixed the issue. Really?
SUGARCRM: Accessing Related Beans of a Module
if($bean->load_relationship('my_relationship_name_in_studio'))
{
$relatedBeans = $bean->my_relationship_name_in_studio->getBeans();
}
// traverse $relatedBeans here
.........
SUGARCRM: Accessing Beans Inside Entry Points
Problem:
Cannot access bean data inside a custom Entry Point, and no errors are reported by either PHP or SugarCRM (i.e. empty bean array or empty bean relationships)
Solution:
Warning: This implies a security risk as anyone can access the bean now.
Cannot access bean data inside a custom Entry Point, and no errors are reported by either PHP or SugarCRM (i.e. empty bean array or empty bean relationships)
Solution:
Warning: This implies a security risk as anyone can access the bean now.
if (empty($current_user) || empty($current_user->id)) {
$current_user = new User();
$current_user->getSystemUser(); // or any other user bean
}
SUGARCRM: Error Installing SugarCRM 7.8
Problem:
Test for .htaccess rewrites failed. This usually means you do not have AllowOverride set up for Sugar directory.
Solution:
Make sure the url is being accessed via https and not http. If this does not work, add AllowOverrideAll to your config file or .htaccess under <Directory>
Test for .htaccess rewrites failed. This usually means you do not have AllowOverride set up for Sugar directory.
Solution:
Make sure the url is being accessed via https and not http. If this does not work, add AllowOverrideAll to your config file or .htaccess under <Directory>
Wednesday, April 26, 2017
PHP: Formatting Date Specified as YYYY-MM-DDT00:00:00
public function formatDate($date, $daysToAdd)
{
$dateTime = new DateTime($date);
// Change the format accordingly
$dateTimeFormatted = $dateTime->format('Y-m-d h:m:s');
return str_replace(' ', 'T', $dateTimeFormatted);
}
JavaScript: Constructing a Simple JSON Object Dynamically
1. Create an initial JSON object with a single element and an array:
// {$id} is a PHP variable but it can be anything else
jsonObj = {"id" : "{$id}", "myArray": []};
2. Construct the JSON object
item = {}
item ["id"] = "some Id";
item ["value"] = "Some Value";
jsonObj.myArray.push(item);
3. Output JavaScript:
Object {id: "564f48ba-e9d5-463a-2325-58f91c653aa8", myArray: Array(1)}
where myArray is broken down as follows:
myArray: Array(3)
0: Object
id: "Some Id",
value: "Some Value"
4. Output PHP:
Array
(
[id] => 564f48ba-e9d5-463a-2325-58f91c653aa8
[myArray] => Array
(
[0] => Array
(
[id] => Some Id
[value] => Some Value
)
)
)
Tuesday, April 25, 2017
Friday, April 21, 2017
SUGARCRM: Querying Results using Raw SQL Statements
$sql = "SELECT id FROM accounts WHERE deleted = 0";
$result = $GLOBALS['db']->query($sql);
while($row = $GLOBALS['db']->fetchByAssoc($result) )
{
//Use $row['id'] to grab the id fields value
$id = $row['id'];
}
https://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_7.8/Data_Framework/Database/DBManagerFactory/
SUGARCRM: Getting blank Page on Entry Point
Make sure your Entry point is registered in your instance:
/custom/Extension/application/Ext/EntryPointRegistry/<your entry point>
/custom/Extension/application/Ext/EntryPointRegistry/<your entry point>
Thursday, April 20, 2017
SUGARCRM 7.8: Obtaining Field Labels based on Module Names
require_once('include/utils.php');
$label = translate('LBL_KEY', 'Accounts');
https://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_7.8/Architecture/Languages/Module_Labels/index.html
Wednesday, March 15, 2017
ELASTICSEARCH: Restarting Elastic Search SugarCRM Installation
Error:
Unable to connect to Full Text Search server, please verify settings
Solution:
1. Check ElasticSearch is running
> sudo /etc/init.d/elasticsearch status
2. If status is not running, restart
> sudo /etc/init.d/elasticsearch restart
3. If the above does not work, modify /etc/elasticsearch/elasticsearch.yml as follows:
discovery.zen.ping.multicast.enabled: false and repeat 1 & 2
Unable to connect to Full Text Search server, please verify settings
Solution:
1. Check ElasticSearch is running
> sudo /etc/init.d/elasticsearch status
2. If status is not running, restart
> sudo /etc/init.d/elasticsearch restart
3. If the above does not work, modify /etc/elasticsearch/elasticsearch.yml as follows:
discovery.zen.ping.multicast.enabled: false and repeat 1 & 2
Monday, March 6, 2017
SUGARCRM: Debugging SugarCRM 7.x
Inside a Logic Hook or any other backend file:
echo "<pre> DEBUGGING: ".PRINT_R('BEFORE' ,TRUE)."</pre>";
NOTE: The above command is for debugging purposes only. Make sure to remove that command before pushing to either production or QA.
echo "<pre> DEBUGGING: ".PRINT_R('BEFORE' ,TRUE)."</pre>";
NOTE: The above command is for debugging purposes only. Make sure to remove that command before pushing to either production or QA.
Subscribe to:
Posts (Atom)