el = new EditLib(); } /** * remove the external Wikis defined in the tests */ protected function tearDown(): void { global $tikilib; $query = 'SELECT `name`, `extwikiId` FROM `tiki_extwiki`'; $wikis = $tikilib->fetchMap($query); $tmp_wikis = [$this->ext1]; foreach ($tmp_wikis as $w) { if (isset($wikis[$w])) { $id = $wikis[$w]; $tikilib::lib('admin')->remove_extwiki($id); } } } /** * Test links to pages of an external Wiki * * Note: Links with an invalid wiki identifier are parsed as regular Wiki page links. */ public function testExternalWiki(): void { /* * setup the external wikis and the parser */ global $tikilib; $tikilib::lib('admin')->replace_extwiki(0, 'http://tikiwiki.org/tiki-index.php?page=$page', $this->ext1); /* * External Wiki * - page name */ $inData = 'Download'; $ex = "(($this->ext1:Download))"; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * External Wiki * - page name * - anchor */ $inData = 'Download'; $ex = "(($this->ext1:Download|#LTS_-_the_Long_Term_Support_release))"; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * External Wiki * - page name * - anchor * - description */ $inData = 'Download LTS'; $ex = "(($this->ext1:Download|#LTS_-_the_Long_Term_Support_release|Download LTS))"; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * External Wiki * - page name * - additional class name */ $inData = 'Download'; $ex = "(($this->ext1:Download))"; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * External Wiki * - page name * - invalid class name */ $inData = 'Download'; $ex = '[http://tikiwiki.org/tiki-index.php?page=Download|Download]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * External Wiki * - line breaks */ $inData = 'Download
Download

Text'; $ex = '((' . $this->ext1 . ':Download %%% Download))\nText'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); /* * External Site * - pipe chars in href parameters */ $inData = 'link with pipes'; $ex = '[https://tiki.org/Community?not%7Ca%7Cwiki%7Ctable|link with pipes]'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); } /** * Test link to anchor within a page */ public function testInPage(): void { /* * no description */ $inData = '#A_Heading'; $ex = '[#A_Heading]'; $out = trim($this->el->parseToWiki($inData)); $this->assertEquals($ex, $out); /* * with description */ $inData = 'Link to heading'; $ex = '[#A_Heading|Link to heading]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * line breaks */ $inData = 'Link to
heading

Text'; $ex = '[#A_Heading|Link to %%% heading]\nText'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); } /** * Test link for creating e-mail */ public function testMailTo(): void { /* * e-mail */ $inData = 'mailto:sombody@nowhere.xyz'; $ex = '[mailto:sombody@nowhere.xyz]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * e-mail with description */ $inData = 'Mail to "Somebody"'; $ex = '[mailto:sombody@nowhere.xyz|Mail to "Somebody"]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * line breaks */ $inData = 'Mail to
"Somebody"

Text'; $ex = '[mailto:sombody@nowhere.xyz|Mail to %%% "Somebody"]\nText'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); } /** * Test links to articles, blogs, ... */ public function testOtherTikiPages(): void { /* * article */ $inData = 'article1'; $ex = '[article1]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); $inData = 'An Article'; $ex = '[article1|An Article]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); $inData = 'An
Article

Text'; $ex = '[article1|An %%% Article]\nText'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); /* * blog */ $inData = 'blog1'; $ex = '[blog1]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); $inData = 'A Blog'; $ex = '[blog1|A Blog]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); $inData = 'A
Blog

Text'; $ex = '[blog1|A %%% Blog]\nText'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); /* * forum */ $inData = 'forum1'; $ex = '[forum1]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); $inData = 'A Forum'; $ex = '[forum1|A Forum]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); $inData = 'A
Forum

Text'; $ex = '[forum1|A %%% Forum]\nText'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); } /** * Test links to web pages */ public function testWebResource(): void { /* * Web Page: * - link */ $inData = 'http://www.tiki.org'; $ex = '[http://www.tiki.org]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Web Page: * - link * - description */ $inData = 'Tiki Wiki CMS Groupware'; $ex = '[http://www.tiki.org|Tiki Wiki CMS Groupware]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Web Page: * - link * - description * - anchor */ $inData = 'News of the Tiki Wiki CMS Groupware'; $ex = '[http://www.tiki.org#Tiki_News_|News of the Tiki Wiki CMS Groupware]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Web Page: * - link * - description * - anchor * - box */ $inData = 'News of the Tiki Wiki CMS Groupware'; $ex = '[http://www.tiki.org#Tiki_News_|News of the Tiki Wiki CMS Groupware|box]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Web Page: * - link * - description and linebreak */ $inData = 'Tiki Wiki
CMS Groupware

Text'; $ex = '[http://www.tiki.org|Tiki Wiki %%% CMS Groupware]\nText'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); /* * Link to video * - link * */ $inData = 'http://www.youtube.com/v/KBewVCducWw&autoplay=1'; $ex = '[http://www.youtube.com/v/KBewVCducWw&autoplay=1]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Link to video * - link * - description */ $inData = 'You Tube video in their flash player'; $ex = '[http://www.youtube.com/v/KBewVCducWw&autoplay=1|You Tube video in their flash player]'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Link to video * - link * - description * - box */ $inData = 'You Tube video in their flash player'; $ex = '[http://www.youtube.com/v/KBewVCducWw&autoplay=1|You Tube video in their flash player|box]'; // additional nocache does not work $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Link to video * - link * - description * - box with dimensions */ $inData = 'You Tube video in their flash player'; $ex = '[http://www.youtube.com/v/KBewVCducWw&autoplay=1|You Tube video in their flash player|box;width=405;height=340;]'; // additional nocache does not work $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); } /** * Test links to internal wiki pages */ public function testWikiPage(): void { /* * - page name = description */ $inData = 'HomePage'; $ex = '((HomePage))'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * - page * - description */ $inData = 'The Home Page'; $ex = '((HomePage|The Home Page))'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * - page * - link to an anchor */ $inData = 'HomePage'; $ex = '((HomePage|#Get_Started_using_Admin_Panel))'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * - page * - link to an anchor * - description */ $inData = 'Home Page, Heading "Admin Panel"'; $ex = '((HomePage|#Get_Started_using_Admin_Panel|Home Page, Heading "Admin Panel"))'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Internation characters */ $inData = 'äöü€ Page'; $ex = '((äöü€ Page))'; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); /* * Line breaks */ $inData = 'Home
Page

Another Line'; $ex = '((HomePage|Home %%% Page))\nAnother Line'; $out = $this->el->parseToWiki($inData); $out = preg_replace('/\n/', '\n', $out); // fix LF encoding for comparison $this->assertEquals($ex, $out); } /* * Test anchors conversion to {ANAME} */ public function testPluginAname(): void { $ex = "{ANAME()}anchor{ANAME}"; $inData = ''; $out = $this->el->parseToWiki($inData); $this->assertEquals($ex, $out); } }