mirror of
https://bitbucket.org/jsuto/piler.git
synced 2025-06-12 23:17:02 +02:00
improved folder feature
This commit is contained in:
@ -61,7 +61,11 @@ class ModelFolderFolder extends Model {
|
||||
$q = str_repeat("?,", count($session->get("folders")));
|
||||
$q = preg_replace("/\,$/", "", $q);
|
||||
|
||||
$query = $this->db->query("SELECT `id`, `name` FROM `" . TABLE_FOLDER . "` WHERE id IN ($q)", $session->get("folders"));
|
||||
if(isAuditorUser() == 1) {
|
||||
$query = $this->db->query("SELECT `id`, `name` FROM `" . TABLE_FOLDER);
|
||||
} else {
|
||||
$query = $this->db->query("SELECT `id`, `name` FROM `" . TABLE_FOLDER . "` WHERE id IN ($q)", $session->get("folders"));
|
||||
}
|
||||
|
||||
if(isset($query->rows)) { return $query->rows; }
|
||||
|
||||
@ -69,21 +73,12 @@ class ModelFolderFolder extends Model {
|
||||
}
|
||||
|
||||
|
||||
public function get_extra_folders_for_user() {
|
||||
private function is_your_folder($folder_id = 0) {
|
||||
$session = Registry::get('session');
|
||||
|
||||
$query = $this->db->query("SELECT `id`, `name` FROM `" . TABLE_FOLDER_EXTRA . "` WHERE uid=? ORDER BY name", array($session->get("uid")));
|
||||
if(isAuditorUser() == 1) { return 1; }
|
||||
|
||||
if(isset($query->rows)) { return $query->rows; }
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
private function is_your_extra_folder($folder_id = 0) {
|
||||
$session = Registry::get('session');
|
||||
|
||||
$query = $this->db->query("SELECT `id` FROM `" . TABLE_FOLDER_EXTRA . "` WHERE uid=? AND id=?", array($session->get("uid"), $folder_id));
|
||||
$query = $this->db->query("SELECT f.id AS id FROM `" . TABLE_FOLDER . "` f, " . TABLE_FOLDER_USER . "` fu WHERE f.id=fu.id AND fu.uid=? AND f.id=?", array($session->get("uid"), $folder_id));
|
||||
if(isset($query->row['id'])) { return 1; }
|
||||
|
||||
return 0;
|
||||
@ -91,17 +86,21 @@ class ModelFolderFolder extends Model {
|
||||
|
||||
|
||||
public function copy_message_to_folder_by_id($folder_id = 0, $meta_id = 0) {
|
||||
if(!$this->is_your_extra_folder($folder_id)) { return -1; }
|
||||
if(!$this->is_your_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) {
|
||||
public function get_folder_id_array_for_user($uid = 0, $is_admin = 0) {
|
||||
$arr = array();
|
||||
|
||||
$query = $this->db->query("SELECT id FROM `" . TABLE_FOLDER_USER . "` WHERE uid=?", array($uid));
|
||||
if($is_admin == 2) {
|
||||
$query = $this->db->query("SELECT id FROM `" . TABLE_FOLDER);
|
||||
} else {
|
||||
$query = $this->db->query("SELECT id FROM `" . TABLE_FOLDER_USER . "` WHERE uid=?", array($uid));
|
||||
}
|
||||
|
||||
if(isset($query->rows)) {
|
||||
foreach ($query->rows as $q) {
|
||||
@ -132,21 +131,6 @@ 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));
|
||||
|
||||
@ -203,32 +187,55 @@ class ModelFolderFolder extends Model {
|
||||
}
|
||||
|
||||
|
||||
public function add_extra_folder($name = '') {
|
||||
public function get_folder_id_by_id($id = 0) {
|
||||
$query = $this->db->query("SELECT folder_id FROM `" . TABLE_FOLDER_MESSAGE . "` WHERE id=?", array($id));
|
||||
|
||||
if(isset($query->row)) { return $query->row['folder_id']; }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
public function update_message_folder($id = 0, $folder_id = 0) {
|
||||
$query = $this->db->query("UPDATE `" . TABLE_FOLDER_MESSAGE . "` SET folder_id=? WHERE id=?", array($folder_id, $id));
|
||||
|
||||
//$query = $this->sphx->query("UPDATE " . SPHINX_MAIN_INDEX . " SET folder=? WHERE id=?", array($folder_id, $id));
|
||||
$query = $this->sphx->query("UPDATE " . SPHINX_MAIN_INDEX . " SET folder=$folder_id WHERE id=$id");
|
||||
}
|
||||
|
||||
|
||||
public function add_folder($name = '') {
|
||||
if($name == '') { return -1; }
|
||||
|
||||
$session = Registry::get('session');
|
||||
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_FOLDER_EXTRA . " (uid, name) VALUES(?,?)", array($session->get("uid"), $name));
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_FOLDER . " (name) VALUES(?)", array($name));
|
||||
|
||||
$last_id = $this->db->getLastId();
|
||||
if(isAuditorUser() == 0) {
|
||||
$last_id = $this->db->getLastId();
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_FOLDER_USER . " (id, uid) VALUES(?,?)", array($last_id, $session->get("uid")));
|
||||
|
||||
$extra_folders = $session->get("extra_folders");
|
||||
|
||||
if(!isset($extra_folders[$last_id])) { array_push($extra_folders, $last_id); }
|
||||
$folders = $session->get("folders");
|
||||
if(!isset($folders[$last_id])) { array_push($folders, $last_id); $session->set("folders", $folders); }
|
||||
}
|
||||
|
||||
return $this->db->countAffected();
|
||||
}
|
||||
|
||||
|
||||
public function remove_extra_folder($id = 0) {
|
||||
if($id == 0) { return -1; }
|
||||
public function remove_folder($id = 0) {
|
||||
if($id <= 0) { return -1; }
|
||||
|
||||
$session = Registry::get('session');
|
||||
|
||||
$query = $this->db->query("DELETE FROM " . TABLE_FOLDER_EXTRA . " WHERE id=? AND uid=?", array($id, $session->get("uid")));
|
||||
if($this->db->countAffected() == 1) {
|
||||
$query = $this->db->query("DELETE FROM " . TABLE_FOLDER_MESSAGE . " WHERE folder_id=?", array($id));
|
||||
return $this->db->countAffected();
|
||||
if($this->is_your_folder($id) == 1) {
|
||||
$query = $this->db->query("DELETE FROM " . TABLE_FOLDER . " WHERE id=?", array($id));
|
||||
$query = $this->db->query("DELETE FROM " . TABLE_FOLDER_USER . " WHERE id=? AND uid=?", array($id, $session->get("uid")));
|
||||
|
||||
$folders = $session->get("folders");
|
||||
if(isset($folders[$id])) { unset($folders[$id]); $session->set("folders", $folders); }
|
||||
|
||||
// shall we delete the existing message - folder id assignments from folder_message?
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -223,9 +223,10 @@ class ModelSearchSearch extends Model {
|
||||
list ($total_found, $num_rows, $id_list) = $this->get_sphinx_id_list($data['note'], SPHINX_NOTE_INDEX, 'note', $page);
|
||||
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $folders id IN ($id_list) $sortorder LIMIT 0,$pagelen OPTION max_matches=" . MAX_SEARCH_HITS);
|
||||
}
|
||||
else if(ENABLE_FOLDER_RESTRICTIONS == 1 && isset($data['extra_folders']) && $data['extra_folders']) {
|
||||
list ($total_found, $num_rows, $ids_in_extra_folders) = $this->get_sphinx_id_list_by_extra_folders($data['extra_folders'], $page);
|
||||
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $a $id $date $attachment $direction $size MATCH('$match') AND id IN ($ids_in_extra_folders) $sortorder LIMIT 0,$pagelen OPTION max_matches=" . MAX_SEARCH_HITS);
|
||||
else if(ENABLE_FOLDER_RESTRICTIONS == 1 && isset($data['extra_folders']) && strlen($data['extra_folders']) > 0) {
|
||||
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $a $id $date $attachment $direction $size folder IN (" . preg_replace("/ /", ",", $data['extra_folders']) . ") AND MATCH('$match') $sortorder LIMIT $offset,$pagelen OPTION max_matches=" . MAX_SEARCH_HITS);
|
||||
$total_found = $query->total_found;
|
||||
$num_rows = $query->num_rows;
|
||||
}
|
||||
else {
|
||||
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $a $id $date $attachment $direction $size $folders MATCH('$match') $sortorder LIMIT $offset,$pagelen OPTION max_matches=" . MAX_SEARCH_HITS);
|
||||
|
@ -16,7 +16,6 @@ class ModelUserAuth extends Model {
|
||||
$session->set("emails", $data['emails']);
|
||||
|
||||
$session->set("folders", $data['folders']);
|
||||
$session->set("extra_folders", $data['extra_folders']);
|
||||
}
|
||||
|
||||
|
||||
@ -35,7 +34,6 @@ class ModelUserAuth extends Model {
|
||||
$data['auditdomains'] = array();
|
||||
$data['emails'] = array();
|
||||
$data['folders'] = array();
|
||||
$data['extra_folders'] = array();
|
||||
|
||||
if($username == '' || $password == '') { return 0; }
|
||||
|
||||
@ -114,8 +112,7 @@ class ModelUserAuth extends Model {
|
||||
$extra_emails = $this->model_user_user->get_email_addresses_from_groups($data['emails']);
|
||||
$data['emails'] = array_merge($data['emails'], $extra_emails);
|
||||
|
||||
$data['folders'] = $this->model_folder_folder->get_all_folder_ids($query->row['uid']);
|
||||
$data['extra_folders'] = $this->model_folder_folder->get_all_extra_folder_ids($query->row['uid']);
|
||||
$data['folders'] = $this->model_folder_folder->get_folder_id_array_for_user($query->row['uid'], $data['admin_user']);
|
||||
|
||||
$session->set("auth_data", $data);
|
||||
|
||||
@ -323,7 +320,6 @@ class ModelUserAuth extends Model {
|
||||
$data['auditdomains'] = $this->model_domain_domain->get_your_all_domains_by_email($email);
|
||||
$data['emails'] = $emails;
|
||||
$data['folders'] = array();
|
||||
$data['extra_folders'] = array();
|
||||
|
||||
$uid = $this->model_user_user->get_uid_by_email($email);
|
||||
if($uid < 1) {
|
||||
|
@ -41,8 +41,7 @@ class ModelUserGoogle extends Model {
|
||||
$session->set("realname", $query->row['realname']);
|
||||
|
||||
$session->set("emails", $this->model_user_user->get_users_all_email_addresses($user['uid']));
|
||||
$session->set("folders", $this->model_folder_folder->get_all_folder_ids($user['uid']));
|
||||
$session->set("extra_folders", $this->model_folder_folder->get_all_extra_folder_ids($user['uid']));
|
||||
$session->set("folders", $this->model_folder_folder->get_folder_id_array_for_user($user['uid']));
|
||||
|
||||
AUDIT(ACTION_LOGIN, $user['username'], '', '', 'successful auth against Google');
|
||||
|
||||
|
Reference in New Issue
Block a user