/** * @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; }