public function configurePageTypePublishTargetFromImport($txml)
 {
     $configuration = new PageTypeConfiguration($this);
     $ct = PageType::getByHandle((string) $txml['pagetype']);
     $configuration->setPageTypeID($ct->getPageTypeID());
     return $configuration;
 }
예제 #2
0
파일: controller.php 프로젝트: baardev/lbtb
 public function view()
 {
     $ct = CollectionType::getByHandle('pb_post');
     $ctID = $ct->getPageTypeID();
     if ($this->targetCID > 0) {
         $target = Page::getByID($this->targetCID);
         $this->set('target', $target);
     } else {
         $target = Page::getByPath('/blogsearch');
         $this->set('target', $target);
     }
     if (!$this->page_type) {
         $this->page_type = 'pb_post';
     }
     $page_type = trim($this->page_type);
     $query = "SELECT MIN(cv.cvDatePublic) as firstPost\n\t\t\tFROM CollectionVersions cv\n            INNER JOIN Pages pp ON cv.cID = pp.cID\n\t\t\tINNER JOIN PageTypes pt ON pp.ptID = pt.ptID\n\t\t\tWHERE pt.ptHandle = ? and cv.cvIsApproved = 1\n\t\t\tAND cv.cvDatePublic < CURDATE()\n            ORDER BY firstPost ASC";
     $db = Loader::db();
     $firstPost = $db->getOne($query, array($page_type));
     if (strlen($firstPost)) {
         $firstPost = new \DateTime($firstPost);
         $this->set('firstPost', $firstPost);
     }
     $this->set('numMonths', $this->numMonths);
     $this->set('navigation', loader::helper('navigation'));
 }
 public function getItems(Batch $batch)
 {
     // first, loop through all the page types
     // that are mapped in the current content batch
     $db = \Database::connection();
     $em = $db->getEntityManager();
     $query = $em->createQuery("select ti from PortlandLabs\\Concrete5\\MigrationTool\\Entity\\Import\\BatchTargetItem bti\n            join PortlandLabs\\Concrete5\\MigrationTool\\Entity\\ContentMapper\\TargetItem ti\n            where bti.batch = :batch and bti.target_item = ti and ti.item_type = :type");
     $query->setParameter('batch', $batch);
     $query->setParameter('type', 'page_type');
     $types = $query->getResult();
     $items = array();
     $handles = array();
     foreach ($types as $type) {
         if (!in_array($type->getItemID(), $handles)) {
             $handles[] = $type->getItemID();
         }
     }
     foreach ($handles as $handle) {
         $type = Type::getByHandle($handle);
         if (is_object($type)) {
             $items = array_merge($items, $this->getPageTypeComposerOutputContentItems($type));
         }
     }
     return $items;
 }
