/**
  * @see Form::save()
  */
 public function save()
 {
     parent::save();
     $this->userSuspension->update($this->userSuspension->userID, $this->userSuspension->suspensionID, $this->expiresDay && $this->expiresMonth && $this->expiresYear ? DateUtil::getUTC(gmmktime($this->expiresHour, $this->expiresMinute, 0, $this->expiresMonth, $this->expiresDay, $this->expiresYear)) : 0);
     $this->saved();
     // show success message
     WCF::getTPL()->assign('success', true);
 }
 /**
  * Checks the given parameters.
  * 
  * @return	boolean
  */
 public function checkParams()
 {
     if (!$this->question) {
         return false;
     }
     if (count($this->pollOptionsArray) < 2) {
         throw new UserInputException('pollOptions', 'notEnoughOptions');
     }
     if (count($this->pollOptionsArray) > POLL_MAX_OPTIONS) {
         throw new UserInputException('pollOptions', 'tooMuch');
     }
     if ($this->choiceCount < 1) {
         throw new UserInputException('choiceCount', 'notValid');
     }
     if ($this->choiceCount > count($this->pollOptionsArray)) {
         throw new UserInputException('choiceCount', 'tooMuch');
     }
     if ($this->endTimeDay || $this->endTimeMonth || $this->endTimeYear || $this->endTimeHour || $this->endTimeMinutes) {
         $time = @gmmktime($this->endTimeHour, $this->endTimeMinutes, 0, $this->endTimeMonth, $this->endTimeDay, $this->endTimeYear);
         // since php5.1.0 mktime returns false on failure
         if ($time === false || $time === -1) {
             throw new UserInputException('endTime', 'invalid');
         }
         // get utc time
         $time = DateUtil::getUTC($time);
         if (!$this->pollID && $time <= TIME_NOW) {
             throw new UserInputException('endTime', 'invalid');
         }
         $this->data['endTime'] = $time;
     } else {
         $this->data['endTime'] = 0;
     }
     $this->valid = true;
 }
 /**
  * @see Form::save()
  */
 public function save()
 {
     parent::save();
     $this->userWarning->update($this->warningID, $this->title, $this->points, $this->expiresDay && $this->expiresMonth && $this->expiresYear ? DateUtil::getUTC(gmmktime($this->expiresHour, $this->expiresMinute, 0, $this->expiresMonth, $this->expiresDay, $this->expiresYear)) : 0, $this->reason);
     $this->saved();
     // show success message
     WCF::getTPL()->assign('success', true);
 }
 public function getAppointmentList()
 {
     $ret = array();
     $i = 0;
     $limit = intval(WBBCore::getUser()->monthlyCalendarBox_maxAppointments);
     $showPublic = intval(WBBCore::getUser()->monthlyCalendarBox_showPublicAppointments);
     $showBirthdays = intval(WBBCore::getUser()->monthlyCalendarBox_showBirthdaysInAppointments);
     $maxDays = intval(WBBCore::getUser()->monthlyCalendarBox_maxAppointmentDays);
     $userID = intval(WCF::getUser()->userID);
     if (!$limit > 0) {
         $limit = 10;
     }
     if (empty($maxDays)) {
         $maxDays = 30;
     }
     if (empty($userID)) {
         $showPublic = 1;
         $showBirthdays = 1;
     }
     $m = intval(date('n'));
     $y = intval(date('Y'));
     $d = intval(date('j'));
     $sTimestamp = mktime(0, 0, 0, $m, $d, $y);
     $eTimestamp = $sTimestamp + 86400;
     // WoltLab Calendar...
     if (WBBCore::getUser()->getPermission('user.calendar.canUseCalendar')) {
         require_once WCF_DIR . 'lib/util/CalendarUtil.class.php';
         require_once WCF_DIR . 'lib/data/calendar/event/EventList.class.php';
         $cals = Calendar::getEnabledCalendars();
         if (empty($showBirthdays)) {
             foreach ($cals as $k => $v) {
                 if ($v->className == 'BirthdayEvent') {
                     unset($cals[$k]);
                     break;
                 }
             }
         }
         if (!empty($userID) && empty($showPublic)) {
             foreach ($cals as $k => $v) {
                 if ($v->ownerID != $userID && $v->className != 'BirthdayEvent') {
                     unset($cals[$k]);
                 }
             }
         }
         $events = new EventList($sTimestamp, $sTimestamp + 86400 * $maxDays, $cals);
         $events->readEvents();
         $myEvents = $events->getEvents($limit);
         //            file_put_contents('/tmp/debug.txt', print_r($myEvents, true));
         foreach ($myEvents as $event) {
             if ($showBirthdays && $event->calendar->className == 'BirthdayEvent' && $event->user && !$event->eventID) {
                 $ret[$i]['birthday'] = true;
                 $ret[$i]['userID'] = $event->userID;
                 $ret[$i]['username'] = $event->user->username;
                 $ret[$i]['age'] = $event->user->age;
                 $ret[$i]['time'] = $event->startTime;
                 $ret[$i]['eventID'] = null;
             } else {
                 $ret[$i]['birthday'] = false;
                 $ret[$i]['eventID'] = $event->eventID;
             }
             if ($event->isFullDay) {
                 $ret[$i]['startTime'] = DateUtil::getUTC($event->startTime);
                 $ret[$i]['endTime'] = DateUtil::getUTC($event->endTime);
             } else {
                 $ret[$i]['startTime'] = $event->startTime;
                 $ret[$i]['endTime'] = $event->endTime;
             }
             $ret[$i]['fullDay'] = $event->isFullDay;
             $ret[$i]['subject'] = $event->subject;
             $ret[$i]['severalDays'] = false;
             $ret[$i]['curYear'] = true;
             $ret[$i]['sameDay'] = false;
             $ret[$i]['color'] = $event->color;
             $ret[$i]['today'] = false;
             $ret[$i]['title'] = '';
             if ($ret[$i]['startTime'] >= $sTimestamp && $ret[$i]['endTime'] < $eTimestamp) {
                 $ret[$i]['today'] = true;
             } else {
                 $ret[$i]['today'] = false;
                 if (date('j', $ret[$i]['startTime']) != date('j', $ret[$i]['endTime'])) {
                     $ret[$i]['severalDays'] = true;
                 }
                 if (date('Y', $ret[$i]['startTime']) != date('Y')) {
                     $ret[$i]['curYear'] = false;
                 }
             }
             if ($ret[$i]['severalDays']) {
                 $ret[$i]['title'] = DateUtil::formatDate('%d.%m. %H:%M', $ret[$i]['startTime']) . ' - ' . DateUtil::formatDate('%d.%m. %H:%M', $ret[$i]['endTime']);
             } else {
                 $ret[$i]['title'] = DateUtil::formatDate('%H:%M', $ret[$i]['startTime']) . '-' . DateUtil::formatDate('%H:%M', $ret[$i]['endTime']);
             }
             $ret[$i]['title'] .= ': ' . $ret[$i]['subject'];
             $i++;
         }
     } else {
         if (WBBCore::getUser()->getPermission('user.calendar.canEnter')) {
             if (!empty($showBirthdays)) {
                 $birthdays = self::getBirthdayList($y, $m, $d);
                 $color = '';
                 $isEnabled = 1;
                 foreach ($birthdays as $k => $v) {
                     $ret[$i]['birthday'] = true;
                     $ret[$i]['color'] = $color;
                     $ret[$i]['userID'] = $v['userID'];
                     $ret[$i]['username'] = $v['username'];
                     $ret[$i]['age'] = $v['age'];
                     $ret[$i]['time'] = $v['time'];
                     $i++;
                 }
             }
             $sql = "SELECT ce.eventID, cem.subject AS subject, ce.eventTime AS startTime, ce.eventEndTime AS endTime, ce.isFullDay AS fullDay" . "\n  FROM wcf" . WCF_N . "_calendar_event ce" . "\n  LEFT JOIN wcf" . WCF_N . "_calendar_event_message cem ON (cem.eventID = ce.eventID)" . "\n WHERE (ce.eventTime >= " . TIME_NOW . "\n    OR (ce.isFullDay = 1 AND ce.eventTime >= " . $sTimestamp . ")" . "\n    OR (ce.eventEndTime > ce.eventTime AND ce.eventEndTime > " . $sTimestamp . "))" . "\n   AND cem.isDeleted != 1";
             if (!empty($userID) && empty($showPublic)) {
                 $sql .= "\n   AND cem.userID = " . $userID;
             }
             $sql .= "\n ORDER BY ce.eventTime" . "\n LIMIT " . $limit;
             $result = WBBCore::getDB()->sendQuery($sql);
             while ($row = WBBCore::getDB()->fetchArray($result)) {
                 if (!empty($row['fullDay'])) {
                     $tM = intval(date('n', $row['startTime']));
                     $tY = intval(date('Y', $row['startTime']));
                     $tD = intval(date('j', $row['startTime']));
                     $row['startTime'] = mktime(0, 0, 0, $tM, $tD, $tY);
                     if (empty($row['endTime'])) {
                         $row['endTime'] = mktime(0, 0, 0, $tM, $tD, $tY);
                     } else {
                         $tM = intval(date('n', $row['endTime']));
                         $tY = intval(date('Y', $row['endTime']));
                         $tD = intval(date('j', $row['endTime']));
                         $row['endTime'] = mktime(0, 0, 0, $tM, $tD, $tY);
                     }
                 }
                 if (empty($row['endTime'])) {
                     $row['endTime'] = $row['startTime'];
                 }
                 $ret[$i]['fullDay'] = $row['fullDay'];
                 $ret[$i]['birthday'] = false;
                 $ret[$i]['color'] = '';
                 $ret[$i]['eventID'] = $row['eventID'];
                 $ret[$i]['subject'] = $row['subject'];
                 $ret[$i]['startTime'] = $row['startTime'];
                 $ret[$i]['endTime'] = $row['endTime'];
                 $ret[$i]['severalDays'] = false;
                 $ret[$i]['curYear'] = true;
                 $ret[$i]['sameDay'] = false;
                 if ($row['startTime'] >= $sTimestamp && $row['endTime'] <= $eTimestamp) {
                     $ret[$i]['today'] = true;
                 } else {
                     $ret[$i]['today'] = false;
                     if (date('j', $row['startTime']) != date('j', $row['endTime'])) {
                         $ret[$i]['severalDays'] = true;
                     }
                     if (date('Y', $row['startTime']) != date('Y')) {
                         $ret[$i]['curYear'] = false;
                     }
                 }
                 if ($ret[$i]['severalDays']) {
                     $ret[$i]['title'] = DateUtil::formatShortTime('%d.%m. %H:%M', $row['startTime']) . ' - ' . DateUtil::formatShortTime('%d.%m. %H:%M', $row['endTime']);
                 } else {
                     $ret[$i]['title'] = DateUtil::formatShortTime('%H:%M', $row['startTime']) . '-' . DateUtil::formatShortTime('%H:%M', $row['endTime']);
                 }
                 $ret[$i]['title'] .= ': ' . $row['subject'];
                 $i++;
             }
         }
     }
     return $ret;
 }