public function GroupedCalendarEventsByDate() { $view = $this->getRequest()->getVar('view'); if ($view == "thisweek") { $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` WHERE `Date` >= DATE_ADD(CURDATE(), INTERVAL (0 - WEEKDAY(CURDATE())) DAY) AND `Date` < DATE_ADD(CURDATE(), INTERVAL (7 - WEEKDAY(CURDATE())) DAY) ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } elseif ($view == "nextweek") { $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` WHERE `Date` >= DATE_ADD(CURDATE(), INTERVAL (0 - WEEKDAY(CURDATE()) + 7) DAY) AND `Date` < DATE_ADD(CURDATE(), INTERVAL (7 - WEEKDAY(CURDATE()) + 7) DAY) ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } elseif ($view == "thismonth") { $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` WHERE `Date` >= CONCAT(DATE_FORMAT(LAST_DAY(CURDATE()),'%Y-%m-'), '01') AND `Date` <= LAST_DAY(CURDATE()) ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } elseif ($view == "nextmonth") { $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` WHERE `Date` >= CONCAT(DATE_FORMAT(LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)), '%Y-%m-'), '01') AND `Date` <= LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)) ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } elseif ($view == "thisyear") { $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` WHERE `Date` >= CONCAT(YEAR(CURDATE()), '-01-01') AND `Date` <= CONCAT(YEAR(CURDATE()), '-12-31') ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } elseif ($view == "nextyear") { $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` WHERE `Date` >= CONCAT(YEAR(CURDATE()) + 1, '-01-01') AND `Date` <= CONCAT(YEAR(CURDATE()) + 1, '-12-31') ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } elseif ($view == "all") { $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` WHERE `Date` >= CURDATE() ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } elseif ($view == "events") { $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } else { // Default to the next 14 days $sql = "SELECT `CalendarEvent`.*, `CalendarEventDate`.`Date`, DATE_FORMAT(`CalendarEventDate`.`Date`, '%W %e %M %Y') AS `FormattedDate` FROM `CalendarEvent` INNER JOIN `CalendarEventDate` ON `CalendarEventDate`.`CalendarEventID` = `CalendarEvent`.`ID` WHERE `Date` >= CURDATE() AND `Date` <= DATE_ADD(CURDATE(), INTERVAL 14 DAY) ORDER BY `CalendarEventDate`.`Date`, `CalendarEvent`.`StartTime`, `CalendarEvent`.`EndTime`"; } $records = DB::query($sql); foreach ($records as $record) { $objects[] = new $record['ClassName']($record); } if (isset($objects)) { $arrayList = new ArrayList($objects); } else { $arrayList = new ArrayList(); } return GroupedList::create($arrayList); }
public function talks($day) { $talks = Talk::get()->filter(array('Day' => $day))->sort('Start ASC'); if ($day === 'Sat') { $talks = GroupedList::create($talks->sort('Start ASC, Room ASC')); } return $talks; }
/** * If we are in list mode then group items by event date * * @param \ArrayList|\DataList $items * @param $mode */ public function layoutGridListItems(&$items, $mode) { if ($groupField = $this()->{static::SingleFieldName}) { $modes = $this->config()->get('confine_to_modes') ?: []; if (isset($modes[$mode]) || !$modes) { $items = \GroupedList::create($items->Sort($groupField)); } } }
/** * Similar to {@link groupBy()}, but returns * the data in a format which is suitable for usage in templates. * * @param string $index * @param string $children Name of the control under which children can be iterated on * @return ArrayList */ public function GroupedBy($index, $children = 'Children') { $grouped = $this->groupBy($index); $result = new ArrayList(); foreach ($grouped as $indVal => $list) { $list = GroupedList::create($list); $result->push(new ArrayData(array($index => $indVal, $children => $list))); } return $result; }
public function getGroupedGames() { // show all if in draft mode $mode = Versioned::get_reading_mode(); if ($mode == 'Stage.Stage') { $items = GroupedList::create(Game::get()->filter(array('ParentID' => $this->getCurrentEvent()->ID))->sort('Session')); } else { $items = GroupedList::create(Game::get()->filter(array('ParentID' => $this->getCurrentEvent()->ID, 'Status' => true))->sort('Session')); } return $items; }
/** * Create a grouped list for presentation in a table * @return GroupedList */ public function getGroupedProductsByModel() { $list = $this->owner->ProductsShowable(); $sortedList = new ArrayList(); foreach ($this->owner->ProductModels()->sort('Sort') as $model) { foreach ($list as $product) { if ($product->Model == $model->Title) { $sortedList->push($product); } } } return GroupedList::create($sortedList); }
/** * @return ArrayList */ public function GroupedMainMenu() { $items = $this->owner->MainMenu(); $result = ArrayList::create(); $groupSettings = Config::inst()->get('LeftAndMain', 'menu_groups'); $itemsToGroup = array(); $groupSort = 0; $itemSort = 0; foreach ($groupSettings as $groupName => $menuItems) { if (count($menuItems)) { foreach ($menuItems as $key => $menuItem) { if (is_numeric($key)) { $itemsToGroup[$menuItem] = array('Group' => $groupName, 'Priority' => array_key_exists('priority', $groupSettings[$groupName]) ? $groupSettings[$groupName]['priority'] : $groupSort, 'SortOrder' => $itemSort); } $itemSort++; } $groupSort--; } } foreach ($items as $item) { $code = $item->Code->XML(); if (array_key_exists($code, $itemsToGroup)) { $item->Group = $itemsToGroup[$code]['Group']; $item->Priority = $itemsToGroup[$code]['Priority']; $item->SortOrder = $itemsToGroup[$code]['SortOrder']; } else { $item->Group = $code; $item->Priority = is_numeric($item->MenuItem->priority) ? $item->MenuItem->priority : -1; $item->SortOrder = 0; } } foreach (GroupedList::create($items->sort(array('Priority' => 'DESC')))->groupBy('Group') as $group => $children) { if (count($children) > 1) { $active = false; foreach ($children as $child) { if ($child->LinkingMode == 'current') { $active = true; } } $icon = array_key_exists('icon', $groupSettings[$group]) ? $groupSettings[$group]['icon'] : false; $code = str_replace(' ', '_', $group); $result->push(ArrayData::create(array('Title' => _t('GroupedCmsMenuLabel.' . $code, $group), 'Code' => DBField::create_field('Text', $code), 'Link' => $children->First()->Link, 'Icon' => $icon, 'LinkingMode' => $active ? 'current' : '', 'Children' => $children->sort('SortOrder')))); } else { $result->push($children->First()); } } return $result; }
public function send() { if (!$this->records) { $this->setRecords(ContentNotifierQueue::get_unnotified()); } ContentNotifierExtension::disable_filtering(); $total = $this->records->count(); $grouped = GroupedList::create($this->records->limit($this->config()->items_limit))->GroupedBy('Category'); $this->emailer->populateTemplate(array('Headline' => $this->config()->headline, 'GroupedItems' => $grouped, 'Total' => $total, 'Link' => Controller::join_links(Director::absoluteBaseURL(), 'admin', 'content-notifications'))); $this->emailer->send(); foreach ($this->records as $record) { $record->HasNotified = true; $record->write(); } ContentNotifierExtension::enable_filtering(true); }
function SpeakerList() { if (isset($_GET['letter'])) { $requestedLetter = Convert::raw2xml($_GET['letter']); if ($requestedLetter == 'intl') { $likeString = "NOT LastName REGEXP '[A-Za-z0-9]'"; } elseif (ctype_alpha($requestedLetter)) { $likeString = "LastName LIKE '" . substr($requestedLetter, 0, 1) . "%'"; } else { $likeString = "LastName LIKE 'a%'"; } } else { $likeString = "LastName LIKE 'a%'"; } $list = PresentationSpeaker::get()->where("AvailableForBureau = 1 AND " . $likeString)->sort('LastName'); return GroupedList::create($list); }
function MemberList() { if (isset($_GET['letter'])) { $requestedLetter = Convert::raw2xml($_GET['letter']); if ($requestedLetter == 'intl') { $likeString = "NOT Surname REGEXP '[A-Za-z0-9]'"; } elseif (ctype_alpha($requestedLetter)) { $likeString = "Surname LIKE '" . substr($requestedLetter, 0, 1) . "%'"; } else { $likeString = "Surname LIKE 'a%'"; } } else { $likeString = "Surname LIKE 'a%'"; } $list = Member::get()->where("Group_Members.GroupID = 5 AND " . $likeString)->leftJoin('Group_Members', 'Member.ID = Group_Members.MemberID')->sort('Surname'); return GroupedList::create($list); }
/** * @return ArrayList */ public function GroupedMainMenu() { $items = $this->owner->MainMenu(); $result = ArrayList::create(); $groupSettings = Config::inst()->get('LeftAndMain', 'menu_groups'); $groups = array(); $position = 0; foreach ($groupSettings as $key => $menuItems) { $groups[$key] = array('Code' => $key, 'Position' => $position); $position++; if (count($menuItems)) { foreach ($menuItems as $menuItem) { $groups[$menuItem] = array('Code' => $key, 'Position' => $position); $position++; } } } foreach ($items as $item) { $code = $item->Code->XML(); if (array_key_exists($code, $groups)) { $item->Group = $groups[$code]['Code']; $item->Position = $groups[$code]['Position']; } else { $item->Group = $code; $item->Position = 9999; } } foreach (GroupedList::create($items->sort('Position'))->groupBy('Group') as $group => $children) { if (count($children) > 1) { $active = false; foreach ($children as $child) { if ($child->LinkingMode == 'current') { $active = true; } } $code = str_replace(' ', '_', $group); $result->push(ArrayData::create(array('Title' => _t('GroupedCmsMenuLabel.' . $code, $group), 'Code' => DBField::create_field('Text', $code), 'Link' => $children->First()->Link, 'LinkingMode' => $active ? 'current' : '', 'Position' => $position, 'Children' => $children->sort('Position')))); } else { $result->push($children->First()); } } return $result; }
function ElectionVoters() { $MustBeMemberBy = $this->MustBeMemberBy; if (isset($_GET['letter'])) { $requestedLetter = Convert::raw2xml($_GET['letter']); if ($requestedLetter == 'intl') { $likeString = "NOT Surname REGEXP '[A-Za-z0-9]'"; } elseif (ctype_alpha($requestedLetter)) { $likeString = "Surname LIKE '" . substr($requestedLetter, 0, 1) . "%'"; } else { $likeString = "Surname LIKE 'a%'"; } } else { $likeString = "Surname LIKE 'a%'"; } $MemberList = Member::get()->where($likeString)->innerJoin('Group_Members', '`Member`.`ID` = `Group_Members`.`MemberID` AND Group_Members.GroupID=5')->sort('Surname'); $VoterList = new ArrayList(); foreach ($MemberList as $Member) { if ($Member->Created <= $MustBeMemberBy) { $VoterList->push($Member); } } return GroupedList::create($VoterList); }
public function testGroupedByChildren() { $list = GroupedList::create(ArrayList::create(array(ArrayData::create(array('Name' => 'AAA', 'Number' => '111')), ArrayData::create(array('Name' => 'BBB', 'Number' => '111')), ArrayData::create(array('Name' => 'AAA', 'Number' => '222')), ArrayData::create(array('Name' => 'BBB', 'Number' => '111')), ArrayData::create(array('Name' => 'AAA', 'Number' => '111')), ArrayData::create(array('Name' => 'AAA', 'Number' => '333')), ArrayData::create(array('Name' => 'BBB', 'Number' => '222')), ArrayData::create(array('Name' => 'BBB', 'Number' => '333')), ArrayData::create(array('Name' => 'AAA', 'Number' => '111')), ArrayData::create(array('Name' => 'AAA', 'Number' => '333'))))); $grouped = $list->GroupedBy('Name'); foreach ($grouped as $group) { $children = $group->Children; $childGroups = $children->GroupedBy('Number'); $this->assertEquals(3, count($childGroups)); $first = $childGroups->first(); $last = $childGroups->last(); if ($group->Name == 'AAA') { $this->assertEquals(3, count($first->Children)); $this->assertEquals('111', $first->Number); $this->assertEquals(2, count($last->Children)); $this->assertEquals('333', $last->Number); } if ($group->Name == 'BBB') { $this->assertEquals(2, count($first->Children)); $this->assertEquals('111', $first->Number); $this->assertEquals(1, count($last->Children)); $this->assertEquals('333', $last->Number); } } }
/** * Generate a list of all the pages in the documentation grouped by the first letter of the page. * @return {GroupedList} */ public function AllPages() { $pages = $this->getManifest()->getPages(); $output = new ArrayList(); $baseLink = Config::inst()->get('DocumentationViewer', 'link_base'); foreach ($pages as $url => $page) { $first = strtoupper(trim(substr($page['title'], 0, 1))); if ($first) { $output->push(new ArrayData(array('Link' => Controller::join_links($baseLink, $url), 'Title' => $page['title'], 'FirstLetter' => $first))); } } return GroupedList::create($output->sort('Title', 'ASC')); }
/** * Generate a list of all the pages in the documentation grouped by the * first letter of the page. * * @return GroupedList */ public function AllPages() { $pages = $this->getManifest()->getPages(); $output = new ArrayList(); foreach ($pages as $url => $page) { $first = strtoupper(trim(substr($page['title'], 0, 1))); if ($first) { $output->push(new ArrayData(array('Link' => $url, 'Title' => $page['title'], 'FirstLetter' => $first))); } } return GroupedList::create($output->sort('Title', 'ASC')); }
public function getGroupedQuestions() { return GroupedList::create($this->Questions()->sort('Order')); }
public function getAllGroupedCalendarEntries() { $entries = GroupedList::create(CalendarEntry::get()->Sort('Date, Time')); return $entries; }
public function getScoreTypes() { return GroupedList::create(Score::get()->sort('Title')); }
public function getGroupedPlayerGames() { $reg = $this->getCurrentRegistration(); if (!$reg) { return false; } $playergames = $reg->PlayerGames(); $games = new ArrayList(); foreach ($playergames as $playergame) { $games->push(new ArrayData(array("Game" => $playergame->Game(), "Preference" => $playergame->Preference, "Favourite" => $playergame->Favourite, "Status" => $playergame->Status, "Session" => $playergame->Game()->Session))); } $result = $games->sort(array('Session' => 'ASC', 'Preference' => 'ASC')); return GroupedList::create($result); }
/** * Get the NewsItems as groupedList for global archive-listing. * @todo obey translatable maybe? I think it's supported by default, but I could be wrong * @return GroupedList of NewsItems. */ public function getArchiveList() { $NewsGroups = GroupedList::create(News::get()); return $NewsGroups; }
public function getGroupedGames() { return GroupedList::create(Game::get()->filter(array('ParentID' => $this->getCurrentEvent()->ID, 'Status' => true))->sort('Session')); }
public function getGroupedItems() { return GroupedList::create($this->getItems()); }
function RegionMembers() { $members = GroupedList::create(LocatableMember::get()->sort('Region')->filter(array('MemberType' => 'FM'))); //->filter(array('Surname IS NOT NULL')) return $members; }
public function testTotalItems() { $list = GroupedList::create(ArrayList::create(array(ArrayData::create(array('Name' => 'AAA', 'Number' => '111')), ArrayData::create(array('Name' => 'BBB', 'Number' => '111')), ArrayData::create(array('Name' => 'AAA', 'Number' => '222')), ArrayData::create(array('Name' => 'BBB', 'Number' => '111'))))); $this->assertEquals(4, $list->TotalItems()); }
/** * Get the NewsItems as groupedList for global archive-listing. * * @todo obey translatable maybe? I think it's supported by default, but I could be wrong * @return GroupedList of NewsItems. */ public function getArchiveList() { return GroupedList::create(News::get()); }
/** * @param Summit $s * @return array */ protected function createSummitJSON(Summit $s) { $page = SummitPage::get()->filter('SummitID', $s->ID)->first(); $image = null; if ($page) { $image = $page->SummitImage()->Image(); } $tracks = array_map(function ($t) { return ['id' => $t->ID, 'slug' => $t->Slug, 'title' => $t->Title, 'has_videos' => 0]; }, $s->Categories()->toArray()); $videos = PresentationVideo::get()->filter(['DisplayOnSite' => true, 'Processed' => true])->sort('DateUploaded', 'DESC')->innerJoin('Presentation', 'Presentation.ID = PresentationMaterial.PresentationID')->innerJoin('SummitEvent', 'SummitEvent.ID = PresentationMaterial.PresentationID')->filter('SummitEvent.SummitID', $s->ID); $videos_groupedby_track = GroupedList::create($videos)->groupBy('Track'); foreach ($tracks as &$track) { if (array_key_exists($track['title'], $videos_groupedby_track)) { $track['has_videos'] = 1; } } return ['id' => $s->ID, 'title' => $s->Title, 'dates' => $s->getSummitDateRange(), 'videoCount' => PresentationVideo::get()->filter(['DisplayOnSite' => true, 'Processed' => true, 'PresentationID' => $s->Presentations()->column('ID')])->count(), 'imageURL' => $image && $image->exists() && Director::fileExists($image->Filename) ? $image->CroppedImage(263, 148)->URL : 'summit-video-app/production/images/placeholder-image.jpg', 'slug' => $s->Slug, 'tracks' => $tracks]; }
public function GroupedPresentations() { return GroupedList::create($this->Presentations()->sort('StartTime')); }
public function getProjects() { return GroupedList::create(Driver::get()->sort('Project'))->GroupedBy('Project'); }
public function CurrentScreenings() { return GroupedList::create($this->CurrentFilm()->Screenings()->filter(array("CinemaID" => $this->CurrentCinema()->ID))); }
public function TheImpact() { $ProjID = $this->ID; $results = DB::query('SELECT ip.Title AS ITitle, ip.ClassName AS IClassName, ( select count(Project.ID) from Project LEFT JOIN Project_impacts on Project_impacts.ProjectID = Project.ID where ip.ID = Project_impacts.ImpactID and Project.ID = ' . $ProjID . ' ) as Impact FROM Impact ip ORDER by ip.Title'); $thescore = ArrayList::create(); for ($i = 0; $i < $results->numRecords(); $i++) { $record = $results->nextRecord(); $thescore->add(new ArrayData(array('ITitle' => $record['ITitle'], 'Impact' => $record['Impact']))); } return GroupedList::create($thescore); }