storeinit('timeline'); } public function get(int $id) { $eventdata = $this->repo->findById($id); if ($eventdata !== false) { return new Event($eventdata); } else { return false; } } /** * Retrun a list of Event objects * * @return array array of Event where the key is the Event id. */ public function getlister() : array { $eventlist = []; $datalist = $this->repo->findAll(); foreach ($datalist as $eventdata) { $event = new Event($eventdata); $id = intval($event->id()); $eventlist[$id] = $event; } return $eventlist; } public function getlisterid(array $idlist = []) : array { $eventdatalist = $this->repo->query() ->where('__id', 'IN', $idlist) ->execute(); $eventlist = []; foreach ($eventdatalist as $id => $eventdata) { $eventlist[$id] = new Event($eventdata); } return $eventlist; } /** * Store event * * @param Event The event to be stored in the repositery * * @return bool retrun true if it works, false if it fails */ public function add(Event $event) : bool { $eventdata = new \JamesMoss\Flywheel\Document($event->dry()); $eventdata->setId($event->id()); $result = $this->repo->store($eventdata); return $result; } /** * Return last free id * * @return int id */ public function getlastfreeid() : int { $idlist = $this->list(); if (!empty($idlist)) { $id = max($idlist); $id++; } else { $id = 1; } return $id; } public function group(array $events) { $id = 0; $subid = 0; $lastuser = null; foreach ($events as $event) { if($event->user() !== $lastuser) { $subid = 0; $id ++; $groupedevents[$id]['user'] = $event->user(); } else { $subid ++; } $groupedevents[$id][$subid] = $event; $lastuser = $event->user(); } return $groupedevents; } public function showlast(array $types, int $qty = 25, int $offset = 0) { $types = array_intersect($types, $this->types()); $eventdatalist = $this->repo->query() ->where('type', 'IN', $types) ->orderBy('date DESC') ->limit($qty, $offset) ->execute(); $eventlist = []; foreach ($eventdatalist as $id => $eventdata) { $eventlist[] = new Event($eventdata); } $eventlist = array_reverse($eventlist); return $eventlist; } public function types() { return array_merge(self::EVENT_ART, self::EVENT_BASE, self::EVENT_MEDIA, self::EVENT_MEDIA); } } ?> class='blob'>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
<?php
class Modelhome extends Modelpage
{
public function __construct() {
parent::__construct();
}
public function optinit($table)
{
$opt = new Opt(Page::classvarlist());
$opt->setcol(['id', 'tag', 'linkfrom', 'linkto', 'description', 'title', 'datemodif', 'datecreation', 'date', 'secure', 'visitcount', 'editcount', 'affcount']);
$opt->settaglist($table);
$opt->setauthorlist($table);
$opt->submit();
return $opt;
}
/**
* Initialise Optlist object using
*
* @param array $table the list of all pages objects
*
* @return Optlist Object initialized
*/
public function Optlistinit(array $table)
{
$optlist = new Optlist(Page::classvarlist());
$optlist->settaglist($table);
$optlist->setauthorlist($table);
return $optlist;
}
/**
* @param array $table
* @param Opt $opt
*/
public function table2($table, $opt)
{
$filtertagfilter = $this->filtertagfilter($table, $opt->tagfilter(), $opt->tagcompare());
$filterauthorfilter = $this->filterauthorfilter($table, $opt->authorfilter(), $opt->authorcompare());
$filtersecure = $this->filtersecure($table, $opt->secure());
$filter = array_intersect($filtertagfilter, $filtersecure, $filterauthorfilter);
$table2 = [];
$table2invert = [];
foreach ($table as $page) {
if (in_array($page->id(), $filter)) {
$table2[] = $page;
} else {
$table2invert[] = $page;
}
}
if (!empty($opt->invert())) {
$table2 = $table2invert;
}
$this->pagelistsort($table2, $opt->sortby(), $opt->order());
if($opt->limit() !== 0) {
$table2 = array_slice($table2, 0, $opt->limit());
}
return $table2;
}
/**
* @param array array of the columns to show from the user
*
* @return array assoc each key columns to a boolean value to show or not
*/
public function setcolumns(array $columns) : array
{
foreach (Model::COLUMNS as $col) {
if(in_array($col, $columns)) {
$showcols[$col] = true;
} else {
$showcols[$col] = false;
}
}
return $showcols;
}
}
?>