rewrote php session variables

This commit is contained in:
SJ
2013-11-18 19:24:33 +01:00
parent 0809b5a514
commit 881a2380e0
39 changed files with 302 additions and 609 deletions

View File

@ -196,8 +196,12 @@ class ModelAccountingAccounting extends Model
private function __getEmails() {
$return = array();
array_push($return,$_SESSION['email']);
foreach ($_SESSION['emails'] as $e) {
$session = Registry::get('session');
array_push($return, $session->get("email"));
$emails = $session->get("emails");
foreach ($emails as $e) {
array_push($return,$e);
}
@ -206,12 +210,15 @@ class ModelAccountingAccounting extends Model
private function __getDomains() {
$return = array();
$session = Registry::get('session');
if(Registry::get('admin_user') >= 1) {
$return = $this->__getAcceptedDomains();
}elseif(Registry::get('auditor_user') == 1) {
array_push($return,$_SESSION['domain']);
foreach ($_SESSION['auditdomains'] as $d) {
array_push($return, $session->get("domain"));
$auditdomains = $session->get("auditdomains");
foreach ($auditdomains as $d) {
array_push($return,$d);
}
}

View File

@ -12,6 +12,7 @@ class ModelAuditAudit extends Model {
$date1 = $date2 = 0;
$q = '';
$session = Registry::get('session');
if($data['sort'] == "user") { $sort = "email"; }
if($data['sort'] == "ipaddr") { $sort = "ipaddr"; }
@ -40,7 +41,9 @@ class ModelAuditAudit extends Model {
}
if(Registry::get('admin_user') == 0 && RESTRICTED_AUDITOR == 1) {
while(list($k, $v) = each($_SESSION['auditdomains'])) {
$auditdomains = $session->get("auditdomains");
while(list($k, $v) = each($auditdomains)) {
if($q) { $q .= ","; }
$q .= "?";
array_push($arr, $v);
@ -48,7 +51,7 @@ class ModelAuditAudit extends Model {
$where .= " AND domain IN ($q) ";
reset($_SESSION['auditdomains']);
reset($session->get("auditdomains"));
}

View File

@ -43,10 +43,12 @@ class ModelFolderFolder extends Model {
public function get_folders_for_user() {
$q = str_repeat("?,", count($_SESSION['folders']));
$session = Registry::get('session');
$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['folders']);
$query = $this->db->query("SELECT `id`, `name` FROM `" . TABLE_FOLDER . "` WHERE id IN ($q)", $session->get("folders"));
if(isset($query->rows)) { return $query->rows; }
@ -55,7 +57,9 @@ 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']));
$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(isset($query->rows)) { return $query->rows; }
@ -64,7 +68,9 @@ class ModelFolderFolder extends Model {
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));
$session = Registry::get('session');
$query = $this->db->query("SELECT `id` FROM `" . TABLE_FOLDER_EXTRA . "` WHERE uid=? AND id=?", array($session->get("uid"), $folder_id));
if(isset($query->row['id'])) { return 1; }
return 0;
@ -187,11 +193,15 @@ 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));
$session = Registry::get('session');
$query = $this->db->query("INSERT INTO " . TABLE_FOLDER_EXTRA . " (uid, name) VALUES(?,?)", array($session->get("uid"), $name));
$last_id = $this->db->getLastId();
if(!isset($_SESSION['extra_folders'][$last_id])) { array_push($_SESSION['extra_folders'], $last_id); }
$extra_folders = $session->get("extra_folders");
if(!isset($extra_folders[$last_id])) { array_push($extra_folders, $last_id); }
return $this->db->countAffected();
}
@ -200,7 +210,9 @@ class ModelFolderFolder extends Model {
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']));
$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();

View File

@ -54,8 +54,10 @@ class ModelMailMail extends Model {
public function connect_imap() {
$this->imap = new Zend_Mail_Protocol_Imap(IMAP_HOST, IMAP_PORT, IMAP_SSL);
$session = Registry::get('session');
if($this->imap) {
if($this->imap->login($_SESSION['username'], $_SESSION['password'])) { return 1; }
if($this->imap->login($session->get("username"), $session->get("password"))) { return 1; }
}
return 0;

View File

@ -93,9 +93,12 @@ class ModelSaasCustomer extends Model
);
if(!isset($_SESSION['email']) || !strchr($_SESSION['email'], '@') ) { return $data; }
$session = Registry::get('session');
list ($user, $domain) = explode("@", $_SESSION['email']);
if($session->get("email") == '' || !strchr($session->get("email"), '@') ) { return $data; }
list ($user, $domain) = explode("@", $session->get("email"));
if(MEMCACHED_ENABLED) {
$cache_key = sha1("customer_settings:" . $domain);

View File

@ -129,6 +129,7 @@ class ModelSearchSearch extends Model {
$emailfilter = $this->assemble_email_address_filter();
$session = Registry::get('session');
$i = 0;
@ -194,7 +195,7 @@ class ModelSearchSearch extends Model {
if(ENABLE_FOLDER_RESTRICTIONS == 1) {
$s = explode(" ", $data['folders']);
while(list($k,$v) = each($s)) {
if(in_array($v, $_SESSION['folders'])) {
if(in_array($v, $session->get("folders"))) {
array_push($__folders, $v);
}
}
@ -203,7 +204,7 @@ class ModelSearchSearch extends Model {
$folders = "folder IN (" . implode(",", $__folders) . ") AND ";
}
else {
$folders = "folder IN (" . implode(",", $_SESSION['folders']) . ") AND ";
$folders = "folder IN (" . implode(",", $session->get("folders")) . ") AND ";
}
}
@ -275,6 +276,8 @@ class ModelSearchSearch extends Model {
if($reference == '') { return $ids; }
$session = Registry::get('session');
$query = $this->db->query("SELECT id FROM " . TABLE_META . " WHERE message_id=? OR reference=? ORDER BY id DESC", array($reference, $reference));
foreach($query->rows as $q) {
@ -285,7 +288,7 @@ class ModelSearchSearch extends Model {
$query = $this->sphx->query("SELECT id, folder FROM " . SPHINX_MAIN_INDEX . " WHERE id IN (" . implode(",", $ids) . ")");
$ids = array();
foreach($query->rows as $q) {
if(isset($q['folder']) && in_array($q['folder'], $_SESSION['folders'])) { array_push($ids, $q['id']); }
if(isset($q['folder']) && in_array($q['folder'], $session->get("folders"))) { array_push($ids, $q['id']); }
}
}
@ -302,9 +305,11 @@ class ModelSearchSearch extends Model {
private function get_sphinx_id_list($s = '', $sphx_table = '', $field = '') {
$id_list = '';
$session = Registry::get('session');
$s = $this->fixup_sphinx_operators($s);
$q = $this->sphx->query("SELECT id FROM $sphx_table WHERE uid=" . $_SESSION['uid'] . " AND MATCH('@$field $s') ");
$q = $this->sphx->query("SELECT id FROM $sphx_table WHERE uid=" . $session->get("uid") . " AND MATCH('@$field $s') ");
foreach($q->rows as $a) {
$id_list .= "," . $a['id'];
@ -321,9 +326,11 @@ class ModelSearchSearch extends Model {
$q = '';
$__folders = array();
$session = Registry::get('session');
$s = explode(" ", $extra_folders);
while(list($k,$v) = each($s)) {
if(in_array($v, $_SESSION['extra_folders']) && is_numeric($v)) {
if(in_array($v, $session->get("extra_folders")) && is_numeric($v)) {
array_push($__folders, $v);
if($q) { $q .= ",?"; }
else { $q = "?"; }
@ -358,6 +365,8 @@ class ModelSearchSearch extends Model {
if(isset($m['meta'])) { return unserialize($m['meta']); }
}
$session = Registry::get('session');
$query = $this->db->query("SELECT `id`, `to` FROM `" . TABLE_RCPT . "` WHERE `id` IN ($q)", $ids);
if(isset($query->rows)) {
@ -377,7 +386,7 @@ class ModelSearchSearch extends Model {
if(isset($query->rows)) {
array_unshift($ids, (int)$_SESSION['uid']);
array_unshift($ids, (int)$session->get("uid"));
$tags = $this->db->query("SELECT `id`, `tag` FROM `" . TABLE_TAG . "` WHERE `uid`=? AND `id` IN ($q)", $ids);
@ -413,7 +422,7 @@ class ModelSearchSearch extends Model {
$m['date'] = date(DATE_TEMPLATE, $m['sent']);
$m['size'] = nice_size($m['size']);
in_array($m['from'], $_SESSION['emails']) ? $m['yousent'] = 1 : $m['yousent'] = 0;
in_array($m['from'], $session->get("emails")) ? $m['yousent'] = 1 : $m['yousent'] = 0;
/*
* verifying 20 messages takes some time, still it's useful
@ -514,7 +523,11 @@ class ModelSearchSearch extends Model {
private function get_all_your_address() {
$s = '';
while(list($k, $v) = each($_SESSION['emails'])) {
$session = Registry::get('session');
$emails = $session->get("emails");
while(list($k, $v) = each($emails)) {
if($s) { $s .= '| ' . $this->fix_email_address_for_sphinx($v); }
else { $s = $this->fix_email_address_for_sphinx($v); }
}
@ -531,15 +544,19 @@ class ModelSearchSearch extends Model {
if(Registry::get('auditor_user') == 1 && RESTRICTED_AUDITOR == 0) { return 1; }
$session = Registry::get('session');
array_push($arr, $id);
if(Registry::get('auditor_user') == 1 && RESTRICTED_AUDITOR == 1) {
if(validdomain($_SESSION['domain']) == 1) {
if(validdomain($session->get("domain")) == 1) {
$q .= ",?";
array_push($a, $_SESSION['domain']);
array_push($a, $session->get("domain"));
}
while(list($k, $v) = each($_SESSION['auditdomains'])) {
$auditdomains = $session->get("auditdomains");
while(list($k, $v) = each($auditdomains)) {
if(validdomain($v) == 1 && !in_array($v, $a)) {
$q .= ",?";
array_push($a, $v);
@ -547,7 +564,9 @@ class ModelSearchSearch extends Model {
}
}
else {
while(list($k, $v) = each($_SESSION['emails'])) {
$emails = $session->get("emails");
while(list($k, $v) = each($emails)) {
if(validemail($v) == 1) {
$q .= ",?";
array_push($a, $v);
@ -561,7 +580,7 @@ class ModelSearchSearch extends Model {
if(ENABLE_FOLDER_RESTRICTIONS == 1) {
$query = $this->sphx->query("SELECT folder FROM " . SPHINX_MAIN_INDEX . " WHERE id=" . (int)$id);
if(isset($query->row['folder']) && in_array($query->row['folder'], $_SESSION['folders'])) { return 1; }
if(isset($query->row['folder']) && in_array($query->row['folder'], $session->get("folders"))) { return 1; }
}
else {
if(Registry::get('auditor_user') == 1 && RESTRICTED_AUDITOR == 1) {
@ -583,6 +602,8 @@ class ModelSearchSearch extends Model {
if(count($id) < 1) { return $result; }
$session = Registry::get('session');
$arr = $id;
for($i=0; $i<count($id); $i++) {
@ -593,12 +614,14 @@ class ModelSearchSearch extends Model {
$q2 = preg_replace("/^\,/", "", $q2);
if(Registry::get('auditor_user') == 1 && RESTRICTED_AUDITOR == 1) {
if(validdomain($_SESSION['domain']) == 1) {
if(validdomain($session->get("domain")) == 1) {
$q .= ",?";
array_push($a, $_SESSION['domain']);
array_push($a, $session->get("domain"));
}
while(list($k, $v) = each($_SESSION['auditdomains'])) {
$auditdomains = $session->get("auditdomains");
while(list($k, $v) = each($auditdomains)) {
if(validdomain($v) == 1 && !in_array($v, $a)) {
$q .= ",?";
array_push($a, $v);
@ -607,7 +630,9 @@ class ModelSearchSearch extends Model {
}
else {
if(Registry::get('auditor_user') == 0) {
while(list($k, $v) = each($_SESSION['emails'])) {
$emails = $session->get("emails");
while(list($k, $v) = each($emails)) {
if(validemail($v) == 1) {
$q .= ",?";
array_push($a, $v);
@ -641,7 +666,7 @@ class ModelSearchSearch extends Model {
if($query->num_rows > 0) {
foreach ($query->rows as $q) {
if(ENABLE_FOLDER_RESTRICTIONS == 1) {
if(in_array($q['folder'], $_SESSION['folders'])) { array_push($result, $q['id']); }
if(in_array($q['folder'], $session->get("folders"))) { array_push($result, $q['id']); }
}
else {
array_push($result, $q['id']);
@ -660,8 +685,9 @@ class ModelSearchSearch extends Model {
public function get_search_terms() {
$session = Registry::get('session');
$query = $this->db->query("SELECT term, ts FROM " . TABLE_SEARCH . " WHERE email=? ORDER BY ts DESC", array($_SESSION['email']));
$query = $this->db->query("SELECT term, ts FROM " . TABLE_SEARCH . " WHERE email=? ORDER BY ts DESC", array($session->get("email")));
if(isset($query->rows)) { return $query->rows; }
return array();
@ -671,12 +697,14 @@ class ModelSearchSearch extends Model {
public function add_search_term($term = '') {
if($term == '') { return 0; }
$session = Registry::get('session');
parse_str($term, $s);
if(!isset($s['search']) || $s['search'] == '') { return 0; }
if($this->update_search_term($term) == 0) {
AUDIT(ACTION_SAVE_SEARCH, '', '', '', $term);
$query = $this->db->query("INSERT INTO " . TABLE_SEARCH . " (email, ts, term) VALUES(?,?,?)", array($_SESSION['email'], time(), $term));
$query = $this->db->query("INSERT INTO " . TABLE_SEARCH . " (email, ts, term) VALUES(?,?,?)", array($session->get("email"), time(), $term));
}
return 1;
@ -688,14 +716,18 @@ class ModelSearchSearch extends Model {
AUDIT(ACTION_SEARCH, '', '', '', $term);
$query = $this->db->query("UPDATE " . TABLE_SEARCH . " SET ts=? WHERE term=? AND email=?", array(time(), $term, $_SESSION['email']));
$session = Registry::get('session');
$query = $this->db->query("UPDATE " . TABLE_SEARCH . " SET ts=? WHERE term=? AND email=?", array(time(), $term, $session->get("email")));
return $this->db->countAffected();
}
public function remove_search_term($ts = 0) {
$query = $this->db->query("DELETE FROM " . TABLE_SEARCH . " WHERE email=? AND ts=?", array($_SESSION['email'], $ts));
$session = Registry::get('session');
$query = $this->db->query("DELETE FROM " . TABLE_SEARCH . " WHERE email=? AND ts=?", array($session->get("email"), $ts));
}
@ -736,6 +768,7 @@ class ModelSearchSearch extends Model {
private function make_cache_file_name($data = array(), $sortorder = '') {
$s = '';
$session = Registry::get('session');
while(list($k, $v) = each($data)) {
if($v) {
@ -744,7 +777,7 @@ class ModelSearchSearch extends Model {
}
}
return sha1($_SESSION['email'] . "/" . $s . "-" . (NOW - NOW % 3600) . "-" . $sortorder);
return sha1($session->get("email") . "/" . $s . "-" . (NOW - NOW % 3600) . "-" . $sortorder);
}
}

View File

@ -7,6 +7,8 @@ class ModelStatChart extends Model {
$ydata2 = array();
$dates = array();
$session = Registry::get('session');
$chart = new LineChart($size_x, $size_y);
$chart->getPlot()->getPalette()->setLineColor(array(
@ -35,11 +37,13 @@ class ModelStatChart extends Model {
if(Registry::get('admin_user') == 0) {
$q = '';
foreach($_SESSION['auditdomains'] as $a) {
$auditdomains = $session->get('auditdomains');
foreach($auditdomains as $a) {
if($q) { $q .= ",?"; } else { $q = "?"; }
}
reset($_SESSION['auditdomains']);
$query = $this->db->query("select arrived-(arrived%$delta) as ts, count(*) as num from " . VIEW_MESSAGES . " where arrived > $range AND todomain IN ($q) $domains $grouping ORDER BY ts DESC limit $limit", $_SESSION['auditdomains']);
reset($auditdomains);
$query = $this->db->query("select arrived-(arrived%$delta) as ts, count(*) as num from " . VIEW_MESSAGES . " where arrived > $range AND todomain IN ($q) $domains $grouping ORDER BY ts DESC limit $limit", $auditdomains);
} else {
$query = $this->db->query("select arrived-(arrived%$delta) as ts, count(*) as num from " . TABLE_META . " where arrived > $range $grouping ORDER BY ts DESC limit $limit");
}

View File

@ -4,6 +4,8 @@ class ModelUserGoogle extends Model {
public function check_for_account($google_account = array()) {
$session = Registry::get('session');
$query = $this->db->query("SELECT " . TABLE_USER . ".username, " . TABLE_USER . ".uid, " . TABLE_USER . ".realname, " . TABLE_USER . ".dn, " . TABLE_USER . ".password, " . TABLE_USER . ".isadmin, " . TABLE_USER . ".domain FROM " . TABLE_USER . ", " . TABLE_EMAIL . " WHERE " . TABLE_EMAIL . ".email=? AND " . TABLE_EMAIL . ".uid=" . TABLE_USER . ".uid", array($google_account['email']));
if($query->num_rows == 1) {
@ -39,16 +41,16 @@ class ModelUserGoogle extends Model {
$this->model_domain_domain->addDomain($user['domain'], $user['domain']);
}
$_SESSION['username'] = $user['username'];
$_SESSION['uid'] = $user['uid'];
$_SESSION['admin_user'] = 0;
$_SESSION['email'] = $user['username'];
$_SESSION['domain'] = $query->row['domain'];
$_SESSION['realname'] = $query->row['realname'];
$session->set("username", $user['username']);
$session->set("uid", $user['uid']);
$session->set("admin_user", 0);
$session->set("email", $user['username']);
$session->set("domain", $query->row['domain']);
$session->set("realname", $query->row['realname']);
$_SESSION['emails'] = $this->model_user_user->get_users_all_email_addresses($user['uid']);
$_SESSION['folders'] = $this->model_folder_folder->get_all_folder_ids($user['uid']);
$_SESSION['extra_folders'] = $this->model_folder_folder->get_all_extra_folder_ids($user['uid']);
$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']));
AUDIT(ACTION_LOGIN, $user['username'], '', '', 'successful auth against Google');

View File

@ -5,11 +5,13 @@ class ModelUserPrefs extends Model {
public function get_user_preferences($username = '') {
if($username == "") { return 0; }
$session = Registry::get('session');
$query = $this->db->query("SELECT * FROM " . TABLE_USER_SETTINGS . " WHERE username=?", array($username));
if(isset($query->row['pagelen'])) { $_SESSION['pagelen'] = $query->row['pagelen']; } else { $_SESSION['pagelen'] = PAGE_LEN; }
if(isset($query->row['theme'])) { $_SESSION['theme'] = $query->row['theme']; } else { $_SESSION['theme'] = THEME; }
if(isset($query->row['lang'])) { $_SESSION['lang'] = $query->row['lang']; } else { $_SESSION['lang'] = DEFAULT_LANG; }
if(isset($query->row['pagelen'])) { $session->set("pagelen", $query->row['pagelen']); } else { $session->set("pagelen", PAGE_LEN); }
if(isset($query->row['theme'])) { $session->set("theme", $query->row['theme']); } else { $session->set("theme", THEME); }
if(isset($query->row['lang'])) { $session->set("lang", $query->row['lang']); } else { $session->set("lang", DEFAULT_LANG); }
return 1;
}
@ -20,6 +22,8 @@ class ModelUserPrefs extends Model {
if(!isset($prefs['pagelen']) || !is_numeric($prefs['pagelen']) || $prefs['pagelen'] < 10 || $prefs['pagelen'] > 100
|| !isset($prefs['theme']) || !preg_match("/^([a-zA-Z0-9\-\_]+)$/", $prefs['theme']) || !file_exists(DIR_THEME . $prefs['theme']) ) { return 1; }
$session = Registry::get('session');
$query = $this->db->query("SELECT COUNT(*) AS num FROM " . TABLE_USER_SETTINGS . " WHERE username=?", array($username));
if((int)@$query->row['num'] == 1) {
@ -30,9 +34,9 @@ class ModelUserPrefs extends Model {
}
$_SESSION['pagelen'] = $prefs['pagelen'];
$_SESSION['theme'] = $prefs['theme'];
$_SESSION['lang'] = $prefs['lang'];
$session->set("pagelen", $prefs['pagelen']);
$session->set("theme", $prefs['theme']);
$session->set("lang", $prefs['lang']);
LOGGER("set user preference", $username);

View File

@ -85,7 +85,9 @@ class ModelUserUser extends Model {
public function get_users_all_domains($uid = 0) {
$data = array();
array_push($data, $_SESSION['domain']);
$session = Registry::get('session');
array_push($data, $session->get('domain'));
if($uid > 0) {
$query = $this->db->query("SELECT domain FROM " . TABLE_DOMAIN_USER . " WHERE uid=?", array((int)$uid));