public function DevHelper_saveTemplate() { if (DevHelper_Helper_Template::autoExportImport() == false) { return false; } $template = $this->getMergedData(); $filePath = DevHelper_Helper_Template::getTemplateFilePath($template); XenForo_Helper_File::createDirectory(dirname($filePath)); return file_put_contents($filePath, $template['template']) > 0; }
public static function front_controller_pre_view(XenForo_FrontController $fc, XenForo_ControllerResponse_Abstract &$controllerResponse, XenForo_ViewRenderer_Abstract &$viewRenderer, array &$containerParams) { if (DevHelper_Helper_Template::autoExportImport() and XenForo_Application::isRegistered('styles')) { $styles = XenForo_Application::get('styles'); $style = reset($styles); $styleDate = $style['last_modified_date']; $templateFiles = glob(DevHelper_Helper_Template::getTemplateDirPath() . '/*'); $templatesUpdated = array(); $maxTemplateDate = 0; /** @var XenForo_Model_StyleProperty $propertyModel */ $propertyModel = XenForo_Model::create('XenForo_Model_StyleProperty'); foreach ($templateFiles as $templateFile) { $templateDate = filemtime($templateFile); if ($templateDate - 3 > $styleDate) { // consider this is a change, start updating the template $maxTemplateDate = max($maxTemplateDate, $templateDate); $templateId = DevHelper_Helper_Template::getTemplateIdFromFilePath($templateFile); if (empty($templateId)) { continue; } $templateText = file_get_contents($templateFile); $properties = $propertyModel->keyPropertiesByName($propertyModel->getEffectiveStylePropertiesInStyle(0)); $propertyChanges = $propertyModel->translateEditorPropertiesToArray($templateText, $templateText, $properties); /** @var XenForo_DataWriter_Template $dw */ $dw = XenForo_DataWriter::create('XenForo_DataWriter_Template'); $dw->setExistingData($templateId); $dw->set('template', $templateText); if ($dw->hasErrors()) { throw new XenForo_Exception(implode(', ', $dw->getErrors())); } if ($dw->hasChanges()) { $dw->reparseTemplate(); $dw->save(); $propertyModel->saveStylePropertiesInStyleFromTemplate(0, $propertyChanges, $properties); $templatesUpdated[] = $dw->get('title'); } } } if (!empty($maxTemplateDate)) { /** @var XenForo_Model_Style $styleModel */ $styleModel = XenForo_Model::create('XenForo_Model_Style'); $styleModel->updateAllStylesLastModifiedDate($maxTemplateDate); } } }