1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\DAV\FS; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAV; 6*a1a3b679SAndreas Boehleruse Sabre\HTTP\URLUtil; 7*a1a3b679SAndreas Boehler 8*a1a3b679SAndreas Boehler/** 9*a1a3b679SAndreas Boehler * Base node-class 10*a1a3b679SAndreas Boehler * 11*a1a3b679SAndreas Boehler * The node class implements the method used by both the File and the Directory classes 12*a1a3b679SAndreas Boehler * 13*a1a3b679SAndreas Boehler * @copyright Copyright (C) 2007-2015 fruux GmbH (https://fruux.com/). 14*a1a3b679SAndreas Boehler * @author Evert Pot (http://evertpot.com/) 15*a1a3b679SAndreas Boehler * @license http://sabre.io/license/ Modified BSD License 16*a1a3b679SAndreas Boehler */ 17*a1a3b679SAndreas Boehlerabstract class Node implements DAV\INode { 18*a1a3b679SAndreas Boehler 19*a1a3b679SAndreas Boehler /** 20*a1a3b679SAndreas Boehler * The path to the current node 21*a1a3b679SAndreas Boehler * 22*a1a3b679SAndreas Boehler * @var string 23*a1a3b679SAndreas Boehler */ 24*a1a3b679SAndreas Boehler protected $path; 25*a1a3b679SAndreas Boehler 26*a1a3b679SAndreas Boehler /** 27*a1a3b679SAndreas Boehler * Sets up the node, expects a full path name 28*a1a3b679SAndreas Boehler * 29*a1a3b679SAndreas Boehler * @param string $path 30*a1a3b679SAndreas Boehler */ 31*a1a3b679SAndreas Boehler function __construct($path) { 32*a1a3b679SAndreas Boehler 33*a1a3b679SAndreas Boehler $this->path = $path; 34*a1a3b679SAndreas Boehler 35*a1a3b679SAndreas Boehler } 36*a1a3b679SAndreas Boehler 37*a1a3b679SAndreas Boehler 38*a1a3b679SAndreas Boehler 39*a1a3b679SAndreas Boehler /** 40*a1a3b679SAndreas Boehler * Returns the name of the node 41*a1a3b679SAndreas Boehler * 42*a1a3b679SAndreas Boehler * @return string 43*a1a3b679SAndreas Boehler */ 44*a1a3b679SAndreas Boehler function getName() { 45*a1a3b679SAndreas Boehler 46*a1a3b679SAndreas Boehler list(, $name) = URLUtil::splitPath($this->path); 47*a1a3b679SAndreas Boehler return $name; 48*a1a3b679SAndreas Boehler 49*a1a3b679SAndreas Boehler } 50*a1a3b679SAndreas Boehler 51*a1a3b679SAndreas Boehler /** 52*a1a3b679SAndreas Boehler * Renames the node 53*a1a3b679SAndreas Boehler * 54*a1a3b679SAndreas Boehler * @param string $name The new name 55*a1a3b679SAndreas Boehler * @return void 56*a1a3b679SAndreas Boehler */ 57*a1a3b679SAndreas Boehler function setName($name) { 58*a1a3b679SAndreas Boehler 59*a1a3b679SAndreas Boehler list($parentPath, ) = URLUtil::splitPath($this->path); 60*a1a3b679SAndreas Boehler list(, $newName) = URLUtil::splitPath($name); 61*a1a3b679SAndreas Boehler 62*a1a3b679SAndreas Boehler $newPath = $parentPath . '/' . $newName; 63*a1a3b679SAndreas Boehler rename($this->path, $newPath); 64*a1a3b679SAndreas Boehler 65*a1a3b679SAndreas Boehler $this->path = $newPath; 66*a1a3b679SAndreas Boehler 67*a1a3b679SAndreas Boehler } 68*a1a3b679SAndreas Boehler 69*a1a3b679SAndreas Boehler /** 70*a1a3b679SAndreas Boehler * Returns the last modification time, as a unix timestamp 71*a1a3b679SAndreas Boehler * 72*a1a3b679SAndreas Boehler * @return int 73*a1a3b679SAndreas Boehler */ 74*a1a3b679SAndreas Boehler function getLastModified() { 75*a1a3b679SAndreas Boehler 76*a1a3b679SAndreas Boehler return filemtime($this->path); 77*a1a3b679SAndreas Boehler 78*a1a3b679SAndreas Boehler } 79*a1a3b679SAndreas Boehler 80*a1a3b679SAndreas Boehler} 81