コード例 #1
0
 static function getDayDates($user_id, $weekday)
 {
     //get current semester
     $semdata = new \SemesterData();
     $current_semester = $semdata->getCurrentSemesterData();
     $current_semester_id = $current_semester['semester_id'];
     return \CalendarScheduleModel::getEntries($user_id, $current_semester, 00, 2000, array($weekday - 1), false);
 }
コード例 #2
0
ファイル: instschedule.php プロジェクト: ratbird/hope
 /**
  * this action is the main action of the schedule-controller, setting the environment for the timetable,
  * accepting a comma-separated list of days.
  *
  * @param  string  a list of an arbitrary mix of the numbers 0-6, separated with a comma (e.g. 1,2,3,4,5 (for Monday to Friday, the default))
  */
 function index_action($days = false)
 {
     if ($GLOBALS['perm']->have_perm('admin')) {
         $inst_mode = true;
     }
     $my_schedule_settings = $GLOBALS['user']->cfg->SCHEDULE_SETTINGS;
     // set the days to be displayed
     if ($days === false) {
         if (Request::getArray('days')) {
             $this->days = array_keys(Request::getArray('days'));
         } else {
             $this->days = array(0, 1, 2, 3, 4, 5, 6);
         }
     } else {
         $this->days = explode(',', $days);
     }
     // try to find the correct institute-id
     $institute_id = Request::option('institute_id', $SessSemName[1] ? $SessSemName[1] : Request::option('cid', false));
     if (!$institute_id) {
         $institute_id = $GLOBALS['user']->cfg->MY_INSTITUTES_DEFAULT;
     }
     if (!$institute_id || in_array(get_object_type($institute_id), words('inst fak')) === false) {
         throw new Exception(sprintf(_('Kann Einrichtungskalendar nicht anzeigen!' . 'Es wurde eine ungültige Instituts-Id übergeben (%s)!', $institute_id)));
     }
     // load semester-data and current semester
     $semdata = new SemesterData();
     $this->semesters = $semdata->getAllSemesterData();
     if (Request::option('semester_id')) {
         $this->current_semester = $semdata->getSemesterData(Request::option('semester_id'));
     } else {
         $this->current_semester = $semdata->getCurrentSemesterData();
     }
     $this->entries = (array) CalendarInstscheduleModel::getInstituteEntries($GLOBALS['user']->id, $this->current_semester, 8, 20, $institute_id, $this->days);
     Navigation::activateItem('/course/main/schedule');
     PageLayout::setHelpKeyword('Basis.TerminkalenderStundenplan');
     PageLayout::setTitle($GLOBALS['SessSemName']['header_line'] . ' - ' . _('Veranstaltungs-Stundenplan'));
     $zoom = Request::int('zoom', 0);
     $this->controller = $this;
     $this->calendar_view = new CalendarWeekView($this->entries, 'instschedule');
     $this->calendar_view->setHeight(40 + 20 * $zoom);
     $this->calendar_view->setRange($my_schedule_settings['glb_start_time'], $my_schedule_settings['glb_end_time']);
     $this->calendar_view->groupEntries();
     // if enabled, group entries with same start- and end-date
     URLHelper::addLinkParam('zoom', $zoom);
     URLHelper::addLinkParam('semester_id', $this->current_semester['semester_id']);
     $style_parameters = array('whole_height' => $this->calendar_view->getOverallHeight(), 'entry_height' => $this->calendar_view->getHeight());
     $factory = new Flexi_TemplateFactory($this->dispatcher->trails_root . '/views');
     PageLayout::addStyle($factory->render('calendar/stylesheet', $style_parameters));
     if (Request::option('printview')) {
         PageLayout::addStylesheet('print.css');
     } else {
         PageLayout::addStylesheet('print.css', array('media' => 'print'));
     }
 }
