summaryrefslogtreecommitdiffstats
path: root/application/models/muser.php
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2016-08-20 23:10:36 +0200
committerFlorian Pritz <bluewind@xinu.at>2016-08-21 15:40:56 +0200
commit1ce6e4b4f78b633296db099acf8b18577906a6a4 (patch)
tree787859f0c54fde3971e045f1d5a6badd940086f3 /application/models/muser.php
parentce54c1b9c23f4bdb7b2525b8aab66a6ba11bda0d (diff)
muser: Add delete_user()
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'application/models/muser.php')
-rw-r--r--application/models/muser.php54
1 files changed, 54 insertions, 0 deletions
diff --git a/application/models/muser.php b/application/models/muser.php
index 7a4b65e4b..48e618fb1 100644
--- a/application/models/muser.php
+++ b/application/models/muser.php
@@ -182,6 +182,47 @@ class Muser extends CI_Model {
->insert('users');
}
+ /**
+ * Delete a user.
+ *
+ * @param username
+ * @param password
+ * @return true on sucess, false otherwise
+ */
+ public function delete_user($username, $password)
+ {
+ $this->duser->require_implemented("can_delete_account");
+
+ if ($this->duser->test_login_credentials($username, $password)) {
+ $userid = $this->get_userid_by_name($username);
+ assert($userid !== null);
+
+ $this->db->delete('profiles', array('user' => $userid));
+
+ $this->load->model("mfile");
+ $this->load->model("mmultipaste");
+ $this->mfile->delete_by_user($userid);
+ $this->mmultipaste->delete_by_user($userid);
+
+ # null out user data to keep referer information traceable
+ # If referer information was relinked, one user could create many
+ # accounts, delete the account that was used to invite them and
+ # then cause trouble so that the account that invited him gets
+ # banned because the admin thinks that account invited abusers
+ $this->db->set(array(
+ 'username' => null,
+ 'password' => null,
+ 'email' => null,
+ ))
+ ->where(array('username' => $username))
+ ->update('users');
+
+ return true;
+ }
+
+ return false;
+ }
+
function get_userid()
{
if (!$this->logged_in()) {
@@ -191,6 +232,19 @@ class Muser extends CI_Model {
return $this->session->userdata("userid");
}
+ public function get_userid_by_name($username)
+ {
+ $query = $this->db->select('id')
+ ->from('users')
+ ->where('username', $username)
+ ->get()->row_array();
+ if ($query) {
+ return $query['id'];
+ }
+
+ return null;
+ }
+
function get_email($userid)
{
return $this->duser->get_email($userid);