Пример #1
0
 /**
  *
  */
 public static function getSelectList($group_id = null, $selected = '')
 {
     $streamModel = StreamFactory::getModel('stream');
     $milestones = $streamModel->getStream(array('type' => 'milestone', 'group_id' => $group_id));
     $html = ' <select name="milestone"><option value="">None</option>';
     $now = new JDate();
     foreach ($milestones as $mstone) {
         // Don't list overdue milestones
         $startDate = new JDate($mstone->start_date);
         $dateDiff = JXDate::timeDifference($startDate->toUnix(), $now->toUnix());
         if (!empty($dateDiff['days']) && $dateDiff['days'] > 0) {
             continue;
         }
         $html .= '<option value="' . $mstone->id . '">' . $mstone->message . '</option>';
     }
     $html .= '</select>';
     return $html;
 }
Пример #2
0
 public static function formatLapse($date)
 {
     $now = new JDate();
     $dateDiff = JXDate::timeDifference($date->toUnix(), $now->toUnix());
     if ($dateDiff['days'] > 0) {
         if ($dateDiff['days'] < 30) {
             $lapse = JText::sprintf(JXString::isPlural($dateDiff['days']) ? 'JXLIB_LAPSED_DAY_MANY' : 'JXLIB_LAPSED_DAY', $dateDiff['days']);
         } else {
             $lapse = self::formatDate($date, false);
         }
     } elseif ($dateDiff['hours'] > 0) {
         $lapse = JText::sprintf(JXString::isPlural($dateDiff['hours']) ? 'JXLIB_LAPSED_HOUR_MANY' : 'JXLIB_LAPSED_HOUR', $dateDiff['hours']);
     } elseif ($dateDiff['minutes'] > 0) {
         $lapse = JText::sprintf(JXString::isPlural($dateDiff['minutes']) ? 'JXLIB_LAPSED_MINUTE_MANY' : 'JXLIB_LAPSED_MINUTE', $dateDiff['minutes']);
     } else {
         if ($dateDiff['seconds'] == 0) {
             $lapse = JText::_("JXLIB_LAPSED_MOMENT_AGO");
         } else {
             $lapse = JText::sprintf(JXString::isPlural($dateDiff['seconds']) ? 'JXLIB_LAPSED_SECOND_MANY' : 'JXLIB_LAPSED_SECOND', $dateDiff['seconds']);
         }
     }
     return $lapse;
 }
Пример #3
0
 /**
  * To check if the event is already a passed event
  * @param JDate $endDate the end of event to compare to
  * @return Boolean true on passed event
  */
 public function isEventPassed($endDate)
 {
     $userTime = JXUser::getUserTime();
     $now = new JDate($userTime);
     $dateDiff = JXDate::timeDifference($endDate->toUnix(), $now->toUnix());
     $eventIsDue = !empty($dateDiff['days']) && $dateDiff['days'] < 0 ? false : true;
     return $eventIsDue;
 }
Пример #4
0
 /**
  * Unlike a message
  */
 public function unlike()
 {
     $user = JXFactory::getUser();
     $stream_id = JRequest::getVar('message_id');
     $stream = JTable::getInstance('Stream', 'StreamTable');
     $stream->load($stream_id);
     // People need to be able to read the message to add comment
     if (!$user->authorise('stream.message.read', $stream)) {
         // No reason this code would ever get here!
         exit;
     }
     $stream->unlike();
     $now = new JDate();
     $updated = new JDate($stream->updated);
     $timediff = JXDate::timeDifference($updated->toUnix(), $now->toUnix());
     $preventUpdate = $updated->toUnix() > $now->toUnix() || $timediff['days'] == 0 && $timediff['hours'] == 0 && $timediff['minutes'] < STREAM_EDIT_INTERVAL ? true : false;
     $stream->store($preventUpdate);
     $data = $this->_streamShowLikes($stream);
     header('Content-Type: text/json');
     echo json_encode($data);
     exit;
 }
