示例#1
0
function remove_folder($dir)
{
    $result = array();
    $result['removed'] = array();
    $result['kept'] = array();
    $files = array_diff(scandir($dir), array('.', '..'));
    foreach ($files as $file) {
        if (is_dir("{$dir}/{$file}")) {
            $result = array_merge_recursive($result, remove_folder("{$dir}/{$file}"));
        } else {
            if (unlink("{$dir}/{$file}")) {
                $result['removed'][] = "{$dir}/{$file}";
            } else {
                $result['kept'][] = "{$dir}/{$file}";
            }
        }
    }
    if (rmdir("{$dir}")) {
        $result['removed'][] = $dir;
    } else {
        $result['kept'][] = $dir;
    }
    return $result;
}
示例#2
0
 public function deleteUpdate($update_id)
 {
     // Begin transaction with the database
     $this->db->trans_start();
     // Update URL count
     $update = $this->getSingle($update_id, 1);
     if ($update['url']) {
         // Check if this is the only update using this url
         $num = $this->db->where('url', $update['url'])->get('update_url')->num_rows;
         if ($num > 1) {
             // More than one share
             $this->db->where('id', $update['url'])->set('share_count', 'share_count - 1', false)->update('url');
         } else {
             // Only one share
             // Delete from DB
             $this->db->where('id', $update['url'])->delete('url');
             $dir = getcwd() . '/upload/url/' . $update['url'];
             if (is_dir($dir)) {
                 empty_folder($dir);
                 if (!remove_folder($dir)) {
                     log_message('error', "user_model->deleteUpdate() - Remove folder failed:" . $dir);
                     return false;
                 }
             }
         }
     }
     // Delete files
     if ($update['image_id']) {
         // Check if this is the only update using this image
         $num = $this->db->where('image_id', $update['image_id'])->get('update_image')->num_rows;
         if ($num == 1) {
             // Delete from DB
             $this->db->where('image_id', $update['image_id'])->delete('image');
             $dir = getcwd() . '/upload/photo/' . $update['username'];
             remove_files(array($dir . '/' . $update['image_id'] . '-' . $update['image_filename'] . $update['image_fileext'], $dir . '/' . $update['image_id'] . '-' . $update['image_filename'] . '-large' . $update['image_fileext'], $dir . '/' . $update['image_id'] . '-' . $update['image_filename'] . '-small' . $update['image_fileext']));
         }
     }
     // Delete mentions
     $this->db->where('update_id', $update_id)->delete('user_notification');
     // Delete update
     $this->db->where('id', $update_id)->delete('update');
     $this->db->trans_complete();
     if ($this->db->trans_status() === false) {
         return false;
     }
     return true;
 }