|
|
| Line 1: |
Line 1: |
| − | <?php
| + | {{svn|extensions|Download/Download.php}} |
| − | /**
| |
| − | * Download extension - Provides a tag which renders a list of image titles as downloadable links
| |
| − | *{{Category:Extensions|Download}}{{php}}{{Category:Extensions created with Template:Extension}}
| |
| − | * See http://www.organicdesign.co.nz/Extension:Download for installation and usage details
| |
| − | *
| |
| − | * @package MediaWiki
| |
| − | * @subpackage Extensions
| |
| − | * @author [http://www.mediawiki.org/wiki/User:Nad User:Nad]
| |
| − | * @licence GNU General Public Licence 2.0 or later
| |
| − | */
| |
| − | if (!defined('MEDIAWIKI')) die('Not an entry point.');
| |
| − | | |
| − | define('DOWNLOAD_VERSION', '1.0.3, 2008-08-26');
| |
| − | | |
| − | $egDownloadTag = "download";
| |
| − | $egDownloadImages = dirname(__FILE__)."/images";
| |
| − | $wgExtensionFunctions[] = 'efSetupDownload';
| |
| − | | |
| − | $wgExtensionCredits['parserhook'][] = array(
| |
| − | 'name' => 'Download',
| |
| − | 'author' => '[http://www.mediawiki.org/wiki/User:Nad User:Nad]',
| |
| − | 'description' => 'Provides a tag which renders a list of image titles as downloadable links',
| |
| − | 'url' => 'http://www.organicdesign.co.nz/Extension:Download',
| |
| − | 'version' => DOWNLOAD_VERSION
| |
| − | );
| |
| − | | |
| − | class Download {
| |
| − | | |
| − | function __construct() {
| |
| − | global $wgParser, $egDownloadTag;
| |
| − | $wgParser->setHook($egDownloadTag, array($this, 'tagDownload'));
| |
| − | }
| |
| − | | |
| − | function tagDownload($text, $argv, &$parser) {
| |
| − | global $wgScriptPath, $egDownloadImages;
| |
| − | $dir = preg_replace('|^.+(?=[/\\\\]extensions)|', $wgScriptPath, $egDownloadImages);
| |
| − | preg_match_all('|^\s*(.+?)\s*(\|(.+?))?\s*$|m', $text, $links);
| |
| − | $text = "<table class=\"gallery download-gallery\" cellspacing=\"0\" cellpadding=\"0\">\n";
| |
| − | $cols = isset($argv['cols']) && is_numeric($argv['cols']) ? $argv['cols'] : 4;
| |
| − | $row = "";
| |
| − | foreach ($links[3] as $i => $link) {
| |
| − | $page = $links[1][$i];
| |
| − | $img = Image::newFromTitle(Title::newFromText($page));
| |
| − | $icon = glob("$egDownloadImages/default.*");
| |
| − | if ($src = $img && $img->exists() ? $img->getURL() : false) {
| |
| − | $ext = preg_match('|^.+\.(.+?)$|', $src, $m) ? $m[1] : 'default';
| |
| − | if (count($j = glob("$egDownloadImages/$ext.*")) > 0) $icon = $j;
| |
| − | $item = "<a href=\"$src\">$link</a>";
| |
| − | } else $item = "No file associated with <b>$page</b>";
| |
| − | $icon = "<img src=\"$dir/".basename($icon[0])."\" width=\"128\" height=\"128\" alt=\"\" />";
| |
| − | $icon = "<a class=\"image\" title=\"$page\" href=\"$src\">$icon</a>";
| |
| − | $row .= "<td><div class=\"gallerybox\" style=\"width: 158px;\">\n";
| |
| − | $row .= "<div class=\"thumb\" style=\"padding: 13px 0pt; width: 158px;\">\n";
| |
| − | $row .= "<div style=\"margin-left: auto; margin-right: auto; width: 128px;\">\n";
| |
| − | $row .= "$icon\n</div>\n</div>\n";
| |
| − | $row .= "<div class=\"gallerytext\">$item</div></div></td>\n";
| |
| − | if ($i%$cols == 3) {
| |
| − | $text .= "<tr>\n$row</tr>\n";
| |
| − | $row = "";
| |
| − | }
| |
| − | }
| |
| − | $row = $row ? "<tr>\n$row</tr>\n" : "";
| |
| − | $text .= "$row</table>\n";
| |
| − | return $text;
| |
| − | }
| |
| − | }
| |
| − | | |
| − | function efSetupDownload() {
| |
| − | global $egDownload;
| |
| − | $egDownload = new Download();
| |
| − | } | |