convert_sortmode($sort_mode);
$result = $this->query($query,$bindvars,$maxRecords,$offset);
$query_cant = "select count(*) from `".BIT_DB_PREFIX."tiki_calendars` $mid";
$cant = $this->getOne($query_cant,$bindvars);
$res = array();
while ($r = $result->fetchRow()) {
$k = $r["calendar_id"];
$res["$k"] = $r;
}
$retval["data"] = $res;
$retval["cant"] = $cant;
return $retval;
}
// give out an array with Ids viewable by $user_id
function listUserCalIds() {
global $gBitUser;
$user_id = $gBitUser->getUserId();
if ($user_id) {
// $groups = $userlib->get_user_groups($user_id);
// need to add something
$query = "select `calendar_id` from `".BIT_DB_PREFIX."tiki_calendars` where `user_id`=?";
$bindvars=array($user_id);
} else {
$query = "select `calendar_id` from `".BIT_DB_PREFIX."tiki_calendars`";
$bindvars=array();
}
$result = $this->query($query,$bindvars);
$ret = array();
while ($r = $result->fetchRow()) {
$res[] = $r['calendar_id'];
}
return $res;
}
function setCalendar($calendar_id, $user_id, $name, $description, $customflags=array()) {
$name = strip_tags($name);
$description = strip_tags($description);
$now = time();
if ($calendar_id > 0) {
// modification of a calendar
$query = "update `".BIT_DB_PREFIX."tiki_calendars` set `name`=?, `user_id`=?, `description`=?, ";
$bindvars = array($name,$user_id,$description);
foreach ($customflags as $k => $v) {
$query .= "`$k`=?, ";
$bindvars[]=$v;
}
$query .= "`lastmodif`=? where `calendar_id`=?";
$bindvars[] = $now;
$bindvars[] = $calendar_id;
$result = $this->query($query,$bindvars);
} else {
// create a new calendar
$query = "insert into `".BIT_DB_PREFIX."tiki_calendars` (`name`,`user_id`,`description`,`created`,`lastmodif`,`" . implode("`,`", array_keys($customflags)). "`) ";
$query.= "values (?,?,?,?,?," . implode(",", array_fill(0,count($customflags),"?")). ")";
$bindvars=array($name,$user_id,$description,$now,$now);
foreach ($customflags as $k => $v) $bindvars[]=$v;
$result = $this->query($query,$bindvars);
$calendar_id=$this->GetOne("select `calendar_id` from `".BIT_DB_PREFIX."tiki_calendars` where `created`=?",array($now));
}
return $calendar_id;
}
function getCalendar($calendar_id) {
$res = $this->query("select * from `".BIT_DB_PREFIX."tiki_calendars` where `calendar_id`=?",array((int)$calendar_id));
return $res->fetchRow();
}
function dropCalendar($calendar_id) {
$query = "delete from `".BIT_DB_PREFIX."tiki_calendars` where `calendar_id`=?";
$this->query($query,array($calendar_id));
}
function loadContentTypes() {
global $gBitSystem, $gBitUser;
$query = "select `content_type_guid`, `content_description`, `handler_class`, `handler_package`, `handler_file` from `".BIT_DB_PREFIX."tiki_content_types` order by `content_type_guid`";
$rs = $this->query($query);
$this->gContentTypes = array();
if ($rs) {
while (!$rs->EOF) {
$ctg = $rs->fields['content_type_guid'];
$this->gContentTypes[$ctg] = array();
$this->gContentTypes[$ctg]['label'] = tra($rs->fields['content_description']);
$this->gContentTypes[$ctg]['feature'] = $gBitSystem->getPreference('calendar_'.$rs->fields['handler_package'], 'y');
$this->gContentTypes[$ctg]['right'] = $gBitUser->getPreference('bit_p_calendar_'.$rs->fields['handler_package'], 'y');
$this->gContentTypes[$ctg]['content_type_guid'] = $rs->fields['content_type_guid'];
$this->gContentTypes[$ctg]['handler'] = $rs->fields['handler_package'];
$rs->MoveNext();
}
}
}
function listItems($calIds, $user_id, $tstart, $tstop, $offset, $maxRecords, $sort_mode, $find) {
$where = array();
$bindvars=array();
foreach ($calIds as $calendar_id) {
$where[] = "i.`calendar_id`=?";
$bindvars[] = $calendar_id;
}
$cond = "(" . implode(" or ", $where). ")";
$cond .= " and ((i.`start_time` > ? and i.`end_time` < ?) or (i.`start_time` < ? and i.`end_time` > ?))";
$bindvars[] = $tstart;
$bindvars[] = $tstop;
$bindvars[] = $tstop;
$bindvars[] = $tstart;
$query = "select i.`calitem_id`, i.`name`, i.`description`, i.`start_time`, i.`end_time`, ";
$query .= "i.`url`, i.`status`, i.`priority`, c.`name` as `calname`, i.`calendar_id` ";
$query .= "from `".BIT_DB_PREFIX."tiki_calendar_items` i left join `".BIT_DB_PREFIX."tiki_calendars` c on i.`calendar_id`=c.`calendar_id` ";
$query .= "where ($cond) ";
$result = $this->query($query,$bindvars);
$ret = array();
while ($res = $result->fetchRow()) {
$dstart = mktime(0, 0, 0, date("m", $res['start_time']), date("d", $res['start_time']), date("Y", $res['start_time']));
$dend = mktime(0, 0, 0, date("m", $res['end_time']), date("d", $res['end_time']), date("Y", $res['end_time']));
$tstart = date("Hi", $res["start_time"]);
$tend = date("Hi", $res["end_time"]);
for ($i = $dstart; $i <= $dend; $i = ($i + (60 * 60 * 24))) {
if ($dstart == $dend) {
$head = date("H:i", $res["start_time"]). " - " . date("H:i", $res["end_time"]);
} elseif ($i == $dstart) {
$head = date("H:i", $res["start_time"]). " ...";
} elseif ($i == $dend) {
$head = " ... " . date("H:i", $res["end_time"]);
} else {
$head = " ... " . tra("continued"). " ... ";
}
$ret["$i"][] = array(
"result" => $res,
"calitem_id" => $res["calitem_id"],
"calname" => $res["calname"],
"time" => $tstart,
"type" => $res["status"],
"web" => $res["url"],
"prio" => $res["priority"],
"url" => CALENDAR_PKG_URL."index.php?todate=$i&editmode=1&calitem_id=" . $res["calitem_id"],
"name" => $res["name"],
"extra" => "
... " . tra("click to edit"),
"head" => $head,
"description" => str_replace("\n|\r", "", $res["description"])
);
}
}
return $ret;
}
function listTikiItems($tikiobj, $user_id, $tstart, $tstop, $offset, $maxRecords, $sort_mode, $find) {
$ret = array();
$res = $dstart = '';
foreach ($tikiobj as $tik) {
// $query = "select *, ( select page_id from `".BIT_DB_PREFIX."tiki_pages` where `content_id` = tc.`content_id` )" .
$query = "select * from `".BIT_DB_PREFIX."tiki_content` tc where (`last_modified`>? and `last_modified`) and `content_type_guid` = '".$tik."'";
$result = $this->query($query,array($tstart,$tstop));
while ($res = $result->fetchRow()) {
$dstart = mktime(0, 0, 0, date("m", $res['last_modified']), date("d", $res['last_modified']), date("Y", $res['last_modified']));
$tstart = date("Hi", $res["last_modified"]);
$quote = "" . tra("by"). " " . $res["modifier_user_id"] . "
" . addslashes(str_replace('"', "'", $res["title"]));
$ret["$dstart"][] = array(
"calitem_id" => "",
"calname" => "",
"prio" => "",
"time" => $tstart,
"type" => $tik,
"url" => BIT_ROOT_URL.$this->gContentTypes[$tik]['handler']."/index.php?content_id=" . $res["content_id"],
"name" => $res["title"],
"head" => "" . date("H:i", $res["last_modified"]). " " . tra("in"). " $tik",
"description" => str_replace("\n|\r", "", $quote)
);
}
}
return $ret;
}
function getItem($calitem_id) {
$query = "select i.`calitem_id`, i.`calendar_id`, i.`user_id`, i.`start_time`, i.`end_time`, t.`name` as `calname`, ";
$query.= "i.`location_id` as `location_id`, l.`name` as `locationName`, i.`category_id` as `category_id`, c.`name` as `categoryName`, i.`priority` as `priority`, ";
$query.= "i.`status` as `status`, i.`url` as `url`, i.`lang` as `lang`, i.`name` as `name`, i.`description` as `description`, i.`created` as `created`, i.`lastmodif` as `last_modified`, ";
$query.= "t.`customlocations` as `customlocations`, t.`customcategories` as `customcategories`, t.`customlanguages` as `customlanguages`, t.`custompriorities` as `custompriorities`, ";
$query.= "t.`customparticipants` as `customparticipants` from `".BIT_DB_PREFIX."tiki_calendar_items` i ";
$query.= "left join `".BIT_DB_PREFIX."tiki_calendar_locations` l on i.`location_id`=l.`calloc_id` ";
$query.= "left join `".BIT_DB_PREFIX."tiki_calendar_categories` c on i.`category_id`=c.`cal_cat_id` ";
$query.= "left join `".BIT_DB_PREFIX."tiki_calendars` t on i.`calendar_id`=t.`calendar_id` where `calitem_id`=?";
$result = $this->query($query,array($calitem_id));
$res = $result->fetchRow();
$query = "select `user_id`, `role` from `tiki_calendar_roles` where `calitem_id`=? order by `role`";
$rezult = $this->query($query,array($calitem_id));
$ppl = array();
$org = array();
while ($rez = $rezult->fetchRow()) {
if ($rez["role"] == '6') {
$org[] = $rez["user_id"];
} elseif ($rez["user_id"]) {
$ppl[] = $rez["user_id"] . ":" . $rez["role"];
}
}
$res["participants"] = implode(',', $ppl);
$res["organizers"] = implode(',', $org);
return $res;
}
function setItem($user_id, $calitem_id, $data) {
if (!$data["location_id"] and !$data["newloc"]) {
$data["newloc"] = tra("not specified");
}
else if (trim($data["newloc"])) {
$query = "delete from `".BIT_DB_PREFIX."tiki_calendar_locations` where `calendar_id`=? and `name`=?";
$bindvars=array($data["calendar_id"],trim($data["newloc"]));
$this->query($query,$bindvars,-1,-1,false);
$query = "insert into `".BIT_DB_PREFIX."tiki_calendar_locations` (`calendar_id`,`name`) values (?,?)";
$this->query($query,$bindvars);
$data["location_id"] = $this->GetOne("select `calloc_id` from `".BIT_DB_PREFIX."tiki_calendar_locations` where `calendar_id`=? and `name`=?",$bindvars);
}
if (!$data["location_id"] and !$data["newcat"]) {
$data["newcat"] = tra("not specified");
}
else if (trim($data["newcat"])) {
$query = "delete from `".BIT_DB_PREFIX."tiki_calendar_locations` where `calendar_id`=? and `name`=?";
$bindvars=array($data["calendar_id"],trim($data["newcat"]));
$this->query($query,$bindvars,-1,-1,false);
$query = "insert into `".BIT_DB_PREFIX."tiki_calendar_locations` (`calendar_id`,`name`) values (?,?)";
$this->query($query,$bindvars);
$data["location_id"] = $this->GetOne("select `calloc_id` from `".BIT_DB_PREFIX."tiki_calendar_locations` where `calendar_id`=? and `name`=?",$bindvars);
}
$roles = array();
if ($data["organizers"]) {
$orgs = split(',', $data["organizers"]);
foreach ($orgs as $o) {
$roles['6'][] = trim($o);
}
}
if ($data["participants"]) {
$parts = split(',', $data["participants"]);
foreach ($parts as $pa) {
$p = split('\:', trim($pa));
if (isset($p[0])and isset($p[1])) {
$roles["$p[1]"][] = trim($p[0]);
}
}
}
if ($calitem_id) {
$query = "update `".BIT_DB_PREFIX."tiki_calendar_items` set `calendar_id`=?,`user_id`=?,`start_time`=?,`end_time`=? ,`location_id`=? ,`category_id`=?,`priority`=?,`status`=?,`url`=?,";
$query.= "`lang`=?,`name`=?,`description`=?,`lastmodif`=? where `calitem_id`=?";
$bindvars=array((int)$data["calendar_id"],$user_id,(int)$data["start"],(int)$data["end"],(int)$data["location_id"],(int)$data["category_id"],(int)$data["priority"],
$data["status"],$data["url"],$data["lang"],$data["name"],$data["description"],(int)time(),(int)$calitem_id);
$result = $this->query($query,$bindvars);
} else {
$now=time();
$query = "insert into `".BIT_DB_PREFIX."tiki_calendar_items` (`calendar_id`, `user_id`, `start_time`, `end_time`, `location_id`, `category_id`, ";
$query.= " `priority`, `status`, `url`, `lang`, `name`, `description`, `created`, `lastmodif`) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$bindvars=array($data["calendar_id"],$user_id,$data["start"],$data["end"],$data["location_id"],$data["category_id"],$data["priority"],$data["status"],$data["url"],$data["lang"],$data["name"],$data["description"],$now,$now);
$result = $this->query($query,$bindvars);
$calitem_id = $this->GetOne("select `calitem_id` from `".BIT_DB_PREFIX."tiki_calendar_items` where `calendar_id`=? and `created`=?",array($data["calendar_id"],$now));
}
if ($calitem_id) {
$query = "delete from `".BIT_DB_PREFIX."tiki_calendar_roles` where `calitem_id`=?";
$this->query($query,array($calitem_id));
}
foreach ($roles as $lvl => $ro) {
foreach ($ro as $r) {
$query = "insert into `".BIT_DB_PREFIX."tiki_calendar_roles` (`calitem_id`,`user_id`,`role`) values (?,?,?)";
$this->query($queryi,array($calitem_id,$r,$lvl));
}
}
return $calitem_id;
}
function dropItem($user_id, $calitem_id) {
if ($calitem_id) {
$query = "delete from `".BIT_DB_PREFIX."tiki_calendar_items` where `calitem_id`=?";
$this->query($query,array($calitem_id));
}
}
function listLocations($calendar_id) {
$res = array();
if ($calendar_id > 0) {
$query = "select `calloc_id` as location_id, `name` from `".BIT_DB_PREFIX."tiki_calendar_locations` where `calendar_id`=?";
$result = $this->query($query,array($calendar_id));
while ($rez = $result->fetchRow()) {
$res[] = $rez;
}
}
return $res;
}
function listCategories($calendar_id) {
$res = array();
if ($calendar_id > 0) {
$query = "select `cal_cat_id` as `category_id`, `name` from `".BIT_DB_PREFIX."tiki_calendar_categories` where `calendar_id`=?";
$result = $this->query($query,array($calendar_id));
while ($rez = $result->fetchRow()) {
$res[] = $rez;
}
}
return $res;
}
}
?>