Пример #1
0
 /**
  * Store the page's title
  *
  * @param Doku_Event $event
  * @param $param
  */
 public function handle_meta(Doku_Event $event, $param)
 {
     $id = $event->data['current']['last_change']['id'];
     $title = new Title($id);
     if (!blank($event->data['current']['title'])) {
         $title->setTitle($event->data['current']['title']);
     } else {
         $title->setTitle(null);
     }
 }
 public function test_search()
 {
     // prepare some data
     $this->loadSchemaJSON('pageschema');
     $this->saveData('syntax', 'pageschema', array('singlepage' => 'wiki:dokuwiki', 'multipage' => array('wiki:dokuwiki', 'wiki:syntax', 'wiki:welcome'), 'singletitle' => 'wiki:dokuwiki', 'multititle' => array('wiki:dokuwiki', 'wiki:syntax', 'wiki:welcome')));
     // make sure titles for some pages are known (not for wiki:welcome)
     $title = new Title('wiki:dokuwiki');
     $title->setTitle('DokuWiki Overview');
     $title = new Title('wiki:syntax');
     $title->setTitle('DokuWiki Foobar Syntax');
     // search
     $search = new Search();
     $search->addSchema('pageschema');
     $search->addColumn('singlepage');
     $search->addColumn('multipage');
     $search->addColumn('singletitle');
     $search->addColumn('multititle');
     /** @var Value[][] $result */
     $result = $search->execute();
     // no titles:
     $this->assertEquals('wiki:dokuwiki', $result[0][0]->getValue());
     $this->assertEquals(array('wiki:dokuwiki', 'wiki:syntax', 'wiki:welcome'), $result[0][1]->getValue());
     // titles as JSON:
     $this->assertEquals('["wiki:dokuwiki","DokuWiki Overview"]', $result[0][2]->getValue());
     $this->assertEquals(array('["wiki:dokuwiki","DokuWiki Overview"]', '["wiki:syntax","DokuWiki Foobar Syntax"]', '["wiki:welcome",null]'), $result[0][3]->getValue());
     // search single with title
     $single = clone $search;
     $single->addFilter('singletitle', 'Overview', '*~', 'AND');
     $result = $single->execute();
     $this->assertTrue(is_array($result));
     $this->assertEquals(1, count($result));
     // search multi with title
     $multi = clone $search;
     $multi->addFilter('multititle', 'Foobar', '*~', 'AND');
     $result = $multi->execute();
     $this->assertTrue(is_array($result));
     $this->assertEquals(1, count($result));
     // search single with page
     $single = clone $search;
     $single->addFilter('singletitle', 'wiki:dokuwiki', '*~', 'AND');
     $result = $single->execute();
     $this->assertTrue(is_array($result));
     $this->assertEquals(1, count($result));
     // search multi with page
     $multi = clone $search;
     $multi->addFilter('multititle', 'welcome', '*~', 'AND');
     $result = $multi->execute();
     $this->assertTrue(is_array($result));
     $this->assertEquals(1, count($result));
 }
 protected function prepareLookup()
 {
     saveWikiText('title1', 'test', 'test');
     $title = new Title('title1');
     $title->setTitle('This is a title');
     saveWikiText('title2', 'test', 'test');
     $title = new Title('title2');
     $title->setTitle('This is a 2nd title');
     saveWikiText('title3', 'test', 'test');
     $title = new Title('title3');
     $title->setTitle('Another Title');
     $this->loadSchemaJSON('pageschema', '', 0, true);
     $access = AccessTable::byTableName('pageschema', 0);
     $access->saveData(array('singlepage' => 'title1', 'multipage' => array('title1'), 'singletitle' => 'title1', 'multititle' => array('title1')));
     $access = AccessTable::byTableName('pageschema', 0);
     $access->saveData(array('singlepage' => 'title2', 'multipage' => array('title2'), 'singletitle' => 'title2', 'multititle' => array('title2')));
     $access = AccessTable::byTableName('pageschema', 0);
     $access->saveData(array('singlepage' => 'title3', 'multipage' => array('title3'), 'singletitle' => 'title3', 'multititle' => array('title3')));
 }