function save($check_notify = FALSE) { $focus = $this; if (isset($_POST['isSaveFromDetailView']) && $_POST['isSaveFromDetailView'] == 'true' || (isset($_POST['is_ajax_call']) && !empty($_POST['is_ajax_call']) && !empty($focus->id) || isset($_POST['return_action']) && $_POST['return_action'] == 'SubPanelViewer' && !empty($focus->id)) || !isset($_POST['user_invitees'])) { parent::save(true); $return_id = $focus->id; } else { if (!empty($_POST['user_invitees'])) { $userInvitees = explode(',', trim($_POST['user_invitees'], ',')); } else { $userInvitees = array(); } if (!empty($_POST['contact_invitees'])) { $contactInvitees = explode(',', trim($_POST['contact_invitees'], ',')); } else { $contactInvitees = array(); } $deleteUsers = array(); $existingUsers = array(); $deleteContacts = array(); $existingContacts = array(); if (!empty($this->id)) { //// REMOVE RESOURCE RELATIONSHIPS // Calculate which users to flag as deleted and which to add // Get all users for the project template $focus->load_relationship('users'); $users = $focus->get_linked_beans('am_projecttemplates_users_1', 'User'); foreach ($users as $a) { if (!in_array($a->id, $userInvitees)) { $deleteUsers[$a->id] = $a->id; } else { $existingUsers[$a->id] = $a->id; } } if (count($deleteUsers) > 0) { $sql = ''; foreach ($deleteUsers as $u) { $sql .= ",'" . $u . "'"; } $sql = substr($sql, 1); // We could run a delete SQL statement here, but will just mark as deleted instead $sql = "UPDATE am_projecttemplates_users_1_c set deleted = 1 where users_idb in ({$sql}) AND am_projecttemplates_ida = '" . $focus->id . "'"; $focus->db->query($sql); echo $sql; } // Get all contacts for the project $focus->load_relationship('contacts'); $contacts = $focus->get_linked_beans('am_projecttemplates_contacts_1', 'Contact'); foreach ($contacts as $a) { if (!in_array($a->id, $contactInvitees)) { $deleteContacts[$a->id] = $a->id; } else { $existingContacts[$a->id] = $a->id; } } if (count($deleteContacts) > 0) { $sql = ''; foreach ($deleteContacts as $u) { $sql .= ",'" . $u . "'"; } $sql = substr($sql, 1); // We could run a delete SQL statement here, but will just mark as deleted instead $sql = "UPDATE am_projecttemplates_contacts_1_c set deleted = 1 where contacts_idb in ({$sql}) AND am_projecttemplates_ida = '" . $focus->id . "'"; $focus->db->query($sql); echo $sql; } //// END REMOVE } $return_id = parent::save($check_notify); $focus->retrieve($return_id); //// REBUILD INVITEE RELATIONSHIPS // Process users $focus->load_relationship('users'); $focus->get_linked_beans('am_projecttemplates_users_1', 'User'); foreach ($userInvitees as $user_id) { if (empty($user_id) || isset($existingUsers[$user_id]) || isset($deleteUsers[$user_id])) { continue; } $focus->am_projecttemplates_users_1->add($user_id); } // Process contacts $focus->load_relationship('contacts'); $focus->get_linked_beans('am_projecttemplates_contacts_1', 'Contact'); foreach ($contactInvitees as $contact_id) { if (empty($contact_id) || isset($existingContacts[$contact_id]) || isset($deleteContacts[$contact_id])) { continue; } $focus->am_projecttemplates_contacts_1->add($contact_id); } //// END REBUILD INVITEE RELATIONSHIPS /////////////////////////////////////////////////////////////////////////// } }
function AM_ProjectTemplates() { parent::AM_ProjectTemplates_sugar(); }
public function __construct() { parent::__construct(); }