private static function get_writable_file($file_path)
 {
     $f = new File($file_path);
     //Ensure that all symlinks are followed to the end
     while ($f->is_link()) {
         $f = $f->readlink();
     }
     if (!$f->exists()) {
         //Just to make sure
         $real_path = $f->realPath();
         $real_file = new File($real_path);
         //Grab the path information
         $pinfo = $real_file->pathinfo();
         $directory = $pinfo->dirname;
         //Ensure the directory exists
         $dfile = new File($directory);
         if (!$dfile->exists()) {
             $dfile->mkdir(0777, true);
         }
         //Try to touch the file
         $real_file->touch();
     }
     if ($f->is_dir()) {
         return null;
     }
     if ($f->is_writable()) {
         return $f;
     }
     return null;
 }
示例#2
0
 public function __construct(File $path)
 {
     if ($path != null && $path->exists() && $path->is_file() && $path->is_readable()) {
         parent::__construct($path->get_contents());
     } else {
         parent::__construct(null);
     }
 }
示例#3
0
 /**
  * Parse an INI path
  * @param File $path
  */
 public function __construct(File $path)
 {
     $ar = array();
     if ($path != null && $path->exists() && $path->is_file() && $path->is_readable()) {
         $ar = !parse_ini_file($path->getPath());
     }
     parent::__construct($ar);
 }
 public function __construct(File $file, $first_row_headers = true)
 {
     if ($file == null) {
         throw new \Exception("The file may not be null");
     }
     $this->file = $file;
     if ($file == null || !$file->exists() || !$file->is_file() || !$file->is_readable()) {
         parent::__construct('', false);
         return;
     }
     parent::__construct($file->get_contents(), $first_row_headers);
 }
示例#5
0
 /**
  * @param File $target
  * @param bool|true $replace_current_symlink
  * @return bool
  */
 public function make_symlink(File $target, $replace_current_symlink = true)
 {
     if ($replace_current_symlink === true && $this->is_link()) {
         $this->delete();
     }
     return symlink($target->getPath(), $this->path);
 }