示例#1
0
 public function buildAction()
 {
     // create the index
     $index = Zend_Search_Lucene::create(APPLICATION_PATH . '/indexes');
     // fetch all of the current pages
     $mdlPage = new Model_Page();
     $currentPages = $mdlPage->fetchAll();
     if ($currentPages->count() > 0) {
         // create a new search document for each page
         foreach ($currentPages as $p) {
             $page = new CMS_Content_Item_Page($p->id);
             $doc = new Zend_Search_Lucene_Document();
             // you use an unindexed field for the id because you want the id to be
             // included in the search results but not searchable
             $doc->addField(Zend_Search_Lucene_Field::unIndexed('page_id', $page->id));
             // you use text fields here because you want the content to be searchable
             // and to be returned in search results
             $doc->addField(Zend_Search_Lucene_Field::text('page_name', $page->name));
             $doc->addField(Zend_Search_Lucene_Field::text('page_headline', $page->headline));
             $doc->addField(Zend_Search_Lucene_Field::text('page_description', $page->description));
             $doc->addField(Zend_Search_Lucene_Field::text('page_content', $page->content));
             // add the document to the index
             $index->addDocument($doc);
         }
     }
     // optimize the index
     $index->optimize();
     // pass the view data for reporting
     $this->view->indexSize = $index->numDocs();
 }
示例#2
0
 public function __construct()
 {
     $mdlPage = new Model_Page();
     $mdlContentNode = new Model_PageNode();
     $select = $mdlPage->select();
     $select->where("namespace = 'content'");
     $pages = $mdlPage->fetchAll($select);
     if ($pages->count() > 0) {
         foreach ($pages as $page) {
             $contentNodes = $mdlContentNode->fetchContentObject($page->id);
             if (isset($contentNodes->content)) {
                 //if the page does not have content it doesnt belong in the index (eg blocks)
                 $title = $mdlPage->getPageTitle($page->id);
                 $link = Digitalus_Toolbox_Page::getUrl($page);
                 $link = strtolower($link);
                 $contentNodes = $mdlContentNode->fetchContentObject($page->id);
                 if (isset($contentNodes->teaser)) {
                     $teaser = $contentNodes->teaser;
                 } else {
                     $teaser = Digitalus_Toolbox_String::truncateText($contentNodes->content);
                 }
                 $content = $contentNodes->content;
                 $this->_addPage($link, $title, $teaser, $content);
             }
         }
     }
 }
示例#3
0
 public function init()
 {
     $this->setMethod('post');
     // create new element
     $id = $this->createElement('hidden', 'id');
     // element options
     $id->setDecorators(array('ViewHelper'));
     // add the element to the form
     $this->addElement($id);
     // create new element
     $menuId = $this->createElement('hidden', 'menu_id');
     // element options
     $menuId->setDecorators(array('ViewHelper'));
     // add the element to the form
     $this->addElement($menuId);
     // create new element
     $label = $this->createElement('text', 'label');
     // element options
     $label->setLabel('Label: ');
     $label->setRequired(TRUE);
     $label->addFilter('StripTags');
     $label->setAttrib('size', 40);
     // add the element to the form
     $this->addElement($label);
     // create new element
     $pageId = $this->createElement('select', 'page_id');
     // element options
     $pageId->setLabel('Select a page to link to: ');
     $pageId->setRequired(true);
     // populate this with the pages
     $mdlPage = new Model_Page();
     $pages = $mdlPage->fetchAll(null, 'name');
     $pageId->addMultiOption(0, 'None');
     if ($pages->count() > 0) {
         foreach ($pages as $page) {
             $pageId->addMultiOption($page->id, $page->name);
         }
     }
     // add the element to the form
     $this->addElement($pageId);
     // create new element
     $link = $this->createElement('text', 'link');
     // element options
     $link->setLabel('or specify a link: ');
     $link->setRequired(false);
     $link->setAttrib('size', 50);
     // add the element to the form
     $this->addElement($link);
     $submit = $this->addElement('submit', 'submit', array('label' => 'Submit'));
 }
示例#4
0
 public function listAction()
 {
     $pageModel = new Model_Page();
     // fetch all of the current pages
     $select = $pageModel->select();
     $select->order('name');
     $currentPages = $pageModel->fetchAll($select);
     if ($currentPages->count() > 0) {
         $this->view->pages = $currentPages;
     } else {
         $this->view->pages = null;
     }
 }