_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'; } } }