コード例 #1
0
    /**
     * @service theme write
     * @return Gpf_Rpc_Form
     */
    public function saveFile(Gpf_Rpc_Params $params) {
        $form = new Gpf_Rpc_Form($params);
        $theme = $form->getFieldValue('themeId');
        $fileName = ltrim($form->getFieldValue("id"), '/');
        $panel = basename($this->getThemeFile($form->getFieldValue('panelName')));
        $text = $form->getFieldValue('text');
        
        $template = new Gpf_Templates_Template($text, $panel, Gpf_Templates_Template::FETCH_TEXT, $theme);
        if ($this->getFileExtension($fileName) == 'tpl' || $this->getFileExtension($fileName) == 'stpl') {
            try {
                $template->check();
            } catch (Gpf_Templates_SmartySyntaxException $e) {
                $form->setErrorMessage($e->getMessage());
                return $form;
            }
        }
        
		$file = $this->getTemplateFile($panel, $theme, $fileName);
        try {
            if (!$file->getParent()->isExists()) {
                $file->getParent()->mkdir(true);
            }
        } catch (Exception $ex) {
            $form->setErrorMessage($this->_('Error creating directory %s '.$ex->getMessage(), $file->getParent()->getFileName()));
            return $form;
        }
        try {
        	if (!$file->isExists()) {
				$file->open('w');
				$file->close();
			}
        } catch (Exception $ex) {
            $form->setErrorMessage($this->_('Error creating file %s '.$ex->getMessage(), $file->getFileName()));
            return $form;
        }
        try {
        	$template = $this->getTemplateObject($panel, $theme, $fileName);
            $template->saveTemplateToFile($text);
        } catch(Exception $ex){
            $form->setErrorMessage($this->_('Error writing to file %s '.$ex->getMessage(), $file->getFileName()));
            return $form;
        }
        $form->setInfoMessage($this->_('File %s was saved.', $file->getFileName()));
        return $form;
    }