コード例 #3
0
 function ShowSemSchedules ($resource_id, $semester_id = null, $timespan = 'sem_time') {
     $sem = new SemesterData();
     if (!$semester_id){
         $this->semester = $sem->getCurrentSemesterData();
     } else {
         $this->semester = $sem->getSemesterData($semester_id);
     }
     $this->timespan = $timespan;
     if  ($this->timespan == 'sem_time'){
         $next_sem = $sem->getNextSemesterData($this->semester['vorles_ende']);
         $this->start_time = $this->semester['vorles_ende'];
         $this->end_time = is_array($next_sem) ? $next_sem['vorles_beginn'] : $this->semester['ende'];
     } else {
         $this->start_time = $this->semester['vorles_beginn'];
         $this->end_time = $this->semester['vorles_ende'];
     }
     parent::ShowSchedules($resource_id);
 }
コード例 #4
0
ファイル: Schedule.php プロジェクト: ratbird/hope
 /**
  * returns schedule for a given user and semester
  *
  * @get /user/:user_id/schedule/:semester_id
  * @get /user/:user_id/schedule
  */
 public function getSchedule($user_id, $semester_id = NULL)
 {
     if ($user_id !== $GLOBALS['user']->id) {
         $this->error(401);
     }
     $semdata = new \SemesterData();
     $current_semester = isset($semester_id) ? $semdata->getSemesterData($semester_id) : $semdata->getCurrentSemesterData();
     if (!$current_semester) {
         $this->notFound('No such semester.');
     }
     $schedule_settings = \UserConfig::get($user_id)->SCHEDULE_SETTINGS;
     $days = $schedule_settings['glb_days'];
     $entries = \CalendarScheduleModel::getEntries($user_id, $current_semester, $schedule_settings['glb_start_time'], $schedule_settings['glb_end_time'], $days, $visible = false);
     $json = array();
     foreach ($entries as $number_of_day => $schedule_of_day) {
         $entries = array();
         foreach ($schedule_of_day->entries as $entry) {
             $entries[$entry['id']] = self::entryToJson($entry);
         }
         $json[$number_of_day + 1] = $entries;
     }
     $this->etag(md5(serialize($json)));
     return $json;
 }
コード例 #5
0
ファイル: resourcesControl.inc.php プロジェクト: ratbird/hope
 * @package     resources
*/

$view = Request::option('view');
$view_mode = Request::option('view_mode');
$quick_view_mode = Request::option('quick_view_mode');
/*****************************************************************************
Requires & Registers
/*****************************************************************************/

require_once 'lib/msg.inc.php';
require_once $GLOBALS['RELATIVE_PATH_RESOURCES'] . '/views/Msg.class.php';

$_SESSION['resources_data'] = @unserialize($_SESSION['resources_data']);
if (empty($_SESSION['resources_data'])) {
    $temp_semester = SemesterData::getCurrentSemesterData() ?: end(SemesterData::getAllSemesterData());
    $_SESSION['resources_data'] = array(
        'view'                     => 'search',
        'view_mode'                => false,
        'sem_schedule_semester_id' => $temp_semester['semester_id'],
        'sem_schedule_timespan'    => 'course_time'
    );
}

$globalPerm = getGlobalPerms($user->id);
$msg = new Msg;


