/** * Delete email list message data and attachement folder * * @param array $data */ function perform($data) { if (empty($data['mid'])) { return FALSE; } // get message folder and lid M(MOD_EARCHIVE, 'get_message', array('mid' => $data['mid'], 'var' => 'm_data', 'fields' => array('lid', 'folder'))); // get list folder M(MOD_EARCHIVE, 'get_list', array('lid' => $this->B->m_data['lid'], 'var' => 'l_data', 'fields' => array('lid', 'folder'))); // build whole path to message folder $path = SF_BASE_DIR . '/data/earchive/' . $this->B->l_data['folder'] . '/' . $this->B->m_data['folder']; if (!empty($this->B->m_data['folder']) && @is_dir($path)) { // delete attachements folder for this message commonUtil::delete_dir_tree($path); } // delete list messages $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_messages\n WHERE\n mid={$data['mid']}"; $result = $this->B->db->query($sql); if (DB::isError($result)) { trigger_error($result->getMessage() . "\n\nINFO: " . $result->userinfo . "\n\nFILE: " . __FILE__ . "\nLINE: " . __LINE__, E_USER_ERROR); } // delete list messages $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_attach\n WHERE\n mid={$data['mid']}"; $result = $this->B->db->query($sql); if (DB::isError($result)) { trigger_error($result->getMessage() . "\n\nINFO: " . $result->userinfo . "\n\nFILE: " . __FILE__ . "\nLINE: " . __LINE__, E_USER_ERROR); } // Delete message words from the search index M(MOD_EARCHIVE, 'word_indexer', array('delete_words' => TRUE, 'mid' => (int) $data['mid'])); // Delete cache data M(MOD_COMMON, 'cache_delete', array('group' => 'earchive')); return TRUE; }
/** * Delete email list data and attachement folder * * @param array $data */ function perform($data) { if (empty($data['lid'])) { return FALSE; } // get list attachement folder $sql = "\n SELECT\n folder\n FROM\n {$this->B->sys['db']['table_prefix']}earchive_lists \n WHERE\n lid={$data['lid']}"; $result = $this->B->db->query($sql); $row =& $result->FetchRow(DB_FETCHMODE_ASSOC); $folder = $row['folder']; $path = SF_BASE_DIR . 'data/earchive/' . $folder; if (!empty($folder) && @is_dir($path)) { // delete attachements folder for this list commonUtil::delete_dir_tree($path); } // delete list $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_lists\n WHERE\n lid={$data['lid']}"; $this->B->db->query($sql); // delete list messages $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_messages\n WHERE\n lid={$data['lid']}"; $this->B->db->query($sql); // delete list messages $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_attach\n WHERE\n lid={$data['lid']}"; $this->B->db->query($sql); // Delete message words index of this list M(MOD_EARCHIVE, 'word_indexer', array('delete_words' => TRUE, 'lid' => (int) $data['lid'])); // Delete cache data M(MOD_COMMON, 'cache_delete', array('group' => 'earchive')); return TRUE; }
/** * Delete email list data and attachement folder * * @param array $data */ function perform($data) { if (empty($data['lid'])) { return FALSE; } // get list attachement folder $sql = "\n SELECT\n folder\n FROM\n {$this->B->sys['db']['table_prefix']}earchive_lists \n WHERE\n lid={$data['lid']}"; $result = $this->B->db->query($sql); if (MDB2::isError($result)) { trigger_error($result->getMessage() . "\n\nINFO: " . $result->userinfo . "\n\nFILE: " . __FILE__ . "\nLINE: " . __LINE__, E_USER_ERROR); return FALSE; } $row =& $result->fetchRow(MDB2_FETCHMODE_ASSOC); $folder = $row['folder']; $path = SF_BASE_DIR . 'data/earchive/' . $folder; if (!empty($folder) && @is_dir($path)) { // delete attachements folder for this list commonUtil::delete_dir_tree($path); } // delete list $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_lists\n WHERE\n lid={$data['lid']}"; $result = $this->B->db->query($sql); if (MDB2::isError($result)) { trigger_error($result->getMessage() . "\n\nINFO: " . $result->userinfo . "\n\nFILE: " . __FILE__ . "\nLINE: " . __LINE__, E_USER_ERROR); return FALSE; } // delete list messages $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_messages\n WHERE\n lid={$data['lid']}"; $result = $this->B->db->query($sql); if (MDB2::isError($result)) { trigger_error($result->getMessage() . "\n\nINFO: " . $result->userinfo . "\n\nFILE: " . __FILE__ . "\nLINE: " . __LINE__, E_USER_ERROR); return FALSE; } // delete list messages $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_attach\n WHERE\n lid={$data['lid']}"; $result = $this->B->db->query($sql); if (MDB2::isError($result)) { trigger_error($result->getMessage() . "\n\nINFO: " . $result->userinfo . "\n\nFILE: " . __FILE__ . "\nLINE: " . __LINE__, E_USER_ERROR); return FALSE; } // delete list messages word indexes $sql = "\n DELETE FROM \n {$this->B->sys['db']['table_prefix']}earchive_words_crc32\n WHERE\n lid={$data['lid']}"; $result = $this->B->db->query($sql); if (MDB2::isError($result)) { trigger_error($result->getMessage() . "\n\nINFO: " . $result->userinfo . "\n\nFILE: " . __FILE__ . "\nLINE: " . __LINE__, E_USER_ERROR); return FALSE; } return TRUE; }
/** * delete_dir_tree * * Delete directory and content recursive * * @param string $dir Directory */ function delete_dir_tree($dir) { if (($handle = @opendir($dir)) != FALSE) { while (($file = readdir($handle)) != false) { if ($file == "." || $file == "..") { continue; } if (@is_dir($dir . '/' . $file)) { commonUtil::delete_dir_tree($dir . '/' . $file); } else { if (@unlink($dir . '/' . $file) == FALSE) { trigger_error("Can not delete content in dir tree: {$dir}/{$file}", E_USER_ERROR); } } } @closedir($handle); if (@rmdir($dir) == FALSE) { trigger_error("Can not remvoe dir: {$dir}", E_USER_ERROR); } } else { trigger_error("Can not delete content dir: {$dir}", E_USER_ERROR); } }
/** * delete message and all related data * * @param int $mid message id */ function delete_message($mid) { // get attachments folder $fields = array('lid', 'folder'); $data = $this->get_message($mid, $fields); $l_data = $this->get_list($data['lid'], $fields); $path = SF_BASE_DIR . '/data/earchive/' . $l_data['folder'] . '/' . $data['folder']; if (!empty($data['folder']) && @is_dir($path)) { // delete attachements folder for this list commonUtil::delete_dir_tree($path); } // delete list messages $sql = "\n DELETE FROM \n {$GLOBALS['B']->sys['db']['table_prefix']}earchive_messages\n WHERE\n mid={$mid}"; $GLOBALS['B']->db->query($sql); // delete list messages $sql = "\n DELETE FROM \n {$GLOBALS['B']->sys['db']['table_prefix']}earchive_attach\n WHERE\n mid={$mid}"; $GLOBALS['B']->db->query($sql); // delete list messages word indexes $sql = "\n DELETE FROM \n {$GLOBALS['B']->sys['db']['table_prefix']}earchive_words_crc32\n WHERE\n mid={$mid}"; $GLOBALS['B']->db->query($sql); }