User:Mutante/Flickr

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search
Blue Glass Arrow.svg MediaWiki logo.png
This page should be moved to MediaWiki.org.
Please do not move the page by hand. It will be imported by a MediaWiki.org administrator with the full edit history. In the meantime, you may continue to edit the page as normal.

This is a little Mediawiki Extension to include Flickr thumbnails. This first example gets the X most interesting pictures (yes, Flickr really sorts like "sort"=>"interestingness-desc", by the users rating) for the tag you specify. You can use this to put some related pictures on Wiki pages that dont have pictures yet very quickly.

Typing something like:

<flickr limit=5>Fnord</flickr>

on a wiki page will insert the 5 most interesting pictures found for the keyword/tag 'fnord'.

Optionally you can use limit to change the amount of thumbnails being shown, the maximum for tag-length is 255 chars and the maximum for limit is 10.

This is possible due to using a) the Flickr API, b) phpFlickr, c) the Debian PHP-Pear packages and d) a nice article in the latest iX (german) magazine, issue July 2006, p. 62 called "Bildergeflimmer". We could call this a Flickr->Mediawiki Mashup (->same iX issue, p. 55).

Source[edit]

<?php
# Flickr > Mediawiki MashUp Test 
# by mutante from http://s23.org/wiki
# inspired by "iX" magazine issue July 2006, p.62  article "Bildergeflimmer"

$wgExtensionFunctions[] = "wfFlickrExtension";

# extension hook callback function from mediawiki

function wfFlickrExtension() {
global $wgParser;
$wgParser->setHook( "flickr", "renderFlickr" );
   }

function renderFlickr( $input, $argv ) {
global $wgOutputEncoding;


# How many pictures to show , limit < 10

if (is_numeric($argv["limit"]) && $argv["limit"]>=0 && $argv["limit"] <=11) {
$limit=$argv["limit"];
} else {
$limit=3;
}

# just in case
$input = mysql_escape_string($input);

# If not too long, set Input Text as Tag

if (!is_string($input) || strlen($input)>255) {
$input="error";
} else {
$tag=$input;
}

require_once("phpFlickr.php");

$f = new phpFlickr("<Your FlickrAPI key here>");
$f->enableCache("fs","./flickr_cache");

# get the X most interesting pictures for this tag
$photos_interesting = $f->photos_search(array("tags"=>"$tag", "sort"=>"interestingness-desc","per_page"=>$limit));

# output a table with the pictures

$output.="<table><tr><td colspan='$limit'>The $limit most interesting photos from Flickr for the tag <b>'$tag'</b></td></tr><$
foreach ($photos_interesting['photo'] as $photo) {
$output.="<td><img border='0' alt='$photo[title]' " . " src=". $f->buildPhotoURL($photo, "Square") . "></td>";
}
$output.="</tr></table>";

return $output;
        }
?>

As always, this is just a quick example, and can be heavily extended. Feel free to do so.