path.'/'.$name; file_put_contents($newPath, $data); clearstatcache(true, $newPath); } /** * Creates a new subdirectory. * * @param string $name */ public function createDirectory($name) { $newPath = $this->path.'/'.$name; mkdir($newPath); clearstatcache(true, $newPath); } /** * Returns a specific child node, referenced by its name. * * This method must throw DAV\Exception\NotFound if the node does not * exist. * * @param string $name * * @throws DAV\Exception\NotFound * * @return DAV\INode */ public function getChild($name) { $path = $this->path.'/'.$name; if (!file_exists($path)) { throw new DAV\Exception\NotFound('File with name '.$path.' could not be located'); } if (is_dir($path)) { return new self($path); } else { return new File($path); } } /** * Returns an array with all the child nodes. * * @return DAV\INode[] */ public function getChildren() { $nodes = []; $iterator = new \FilesystemIterator( $this->path, \FilesystemIterator::CURRENT_AS_SELF | \FilesystemIterator::SKIP_DOTS ); foreach ($iterator as $entry) { $nodes[] = $this->getChild($entry->getFilename()); } return $nodes; } /** * Checks if a child exists. * * @param string $name * * @return bool */ public function childExists($name) { $path = $this->path.'/'.$name; return file_exists($path); } /** * Deletes all files in this directory, and then itself. */ public function delete() { foreach ($this->getChildren() as $child) { $child->delete(); } rmdir($this->path); } /** * Returns available diskspace information. * * @return array */ public function getQuotaInfo() { $absolute = realpath($this->path); return [ disk_total_space($absolute) - disk_free_space($absolute), disk_free_space($absolute), ]; } }