/*****************************************************************************
empfangene Werte auswerten und Befehle ausfuehren
/*****************************************************************************/
コード例 #6
0
ファイル: schedule.php プロジェクト: ratbird/hope
 /**
  * this action is the main action of the schedule-controller, setting the environment
  * for the timetable, accepting a comma-separated list of days.
  *
  * @param  string  $days  a list of an arbitrary mix of the numbers 0-6, separated
  *                        with a comma (e.g. 1,2,3,4,5 (for Monday to Friday, the default))
  * @return void
  */
 function index_action($days = false)
 {
     global $user;
     $schedule_settings = CalendarScheduleModel::getScheduleSettings();
     if ($GLOBALS['perm']->have_perm('admin')) {
         $inst_mode = true;
     }
     if ($inst_mode) {
         // try to find the correct institute-id
         $institute_id = Request::option('institute_id', $SessSemName[1] ? $SessSemName[1] : Request::option('cid', false));
         if (!$institute_id) {
             $institute_id = UserConfig::get($user->id)->MY_INSTITUTES_DEFAULT;
         }
         if (!$institute_id || !in_array(get_object_type($institute_id), words('fak inst'))) {
             throw new Exception('Cannot display institute-calender. No valid ID given!');
         }
         Navigation::activateItem('/browse/my_courses/schedule');
     } else {
         Navigation::activateItem('/calendar/schedule');
     }
     // check, if the hidden seminar-entries shall be shown
     $show_hidden = Request::int('show_hidden', 0);
     // load semester-data and current semester
     $semdata = new SemesterData();
     $this->semesters = array_reverse($semdata->getAllSemesterData());
     if (Request::option('semester_id')) {
         $this->current_semester = $semdata->getSemesterData(Request::option('semester_id'));
     } else {
         $this->current_semester = $semdata->getCurrentSemesterData();
     }
     // check type-safe if days is false otherwise sunday (0) cannot be chosen
     if ($days === false) {
         if (Request::getArray('days')) {
             $this->days = array_keys(Request::getArray('days'));
         } else {
             $this->days = $schedule_settings['glb_days'];
             foreach ($this->days as $key => $day_number) {
                 $this->days[$key] = ($day_number + 6) % 7;
             }
         }
     } else {
         $this->days = explode(',', $days);
     }
     $this->controller = $this;
     $this->calendar_view = $inst_mode ? CalendarScheduleModel::getInstCalendarView($institute_id, $show_hidden, $this->current_semester, $this->days) : CalendarScheduleModel::getUserCalendarView($GLOBALS['user']->id, $show_hidden, $this->current_semester, $this->days);
     // have we chosen an entry to display?
     if ($this->flash['entry']) {
         if ($inst_mode) {
             $this->show_entry = $this->flash['entry'];
         } else {
             if ($this->flash['entry']['id'] == null) {
                 $this->show_entry = $this->flash['entry'];
             } else {
                 foreach ($this->calendar_view->getColumns() as $entry_days) {
                     foreach ($entry_days->getEntries() as $entry) {
                         if ($this->flash['entry']['cycle_id']) {
                             if ($this->flash['entry']['id'] . '-' . $this->flash['entry']['cycle_id'] == $entry['id']) {
                                 $this->show_entry = $entry;
                                 $this->show_entry['id'] = reset(explode('-', $this->show_entry['id']));
                             }
                         } else {
                             if ($entry['id'] == $this->flash['entry']['id']) {
                                 $this->show_entry = $entry;
                             }
                         }
                     }
                 }
             }
         }
     }
     $style_parameters = array('whole_height' => $this->calendar_view->getOverallHeight(), 'entry_height' => $this->calendar_view->getHeight());
     $factory = new Flexi_TemplateFactory($this->dispatcher->trails_root . '/views');
     PageLayout::addStyle($factory->render('calendar/stylesheet', $style_parameters), 'screen, print');
     if (Request::option('printview')) {
         $this->calendar_view->setReadOnly();
         PageLayout::addStylesheet('print.css');
     } else {
         PageLayout::addStylesheet('print.css', array('media' => 'print'));
     }
     $this->show_hidden = $show_hidden;
     $inst = get_object_name($institute_id, 'inst');
     $this->inst_mode = $inst_mode;
     $this->institute_name = $inst['name'];
     $this->institute_id = $institute_id;
     if (Request::get('show_settings')) {
         $this->show_settings = true;
     }
 }
