%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/DAV/FS/ |
Current File : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/DAV/FS/SharedItem.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ namespace afterlogic\DAV\FS; class SharedItem{ protected $path; public function __construct($path) { $this->path = $path; } public function getRootPath(){ return \CApi::DataPath() . '/' . Plugin::getPersonalPath() . '/' . $this->getOwner(); } public function getPath() { return $this->getRootPath() . '/' . $this->getLink(); } public function getOwner() { return $this->getProperty('owner'); } public function getAccess() { return $this->getProperty('access'); } public function getLink() { $link = $this->getProperty('link'); return $link; } public function isDirectory() { return $this->getProperty('directory'); } public function getName() { list(, $name) = \Sabre\DAV\URLUtil::splitPath($this->getLink()); return $name; } public function exists() { return file_exists($this->getPath()); } /** * @return array */ protected function getData() { if (!file_exists($this->path)) return array(); // opening up the file, and creating a shared lock $handle = fopen($this->path,'r'); flock($handle,LOCK_SH); $data = ''; // Reading data until the eof while(!feof($handle)) { $data.=fread($handle,8192); } // We're all good fclose($handle); // Unserializing and checking if the resource file contains data for this file $data = unserialize($data); if (!isset($data)) { return array(); } if (!isset($data)) { $data = array(); } return $data; } /** * Updates the resource information * * @param array $newData * @return void */ protected function putData(array $newData) { // opening up the file, and creating a shared lock $handle = fopen($this->path,'w+'); flock($handle,LOCK_EX); fwrite($handle,serialize($newData)); fclose($handle); } public function updateProperties($properties) { $data = $this->getData(); foreach($properties as $propertyName=>$propertyValue) { // If it was null, we need to delete the property if (is_null($propertyValue)) { if (isset($data[$propertyName])) { unset($data[$propertyName]); } } else { $data[$propertyName] = $propertyValue; } } $this->putData($data); return true; } public function getProperty($sName) { $aData = $this->getData(); return isset($aData[$sName]) ? $aData[$sName] : null; } public function setProperty($sName, $mValue) { $aData = $this->getData(); $aData[$sName] = $mValue; $this->putData($aData); } public function delete() { unlink($this->path); } public function getItem() { if ($this->getProperty('directory')) { return new SharedDirectory($this->path, $this, true); } else { return new SharedFile($this->path, $this, true); } } }