function build_relationship_tree($contact) { global $sugar_config; $contact->retrieve($contact->id); get_accounts_from_contact($contact->id); set_module_in(array('list' => array($contact->id), 'in' => "('" . $GLOBALS['db']->quote($contact->id) . "')"), 'Contacts'); $accounts = $_SESSION['viewable']['Accounts']; foreach ($accounts as $id) { if (!isset($sugar_config['portal_view']) || $sugar_config['portal_view'] != 'single_user') { get_contacts_from_account($id); } } }
function portal_set_entry($session, $module_name, $name_value_list) { global $beanList, $beanFiles, $valid_modules_for_contact; $error = new SoapError(); if (!portal_validate_authenticated($session)) { $error->set_error('invalid_session'); return array('id' => -1, 'error' => $error->get_soap_array()); } if (empty($beanList[$module_name])) { $error->set_error('no_module'); return array('id' => -1, 'error' => $error->get_soap_array()); } if ($_SESSION['type'] == 'lead' && $module_name != 'Leads') { $error->set_error('no_access'); return array('id' => -1, 'error' => $error->get_soap_array()); } if ($_SESSION['type'] == 'contact' && !key_exists($module_name, $valid_modules_for_contact)) { $error->set_error('no_access'); return array('id' => -1, 'error' => $error->get_soap_array()); } $class_name = $beanList[$module_name]; require_once $beanFiles[$class_name]; $seed = new $class_name(); $is_update = false; $values_set = array(); foreach ($name_value_list as $value) { if ($value['name'] == 'id' && !empty($value['value'])) { $seed->disable_row_level_security = true; $seed->retrieve($value['value']); $is_update = true; break; } $values_set[$value['name']] = $value['value']; $seed->{$value}['name'] = $value['value']; } // If it was an update, we have to set the values again if ($is_update) { foreach ($name_value_list as $value) { $seed->{$value}['name'] = $value['value']; } } if (!isset($_SESSION['viewable'][$module_name])) { $_SESSION['viewable'][$module_name] = array(); } if (!$is_update) { if (isset($_SESSION['assigned_user_id']) && (!key_exists('assigned_user_id', $values_set) || empty($values_set['assigned_user_id']))) { $seed->assigned_user_id = $_SESSION['assigned_user_id']; } if (isset($_SESSION['account_id']) && (!key_exists('account_id', $values_set) || empty($values_set['account_id']))) { $seed->account_id = $_SESSION['account_id']; } $seed->portal_flag = 1; $seed->portal_viewable = true; } $id = $seed->save(); set_module_in(array('in' => "('" . $GLOBALS['db']->quote($id) . "')", 'list' => array($id)), $module_name); if ($_SESSION['type'] == 'contact' && $module_name != 'Contacts' && !$is_update) { if ($module_name == 'Notes') { $seed->contact_id = $_SESSION['user_id']; if (isset($_SESSION['account_id'])) { $seed->parent_type = 'Accounts'; $seed->parent_id = $_SESSION['account_id']; } $id = $seed->save(); } else { $contact = new Contact(); $contact->disable_row_level_security = TRUE; $contact->retrieve($_SESSION['user_id']); $seed->contact_id = $contact; if (isset($_SESSION['account_id'])) { $seed->account_id = $_SESSION['account_id']; } $seed->save_relationship_changes(false); } } return array('id' => $id, 'error' => $error->get_soap_array()); }