/**
  * 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);
 }