예제 #1
0
 /**
  * @param int $acct_id
  * @return bool
  */
 function DeleteAccountData($acct_id, $email)
 {
     $count = 0;
     $user_id = -1;
     if ($acct_id < 0) {
         return false;
     }
     if (!$this->_connector->Execute($this->_commandCreator->GetUserIdFromAcctId($acct_id))) {
         return false;
     }
     $row = $this->_connector->GetNextRecord();
     if ($row) {
         $user_id = $row->id_user;
     }
     if ($user_id < 0) {
         return false;
     }
     if (!$this->_connector->Execute($this->_commandCreator->CountAccountsByUserId($user_id))) {
         return false;
     }
     $row = $this->_connector->GetNextRecord();
     if ($row) {
         $count = $row->cnt;
     }
     $result = true;
     if ($count > 0) {
         $sql = 'DELETE FROM %sawm_accounts WHERE id_acct = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         $result = $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_messages WHERE id_acct = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_messages_body WHERE id_acct = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_filters WHERE id_acct = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_reads WHERE id_acct = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         $result &= $this->_connector->Execute($query);
         $result &= $this->_connector->Execute($this->_commandCreator->DeleteFolderTreeById($acct_id));
         $sql = 'DELETE FROM %sawm_folders WHERE id_acct = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_mailaliases WHERE id_acct = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_mailinglists WHERE id_acct = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         $result &= $this->_connector->Execute($query);
         /*$sql = 'DELETE FROM %sawm_tempfiles WHERE id_acct = %d';
         		$query = sprintf($sql, $this->_settings->DbPrefix, $acct_id);
         		$result &= $this->_connector->Execute($query);*/
     }
     if ($count == 1) {
         $sql = 'DELETE FROM %sawm_addr_book WHERE id_user = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_settings WHERE id_user = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         /* contacts */
         $result &= $this->_connector->Execute($this->_commandCreator->DeleteAddrGroupsContactsById($user_id));
         $sql = 'DELETE FROM %sawm_addr_groups WHERE id_user = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_columns WHERE id_user = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sawm_senders WHERE id_user = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sa_users WHERE id_user = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         /* calendar */
         $cal_ids = $this->GetCalendarIdsByUserId($user_id);
         if ($cal_ids && is_array($cal_ids) && count($cal_ids) > 0) {
             $result &= $this->_connector->Execute($this->_commandCreator->DeleteCalendarExclusions($cal_ids));
             $result &= $this->_connector->Execute($this->_commandCreator->DeleteCalendarEventrepeats($cal_ids));
             $result &= $this->_connector->Execute($this->_commandCreator->DeleteCalendarEvents($user_id));
             $sql = 'DELETE FROM %sacal_calendars WHERE user_id = %d';
             $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
             $result &= $this->_connector->Execute($query);
         }
         $sql = 'DELETE FROM %sacal_users_data WHERE user_id = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sacal_publications WHERE id_user = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         $sql = 'DELETE FROM %sacal_sharing WHERE id_user = %d';
         $query = sprintf($sql, $this->_settings->DbPrefix, $user_id);
         $result &= $this->_connector->Execute($query);
         $query = $this->_commandCreator->DeleteFunambolContacts($email);
         // this commands does not affect result
         $this->_connector->Execute($query);
         $query = $this->_commandCreator->DeleteFunambolEvents($email);
         // this commands does not affect result
         $this->_connector->Execute($query);
     }
     return $result;
 }