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); } }