Пример #5
0
 public function getGroupEventHTML($filter = null)
 {
     jimport('joomla.html.pagination');
     $jconfig = new JConfig();
     if ($filter == null) {
         $filter = array();
     }
     $group_id = !empty($filter['group_id']) ? $filter['group_id'] : null;
     $filter['type'] = 'event';
     $filter['order_by_desc'] = 'start_date';
     $filterStatus = JRequest::getVar('status', 'upcoming');
     if ($filterStatus == 'upcoming') {
         $filter['event_occurring_date'] = date('Y-m-d');
     } elseif ($filterStatus == 'past') {
         $filter['event_past_date'] = date('Y-m-d');
     }
     // Filter by "by/creator"
     $by = JRequest::getVar('by', '');
     if ($by == 'mine') {
         $my = JXFactory::getUser();
         $title = JText::sprintf("%1s's files", $my->name);
         $filter['user_id'] = $my->id;
     } else {
         if ($user_id = JRequest::getVar('user_id', '')) {
             $user = JXFactory::getUser($user_id);
             $title = JText::sprintf("%1s's events", $user->name);
             $filter['user_id'] = $user->id;
         }
     }
     $eventsModel = StreamFactory::getModel('stream');
     $events = $eventsModel->getStream($filter, $jconfig->list_limit, JRequest::getVar('limitstart', 0));
     $total = $eventsModel->countStream($filter);
     $tempArray = array();
     $eventsDue = array();
     $now = new JDate();
     // Sort events ASC while past events as DESC. Could have utilized the db's UNION ALL?
     foreach ($events as $key => $event) {
         $startDate = new JDate($event->start_date);
         $dateDiff = JXDate::timeDifference($startDate->toUnix(), $now->toUnix());
         if (!empty($dateDiff['days']) && $dateDiff['days'] < 0) {
             // Store the events in a temporary array and then remove it from the main events
             $tempArray[] = $event;
             unset($events[$key]);
             $eventsDue[$key] = 1;
         } else {
             $eventsDue[$key] = 0;
         }
     }
     // Sort the moved events. Anonymous functions supported in 5.3 only
     usort($tempArray, function ($a, $b) {
         return strcmp($a->start_date, $b->start_date);
     });
     // put it back in the main events
     $events = $tempArray + $events;
     $pagination = new JPagination($total, JRequest::getVar('limitstart', 0), $jconfig->list_limit);
     $tmpl = new StreamTemplate();
     $tmpl->set('events', $events);
     $tmpl->set('eventsDue', $eventsDue);
     $tmpl->set('pagination', $pagination)->set('showOwnerFilter', JRequest::getVar('user_id', 0) == 0)->set('filterStatus', $filterStatus);
     $html = $tmpl->fetch('event.header');
     $html .= $tmpl->fetch('events.list');
     return $html;
 }
Пример #6
0
<?php

// Placed in stream type when necessary
if (!defined("OVERDUE")) {
    define("OVERDUE", 1);
    define("INCOMPLETE", 2);
    define("COMPLETED", 3);
}
$filterStatus = JRequest::getVar('status', 'all');
$now = new JDate();
$data = $milestone->getData();
$todoIds = $milestone->getParam('todo');
$startDate = new JDate($milestone->start_date);
$dateDiff = JXDate::timeDifference($startDate->toUnix(), $now->toUnix());
$milestoneTaskCompletedCount = $milestone->getTaskCompletedCount();
$milestoneTaskCount = $milestone->getTaskCount();
$milestoneStatus = !empty($dateDiff['days']) && $dateDiff['days'] > 0 ? OVERDUE : INCOMPLETE;
$milestoneStatus = $milestone->status == StreamMilestoneType::COMPLETED ? COMPLETED : $milestoneStatus;
$milestoneDays = abs($dateDiff['days']);
$milestoneClass = '';
$milestoneDaysText = '';
$milestoneDaysClass = '';
$milestoneLabel = '';
switch ($milestoneStatus) {
    case OVERDUE:
        $milestoneClass = 'overdue';
        $milestoneDaysText = $milestoneDays . ' days late';
        $milestoneDaysClass = 'day-overdue';
        $milestoneLabel = 'label-important';
        break;
    case INCOMPLETE: