| <?php | |
| /******************************************************************************* | |
| * Copyright (c) 2011 Eclipse Foundation and others. | |
| * All rights reserved. This program and the accompanying materials | |
| * are made available under the terms of the Eclipse Public License v1.0 | |
| * which accompanies this distribution, and is available at | |
| * http://www.eclipse.org/legal/epl-v10.html | |
| * | |
| * Contributors: | |
| * Wayne Beaton (Eclipse Foundation)- initial API and implementation | |
| *******************************************************************************/ | |
| function getRandomEdpFaqHtml() { | |
| return getRandomEdpFaq()->toHtml(); | |
| } | |
| function parseEdpPreamble($line, &$entries) { | |
| if (preg_match('/^=/', $line)) return 'parseEdpContent'; | |
| return 'parseEdpPreamble'; | |
| } | |
| function parseEdpContent($line, &$entries) { | |
| if (trim($line)) $entries[] = $line; | |
| return 'parseEdpContent'; | |
| } | |
| function getrandomEdpFaq() { | |
| $all = split("\n", file_get_contents("http://wiki.eclipse.org/index.php?title=EDP%20Wisdom&action=raw")); | |
| $entries = array(); | |
| $parse = 'parseEdpPreamble'; | |
| foreach ($all as $line) { | |
| $parse = $parse($line, $entries); | |
| } | |
| return new FAQ($entries[array_rand($entries)]); | |
| } | |
| class FAQ { | |
| var $text; | |
| function __construct($text) { | |
| $this->text = $text; | |
| } | |
| function toHtml() { | |
| $content = $this->getContent(); | |
| return "<div>$content</div>"; | |
| } | |
| /** | |
| * @internal | |
| * @return string | |
| */ | |
| function getRawContent() { | |
| return $this->text; | |
| } | |
| function getContent() { | |
| $content = $this->getRawContent(); | |
| // Double \n is replaced with paragraph tags. | |
| $content = preg_replace('/(\n+)(\n|$)/', '<p>$1</p>', $content); | |
| $content = preg_replace('/\[\[Category:([^\]]+)\]\]/', '', $content); | |
| // Fix image tags | |
| $content = preg_replace_callback('/\[\[Image:([^\]]+)\]\]/', 'fixMediaWikiImageUrl', $content); | |
| // Fix link tags | |
| $content = preg_replace('/\[\[\s*([^\|]+)\s*\|\s*([^\]]+)\]\]/', '<a href="http://wiki.eclipse.org/$1" target=\"_blank\">$2</a>', $content); | |
| $content = preg_replace('/\[\[([^\]\|]+)\]\]/', '<a href="http://wiki.eclipse.org/$1" target=\"_blank\">$1</a>', $content); | |
| $content = preg_replace('/\[(https?:\/\/[^\s\]]+)\]/', '<a href="$1" target=\"_blank\">$1</a>', $content); | |
| $content = preg_replace('/\[(https?:\/\/[^\s\]]+)\s+([^\]]+)\]/', '<a href="$1" target=\"_blank\">$2</a>', $content); | |
| // Get rid of everything else | |
| $content = preg_replace('/\[\[[^\]]*\]\]/', '', $content); | |
| return trim($content); | |
| } | |
| } | |
| function fixMediaWikiImageUrl($matches) { | |
| $name = ucfirst($matches[1]); | |
| $md5 = md5($name); | |
| $part1 = substr($md5, 0, 1); | |
| $part2 = substr($md5, 0, 2); | |
| return "<img src=\"http://wiki.eclipse.org/images/$part1/$part2/$name\"/>"; | |
| } | |
| ?> |