コード例 #1
0
ファイル: widget_calendar.php プロジェクト: rorteg/fengoffice
             $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 .= "&nbsp;";
 $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();
     }
コード例 #2
0
ファイル: calendar.php プロジェクト: abhinay100/feng_app
        }
    }
}
// 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>
コード例 #3
0
 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
     }
 }
コード例 #4
0
	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

		}
	}
コード例 #5
0
ファイル: index.php プロジェクト: abhinay100/feng_app
             $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 .= "&nbsp;";
 $output .= "</div>";
 // This loop writes the events for the day in the cell
 if (is_numeric($w)) {
     if (count($result) < 1) {
         $output .= "&nbsp;";
     } else {
         $count = 0;