You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 lines
4.5 KiB

<?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 UserMenuLib extends TikiLib
{
/**
* @param $user
*/
public function add_bk($user)
{
$query = 'select tubu.`name`,`url`' .
' from `tiki_user_bookmarks_urls` tubu, `tiki_user_bookmarks_folders` tubf' .
' where tubu.`folderId`=tubf.`folderId` and tubf.`parentId`=? and tubu.`user`=?';
$result = $this->query($query, [0, $user]);
$start = $this->get_max_position($user) + 1;
while ($res = $result->fetchRow()) {
// Check for duplicate URL
if (! $this->getOne('select count(*) from `tiki_user_menus` where `url`=?', [$res['url']])) {
$this->replace_usermenu($user, 0, $res['name'], $res['url'], $start, 'w');
$start++;
}
}
$query = 'select tubu.`name`,`url` from `tiki_user_bookmarks_urls` tubu where tubu.`folderId`=? and tubu.user=?';
$result = $this->query($query, [0, $user]);
$start = $this->get_max_position($user) + 1;
while ($res = $result->fetchRow()) {
// Check for duplicate URL
if (! $this->getOne('select count(*) from `tiki_user_menus` where `url`=?', [$res['url']])) {
$this->replace_usermenu($user, 0, $res['name'], $res['url'], $start, 'w');
$start++;
}
}
}
/**
* @param $user
* @param $offset
* @param $maxRecords
* @param $sort_mode
* @param $find
* @return array
*/
public function list_usermenus($user, $offset, $maxRecords, $sort_mode, $find)
{
if ($find) {
$findesc = '%' . $find . '%';
$mid = ' and (`name` like ? or url like ?)';
$bindvars = [$user, $findesc, $findesc];
} else {
$mid = ' ';
$bindvars = [$user];
}
$query = "select * from `tiki_user_menus` where `user`=? $mid order by " . $this->convertSortMode($sort_mode);
$query_cant = "select count(*) from `tiki_user_menus` 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;
}
/**
* @param $user
* @param $menuId
* @return mixed
*/
public function get_usermenu($user, $menuId)
{
$query = 'select * from `tiki_user_menus` where `user`=? and `menuId`=?';
$result = $this->query($query, [$user, $menuId]);
$res = $result->fetchRow();
return $res;
}
/**
* @param $user
* @return mixed
*/
public function get_max_position($user)
{
return $this->getOne('select max(position) from `tiki_user_menus` where `user`=?', [$user]);
}
/**
* @param $user
* @param $menuId
* @param $name
* @param $url
* @param $position
* @param $mode
* @return mixed
*/
public function replace_usermenu($user, $menuId, $name, $url, $position, $mode)
{
if ($menuId) {
$query = 'update `tiki_user_menus` set `name`=?, `position`=?, `url`=?, `mode`=? where `user`=? and `menuId`=?';
$this->query($query, [$name, $position, $url, $mode, $user, $menuId]);
return $menuId;
} else {
$query = 'insert into `tiki_user_menus`(`user`,`name`,`url`,`position`,`mode`) values(?,?,?,?,?)';
$this->query($query, [$user, $name, $url, $position, $mode]);
$Id = $this->getOne('select max(`menuId`) from `tiki_user_menus` where `user`=? and `url`=? and `name`=?', [$user, $url, $name]);
return $Id;
}
}
/**
* @param $user
* @param $menuId
*/
public function remove_usermenu($user, $menuId)
{
$query = 'delete from `tiki_user_menus` where `user`=? and `menuId`=?';
$this->query($query, [$user,$menuId]);
}
}
$usermenulib = new UserMenuLib();