mirror of
https://bitbucket.org/jsuto/piler.git
synced 2025-06-12 23:17:02 +02:00
added folder handling to webui
This commit is contained in:
@ -54,6 +54,31 @@ class ModelFolderFolder extends Model {
|
||||
}
|
||||
|
||||
|
||||
public function get_extra_folders_for_user() {
|
||||
$query = $this->db->query("SELECT `id`, `name` FROM `" . TABLE_FOLDER_EXTRA . "` WHERE uid=? ORDER BY name", array($_SESSION['uid']));
|
||||
|
||||
if(isset($query->rows)) { return $query->rows; }
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
private function is_your_extra_folder($folder_id = 0) {
|
||||
$query = $this->db->query("SELECT `id` FROM `" . TABLE_FOLDER_EXTRA . "` WHERE uid=? AND id=?", array($_SESSION['uid'], $folder_id));
|
||||
if(isset($query->row['id'])) { return 1; }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
public function copy_message_to_folder_by_id($folder_id = 0, $meta_id = 0) {
|
||||
if(!$this->is_your_extra_folder($folder_id)) { return -1; }
|
||||
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_FOLDER_MESSAGE . " (folder_id, id) VALUES(?,?)", array($folder_id, $meta_id));
|
||||
return $this->db->countAffected();
|
||||
}
|
||||
|
||||
|
||||
public function get_all_folder_ids($uid = 0) {
|
||||
$arr = array();
|
||||
|
||||
@ -70,6 +95,21 @@ class ModelFolderFolder extends Model {
|
||||
}
|
||||
|
||||
|
||||
public function get_all_extra_folder_ids($uid = 0) {
|
||||
$arr = array();
|
||||
|
||||
$query = $this->db->query("SELECT id FROM `" . TABLE_FOLDER_EXTRA . "` WHERE uid=?", array($uid));
|
||||
|
||||
if(isset($query->rows)) {
|
||||
foreach ($query->rows as $q) {
|
||||
array_push($arr, $q['id']);
|
||||
}
|
||||
}
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
|
||||
private function get_sub_folders($id = 0, &$arr = array()) {
|
||||
$query = $this->db->query("SELECT id FROM `" . TABLE_FOLDER . "` WHERE parent_id=?", array($id));
|
||||
|
||||
@ -106,6 +146,27 @@ class ModelFolderFolder extends Model {
|
||||
}
|
||||
|
||||
|
||||
public function add_extra_folder($name = '') {
|
||||
if($name == '') { return -1; }
|
||||
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_FOLDER_EXTRA . " (uid, name) VALUES(?,?)", array($_SESSION['uid'], $name));
|
||||
return $this->db->countAffected();
|
||||
}
|
||||
|
||||
|
||||
public function remove_extra_folder($id = 0) {
|
||||
if($id == 0) { return -1; }
|
||||
|
||||
$query = $this->db->query("DELETE FROM " . TABLE_FOLDER_EXTRA . " WHERE id=? AND uid=?", array($id, $_SESSION['uid']));
|
||||
if($this->db->countAffected() == 1) {
|
||||
$query = $this->db->query("DELETE FROM " . TABLE_FOLDER_MESSAGE . " WHERE folder_id=?", array($id));
|
||||
return $this->db->countAffected();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -292,6 +292,10 @@ class ModelSearchSearch extends Model {
|
||||
$id_list = $this->get_sphinx_id_list($data['note'], SPHINX_NOTE_INDEX, 'note');
|
||||
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $folders id IN ($id_list) $sortorder LIMIT 0," . MAX_SEARCH_HITS);
|
||||
}
|
||||
else if(ENABLE_FOLDER_RESTRICTIONS == 1 && isset($data['extra_folders']) && $data['extra_folders']) {
|
||||
$ids_in_extra_folders = $this->get_sphinx_id_list_by_extra_folders($data['extra_folders']);
|
||||
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $a $date $attachment $direction $size MATCH('$match') AND id IN ($ids_in_extra_folders) $sortorder LIMIT 0," . MAX_SEARCH_HITS);
|
||||
}
|
||||
else {
|
||||
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $a $date $attachment $direction $size $folders MATCH('$match') $sortorder LIMIT 0," . MAX_SEARCH_HITS);
|
||||
}
|
||||
@ -388,6 +392,33 @@ class ModelSearchSearch extends Model {
|
||||
}
|
||||
|
||||
|
||||
private function get_sphinx_id_list_by_extra_folders($extra_folders = '') {
|
||||
$id_list = '';
|
||||
$q = '';
|
||||
$__folders = array();
|
||||
|
||||
$s = explode(" ", $extra_folders);
|
||||
while(list($k,$v) = each($s)) {
|
||||
if(in_array($v, $_SESSION['extra_folders']) && is_numeric($v)) {
|
||||
array_push($__folders, $v);
|
||||
if($q) { $q .= ",?"; }
|
||||
else { $q = "?"; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$q = $this->db->query("SELECT id FROM " . TABLE_FOLDER_MESSAGE . " WHERE folder_id IN ($q)", $__folders);
|
||||
|
||||
foreach($q->rows as $a) {
|
||||
$id_list .= "," . $a['id'];
|
||||
}
|
||||
|
||||
if($id_list) { $id_list = substr($id_list, 1, strlen($id_list)); }
|
||||
|
||||
return $id_list;
|
||||
}
|
||||
|
||||
|
||||
private function get_meta_data($ids = array(), $q = '', $sortorder = '') {
|
||||
$messages = array();
|
||||
$tag = array();
|
||||
|
@ -21,6 +21,7 @@ class ModelUserAuth extends Model {
|
||||
|
||||
$_SESSION['emails'] = $this->model_user_user->get_users_all_email_addresses($query->row['uid']);
|
||||
$_SESSION['folders'] = $this->model_folder_folder->get_all_folder_ids($query->row['uid']);
|
||||
$_SESSION['extra_folders'] = $this->model_folder_folder->get_all_extra_folder_ids($query->row['uid']);
|
||||
|
||||
AUDIT(ACTION_LOGIN, $username, '', '', 'successful auth against user table');
|
||||
|
||||
|
Reference in New Issue
Block a user