/** * */ 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; }
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; }
/** * 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; }
/** * 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; }
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; }
<?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: