示例#1
0
文件: purge.php 项目: rair/yacs
/**
 * delete staging files
 *
 * @param string the directory to start with
 * @see scripts/update.php
 */
function delete_staging($path)
{
    global $context;
    $path_translated = str_replace('//', '/', $context['path_to_root'] . '/scripts/staging' . $path);
    if ($handle = Safe::opendir($path_translated)) {
        while (($node = Safe::readdir($handle)) !== FALSE) {
            if ($node == '.' || $node == '..') {
                continue;
            }
            // make a real name
            $target = str_replace('//', '/', $path . '/' . $node);
            $target_translated = str_replace('//', '/', $path_translated . '/' . $node);
            // delete sub directory content
            if (is_dir($target_translated)) {
                delete_staging($target);
                Safe::rmdir($target_translated);
                // delete all files
            } else {
                $context['text'] .= sprintf(i18n::s('Deleting %s'), '/scripts/staging' . $target) . BR . "\n";
                Safe::unlink($target_translated);
                global $deleted_nodes;
                $deleted_nodes++;
            }
            // ensure we have enough time
            Safe::set_time_limit(30);
        }
        Safe::closedir($handle);
    }
}
示例#2
0
文件: stage.php 项目: rair/yacs
/**
 * delete a directory and all of its content
 *
 * @param string the directory to delete
 */
function delete_all($path)
{
    global $context;
    $path_translated = str_replace('//', '/', $context['path_to_root'] . '/' . $path);
    if ($handle = Safe::opendir($path_translated)) {
        while (($node = Safe::readdir($handle)) !== FALSE) {
            if ($node[0] == '.') {
                continue;
            }
            // make a real name
            $target = str_replace('//', '/', $path . '/' . $node);
            $target_translated = str_replace('//', '/', $path_translated . '/' . $node);
            // delete a sub directory
            if (is_dir($target_translated)) {
                delete_all($path . '/' . $node);
                Safe::rmdir($target_translated);
                // delete the node
            } else {
                Safe::unlink($target_translated);
            }
            // statistics
            global $deleted_nodes;
            $deleted_nodes++;
        }
        Safe::closedir($handle);
    }
}
示例#3
0
文件: files.php 项目: rair/yacs
 /**
  * delete one file in the database and in the file system
  *
  * @param int the id of the file to delete
  * @return boolean TRUE on success, FALSE otherwise
  */
 public static function delete($id)
 {
     global $context;
     // load the row
     $item = Files::get($id);
     if (!$item['id']) {
         Logger::error(i18n::s('No item has the provided id.'));
         return FALSE;
     }
     // actual deletion of the file
     $file_path = $context['path_to_root'] . Files::get_path($item['anchor']);
     Safe::unlink($file_path . '/' . $item['file_name']);
     Safe::unlink($file_path . '/thumbs/' . $item['file_name']);
     Safe::rmdir($file_path . '/thumbs');
     Safe::rmdir($file_path);
     Safe::rmdir(dirname($file_path));
     // delete related items
     Anchors::delete_related_to('file:' . $id);
     // delete the record in the database
     $query = "DELETE FROM " . SQL::table_name('files') . " WHERE id = " . SQL::escape($item['id']);
     if (SQL::query($query) === FALSE) {
         return FALSE;
     }
     // job done
     return TRUE;
 }