コード例 #7
0
ファイル: quickdail.php プロジェクト: nbussman/StudipMobile
 static function get_next_courses($user_id)
 {
     /*
     
             
     		$items = array();
     	    $db = \DBManager::get();
     	
     		$semester = \SemesterData::getCurrentSemesterData();
     		$semester_begin = $semester["beginn"];
     		$semester_ende  = $semester["ende"];
     	
     		$today =date("N");
     		
     		// !!! bisher ohne cycling, kein Dozent
     		// !! bisher die ersten 5 in der woche
     		// was ist cycle bzw weekoffset inseminar seminar_cycle_dates
     		$fields= "seminar_user.Seminar_id 		AS Seminar_id,
     			  seminar_user.user_id,
     			  seminar_user.visible,
     		 	  seminare.Seminar_id,
     			  seminare.start_time,
     			  seminare.Name				AS name,
     			  seminar_cycle_dates.start_time 	AS beginn,
     			  seminar_cycle_dates.end_time		AS ende,
     			  seminar_cycle_dates.start_time,	
     			  seminar_cycle_dates.weekday		AS weekday,
     			  seminar_cycle_dates.seminar_id,
     			  seminar_cycle_dates.description	AS description
     			 ";
     		$query = "SELECT $fields
     			  FROM  seminar_user
     			  JOIN  seminare ON seminar_user.Seminar_id = seminare.Seminar_id
     			  JOIN  seminar_cycle_dates ON seminar_user.Seminar_id = seminar_cycle_dates.seminar_id
     			  WHERE     seminar_user.user_id = '$user_id' 
     			  		AND seminar_user.visible = 'yes'
     			        AND seminare.start_time  >= '$semester_begin'
     			  ORDER BY seminar_cycle_dates.weekday, seminar_cycle_dates.start_time	
     			 ";
     		$result = $db->query($query);
     		
     		$i = 0;
     		foreach($result as $row)
     		{
     			$i++;
     			$items[$i] = array(
     	                        'id'            => $row['Seminar_id'],
     	                        'title'         => $row['name'],
     	                        'beginn'     	=> substr($row['beginn'], 0, 5),
     	                        'ende'       	=> substr($row['ende'], 0, 5),
     	                        'weekday'       => $row['weekday'],
     	                        'description'   => $row['description']
     	                    );
     		}
     */
     //get current semester
     $semdata = new \SemesterData();
     $current_semester = $semdata->getCurrentSemesterData();
     $current_semester_id = $current_semester['semester_id'];
     $entries = \CalendarScheduleModel::getEntries($user_id, $current_semester, 00, 2000, array(0, 1, 2, 3, 4, 5, 6), false);
     $output = array();
     $counter = 0;
     $currentWeekDay = date("N") - 1;
     $currentTime = date("Gi");
     if (!empty($entries)) {
         for ($i = 0; $i <= 6; $i++) {
             $currentWeekDay += $i;
             if ($currentWeekDay > 6) {
                 $currentWeekDay = 0;
             }
             $currentDayObject = $entries[$currentWeekDay];
             if (!empty($currentDayObject)) {
                 //sortieren der einträge des tages
                 $arrayObject = new \ArrayObject($currentDayObject->getEntries());
                 $arrayObject->uasort('Helper::cmpEarlier');
                 foreach ($arrayObject->getArrayCopy() as $entry) {
                     if ($counter >= 3) {
                         break;
                         $i = 7;
                     }
                     if ($entry["start"] > $currentTime || $i != 0) {
                         $output[$counter] = array("title" => $entry["title"], "description" => $entry["content"], "beginn" => $entry["start_formatted"], "ende" => $entry["end_formatted"], "weekday" => $currentWeekDay + 1, "id" => substr($entry["id"], 0, 32));
                         $counter++;
                     }
                 }
             }
         }
     } else {
         return null;
     }
     return $output;
     /*
     //var_dump($output);
     		//nur die nächsten 3 sollen auftauchen
     		$currentWeekDay =date("N");
     		$i = 0;
     
     		if (!empty($items))
     		{
     			$ausgabe = array();
     			//suchen des nächsten Cycles
     			for ($i = 0; $i <= 6; $i++)
     			{
     				$currentWeekDay +=$i;
     				if($currentWeekDay > 7) $currentWeekDay = 1;
     				foreach($items AS $item)
     				{
     					//an dem gesuchten wochentag event ....
     					if ($item['weekday'] == $currentWeekDay)
     					{
     						//nächstes event gefunden
     						//Auffinden der nächsten beiden
     						$ausgabe[1] = $item;
     						$nextitemID = $item['weekday'];
     						if (isset($items[ $nextitemID ]))
     						{
     							//zweites gefunden
     							$ausgabe[2] = $items[ 1 ];
     							$nextitemID++;
     						}
     						else
     						{
     							$ausgabe[2] = $items[ 1 ];
     							$nextitemID = 2;
     						}
     						if (isset($items[ $nextitemID ]))
     						{
     							//zweites gefunden
     							$ausgabe[3] = $items[ 1 ];
     						}
     						else
     						{
     							$ausgabe[3] = $items[ 1 ];
     						}
     						//fertig
     						$i=8;
     						break;
     					}
     				}
     			}
     		}
     		else
     		{
     			return null;
     		}
     		
     		return $ausgabe;
     */
 }
