/** * 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'))); }