Example #1
0
 /**
  * @see UserInterface::delete()
  * @return bool
  */
 public function delete()
 {
     global $transaction;
     if ($this->user) {
         if ($this->check_delete_dependencies() == true) {
             $transaction_id = $transaction->begin();
             // Sessions
             if (Session::delete_user_sessions($this->user_id) == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             // Profile and Settings
             $user_profile = new UserProfile_Access($this->user_id);
             if ($user_profile->delete() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             $user_profile_setting = new UserProfileSetting_Access($this->user_id);
             if ($user_profile_setting->delete() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             $user_admin_setting = new UserAdminSetting_Access($this->user_id);
             if ($user_admin_setting->delete() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             // Groups
             if (GroupHasUser_Access::delete_by_user_id($this->user_id) == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             // System-Logs
             if (SystemLog::set_user_id_on_null($this->user_id) == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             $user_delete_event = new UserDeleteEvent($this->user_id);
             $event_handler = new EventHandler($user_delete_event);
             if ($event_handler->get_success() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             if ($this->user->delete() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             $user_post_delete_event = new UserPostDeleteEvent($this->user_id);
             $event_handler = new EventHandler($user_post_delete_event);
             if ($event_handler->get_success() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             } else {
                 if ($transaction_id != null) {
                     $transaction->commit($transaction_id);
                 }
                 return true;
             }
         } else {
             return false;
         }
     } else {
         return false;
     }
 }