/lib/minical/minicallib.php
https://gitlab.com/ElvisAns/tiki · PHP · 226 lines · 188 code · 22 blank · 16 comment · 21 complexity · d5efaa0b593af13da20ff86f2115e3df MD5 · raw file
- <?php
- // (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
- //
- // All Rights Reserved. See copyright.txt for details and a complete list of authors.
- // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
- // $Id$
- //this script may only be included - so its better to die if called directly.
- if (strpos($_SERVER["SCRIPT_NAME"], basename(__FILE__)) !== false) {
- header("location: index.php");
- exit;
- }
- class MiniCalLib extends TikiLib
- {
- // Returns an array where each member of the array has:
- // start: unix timestamp of the interval start time
- // end : unix timestamp of the interval end time
- // events : array of events for the slot listing:
- // title, description and duration
- public function minical_events_by_slot($user, $start, $end, $interval)
- {
- // since interval is in hour convert it to seconds
- //$interval = $interval * 60 * 60;
- $slots = [];
- while ($start <= $end) {
- $aux = [];
- $aux['start'] = $start;
- $end_p = $start + $interval;
- $aux['end'] = $end_p;
- $query = "select * from `tiki_minical_events` where `user`=? and `start`>=? and `start`<? order by " . $this->convertSortMode("start_asc");
- //print($query);print("<br />");
- $result = $this->query($query, [$user,(int)$start,(int)$end_p]);
- $events = [];
- while ($res = $result->fetchRow()) {
- $res['end'] = $res['start'] + $res['duration'];
- $res2 = [];
- if ($res['topicId']) {
- $query2 = "select `topicId`,`isIcon`,`path`,`name` from `tiki_minical_topics` where `topicId`=?";
- $result = $this->query($query2, [(int)$res['topicId']]);
- $res2 = $result->fetchRow();
- }
- $res['topic'] = $res2;
- $events[] = $res;
- }
- $aux['events'] = $events;
- $slots[] = $aux;
- $start += $interval;
- }
- return $slots;
- }
- public function minical_upload_topic($user, $topicname, $name, $type, $size, $data, $path)
- {
- if (strlen($data) == 0) {
- $isIcon = 'y';
- } else {
- $isIcon = 'n';
- }
- $query = "insert into `tiki_minical_topics`(`user`,`name`,`filename`,`filetype`,`filesize`,`data`,`isIcon`,`path`) values(?,?,?,?,?,?,?,?)";
- $this->query($query, [$user,$topicname,$name,$type,(int)$size,$data,$isIcon,$path]);
- }
- public function minical_list_topics($user, $offset, $maxRecords, $sort_mode, $find)
- {
- $bindvars = [$user];
- if ($find) {
- $mid = " and (`name` like ? or `filename` like ?)";
- $bindvars[] = "%$find%";
- $bindvars[] = "%$find%";
- } else {
- $mid = "";
- }
- $query = "select `isIcon`,`path`,`name`,`topicId` from `tiki_minical_topics` where `user`=? $mid order by " . $this->convertSortMode($sort_mode);
- $query_cant = "select count(*) from `tiki_minical_topics` where `user`=? $mid";
- $result = $this->query($query, $bindvars, $maxRecords, $offset);
- $cant = $this->getOne($query_cant, $bindvars);
- $ret = [];
- while ($res = $result->fetchRow()) {
- $ret[] = $res;
- }
- $retval = [];
- $retval["data"] = $ret;
- $retval["cant"] = $cant;
- return $retval;
- }
- public function minical_get_topic($user, $topicId)
- {
- $query = "select * from `tiki_minical_topics` where `user`=? and `topicId`=?";
- $result = $this->query($query, [$user,(int)$topicId]);
- $res = $result->fetchRow();
- return $res;
- }
- public function minical_list_events($user, $offset, $maxRecords, $sort_mode, $find)
- {
- $bindvars = [$user];
- if ($find) {
- $mid = " and (`title` like ? or `description` like ?)";
- $bindvars[] = "%$find%";
- $bindvars[] = "%$find%";
- } else {
- $mid = "";
- }
- $query = "select * from `tiki_minical_events` where `user`=? $mid order by " . $this->convertSortMode($sort_mode);
- $query_cant = "select count(*) from `tiki_minical_events` where `user`=? $mid";
- $result = $this->query($query, $bindvars, $maxRecords, $offset);
- $cant = $this->getOne($query_cant, $bindvars);
- $ret = [];
- while ($res = $result->fetchRow()) {
- $res2 = [];
- if ($res['topicId']) {
- $query2 = "select `topicId`,`isIcon`,`path`,`name` from `tiki_minical_topics` where `topicId`=?";
- $result2 = $this->query($query2, [(int)$res['topicId']]);
- $res2 = $result2->fetchRow();
- }
- $res['topic'] = $res2;
- $ret[] = $res;
- }
- $retval = [];
- $retval["data"] = $ret;
- $retval["cant"] = $cant;
- return $retval;
- }
- public function minical_list_events_from_date($user, $offset, $maxRecords, $sort_mode, $find, $pdate)
- {
- $bindvars = [(int)$pdate,$user];
- if ($find) {
- $mid = " and (`title` like ? or `description` like ?)";
- $bindvars[] = "%$find%";
- $bindvars[] = "%$find%";
- } else {
- $mid = "";
- }
- $query = "select * from `tiki_minical_events` where `start`>? and `user`=? $mid order by " . $this->convertSortMode($sort_mode);
- $query_cant = "select count(*) from `tiki_minical_events` where `start`>? and `user`=? $mid";
- $result = $this->query($query, $bindvars, $maxRecords, $offset);
- $cant = $this->getOne($query_cant, $bindvars);
- $ret = [];
- while ($res = $result->fetchRow()) {
- $res2 = [];
- if ($res['topicId']) {
- $query2 = "select `topicId`,`isIcon`,`path`,`name` from `tiki_minical_topics` where `topicId`=?";
- $result2 = $this->query($query2, [(int)$res['topicId']]);
- $res2 = $result2->fetchRow();
- }
- $res['topic'] = $res2;
- $ret[] = $res;
- }
- $retval = [];
- $retval["data"] = $ret;
- $retval["cant"] = $cant;
- return $retval;
- }
- public function minical_get_event($user, $eventId)
- {
- $query = "select * from `tiki_minical_events` where `user`=? and `eventId`=?";
- $result = $this->query($query, [$user,(int)$eventId]);
- $res = $result->fetchRow();
- return $res;
- }
- public function minical_remove_topic($user, $topicId)
- {
- $query = "delete from `tiki_minical_topics` where `user`=? and `topicId`=?";
- $this->query($query, [$user,(int)$topicId]);
- }
- public function minical_event_reminded($user, $eventId)
- {
- $query = "update `tiki_minical_events` set `reminded`=? where `user`=? and `eventId`=?";
- $this->query($query, ["y",$user,(int)$eventId]);
- }
- public function minical_replace_event($user, $eventId, $title, $description, $start, $duration, $topicId)
- {
- if ($eventId) {
- $query = "update `tiki_minical_events` set `topicId`=?,`end`=?,`title`=?,`description`=?,`start`=?,`duration`=?,`reminded`=? where `user`=? and `eventId`=?";
- $this->query($query, [(int)$topicId,$start + $duration,$title,$description,(int)$start,(int)$duration,"n",$user,(int)$eventId]);
- return $eventId;
- } else {
- $query = "insert into `tiki_minical_events`(`user`,`title`,`description`,`start`,`duration`,`end`,`topicId`,`reminded`) values(?,?,?,?,?,?,?,?)";
- $this->query($query, [$user,$title,$description,(int)$start,(int)$duration,$start + $duration,(int)$topicId,"n"]);
- $Id = $this->getOne("select max(`eventId`) from `tiki_minical_events` where `user`=? and `start`=?", [$user,(int)$start]);
- return $Id;
- }
- }
- public function minical_remove_event($user, $eventId)
- {
- $query = "delete from `tiki_minical_events` where `user`=? and `eventId`=?";
- $this->query($query, [$user,(int)$eventId]);
- }
- public function minical_get_events_to_remind($user, $rem)
- {
- // Search for events that are not reminded and will start
- // in less than $rem
- $limit = $this->now + $rem;
- $query = "select * from `tiki_minical_events` where `user`=? and `reminded`<>? and `start`<=? and `start`>?";
- $result = $this->query($query, [$user,'y',(int)$limit,(int)$this->now]);
- $ret = [];
- while ($res = $result->fetchRow()) {
- $ret[] = $res;
- }
- return $ret;
- }
- public function minical_remove_old($user, $pdate)
- {
- $query = "delete from `tiki_minical_events` where `user`=? and `start`<?";
- $this->query($query, [$user,(int)$pdate]);
- }
- }
- $minicallib = new MiniCalLib();