コード例 #8
0
    function showTimeRange() {
        $colspan = $this->mode == 'browse' ? ' colspan="2" ' : '';
        ?>
        <tr>
            <td <? $this->cssSw->switchClass(); echo $this->cssSw->getFullClass() ?> >
                <?=_("gefundene Ressourcen sollen zu folgender Zeit <u>nicht</u> belegt sein:")?>
            <br>
            </td>
        </tr>
        <tr>
            <td <? $this->cssSw->switchClass(); echo $this->cssSw->getFullClass() ?> >
            &nbsp;<br>
                <table cellspacing="0" cellpadding="0" border="0" width="100%">
                    <tr>
                        <td width="120">
                            <b><?= _('Einzeltermin:') ?></b>
                        </td>
                        <td>
                            <?=_("Beginn")?>:
                            &nbsp;<input type="text" style="font-size:8pt;" name="search_begin_hour" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_begin"]) ? date("H", $this->searchArray["search_assign_begin"]) : _("ss")?>">
                            <input type="text" style="font-size:8pt;" name="search_begin_minute" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_begin"]) ? date("i", $this->searchArray["search_assign_begin"]) : _("mm")?>">&nbsp;<?=_("Uhr")?>
                            &nbsp;&nbsp;<?=_("Ende")?>:
                            &nbsp;<input type="text" style="font-size:8pt;" name="search_end_hour" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_end"]) ? date("H", $this->searchArray["search_assign_end"]) : _("ss")?>">
                            <input type="text" style="font-size:8pt;" name="search_end_minute" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_end"]) ? date("i", $this->searchArray["search_assign_end"]) : _("mm")?>">&nbsp;<?=_("Uhr")?>
                <br>
                            <?=_("Datum")?>: &nbsp;
                            <input name="searchDate" id="searchDate" size="10" value="<?=($this->searchArray["search_assign_begin"]) ? date("j.n.Y", $this->searchArray["search_assign_begin"]) : date('j.n.Y', time())?>">
                            <script>
                                jQuery('#searchDate').datepicker();
                            </script>
                            <!--
                            <input type="text" style="font-size:8pt;" name="search_day" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_begin"]) ? date("d", $this->searchArray["search_assign_begin"]) : _("tt")?>">
                            .<input type="text" style="font-size:8pt;" name="search_month" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_begin"]) ? date("m", $this->searchArray["search_assign_begin"]) : _("mm")?>">
                            .<input type="text" style="font-size:8pt;" name="search_year" size="4" maxlength="4" value="<?=($this->searchArray["search_assign_begin"]) ? date("Y", $this->searchArray["search_assign_begin"]) : _("jjjj")?>">
                            -->
                            &nbsp;&nbsp;&nbsp;&nbsp;    <input type="checkbox" style="font-size:8pt;" name="search_repeating" value="1" <?=($this->searchArray["search_repeating"]==1) ? "checked=checked" : ""?>> <?= _('für restliches Semester prüfen') ?>
                            <br>
                        </td>
                    </tr>
                </table>
                </td>
                </tr>
                <tr>
                <td <? $this->cssSw->switchClass(); echo $this->cssSw->getFullClass() ?> >
                    <table cellspacing="0" cellpadding="0" border="0" width="100%">
                        <tr>
                            <td width="120">
                                <b><?= _('Semestertermin:') ?></b>
                            </td>
                            <td>
                    <br>
                <?=_("Beginn")?>:
                    &nbsp;<input type="text" style="font-size:8pt;" name="search_begin_hour_2" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_begin"]) ? date("H", $this->searchArray["search_assign_begin"]) : _("ss")?>">
                    <input type="text" style="font-size:8pt;" name="search_begin_minute_2" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_begin"]) ? date("i", $this->searchArray["search_assign_begin"]) : _("mm")?>">&nbsp;<?=_("Uhr")?>
                &nbsp;&nbsp;<?=_("Ende")?>:
                    &nbsp;<input type="text" style="font-size:8pt;" name="search_end_hour_2" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_end"]) ? date("H", $this->searchArray["search_assign_end"]) : _("ss")?>">
                    <input type="text" style="font-size:8pt;" name="search_end_minute_2" size="2" maxlength="2" value="<?=($this->searchArray["search_assign_end"]) ? date("i", $this->searchArray["search_assign_end"]) : _("mm")?>">&nbsp;<?=_("Uhr")?>
                <br>
                <?=_("Tag der Woche")?>:
                <select name = 'search_day_of_week'>
                <option value=-1 <?=$this->searchArray["search_day_of_week"]==-1? "selected=selected":""?>><?=_("--")?> </option>
                <option value='Monday' <?=$this->searchArray["search_day_of_week"]=='Monday'? "selected=selected":""?>><?=_("Montag")?> </option>
                <option value='Tuesday' <?=$this->searchArray["search_day_of_week"]=='Tuesday'? "selected=selected":""?>><?=_("Dienstag")?> </option>
                <option value='Wednesday' <?=$this->searchArray["search_day_of_week"]=='Wednesday'?  "selected=selected":""?>><?=_("Mittwoch")?> </option>
                <option value='Thursday' <?=$this->searchArray["search_day_of_week"]=='Thursday'?  "selected=selected":""?>><?=_("Donnerstag")?> </option>
                <option value='Friday' <?=$this->searchArray["search_day_of_week"]=='Friday'?  "selected=selected":""?>><?=_("Freitag")?> </option>
                <option value='Saturday' <?=$this->searchArray["search_day_of_week"]=='Saturday'?  "selected=selected":""?>><?=_("Samstag")?> </option>
                <option value='Sunday' <?=$this->searchArray["search_day_of_week"]=='Sunday'?  "selected=selected":""?>><?=_("Sonntag")?> </option>
                </select> &nbsp;
                <?=_("Semester")?>:
                <select name = 'search_semester'>
                <?
                    $semesterData = new SemesterData();
                    $all_semester = $semesterData->getAllSemesterData();
                if (!$this->searchArray["search_semester"])
                {
                    $current_semester = $semesterData->getCurrentSemesterData();
                    $selected_semester = $semesterData->getSemesterDataByDate(strtotime("+1 Day",$current_semester["ende"]));
                } else
                {
                    $selected_semester["semester_id"] = $this->searchArray["search_semester"];
                }
                    $this_sem = false;
                    foreach($all_semester as $semester)
                    {
                        $this_sem = $selected_semester["semester_id"] == $semester["semester_id"];

                        echo "<option value='".$semester["semester_id"]."' ".($this_sem?" selected=selected ":"").">".$semester["name"]."</option>";

                    }
                ?>
                </select> &nbsp;
                    </td>
                </tr>
            </table>
                <br>
            </td>
        </tr>


        <?
    }
コード例 #9
0
ファイル: schedule.php プロジェクト: ratbird/hope
 /**
  * Return the semester-entry for the current semester
  *
  * @return mixed the current semester
  */
 static function getCurrentSemester()
 {
     $semdata = new SemesterData();
     return $semdata->getCurrentSemesterData();
 }