function save($check_notify = FALSE) { global $timedate, $current_user; if (isset($this->date_start)) { $td = $timedate->fromDb($this->date_start); if (!$td) { $this->date_start = $timedate->to_db($this->date_start); $td = $timedate->fromDb($this->date_start); } if ($td) { if (isset($this->duration_hours) && $this->duration_hours != '') { $td->modify("+{$this->duration_hours} hours"); } if (isset($this->duration_minutes) && $this->duration_minutes != '') { $td->modify("+{$this->duration_minutes} mins"); } $this->date_end = $td->asDb(); } } $check_notify = $this->send_invites; if ($this->send_invites == false) { $old_assigned_user_id = CalendarEvents::$old_assigned_user_id; if ((empty($GLOBALS['installing']) || $GLOBALS['installing'] != true) && (!empty($this->assigned_user_id) && $this->assigned_user_id != $GLOBALS['current_user']->id && $this->assigned_user_id != $old_assigned_user_id)) { $this->special_notification = true; $check_notify = true; CalendarEvents::$old_assigned_user_id = $this->assigned_user_id; if (isset($_REQUEST['assigned_user_name'])) { $this->new_assigned_user_name = $_REQUEST['assigned_user_name']; } } } if (empty($this->status)) { $this->status = $this->getDefaultStatus(); } // prevent a mass mailing for recurring meetings created in Calendar module if (empty($this->id) && !empty($_REQUEST['module']) && $_REQUEST['module'] == "Calendar" && !empty($_REQUEST['repeat_type']) && !empty($this->repeat_parent_id)) { $check_notify = false; } /*nsingh 7/3/08 commenting out as bug #20814 is invalid if($current_user->getPreference('reminder_time')!= -1 && isset($_POST['reminder_checked']) && isset($_POST['reminder_time']) && $_POST['reminder_checked']==0 && $_POST['reminder_time']==-1){ $this->reminder_checked = '1'; $this->reminder_time = $current_user->getPreference('reminder_time'); }*/ $return_id = parent::save($check_notify); $this->setUserInvitees($this->users_arr); if ($this->update_vcal) { $assigned_user = BeanFactory::getBean('Users', $this->assigned_user_id); vCal::cache_sugar_vcal($assigned_user); if ($this->assigned_user_id != $GLOBALS['current_user']->id) { vCal::cache_sugar_vcal($current_user); } } // CCL - Comment out call to set $current_user as invitee // set organizer to auto-accept // if there isn't a fetched row its new if ($this->assigned_user_id == $GLOBALS['current_user']->id && empty($this->fetched_row)) { $this->set_accept_status($GLOBALS['current_user'], 'accept'); } return $return_id; }
function save($check_notify = FALSE) { global $timedate; global $current_user; if (isset($this->date_start)) { $td = $timedate->fromDb($this->date_start); if (!$td) { $this->date_start = $timedate->to_db($this->date_start); $td = $timedate->fromDb($this->date_start); } if ($td) { if (isset($this->duration_hours) && $this->duration_hours != '') { $td->modify("+{$this->duration_hours} hours"); } if (isset($this->duration_minutes) && $this->duration_minutes != '') { $td->modify("+{$this->duration_minutes} mins"); } $this->date_end = $td->asDb(); } } $check_notify = $this->send_invites; if ($this->send_invites == false) { $old_assigned_user_id = CalendarEvents::$old_assigned_user_id; if ((empty($GLOBALS['installing']) || $GLOBALS['installing'] != true) && (!empty($this->assigned_user_id) && $this->assigned_user_id != $GLOBALS['current_user']->id && $this->assigned_user_id != $old_assigned_user_id)) { $this->special_notification = true; $check_notify = true; CalendarEvents::$old_assigned_user_id = $this->assigned_user_id; if (isset($_REQUEST['assigned_user_name'])) { $this->new_assigned_user_name = $_REQUEST['assigned_user_name']; } } } /*nsingh 7/3/08 commenting out as bug #20814 is invalid if($current_user->getPreference('reminder_time')!= -1 && isset($_POST['reminder_checked']) && isset($_POST['reminder_time']) && $_POST['reminder_checked']==0 && $_POST['reminder_time']==-1){ $this->reminder_checked = '1'; $this->reminder_time = $current_user->getPreference('reminder_time'); }*/ // prevent a mass mailing for recurring meetings created in Calendar module if (empty($this->id) && !empty($_REQUEST['module']) && $_REQUEST['module'] == "Calendar" && !empty($_REQUEST['repeat_type']) && !empty($this->repeat_parent_id)) { $check_notify = false; } if (empty($this->status)) { $this->status = $this->getDefaultStatus(); } // Do any external API saving // Clear out the old external API stuff if we have changed types if (isset($this->fetched_row) && $this->fetched_row['type'] != $this->type) { $this->join_url = ''; $this->host_url = ''; $this->external_id = ''; $this->creator = ''; } if (!empty($this->type) && $this->type != 'Sugar') { require_once 'include/externalAPI/ExternalAPIFactory.php'; $api = ExternalAPIFactory::loadAPI($this->type); } if (empty($this->type)) { $this->type = 'Sugar'; } if (isset($api) && is_a($api, 'WebMeeting') && empty($this->in_relationship_update)) { // Make sure the API initialized and it supports Web Meetings // Also make sure we have an ID, the external site needs something to reference if (!isset($this->id) || empty($this->id)) { $this->id = create_guid(); $this->new_with_id = true; } // formatting fix required because our schedule meeting APIs expect data in a specific format $this->fixUpFormatting(); $response = $api->scheduleMeeting($this); if ($response['success'] == TRUE) { // Need to send out notifications if ($api->canInvite) { $notifyList = $this->get_notification_recipients(); foreach ($notifyList as $person) { $api->inviteAttendee($this, $person, $check_notify); } } } else { // Generic Message Provides no value to End User - Log the issue with message detail and continue // SugarApplication::appendErrorMessage($GLOBALS['app_strings']['ERR_EXTERNAL_API_SAVE_FAIL']); $GLOBALS['log']->warn('ERR_EXTERNAL_API_SAVE_FAIL' . ": " . $this->type . " - " . $response['errorMessage']); } $api->logoff(); } $return_id = parent::save($check_notify); $this->setUserInvitees($this->users_arr); if ($this->update_vcal) { $assigned_user = BeanFactory::getBean('Users', $this->assigned_user_id); vCal::cache_sugar_vcal($assigned_user); if ($this->assigned_user_id != $GLOBALS['current_user']->id) { vCal::cache_sugar_vcal($current_user); } } // CCL - Comment out call to set $current_user as invitee // set organizer to auto-accept // if there isn't a fetched row its new if ($this->assigned_user_id == $GLOBALS['current_user']->id && empty($this->fetched_row)) { $this->set_accept_status($GLOBALS['current_user'], 'accept'); } return $return_id; }