예제 #4
0
 public function up(Schema $schema)
 {
     $type = Type::getByHandle(STACK_CATEGORY_PAGE_TYPE);
     if (!is_object($type)) {
         Type::add(array('internal' => true, 'name' => 'Stack Category', 'handle' => STACK_CATEGORY_PAGE_TYPE));
     }
 }
 public function execute(Batch $batch)
 {
     $this->batch = $batch;
     // First, create the top level page for the batch.
     $batches = \Page::getByPath('/!import_batches');
     $type = Type::getByHandle('import_batch');
     $batchParent = $batches->add($type, array('cName' => $batch->getID(), 'cHandle' => $batch->getID(), 'pkgID' => \Package::getByHandle('migration_tool')->getPackageID()));
     $pages = $this->getPagesOrderedForImport($batch);
     if (!$pages) {
         return;
     }
     // Now loop through all pages, and build them
     foreach ($pages as $page) {
         $data = array();
         $ui = $this->getTargetItem('user', $page->getUser());
         if ($ui != '') {
             $data['uID'] = $ui->getUserID();
         } else {
             $data['uID'] = USER_SUPER_ID;
         }
         $cDatePublic = $page->getPublicDate();
         if ($cDatePublic) {
             $data['cDatePublic'] = $cDatePublic;
         }
         $type = $this->getTargetItem('page_type', $page->getType());
         if ($type) {
             $data['ptID'] = $type->getPageTypeID();
         }
         $template = $this->getTargetItem('page_template', $page->getTemplate());
         if (is_object($template)) {
             $data['pTemplateID'] = $template->getPageTemplateID();
         }
         if ($page->getPackage()) {
             $pkg = \Package::getByHandle($page->getPackage());
             if (is_object($pkg)) {
                 $data['pkgID'] = $pkg->getPackageID();
             }
         }
         // TODO exception if parent not found
         if ($page->getBatchPath() != '') {
             $lastSlash = strrpos($page->getBatchPath(), '/');
             $parentPath = substr($page->getBatchPath(), 0, $lastSlash);
             $data['cHandle'] = substr($page->getBatchPath(), $lastSlash + 1);
             if (!$parentPath) {
                 $parent = $batchParent;
             } else {
                 $parent = \Page::getByPath('/!import_batches/' . $this->batch->getID() . $parentPath);
             }
         } else {
             $parent = $batchParent;
         }
         $data['name'] = $page->getName();
         $data['cDescription'] = $page->getDescription();
         $parent->add($type, $data);
     }
 }
예제 #6
0
 public function add($name, Folder $folder = null)
 {
     $site = \Core::make('site')->getActiveSiteForEditing();
     $type = Type::getByHandle(STACK_CATEGORY_PAGE_TYPE);
     $parent = $folder ? $folder->getPage() : \Page::getByPath(STACKS_PAGE_PATH, 'RECENT', $site);
     $data = array();
     $data['name'] = $name;
     $page = $parent->add($type, $data);
     return $this->application->make('Concrete\\Core\\Page\\Stack\\Folder\\Folder', array($page));
 }
예제 #7
0
 /**
  * @param Section $section
  * @return StackCategory
  */
 public static function createFromMultilingualSection(Section $section)
 {
     $parent = \Page::getByPath(STACKS_PAGE_PATH);
     $data = array();
     $data['name'] = $section->getLocale();
     $data['cHandle'] = $section->getLocale();
     $type = Type::getByHandle(STACK_CATEGORY_PAGE_TYPE);
     $page = $parent->add($type, $data);
     $sc = new StackCategory($page);
     return $sc;
 }
예제 #8
0
 public function configurePageTypePublishTargetFromImport($txml)
 {
     $configuration = new PageTypeConfiguration($this);
     $ct = PageType::getByHandle((string) $txml['pagetype']);
     $formFactor = (string) $txml['form-factor'];
     $configuration->setPageTypeID($ct->getPageTypeID());
     if ($formFactor) {
         $configuration->setSelectorFormFactor($formFactor);
     }
     return $configuration;
 }
