protected function processRecord($record, $columnMap, &$result, $preview = false)
 {
     foreach ($this->listeners['beforeProcessRecord'] as $listener) {
         $listener($record, $columnMap, $result, $preview);
     }
     $page = $this->getPage($record);
     if (!$page) {
         // Mainly for testing, in real imports the posts should be present already
         if (!($holder = $this->_cache_holder)) {
             $holder = BlogHolder::get()->First();
         }
         if (!$holder) {
             $holder = new BlogHolder();
             $holder->write();
         }
         $this->_cache_holder = $holder;
         $page = new BlogEntry(array('DrupalNid' => $record['nid'], 'ParentID' => $holder->ID));
         $page->write();
     }
     $record['ParentID'] = $page->ID;
     $record['BaseClass'] = 'SiteTree';
     $objId = parent::processRecord($record, $columnMap, $result, $preview);
     $obj = Comment::get()->byId($objId);
     // Created gets overwritten on new records...
     $obj->Created = $record['Created'];
     $obj->write();
     foreach ($this->listeners['afterProcessRecord'] as $listener) {
         $listener($obj, $record, $columnMap, $result, $preview);
     }
     return $objId;
 }
 public function loadDescendantBlogHolderIDListInto(&$idList)
 {
     $blogHolders = BlogHolder::get();
     if (count($blogHolders)) {
         foreach ($blogHolders as $holder) {
             if (!in_array($holder->ID, $idList)) {
                 $idList[] = $holder->ID;
             }
         }
     }
 }
 public function getBlogCategoriesMoreLink()
 {
     if (Config::inst()->get('BlogCategory', 'limit_to_holder')) {
         $parent = $this->owner->Parent();
     } else {
         $parent = BlogTree::get()->filter('ClassName', 'BlogTree')->First();
         if (!$parent) {
             $parent = BlogHolder::get()->First();
         }
     }
     return $parent->Link('categoryindex');
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js');
     Requirements::javascript('wordpressconnector/javascript/WordpressPostContentSource.js');
     if (!class_exists('BlogEntry')) {
         $fields->addFieldToTab('Root.Import', new LiteralField('RequiresBlogImport', '<p>The Wordpress connector requires the blog module to import posts.</p>'));
     } else {
         $blogs = BlogHolder::get();
         $map = $blogs ? $blogs->map() : array();
         $fields->addFieldsToTab('Root.Import', array(new DropdownField('MigrationTarget', 'Blog to import into', $map), new CheckboxField('ImportComments', 'Import comments attached to the posts?', true), new CheckboxField('ImportMedia', 'Import and rewrite references to wordpress media?', true), new TextField('AssetsPath', 'Upload wordpress files to', 'Uploads/Wordpress')));
     }
     return $fields;
 }
 /**
  * @return BlogHolder
  */
 protected function getHolder($record)
 {
     $filter = new URLSegmentFilter();
     $urlSegment = $filter->filter($record['blog_path']);
     $tree = $this->_cache_tree;
     if (!$tree) {
         $tree = BlogTree::get()->filter(array('Title' => 'Blogs'))->First();
         if (!$tree) {
             $tree = new BlogTree(array('Title' => 'Blogs', 'ParentID' => $this->parentId));
             $tree->write();
             if ($this->publish) {
                 $tree->publish('Stage', 'Live');
             }
         }
         $this->_cache_tree = $tree;
     }
     $holder = isset($this->_cache_holders[$urlSegment]) ? $this->_cache_holders[$urlSegment] : null;
     if (!$holder) {
         $holder = BlogHolder::get()->filter(array('URLSegment' => $urlSegment, 'ParentID' => $tree->ID))->First();
         if (!$holder) {
             $holder = new BlogHolder(array('Title' => $record['blog_title'], 'URLSegment' => $urlSegment, 'ParentID' => $tree->ID));
             $holder->write();
             if ($this->publish) {
                 $holder->publish('Stage', 'Live');
             }
         }
         $this->_cache_holders[$urlSegment] = $holder;
     }
     return $holder;
 }