示例#1
0
 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();
 }