예제 #9
0
파일: controller.php 프로젝트: baardev/lbtb
 public function install_pb_page_defaults($pkg, $cocID)
 {
     $pageType = CollectionType::getByHandle('pb_post');
     $ctTemplate = $pageType->getPageTypeDefaultPageTemplateObject();
     $blogPostCollectionTypeMT = $pageType->getPageTypePageTemplateDefaultPageObject($ctTemplate);
     $ctID = $pageType->getPageTypeID();
     $bt = BlockType::getByHandle('problog_list');
     $cIDn = Page::getByPath('/blog')->getCollectionID();
     $blocks = $blogPostCollectionTypeMT->getBlocks('Sidebar');
     foreach ($blocks as $b) {
         $b->deleteBlock();
     }
     $i = 0;
     for ($bb = 1; $bb <= 4; $bb += 1) {
         if ($bb == 1) {
             $title = t('Category List');
         } elseif ($bb == 2) {
             $title = t('Tag List');
         } elseif ($bb == 3) {
             $title = t('Tag Cloud');
         } elseif ($bb == 4) {
             $title = t('Archive');
         }
         $data = array('num' => '25', 'cParentID' => '0', 'cThis' => '0', 'paginate' => '0', 'displayAliases' => '0', 'ctID' => $ctID, 'rss' => '0', 'rssTitle' => '', 'rssDescription' => '', 'truncateSummaries' => '0', 'truncateChars' => '128', 'category' => t('All Categories'), 'title' => $title);
         $b = $blogPostCollectionTypeMT->addBlock($bt, 'Sidebar', $data);
         $i++;
         if ($i == 1) {
             $b->setCustomTemplate('categories');
         } elseif ($i == 2) {
             $b->setCustomTemplate('tags');
         } elseif ($i == 3) {
             $b->setCustomTemplate('tag_cloud');
         } elseif ($i == 4) {
             $b->setCustomTemplate('archive');
         }
     }
     //add composer controll output to pb_post defaults
     $bt = BlockType::getByHandle('core_page_type_composer_control_output');
     $data = array('ptComposerOutputControlID' => $cocID);
     $blogPostCollectionTypeMT->addBlock($bt, 'Main', $data);
     //install guestbook to page_type template
     $guestBookBT = BlockType::getByHandle('core_conversation');
     $guestbookArray = array();
     $guestbookArray['attachmentsEnabled'] = 0;
     $guestbookArray['title'] = t('Please add a comment');
     $guestbookArray['itemsPerPage'] = 14;
     $guestbookArray['enablePosting'] = 1;
     $guestbookArray['paginate'] = 1;
     $guestbookArray['displayMode'] = 'threaded';
     $blogPostCollectionTypeMT->addBlock($guestBookBT, 'Blog Post More', $guestbookArray);
 }
예제 #10
0
파일: add_blog.php 프로젝트: baardev/lbtb
 public function add()
 {
     $this->setupForm();
     if ($this->isPost()) {
         $this->validate();
         if (!$this->error->has()) {
             $date = Loader::helper('form/date_time')->translate('blogDate');
             $parent = ProblogPost::getParentByID($this->post('cParentID'));
             $canonical = Loader::helper('blogify')->getOrCreateCanonical($date, $parent);
             $ct = CollectionType::getByHandle('pb_post');
             $data = array('cName' => $this->post('blogTitle'), 'cDescription' => $this->post('blogDescription'), 'cDatePublic' => $date);
             $p = $canonical->add($ct, $data);
             $p = ProblogPost::getByID($p->getCollectionID());
             $p->update(array('pTemplateID' => $this->post('ptID')));
             if ($this->post('draft') == 1 || $this->post('draft') == 2) {
                 $p->deactivate();
                 if ($this->post('draft') == 2) {
                     Loader::helper('blog_actions')->send_publish_request($p);
                 }
             }
             ProblogPost::saveData($p);
             if (!$this->post('save_post')) {
                 $this->redirect('/dashboard/problog/blog_list/', 'blogadded');
             } else {
                 $this->redirect('/dashboard/problog/add_blog/edit/' . $p->getCollectionID());
             }
         }
     }
 }
