whereAdd('1=0'); return; } $p = DB_DataObject::factory('core_page'); $p->get($q['_core_page_id']); $this->template_id = $p->template_id; } } /** * * the purpose of this is to find all the block[xxxx] * and make a row for then... * * it should return all the */ function syncTemplateElement($template) { $tn = $this->tableName(); $contents = file_get_contents($template->currentTemplate); $contentStrings = $template->contentStrings; //print_R($template->contentStrings); // this should also look for // if it finds this // -> make sure there is a reference to element in core_template_element... // -> System PAGE and elements???? with that text as the contents.. $core_page_strings = array(); $matches = array(); if (preg_match_all('/flexy\:content=\"(\{block\[([A-Za-z0-9_-]+)\]\.([A-Za-z0-9_]+)([^"]*))"/', $contents, $matches )) { // print_R($matches); // remove the full match.. // so that the match string matches the old format. // the match[0] will be the one them matches contentStrings array_shift($matches); foreach($matches[0] as $i=>$k) { if (!isset($contentStrings[$k])) { continue; } //print_R($matches); if (!isset($core_page_strings[ $matches[1][$i] ])) { $core_page_strings[ $matches[1][$i] ] = array(); } $core_page_strings[ $matches[1][$i] ][ $matches[2][$i] ] = trim($contentStrings[$k]); // print_r(trim($contentStrings[$k])); } } $old_matches = array(); if (preg_match_all('#\{block\[([A-Za-z0-9_-]+)\]\.#', $contents, $old_matches )) { // pushes old matches onto new ones.. foreach($old_matches[0] as $i =>$v) { $matches[0][] = $v; $matches[1][] = $old_matches[1][$i]; if (!isset($core_page_strings[ $matches[1][$i] ])) { $core_page_strings[ $matches[1][$i] ] = array( 'title' => trim($matches[1][$i]), 'body' => 'Fill in text here' ); } // print_r(trim($matches[1][$i])); } } //print_r($core_page_strings); // why delete the template??? // if (empty($matches[0]) && empty($old_matches[0])) { // $this->query(" // DELETE FROM {$tn} WHERE template_id = {$template->id} // "); // return; // } /// ---- USE THE SAME CODE - $elements = array_unique($matches[1]); //print_r($elements); $ret = array(); $t = DB_DataObject::Factory($tn); $t->template_id = $template->id; $base = clone($t); $old = $t->fetchAll('name', 'id'); foreach($elements as $el) { if (!isset($old[$el])) { $t = clone($base); $t->name = $el; $t->content_strings = isset($core_page_strings[$el]) ? $core_page_strings[$el] : array(); $t->insert(); $ret[] = clone($t); } else { $t =DB_DataObject::Factory($tn); $t->get($old[$el]); $t->content_strings = isset($core_page_strings[$el]) ? $core_page_strings[$el] : array(); unset($old[$el]); $ret[] = clone($t); // got element already.. ignore it.. } // add } // delete elements, and pages pointing to this element.. --- sounds about right.. foreach($old as $n=>$id) { $t = DB_DataObject::Factory($tn); $t->get($id); $t->delete(); // de'reference the core_pages that refered to it.. $core = DB_DataObject::factory('core_page'); $core->query("UPDATE core_page set is_system_page = 0, element_id= 0 WHERE element_id = {$t->id}"); } return $ret; } function syncTemplateFromPage($pgdata) { //print_r($pgdata); if (empty($pgdata['page'])) { return false; } $element_id = DB_DataObject::factory('core_enum')->lookup('core_page_type', 'element'); $core = DB_DataObject::factory('core_page'); //DB_DataObject::DebugLevel(1); $core->setFrom(array( 'page_type_id' => $element_id, 'page_link' => $this->name, 'parent_id' => $pgdata['page']->id, 'is_element' => 1, 'element_id' => $this->id, 'language' => 'en', 'is_system_page' => 1 )); if ($core->count()) { $core->fetch(); $this->page = clone($core); return; } $core = DB_DataObject::factory('core_page'); $core->title = $this->name; /// placeholder.. // from parsing earlier.. //print_R($this->content_strings); // allow for bodyToDisplayHTML... etc.. foreach( array('title', 'body', 'extended') as $prop) { if (isset($this->content_strings[$prop])) { continue; } foreach($this->content_strings as $k=>$v) { if (substr($k,0,strlen($prop)) == $prop) { $this->content_strings[$prop] = $v; } } } $core->setFrom($this->content_strings); $core->setFrom(array( 'page_type_id' => $element_id, 'page_link' => $this->name, 'parent_id' => $pgdata['page']->id, 'is_element' => 1, 'element_id' => $this->id, 'language' => 'en', 'is_system_page' => 1 )); $core->insert(); $this->page = clone($core); } }