Jump to content
Wikimedia Meta-Wiki

User:Lecid/Downloads/Downloads.php

From Meta, a Wikimedia project coordination wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Downloads.php v 0.1

<?php
# Author : Romain GEORGES
# Date : 03/31/2006
# type : MediaWiki Pluggins
# name : Downloads.php
# topic : Downloads list in table from filesystem
# derivated from 'FileSystemListing' by Javier Castro (jac) - javier.alejandro.castro@gmail.com
# http://meta.wikimedia.org/wiki/FileSystemListing
# usage : <downloads path=value url=value></downloads>
# argument are NOT optionals
# Install by copy in "$MEDIAWIKI_PATH/extensions/" the Downloads.php file
# and add require_once(" extensions/Downloads.php "); in $MEDIAWIKI_PATH/LocalSettings.php
$wgExtensionCredits['parserhook'][] = array(
 'name' => 'Downloads',
 'description' => 'Downloads : Provide a downloads Aera on your wiki fom FS with comments and icons',
 'author' => 'Romain GEORGES',
 'url' => 'http://www.diablotins.org',
 'version'=>'0.1'
 );
$wgExtensionFunctions[] = "wfDownloads";
function wfDownloads() {
 global $wgParser;
 $wgParser->setHook( "downloads", "renderDownloads" );
}
# The callback function for converting the input text to HTML output
function renderDownloads( $input, $argv )
{
 $path = $argv['path'];
 $url = $argv['url'];
 if ($path !== "")
 {
 $result = readDirContents($path);
 return renderDirContents($result, $path, $url);
 }
 return "";
}
function iconexist($path,$ext){
 if ($path{strlen($path)-1} !== '/')
 $path .= '/';
 $im = $path .".icons/". $ext .".gif";
 if (file_exists($im)) {
 return true;
 }
 else
 {
 return false;
 }
}
function renderDirContents($FileArray, $PathName, $url=null) {
 $output = '<table align=center style="border:1px dotted grey;background-color:lightgrey;text-align:left;color:black;border-spacing: 1em;-moz-border-radius: 0.6em;">';
 foreach ($FileArray as $value)
 {
 if ($value['content'] !== null)
 {
 $output .= "<li><h3>".$value['name']."</h3></li>";
 $output .= renderDirContents($value['content'], $PathName, $url);
 }
 else
 {
 if ($url)
 {
 if ($PathName{strlen($PathName)-1} !== '/')
 $PathName .= '/';
 if ($url{strlen($url)-1} !== '/')
 $url .= '/';
 $pathToFile = substr($value['path'], strlen($PathName));
 $href = $url . $pathToFile;
 $output .= '<tr><td style="border:1px dotted red;background-color:white;width=90%;color:black;-moz-border-radius: 0.6em;padding: 1em 1em 1em 1em ">';
 $tb = explode('.',$pathToFile);
 $ext = array_pop($tb);
 $file = implode('.',$tb);
 $info = $file.".info";
 $image = $url . ".icons/". $ext . ".gif";
 if (iconexist($PathName,$ext))
 $output .= "<ul style='list-style-image: none;'><li><img src='$image'>";
 $output .= " <b>Fichier</b> : <a href='$href'>".$value['name']."</a></li>\n";
 if (file_exists($PathName.".data/".$info)) {
 $tb = file($PathName.".data/".$info);
 $output .= "<li><b> Description</b> : ".$tb[0]."</li>\n";
 $output .= "<li><b> Plateforme</b> : ".iconv("ISO-8859-1","UTF-8",$tb[1])."</li>\n";
 }
 $output .= "</td></tr>\n";
 }
 else
 {
 $output .= "<tr><td>".$value['name']."</td></tr>\n";
 }
 }
 }
 $output .= "</ul></td></tr></table>";
 return $output;
}
function readDirContents($dir, $sort=true)
{
 if ($dir{strlen($dir)-1} !== '/')
 $dir .= '/';
 $a = array();
 $gd = opendir($dir);
 $i=0;
 while (($fileName = readdir($gd)) !== false)
 {
 if ($fileName == "." || $fileName == ".." || $fileName == ".data" || $fileName == ".icons")
 continue;
 if (is_dir($dir.$fileName))
 $a[$i++] = array("path" => $dir.$fileName, "name" => $fileName, "content" => readDirContents($dir.$fileName));
 else
 $a[$i++] = array("path" => $dir.$fileName, "name" => $fileName, "content" => null);
 }
 closedir($gd);
 if ($sort)
 {
 sort($a);
 }
 return $a;
}
?>

AltStyle によって変換されたページ (->オリジナル) /