예제 #11
0
 protected function installPagetypes($pkg)
 {
     $type = Type::getByHandle('import_batch');
     if (!is_object($type)) {
         Type::add(array('internal' => true, 'name' => 'Import Batch', 'handle' => 'import_batch'));
     }
 }
 protected function installDesktops()
 {
     $this->output(t('Installing Desktops...'));
     $template = Template::getByHandle('desktop');
     if (!is_object($template)) {
         Template::add('desktop', t('Desktop'), FILENAME_PAGE_TEMPLATE_DEFAULT_ICON, null, true);
     }
     $type = \Concrete\Core\Page\Type\Type::getByHandle('core_desktop');
     if (!is_object($type)) {
         \Concrete\Core\Page\Type\Type::add(array('handle' => 'core_desktop', 'name' => 'Desktop', 'internal' => true));
     }
     $category = Category::getByHandle('collection')->getController();
     $attribute = CollectionKey::getByHandle('is_desktop');
     if (!is_object($attribute)) {
         $key = new PageKey();
         $key->setAttributeKeyHandle('is_desktop');
         $key->setAttributeKeyName('Is Desktop');
         $key->setIsAttributeKeyInternal(true);
         $category->add('boolean', $key);
     }
     $attribute = CollectionKey::getByHandle('desktop_priority');
     if (!is_object($attribute)) {
         $key = new PageKey();
         $key->setAttributeKeyHandle('desktop_priority');
         $key->setAttributeKeyName('Desktop Priority');
         $key->setIsAttributeKeyInternal(true);
         $category->add('number', $key);
     }
     $desktop = Page::getByPath('/dashboard/welcome');
     if (is_object($desktop) && !$desktop->isError()) {
         $desktop->moveToTrash();
     }
     $desktop = Page::getByPath('/desktop');
     if (is_object($desktop) && !$desktop->isError()) {
         $desktop->moveToTrash();
     }
     $page = \Page::getByPath("/account/messages");
     if (is_object($page) && !$page->isError()) {
         $page->moveToTrash();
     }
     // Private Messages tweak
     SinglePage::add('/account/messages');
     $ci = new ContentImporter();
     $ci->importContentFile(DIR_BASE_CORE . '/config/install/upgrade/desktops.xml');
     $desktop = Page::getByPath('/dashboard/welcome');
     $desktop->movePageDisplayOrderToTop();
     \Config::save('concrete.misc.login_redirect', 'DESKTOP');
 }
 public function skipItem()
 {
     $type = Type::getByHandle($this->object->getHandle());
     return is_object($type);
 }
예제 #14
0
 public function getTargetItemContentObject(TargetItemInterface $targetItem)
 {
     return Type::getByHandle($targetItem->getItemID());
 }
예제 #15
0
 public function getContentObject()
 {
     return Type::getByHandle($this->getReference());
 }
