mirror of
https://bitbucket.org/jsuto/piler.git
synced 2025-06-12 23:27:03 +02:00
added group handling feature
This commit is contained in:
145
webui/model/group/group.php
Normal file
145
webui/model/group/group.php
Normal file
@ -0,0 +1,145 @@
|
||||
<?php
|
||||
|
||||
class ModelGroupGroup extends Model {
|
||||
|
||||
|
||||
public function get_groups($search = '', $page = 0, $page_len = 0, $sort = 'groupname', $order = 0) {
|
||||
$where_cond = '';
|
||||
$_order = "";
|
||||
$groups = array();
|
||||
$Q = array();
|
||||
$limit = "";
|
||||
|
||||
$from = (int)$page * (int)$page_len;
|
||||
|
||||
$search = preg_replace("/\s{1,}/", "", $search) . '%';
|
||||
|
||||
if($search){
|
||||
$where_cond .= " WHERE `groupname` like ?";
|
||||
array_push($Q, $search);
|
||||
}
|
||||
|
||||
/* sort order */
|
||||
|
||||
if($order == 0) { $order = "ASC"; }
|
||||
else { $order = "DESC"; }
|
||||
|
||||
$_order = "ORDER BY `$sort` $order";
|
||||
|
||||
if($page_len > 0) { $limit = " LIMIT " . (int)$from . ", " . (int)$page_len; }
|
||||
|
||||
$query = $this->db->query("SELECT `id`, `groupname` FROM `" . TABLE_GROUP . "` $where_cond $_order $limit", $Q);
|
||||
|
||||
foreach ($query->rows as $q) {
|
||||
|
||||
$groups[] = array(
|
||||
'id' => $q['id'],
|
||||
'groupname' => $q['groupname']
|
||||
);
|
||||
}
|
||||
|
||||
return $groups;
|
||||
}
|
||||
|
||||
|
||||
public function get_emails_by_group_id($id = 0) {
|
||||
$emails = '';
|
||||
|
||||
$query = $this->db->query("SELECT `email` FROM `" . TABLE_GROUP_EMAIL . "` WHERE id=?", array($id));
|
||||
|
||||
foreach ($query->rows as $q) {
|
||||
$emails .= $q['email'] . "\n";
|
||||
}
|
||||
|
||||
return preg_replace("/\n$/", "", $emails);
|
||||
}
|
||||
|
||||
|
||||
public function count_groups($search = '') {
|
||||
$where_cond = "";
|
||||
$Q = array();
|
||||
|
||||
$search = preg_replace("/\s{1,}/", "", $search) . '%';
|
||||
|
||||
if($search){
|
||||
$where_cond .= " WHERE `groupname` like '?'";
|
||||
array_push($Q, $search);
|
||||
}
|
||||
|
||||
$query = $this->db->query("SELECT COUNT(*) AS num FROM `" . TABLE_GROUP . "` $where_cond", $Q);
|
||||
|
||||
return $query->num_rows;
|
||||
}
|
||||
|
||||
|
||||
public function add_group($group = array()) {
|
||||
|
||||
if(!isset($group['groupname']) || $group['groupname'] == "") { return -1; }
|
||||
|
||||
$query = $this->db->query("INSERT INTO `" . TABLE_GROUP . "` (groupname) VALUES(?)", array($group['groupname']) );
|
||||
|
||||
if($query->error == 1 || $this->db->countAffected() == 0){ return $group['groupname']; }
|
||||
|
||||
$gid = $this->db->getLastId();
|
||||
|
||||
$emails = explode("\n", $group['email']);
|
||||
foreach ($emails as $email) {
|
||||
$email = rtrim($email);
|
||||
if(validemail($email)) {
|
||||
$query = $this->db->query("INSERT INTO `" . TABLE_GROUP_EMAIL . "` (id, email) VALUES(?,?)", array($gid, $email));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LOGGER("add group: " . $group['groupname'] . ", id=" . (int)$gid);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
public function update_group($group = array()) {
|
||||
LOGGER("update user: " . $group['groupname'] . ", id=" . (int)$group['id']);
|
||||
|
||||
$query = $this->db->query("UPDATE `" . TABLE_GROUP . "` SET `groupname`=? WHERE id=?", array($group['groupname'], (int)$group['id']));
|
||||
|
||||
$query = $this->db->query("DELETE FROM `" . TABLE_GROUP_EMAIL . "` WHERE id=?", array($group['id']));
|
||||
|
||||
$emails = explode("\n", $group['email']);
|
||||
foreach ($emails as $email) {
|
||||
$email = rtrim($email);
|
||||
|
||||
if(validemail($email)) {
|
||||
$query = $this->db->query("INSERT INTO `" . TABLE_GROUP_EMAIL . "` (id, email) VALUES(?,?)", array($group['id'], $email));
|
||||
}
|
||||
}
|
||||
|
||||
return $this->db->countAffected();
|
||||
}
|
||||
|
||||
|
||||
public function get_domain_by_id($id = 0) {
|
||||
if(!is_numeric($id) || (int)$id < 0){
|
||||
return array();
|
||||
}
|
||||
|
||||
$query = $this->db->query("SELECT * FROM `" . TABLE_GROUP . "` WHERE id=?", array((int)$id));
|
||||
|
||||
return $query->row;
|
||||
}
|
||||
|
||||
|
||||
public function delete_group($id = 0) {
|
||||
|
||||
$query = $this->db->query("DELETE FROM `" . TABLE_GROUP_EMAIL . "` WHERE id=?", array($id));
|
||||
|
||||
$query = $this->db->query("DELETE FROM `" . TABLE_GROUP . "` WHERE id=?", array((int)$id));
|
||||
|
||||
LOGGER("remove group: id=$id");
|
||||
|
||||
return $this->db->countAffected();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
@ -4,7 +4,7 @@ class ModelUserAuth extends Model {
|
||||
|
||||
public function checkLogin($username = '', $password = '') {
|
||||
|
||||
$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($username));
|
||||
$query = $this->db->query("SELECT " . TABLE_USER . ".username, " . TABLE_USER . ".uid, " . TABLE_USER . ".gid, " . 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($username));
|
||||
|
||||
if(!isset($query->row['password'])) { return 0; }
|
||||
|
||||
@ -14,12 +14,13 @@ class ModelUserAuth extends Model {
|
||||
|
||||
$_SESSION['username'] = $query->row['username'];
|
||||
$_SESSION['uid'] = $query->row['uid'];
|
||||
$_SESSION['gid'] = $query->row['gid'];
|
||||
$_SESSION['admin_user'] = $query->row['isadmin'];
|
||||
$_SESSION['email'] = $username;
|
||||
$_SESSION['domain'] = $query->row['domain'];
|
||||
$_SESSION['realname'] = $query->row['realname'];
|
||||
|
||||
$_SESSION['emails'] = $this->model_user_user->get_users_all_email_addresses($query->row['uid']);
|
||||
$_SESSION['emails'] = $this->model_user_user->get_users_all_email_addresses($query->row['uid'], $query->row['gid']);
|
||||
|
||||
AUDIT(ACTION_LOGIN, $username, '', '', 'successful auth against user table');
|
||||
|
||||
|
@ -57,7 +57,7 @@ class ModelUserUser extends Model {
|
||||
}
|
||||
|
||||
|
||||
public function get_users_all_email_addresses($uid = 0) {
|
||||
public function get_users_all_email_addresses($uid = 0, $gid = 0) {
|
||||
$data = array();
|
||||
$uids = $uid;
|
||||
|
||||
@ -79,6 +79,15 @@ class ModelUserUser extends Model {
|
||||
|
||||
}
|
||||
|
||||
|
||||
$query = $this->db->query("SELECT email FROM `" . TABLE_GROUP_EMAIL . "` WHERE id=?", array($gid));
|
||||
|
||||
if(isset($query->rows)) {
|
||||
foreach ($query->rows as $q) {
|
||||
if(!in_array($email, $data)) { array_push($data, $q['email']); }
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
@ -150,7 +159,7 @@ class ModelUserUser extends Model {
|
||||
}
|
||||
|
||||
|
||||
public function getUserByUid($uid = 0) {
|
||||
public function get_user_by_uid($uid = 0) {
|
||||
if(!is_numeric($uid) || (int)$uid < 0){
|
||||
return array();
|
||||
}
|
||||
@ -209,13 +218,14 @@ class ModelUserUser extends Model {
|
||||
|
||||
if($page_len > 0) { $limit = " LIMIT " . (int)$from . ", " . (int)$page_len; }
|
||||
|
||||
$query = $this->db->query("SELECT " . TABLE_USER . ".uid, isadmin, username, realname, domain, email FROM " . TABLE_USER . "," . TABLE_EMAIL . " $where_cond group by " . TABLE_USER . ".uid $_order $limit");
|
||||
$query = $this->db->query("SELECT " . TABLE_USER . ".uid, gid, isadmin, username, realname, domain, email FROM " . TABLE_USER . "," . TABLE_EMAIL . " $where_cond group by " . TABLE_USER . ".uid $_order $limit");
|
||||
|
||||
foreach ($query->rows as $q) {
|
||||
|
||||
if(Registry::get('admin_user') == 1 || (isset($q['domain']) && $q['domain'] == $my_domain[0]) ) {
|
||||
$users[] = array(
|
||||
'uid' => $q['uid'],
|
||||
'gid' => $q['gid'],
|
||||
'username' => $q['username'],
|
||||
'realname' => $q['realname'],
|
||||
'domain' => isset($q['domain']) ? $q['domain'] : "",
|
||||
@ -313,7 +323,7 @@ class ModelUserUser extends Model {
|
||||
|
||||
$encrypted_password = crypt($user['password']);
|
||||
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_USER . " (uid, username, realname, password, domain, dn, isadmin) VALUES(?,?,?,?,?,?,?)", array((int)$user['uid'], $user['username'], $user['realname'], $encrypted_password, $user['domain'], @$user['dn'], (int)$user['isadmin']));
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_USER . " (uid, gid, username, realname, password, domain, dn, isadmin) VALUES(?,?,?,?,?,?,?,?)", array((int)$user['uid'], (int)$user['gid'], $user['username'], $user['realname'], $encrypted_password, $user['domain'], @$user['dn'], (int)$user['isadmin']));
|
||||
|
||||
if($query->error == 1 || $this->db->countAffected() == 0){ return $user['username']; }
|
||||
|
||||
@ -377,7 +387,7 @@ class ModelUserUser extends Model {
|
||||
if($this->db->countAffected() != 1) { return 0; }
|
||||
}
|
||||
|
||||
$query = $this->db->query("UPDATE " . TABLE_USER . " SET username=?, realname=?, domain=?, dn=?, isadmin=? WHERE uid=?", array($user['username'], $user['realname'], $user['domain'], @$user['dn'], $user['isadmin'], (int)$user['uid']));
|
||||
$query = $this->db->query("UPDATE " . TABLE_USER . " SET username=?, realname=?, domain=?, gid=?, dn=?, isadmin=? WHERE uid=?", array($user['username'], $user['realname'], $user['domain'], $user['gid'], @$user['dn'], $user['isadmin'], (int)$user['uid']));
|
||||
|
||||
|
||||
/* first, remove all his email addresses */
|
||||
|
Reference in New Issue
Block a user