function Update_User_In_Joomla($bean, $event, $arguments)
 {
     global $beanList, $beanFiles, $current_user, $sugar_config, $GLOBALS;
     $siteAccess = array();
     if ($bean->module_dir == 'Leads' && $bean->converted == 0) {
         $bean->load_relationship('leads_s_sites_access_1');
         $siteAccess = $bean->leads_s_sites_access_1->getBeans();
     }
     if ($bean->module_dir == 'Contacts') {
         $bean->load_relationship('contacts_s_sites_access_1');
         if (!empty($bean->fetched_row) && $bean->fetched_row['email1'] != '' && $bean->email1 != '' && $bean->fetched_row['email1'] != $bean->email1) {
             $siteAccess = $bean->contacts_s_sites_access_1->getBeans();
             foreach ($siteAccess as $Site_Access) {
                 $Site_Access->name = $bean->email1;
                 //$Site_Access->create_user = 1;
                 if ($bean->not_update_joomla_c) {
                     $Site_Access->block = 1;
                 }
                 $Site_Access->save();
             }
         }
     }
     //UPDATE THE USER DATA IN JOOMLA IF CHANGED IN SUGAR
     if (!empty($siteAccess) && $_SERVER['SCRIPT_NAME'] != 'cron.php') {
         foreach ($siteAccess as $SitesAccessObj) {
             if ($SitesAccessObj->joomla_id != 0 && $SitesAccessObj->joomla_id != '' && $SitesAccessObj->site == $sugar_config['default_joomla_site'] && !$bean->not_update_joomla_c) {
                 $arrPOST = array('auth_user' => $sugar_config['joomla_username'], 'auth_pass' => $sugar_config['joomla_password'], 'call' => 'manage_user', 'action' => 'update_user', 'id' => $SitesAccessObj->joomla_id, 'username' => $bean->email1, 'email' => $bean->email1, 'name' => $bean->first_name . ' ' . $bean->last_name, 'sugar_id' => $bean->id, 'sugar_module' => 'Contacts');
                 $joomlaResult = $this->_doRESTCALL($sugar_config['joomla_url_prefix'] . $sugar_config['default_joomla_site'] . $sugar_config['joomla_url'], $arrPOST);
                 if (!empty($joomlaResult->errors)) {
                     $GLOBALS['log']->error('Update_User_In_Joomla : Update user in Joomla failed ' . print_r($arrPOST, true) . ' ERROR:' . $joomlaResult->errors[0]->message);
                 }
             } elseif ($SitesAccessObj->joomla_id != 0 && $SitesAccessObj->joomla_id != '' && $SitesAccessObj->site == $sugar_config['docebo']['url'] && ($bean->fetched_row['email1'] != $bean->email1 || $bean->fetched_row['first_name'] != $bean->first_name || $bean->fetched_row['last_name'] != $bean->last_name)) {
                 $Docebo = new DoceboAPI($sugar_config['docebo']);
                 $arrPOST = array('id_user' => $SitesAccessObj->joomla_id, 'single_user' => 1, 'userid' => $bean->email1, 'firstname' => $bean->first_name, 'lastname' => $bean->last_name, 'email' => $bean->email1, 'ext_user_type' => 'SugarCRM');
                 $createDocebo = $Docebo->call('user/edit', $arrPOST);
                 $createDocebo = json_decode($createDocebo);
                 if ($createDocebo->success === true) {
                     $GLOBALS['log']->info('Update_User_In_Docebo : User {$SitesAccessObj->name} successfully updated in Docebo.');
                 } else {
                     $GLOBALS['log']->error('Update_User_In_Docebo : Update user in Docebo failed. Params: ' . print_r($arrPOST, true) . ' ERROR: ' . print_r($createDocebo, true));
                 }
             }
         }
     }
     if ($bean->not_update_joomla_c) {
         $bean->not_update_joomla_c = 0;
     }
 }
 /**
 * Push user site access to Joomla Site.
 		-When a site access is altered/updated, the data will be pushed to joomla user profile.
 */
 function Push_Site_Access_To_Sites($bean, $event, $arguments)
 {
     global $sugar_config, $GLOBALS;
     $GLOBALS['log']->info('Push_Site_Access_To_Sites: ' . $bean->name . ' run hook on event: ' . $event);
     if (!empty($bean->fetched_row) && $bean->block == 1 && $bean->fetched_row['block'] == 1) {
         $bean->block = 0;
     }
     if ($bean->site == $sugar_config['default_joomla_site'] && !$bean->block) {
         $result = $bean->db->query("select uag_link.group_id, uag.joomla_id, uag.website from\n                                          (SELECT s_sites_access_uag_user_access_group_1uag_user_access_group_idb as group_id FROM s_sites_access_uag_user_access_group_1_c WHERE s_sites_access_uag_user_access_group_1s_sites_access_ida='{$bean->id}' AND deleted=0\n                                        UNION\n                                           SELECT s_sites_access_uag_user_access_group_2uag_user_access_group_idb FROM s_sites_access_uag_user_access_group_2_c WHERE s_sites_access_uag_user_access_group_2s_sites_access_ida='{$bean->id}' AND deleted=0\n                                          ) uag_link,  uag_user_access_group uag\n                                          where uag_link.group_id = uag.id  and uag.website = '{$sugar_config['default_joomla_site']}'");
         $joomlaIds = "";
         while ($row = $bean->db->fetchByAssoc($result)) {
             if ($row['joomla_id'] != '' || $row['joomla_id'] != NULL) {
                 $joomlaIds .= $row['joomla_id'] . '*';
             }
         }
         $GLOBALS['log']->info('Push_Site_Access_To_Sites: ' . $bean->name . ' site ' . $bean->site . ' Joomla Ids ' . $joomlaIds);
         if (!empty($joomlaIds)) {
             $arrPOST = array('auth_user' => $sugar_config['joomla_username'], 'auth_pass' => $sugar_config['joomla_password'], 'call' => 'manage_user', 'action' => 'update_usergroup', 'username' => $bean->name, 'user_group' => $joomlaIds);
             $joomlaResult = $this->_doRESTCALL($sugar_config['joomla_url_prefix'] . $sugar_config['default_joomla_site'] . $sugar_config['joomla_url'], $arrPOST);
             if (!empty($joomlaResult->errors)) {
                 $GLOBALS['log']->error('Push_Site_Access_To_Sites : Pushing site access to site failed ' . print_r($arrPOST, true) . ' ERROR:' . $joomlaResult->errors[0]->message);
             } else {
                 $GLOBALS['log']->info('Push_Site_Access_To_Sites: Successful response from Joomla: ' . print_r($joomlaResult, true));
             }
         }
     } elseif ($bean->site == $sugar_config['docebo']['url'] && !empty($event) && $event != 'after_save') {
         $GLOBALS['log']->info('Push_Site_Access_To_Sites: ' . $bean->name . ' run hook on event: ' . $event);
         $clientId = $this->_get_related_id($bean, 'contacts_s_sites_access_1contacts_ida', 'contacts_s_sites_access_1');
         $leadId = $this->_get_related_id($bean, 'leads_s_sites_access_1leads_ida', 'leads_s_sites_access_1');
         if ($leadId != '') {
             $module_name = 'Leads';
             $contactObj = BeanFactory::getBean('Leads');
             $contactObj->retrieve($leadId);
         }
         if ($clientId != '') {
             $module_name = 'Contacts';
             $contactObj = BeanFactory::getBean('Contacts');
             $contactObj->retrieve($clientId);
         }
         if (isset($arguments['related_id']) && !empty($arguments['related_id'])) {
             $UAG = BeanFactory::getBean('UAG_user_access_group', $arguments['related_id']);
         } else {
             $UAG = false;
         }
         $GLOBALS['log']->info('Push_Site_Access_To_Sites: ' . $bean->name . ' site ' . $bean->site . ' Platform group ' . $UAG->joomla_id);
         if ($UAG !== false && $bean->joomla_id != 0) {
             $Docebo = new DoceboAPI($sugar_config['docebo']);
             $arrPOST = array('id_user' => $bean->joomla_id, 'course_id' => $UAG->joomla_id, 'user_level' => 'student');
             if ($event == 'after_relationship_add') {
                 $createDocebo = $Docebo->call('course/addUserSubscription', $arrPOST);
             } elseif ($event == 'after_relationship_delete') {
                 $createDocebo = $Docebo->call('course/deleteUserSubscription', $arrPOST);
             }
             $createDocebo = json_decode($createDocebo);
             if ($createDocebo->success === true) {
                 $GLOBALS['log']->info('Enroll_User_In_Docebo : User access successfully updated for Docebo course ' . $UAG->name);
             } else {
                 $GLOBALS['log']->error('Enroll_User_In_Docebo : User access update FAILED in Docebo. Params: ' . print_r($arrPOST, true) . ' ERROR: ' . print_r($createDocebo, true));
             }
         }
     } else {
         $GLOBALS['log']->error('Push_Site_Access_To_Sites: Cannot recognise platform or SA Object blocked: Site access ' . $bean->name . ', platform: ' . $bean->site . ' Blocked = ' . $bean->block . ' Event: ' . $event);
     }
 }