예제 #16
0
파일: blogify.php 프로젝트: baardev/lbtb
 public function getOrCreateCanonical($date, $parent)
 {
     $db = Loader::db();
     $canonical = $db->getOne("SELECT canonical FROM btProBlogSettings");
     if ($canonical) {
         $year = date('Y', strtotime($date));
         $month = date('m', strtotime($date));
         $month_name = date('M', strtotime($date));
         $pageType = CollectionType::getByHandle('pb_post');
         if (!is_object($pageType) || $pageType == false) {
             $pageType = CollectionType::getByHandle('left_sidebar');
         }
         if (!is_object($pageType) || $pageType == false) {
             $pageType = CollectionType::getByHandle('right_sidebar');
         }
         if (!is_object($pageType) || $pageType == false) {
             $pageType = CollectionType::getByHandle('default');
         }
         if (!is_object($pageType) || $pageType == false) {
             $pageType = CollectionType::getByHandle('page');
         }
         $canonical_year = Page::getByPath($parent->getCollectionPath() . '/' . $year . '/');
         if (!$canonical_year->cID) {
             $canonical_year = $parent->add($pageType, array('cName' => $year, 'cHandle' => $year, 'cDescription' => $year . t(' Blog Posts')));
             $canonical_year->setAttribute('exclude_page_list', 1);
             $canonical_year->setAttribute('exclude_search_index', 1);
             $canonical_year->setAttribute('is_canonical_page', 1);
             $bt = BlockType::getByHandle('problog_list');
             $cParentID = $canonical_year->getCollectionID();
             $data = array('num' => '10', 'cParentID' => $cParentID, 'cThis' => '0', 'paginate' => '1', 'displayAliases' => '1', 'ctID' => $pageType->getPageTypeID(), 'rss' => '1', 'rssTitle' => t('Latest blog'), 'orderBy' => 'chrono_desc', 'rssDescription' => t('Our latest blog feed'), 'truncateSummaries' => '0', 'truncateChars' => '128', 'category' => t('All Categories'), 'title' => $year . t(' Blog Posts'));
             $b = $canonical_year->addBlock($bt, 'Main', $data);
             $b->setCustomTemplate('templates/micro_blog');
             $block = $canonical_year->getBlocks('Sidebar');
             foreach ($block as $b) {
                 $b->delete();
             }
             $i = 0;
             for ($bb = 1; $bb <= 4; $bb += 1) {
                 if ($bb == 1) {
                     $title = t('Category List');
                 } elseif ($bb == 2) {
                     $title = t('Tag List');
                 } elseif ($bb == 3) {
                     $title = t('Tag Cloud');
                 } elseif ($bb == 4) {
                     $title = t('Archive');
                 }
                 $data = array('num' => '25', 'cParentID' => $cParentID, 'cThis' => '0', 'paginate' => '0', 'displayAliases' => '0', 'ctID' => $pageType->getPageTypeID(), 'rss' => '0', 'rssTitle' => '', 'rssDescription' => '', 'truncateSummaries' => '0', 'truncateChars' => '128', 'category' => t('All Categories'), 'title' => $title);
                 $b = $canonical_year->addBlock($bt, 'Sidebar', $data);
                 $i++;
                 if ($i == 1) {
                     $b->setCustomTemplate('categories');
                 } elseif ($i == 2) {
                     $b->setCustomTemplate('tags');
                 } elseif ($i == 3) {
                     $b->setCustomTemplate('tag_cloud');
                 } elseif ($i == 4) {
                     $b->setCustomTemplate('archive');
                 }
             }
         }
         $canonical_month = Page::getByPath($canonical_year->getCollectionPath() . '/' . $month . '/');
         if (!$canonical_month->cID) {
             $canonical_month = $canonical_year->add($pageType, array('cName' => $month, 'cHandle' => $month, 'cDescription' => $month_name . ', ' . $year . t(' Blog Posts')));
             $canonical_month->setAttribute('exclude_page_list', 1);
             $canonical_month->setAttribute('exclude_search_index', 1);
             $canonical_month->setAttribute('is_canonical_page', 1);
             $bt = BlockType::getByHandle('problog_list');
             $cParentID = $canonical_month->getCollectionID();
             $data = array('num' => '10', 'cParentID' => $cParentID, 'cThis' => '0', 'paginate' => '1', 'displayAliases' => '1', 'ctID' => $pageType->getPageTypeID(), 'rss' => '1', 'rssTitle' => t('Latest blog'), 'orderBy' => 'chrono_desc', 'rssDescription' => t('Our latest blog feed'), 'truncateSummaries' => '0', 'truncateChars' => '128', 'category' => t('All Categories'), 'title' => $month . t(' Blog Posts'));
             $b = $canonical_month->addBlock($bt, 'Main', $data);
             $b->setCustomTemplate('templates/micro_blog');
             $block = $canonical_month->getBlocks('Sidebar');
             foreach ($block as $b) {
                 $b->delete();
             }
             $i = 0;
             for ($bb = 1; $bb <= 4; $bb += 1) {
                 if ($bb == 1) {
                     $title = t('Category List');
                 } elseif ($bb == 2) {
                     $title = t('Tag List');
                 } elseif ($bb == 3) {
                     $title = t('Tag Cloud');
                 } elseif ($bb == 4) {
                     $title = t('Archive');
                 }
                 $data = array('num' => '25', 'cParentID' => $cParentID, 'cThis' => '0', 'paginate' => '0', 'displayAliases' => '0', 'ctID' => $pageType->getPageTypeID(), 'rss' => '0', 'rssTitle' => '', 'rssDescription' => '', 'truncateSummaries' => '0', 'truncateChars' => '128', 'category' => t('All Categories'), 'title' => $title);
                 $b = $canonical_month->addBlock($bt, 'Sidebar', $data);
                 $i++;
                 if ($i == 1) {
                     $b->setCustomTemplate('categories');
                 } elseif ($i == 2) {
                     $b->setCustomTemplate('tags');
                 } elseif ($i == 3) {
                     $b->setCustomTemplate('tag_cloud');
                 } elseif ($i == 4) {
                     $b->setCustomTemplate('archive');
                 }
             }
         }
         return Page::getByPath($parent->getCollectionPath() . '/' . $year . '/' . $month . '/');
     } else {
         return $parent;
     }
 }
