$year++; } } $p = get_url('event', 'viewdate', array('day' => $day_of_month - $lastday, 'month' => $month, 'year' => $year, 'view_type' => 'viewdate')); $t = get_url('event', 'add', array('day' => $day_of_month - $lastday, 'month' => $month, 'year' => $year)); $w = $day_of_month - $lastday; $dtv = DateTimeValueLib::make(0, 0, 0, $month, $w, $year); } $loc = Localization::instance(); $start_value = $dtv->format(user_config_option('date_format')); $popupTitle = lang('add event'); $output .= "><div style='z-index:0; min-height:100px; height:100%;cursor:pointer' onclick=\"og.EventPopUp.show(null, {caller:'overview-panel', day:'" . $dtv->getDay() . "', month:'" . $dtv->getMonth() . "', year:'" . $dtv->getYear() . "', type_id:1, hour:'9', minute:'0', durationhour:1, durationmin:0, start_value: '{$start_value}', start_time:'9:00', title:'" . format_datetime($dtv, 'l, j F', logged_user()->getTimezone()) . "', view: 'week', title: '{$popupTitle}', time_format: '{$timeformat}', hide_calendar_toolbar: 0, genid:{$genid}, otype:" . $event->manager()->getObjectTypeId() . "},'');\") >\n\t\t\t<div class='{$daytitle}' style='text-align:right'>"; //if($day_of_month >= 1){ $output .= "<a class='internalLink' href=\"{$p}\" onclick=\"og.disableEventPropagation(event);\" style='color:#5B5B5B' >{$w}</a>"; // only display this link if the user has permission to add an event if (!active_project() || ProjectEvent::canAdd(logged_user(), active_project())) { // if single digit, add a zero $dom = $day_of_month; if ($dom < 10) { $dom = "0" . $dom; } // make sure user is allowed to edit the past } //}else $output .= " "; $output .= "</div>"; // This loop writes the events for the day in the cell if (is_numeric($w)) { $result = ProjectEvents::getDayProjectEvents($dtv, $tags, active_project(), logged_user()->getId(), ' 0 1 3'); if (!$result) { $result = array(); }
} } } // generate repetitive event instances $repeated_instances = array(); foreach ($all_events as $k => $aev) { if ($aev->isRepetitive()) { $rep = $aev->getRepetitiveInstances($date_start, $date_end); if (count($rep) > 0) { $repeated_instances[] = $rep; unset($all_events[$k]); } } } $all_events = array_merge($all_events, array_flat($repeated_instances)); $can_add_events = ProjectEvent::canAdd(logged_user(), active_context()); // Loop to render the calendar for ($week_index = 0;; $week_index++) { $month_aux = $month; $year_aux = $year; $day_of_month = $week_index * 7 + 2 - $firstday; $weeknumber = date("W", mktime(0, 0, 0, $month, $day_of_month, $year)); ?> <tr> <?php if (user_config_option("show_week_numbers")) { ?> <td style="width:20px" class="weeknumber" valign="top"><?php echo $weeknumber; ?> </td>
function add() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } if (!ProjectEvent::canAdd(logged_user(), active_or_personal_project())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $this->setTemplate('event'); $event = new ProjectEvent(); $event_data = array_var($_POST, 'event'); $event_subject = array_var($_GET, 'subject'); //if sent from pupup $month = isset($_GET['month']) ? $_GET['month'] : date('n', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600); $day = isset($_GET['day']) ? $_GET['day'] : date('j', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600); $year = isset($_GET['year']) ? $_GET['year'] : date('Y', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600); $user_filter = isset($_GET['user_filter']) ? $_GET['user_filter'] : logged_user()->getId(); if (!is_array($event_data)) { // if data sent from quickadd popup (via get) we se it, else default if (isset($_GET['start_time'])) { $this->parseTime($_GET['start_time'], $hour, $minute); } else { $hour = isset($_GET['hour']) ? $_GET['hour'] : date('G', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600); $minute = isset($_GET['minute']) ? $_GET['minute'] : round(date('i') / 15, 0) * 15; //0,15,30 and 45 min } if (!user_config_option('time_format_use_24')) { if ($hour >= 12) { $pm = 1; $hour = $hour - 12; } else { $pm = 0; } } $event_data = array('month' => isset($_GET['month']) ? $_GET['month'] : date('n', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600), 'year' => isset($_GET['year']) ? $_GET['year'] : date('Y', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600), 'day' => isset($_GET['day']) ? $_GET['day'] : date('j', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600), 'hour' => $hour, 'minute' => $minute, 'pm' => isset($pm) ? $pm : 0, 'typeofevent' => isset($_GET['type_id']) ? $_GET['type_id'] : 1, 'subject' => $event_subject, 'durationhour' => isset($_GET['durationhour']) ? $_GET['durationhour'] : 1, 'durationmin' => isset($_GET['durationmin']) ? $_GET['durationmin'] : 0); // array } // if tpl_assign('event', $event); tpl_assign('event_data', $event_data); tpl_assign('active_projects', logged_user()->getActiveProjects()); if (is_array(array_var($_POST, 'event'))) { try { $data = $this->getData($event_data); $event->setFromAttributes($data); if (!logged_user()->isMemberOfOwnerCompany()) { $event->setIsPrivate(false); } DB::beginWork(); $event->save(); $event->setTagsFromCSV(array_var($event_data, 'tags')); $this->registerInvitations($data, $event); if (isset($data['confirmAttendance'])) { $this->change_invitation_state($data['confirmAttendance'], $event->getId(), $user_filter); } if (isset($data['send_notification']) && $data['send_notification']) { $users_to_inv = array(); foreach ($data['users_to_invite'] as $us => $v) { if ($us != logged_user()->getId()) { $users_to_inv[] = Users::findById(array('id' => $us)); } } Notifier::notifEvent($event, $users_to_inv, 'new', logged_user()); } foreach ($data['users_to_invite'] as $user_id => $v) { $user = Users::findById(array('id' => $user_id)); if ($user instanceof User) { $phone_num = Users::getPhoneNumberCustomProperty($user_id); $sms_obj = new SmsController(); $sms_obj->prepareEventInvitee($user->getDisplayName(), $event->getTitle(), get_class($event)); $sms_obj->sendSms($phone_num); } } if (array_var($_POST, 'popup', false)) { $_POST['ws_ids'] = active_or_personal_project()->getId(); } $object_controller = new ObjectController(); $object_controller->add_to_workspaces($event); $object_controller->link_to_new_object($event); $object_controller->add_subscribers($event); $object_controller->add_custom_properties($event); $object_controller->add_reminders($event); if (array_var($_POST, 'popup', false)) { // create default reminder $minutes = 15; $reminder = new ObjectReminder(); $reminder->setMinutesBefore($minutes); $reminder->setType("reminder_popup"); $reminder->setContext("start"); $reminder->setObject($event); $reminder->setUserId(0); $date = $event->getStart(); if ($date instanceof DateTimeValue) { $rdate = new DateTimeValue($date->getTimestamp() - $minutes * 60); $reminder->setDate($rdate); } $reminder->save(); } ApplicationLogs::createLog($event, $event->getWorkspaces(), ApplicationLogs::ACTION_ADD); if (array_var($_POST, 'popup', false)) { $event->subscribeUser(logged_user()); ajx_current("reload"); } else { ajx_current("back"); } DB::commit(); flash_success(lang('success add event', clean($event->getObjectName()))); ajx_add("overview-panel", "reload"); } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); } // try } }
function add() { if (logged_user()->isGuest()) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $notAllowedMember = ''; if(!(ProjectEvent::canAdd(logged_user(), active_context(),$notAllowedMember ))){ if (str_starts_with($notAllowedMember, '-- req dim --')) flash_error(lang('must choose at least one member of', str_replace_first('-- req dim --', '', $notAllowedMember, $in))); else flash_error(lang('no context permissions to add',lang("events"), $notAllowedMember)); ajx_current("empty"); return ; } $this->setTemplate('event'); $event = new ProjectEvent(); $event_data = array_var($_POST, 'event'); $event_name = array_var($_GET, 'name'); //if sent from pupup //var_dump($event_data) ; $month = isset($_GET['month'])?$_GET['month']:date('n', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600); $day = isset($_GET['day'])?$_GET['day']:date('j', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600); $year = isset($_GET['year'])?$_GET['year']:date('Y', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600); $user_filter = isset($_GET['user_filter']) ? $_GET['user_filter'] : logged_user()->getId(); if(!is_array($event_data)) { // if data sent from quickadd popup (via get) we se it, else default if (isset($_GET['start_time'])) $this->parseTime($_GET['start_time'], $hour, $minute); else { $hour = isset($_GET['hour']) ? $_GET['hour'] : date('G', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600); $minute = isset($_GET['minute']) ? $_GET['minute'] : round((date('i') / 15), 0) * 15; //0,15,30 and 45 min } if(!user_config_option('time_format_use_24')) { if($hour >= 12){ $pm = 1; $hour = $hour - 12; } else $pm = 0; } $event_data = array( 'month' => isset($_GET['month']) ? $_GET['month'] : date('n', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600), 'year' => isset($_GET['year']) ? $_GET['year'] : date('Y', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600), 'day' => isset($_GET['day']) ? $_GET['day'] : date('j', DateTimeValueLib::now()->getTimestamp() + logged_user()->getTimezone() * 3600), 'hour' => $hour, 'minute' => $minute, 'pm' => (isset($pm) ? $pm : 0), 'typeofevent' => isset($_GET['type_id']) ? $_GET['type_id'] : 1, 'name' => $event_name, 'durationhour' => isset($_GET['durationhour']) ? $_GET['durationhour'] : 1, 'durationmin' => isset($_GET['durationmin']) ? $_GET['durationmin'] : 0, ); // array } // if tpl_assign('event', $event); tpl_assign('event_data', $event_data); tpl_assign('event_related', false); if (is_array(array_var($_POST, 'event'))) { try { $data = $this->getData($event_data); $event->setFromAttributes($data); DB::beginWork(); $event->save(); $this->registerInvitations($data, $event); if (isset($data['confirmAttendance'])) { $this->change_invitation_state($data['confirmAttendance'], $event->getId(), $user_filter); } if (array_var($_POST, 'members')) { $member_ids = json_decode(array_var($_POST, 'members')); } else { $member_ids = array(); $context = active_context(); foreach ($context as $selection) { if ($selection instanceof Member) $member_ids[] = $selection->getId(); } } ApplicationLogs::createLog($event, ApplicationLogs::ACTION_ADD, false, $is_silent); $object_controller = new ObjectController(); $object_controller->add_to_members($event, $member_ids); $object_controller->add_subscribers($event); $object_controller->link_to_new_object($event); $object_controller->add_custom_properties($event); $object_controller->add_reminders($event); if (array_var($_POST, 'popup', false)) { // create default reminder $def = explode(",", user_config_option("reminders_events")); $minutes = array_var($def, 2) * array_var($def, 1); $reminder = new ObjectReminder(); $reminder->setMinutesBefore($minutes); $reminder->setType(array_var($def, 0, 'reminder_email')); $reminder->setContext("start"); $reminder->setObject($event); $reminder->setUserId(0); $date = $event->getStart(); if ($date instanceof DateTimeValue) { $rdate = new DateTimeValue($date->getTimestamp() - $minutes * 60); $reminder->setDate($rdate); } $reminder->save(); // subscribe or not the invited users if (user_config_option('event_subscribe_invited')){ $data['subscribe_invited'] = "checked"; } // send or not the inivitations if (user_config_option('event_send_invitations')){ $data['send_notification'] = "checked"; } } $opt_rep_day = array(); if(array_var($event_data, 'repeat_saturdays')){ $opt_rep_day['saturday'] = true; }else{ $opt_rep_day['saturday'] = false; } if(array_var($event_data, 'repeat_sundays')){ $opt_rep_day['sunday'] = true; }else{ $opt_rep_day['sunday'] = false; } if (array_var($_POST, 'popup', false)) { $event->subscribeUser(logged_user()); ajx_current("reload"); } else { ajx_current("back"); } DB::commit(); $is_silent = false; if (isset($data['send_notification']) && $data['send_notification']) { $users_to_inv = array(); foreach ($data['users_to_invite'] as $us => $v) { if ($us != logged_user()->getId()) { $users_to_inv[] = Contacts::findById(array('id' => $us)); } } Notifier::notifEvent($event, $users_to_inv, 'new', logged_user()); $is_silent = true; } flash_success(lang('success add event', clean($event->getObjectName()))); ajx_add("overview-panel", "reload"); } catch(Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); } // try } }
$year++; } } $p = get_url('event', 'viewdate', array('day' => $day_of_month - $lastday, 'month' => $month, 'year' => $year, 'view_type' => 'viewdate')); $t = get_url('event', 'add', array('day' => $day_of_month - $lastday, 'month' => $month, 'year' => $year)); $w = $day_of_month - $lastday; $dtv = DateTimeValueLib::make(0, 0, 0, $month, $w, $year); } $loc = Localization::instance(); $start_value = $dtv->format(user_config_option('date_format')); $popupTitle = lang('add event'); $output .= "><div style='z-index:0; min-height:100px; height:100%;cursor:pointer' onclick=\"og.showEventPopup('" . $dtv->getDay() . "','" . $dtv->getMonth() . "','" . $dtv->getYear() . "',9,0,true,'" . $start_value . "', '" . $genid . "',1,true);\") >\n\t\t\t<div class='{$daytitle}' style='text-align:right'>"; //if($day_of_month >= 1){ $output .= "<a class='internalLink' href=\"{$p}\" onclick=\"og.disableEventPropagation(event);\" style='color:#5B5B5B' >{$w}</a>"; // only display this link if the user has permission to add an event if (ProjectEvent::canAdd(logged_user(), active_context())) { // if single digit, add a zero $dom = $day_of_month; if ($dom < 10) { $dom = "0" . $dom; } // make sure user is allowed to edit the past } //}else $output .= " "; $output .= "</div>"; // This loop writes the events for the day in the cell if (is_numeric($w)) { if (count($result) < 1) { $output .= " "; } else { $count = 0;