diff -r bd595ad770fc -r 1c2f13fd785c web/enmi/Zend/Tool/Project/Context/Filesystem/File.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/enmi/Zend/Tool/Project/Context/Filesystem/File.php Thu Jan 20 19:30:54 2011 +0100 @@ -0,0 +1,174 @@ +_resource->hasAttribute('filesystemName')) { + $this->_filesystemName = $this->_resource->getAttribute('filesystemName'); + } + + // check to see if this file is + if ($this->getName() == 'file') { + $this->_initFileOnlyContext(); + } + + // @potential-todo check to ensure that this 'file' resource has no children + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return array + */ + public function getPersistentAttributes() + { + $returnAttrs = array(); + if ($this->_filesystemName !== null) { + $returnAttrs['filesystemName'] = $this->_filesystemName; + } + return $returnAttrs; + } + + /** + * setResource() + * + * @param unknown_type $resource + */ + public function setResource(Zend_Tool_Project_Profile_Resource $resource) + { + $this->_resource = $resource; + $this->_resource->setAppendable(false); + return $this; + } + + /** + * getResource() + * + * @return Zend_Tool_Project_Profile_Resource + */ + public function getResource() + { + return $this->_resource; + } + + /** + * create() + * + * @return Zend_Tool_Project_Context_Filesystem_File + */ + public function create() + { + // check to ensure the parent exists, if not, call it and create it + if (($parentResource = $this->_resource->getParentResource()) instanceof Zend_Tool_Project_Profile_Resource) { + if ((($parentContext = $parentResource->getContext()) instanceof Zend_Tool_Project_Context_Filesystem_Abstract) + && (!$parentContext->exists())) { + $parentResource->create(); + } + } + + + if (file_exists($this->getPath())) { + // @todo propt user to determine if its ok to overwrite file + } + + file_put_contents($this->getPath(), $this->getContents()); + return $this; + } + + /** + * delete() + * + * @return Zend_Tool_Project_Context_Filesystem_File + */ + public function delete() + { + unlink($this->getPath()); + $this->_resource->setDeleted(true); + return $this; + } + + /** + * getContents() + * + * @return null + */ + public function getContents() + { + return $this->_content; + } + + protected function _initFileOnlyContext() + { + if ($this->_resource->hasAttribute('defaultContentCallback')) { + $contentFunc = $this->_resource->getAttribute('defaultContentCallback'); + if (is_callable($contentFunc)) { + $this->_content = call_user_func_array($contentFunc, array($this)); + } + } + if ($this->_filesystemName == null) { + $this->_filesystemName = 'file.txt'; + } + } + +}