예제 #17
0
 public function testBasicFeedSave()
 {
     $pt = \Concrete\Core\Page\Type\Type::getByHandle('another');
     $pp = \Concrete\Core\Page\Page::getByPath('/another-fun-page');
     $pf = new \Concrete\Core\Page\Feed();
     $pf->setHandle('blog');
     $pf->setPageTypeID($pt->getPageTypeID());
     $pf->setParentID($pp->getCollectionID());
     $pf->setTitle('RSS Feed');
     $pf->setDescription('My Description');
     $pf->save();
     $this->assertEquals('blog', $pf->getHandle());
     $this->assertEquals(1, $pf->getID());
     $pf->ignorePermissions();
     $pl = $pf->getPageListObject();
     $this->assertInstanceOf('\\Concrete\\Core\\Page\\PageList', $pl);
     $this->assertEquals(1, $pl->getTotalResults());
     $results = $pl->getResults();
     $this->assertEquals('Foobler', $results[0]->getCollectionName());
 }
 public function import(\SimpleXMLElement $sx)
 {
     if (isset($sx->pages)) {
         $nodes = array();
         $i = 0;
         foreach ($sx->pages->page as $p) {
             $p->originalPos = $i;
             $nodes[] = $p;
             ++$i;
         }
         usort($nodes, array('static', 'setupPageNodeOrder'));
         $siteTree = null;
         if (isset($this->home)) {
             $home = $this->home;
             $siteTree = $this->home->getSiteTreeObject();
         } else {
             $home = Page::getByID(HOME_CID, 'RECENT');
         }
         foreach ($nodes as $px) {
             $pkg = static::getPackageObject($px['package']);
             $data = array();
             $user = (string) $px['user'];
             if ($user != '') {
                 $ui = UserInfo::getByUserName($user);
                 if (is_object($ui)) {
                     $data['uID'] = $ui->getUserID();
                 } else {
                     $data['uID'] = USER_SUPER_ID;
                 }
             }
             $cDatePublic = (string) $px['public-date'];
             if ($cDatePublic) {
                 $data['cDatePublic'] = $cDatePublic;
             }
             $data['pkgID'] = 0;
             if (is_object($pkg)) {
                 $data['pkgID'] = $pkg->getPackageID();
             }
             $args = array();
             $ct = Type::getByHandle($px['pagetype']);
             $template = Template::getByHandle($px['template']);
             if ($px['path'] != '') {
                 // not home page
                 $page = Page::getByPath($px['path'], 'RECENT', $siteTree);
                 if (!is_object($page) || $page->isError()) {
                     $lastSlash = strrpos((string) $px['path'], '/');
                     $parentPath = substr((string) $px['path'], 0, $lastSlash);
                     $data['cHandle'] = substr((string) $px['path'], $lastSlash + 1);
                     if (!$parentPath) {
                         $parent = $home;
                     } else {
                         $parent = Page::getByPath($parentPath, 'RECENT', $siteTree);
                     }
                     $page = $parent->add($ct, $data);
                 }
             } else {
                 $page = $home;
             }
             $args['cName'] = $px['name'];
             $args['cDescription'] = $px['description'];
             if (is_object($ct)) {
                 $args['ptID'] = $ct->getPageTypeID();
             }
             $args['pTemplateID'] = $template->getPageTemplateID();
             $page->update($args);
         }
     }
 }