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>

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.

<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?

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.

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>