public function autoMergeTemplate(array $template, XenForo_Diff3 $diff) { /** @var $styleModel XenForo_Model_Style */ $styleModel = $this->getModelFromCache('XenForo_Model_Style'); $style = $styleModel->getStyleById($template['style_id']); if (!$style) { return false; } $parentStyle = $styleModel->getStyleById($style['parent_id'], true); if (!$parentStyle) { return false; } if ($parentStyle['style_id']) { $parentTemplate = $this->getEffectiveTemplateByTitle($template['title'], $parentStyle['style_id']); } else { $parentTemplate = $this->getTemplateInStyleByTitle($template['title'], 0); } if (!$parentTemplate) { return false; } if (!$parentTemplate['last_edit_date'] || $parentTemplate['last_edit_date'] < $template['last_edit_date']) { return false; } $previousVersion = $this->getLatestTemplateHistoryForTemplate($template['title'], $parentTemplate['style_id'], $template['last_edit_date']); if (!$previousVersion) { return false; } if (!isset($template['template'])) { $template = $this->getTemplateById($template['template_id']); } if (!$template) { return false; } $final = $diff->mergeToFinal($template['template'], $previousVersion['template'], $parentTemplate['template']); if ($final === false) { return false; } $dw = XenForo_DataWriter::create('XenForo_DataWriter_Template'); $dw->setExistingData($template); $dw->set('template', $final); $dw->set('last_edit_date', XenForo_Application::$time); return $dw->save(); }