0byt3m1n1
Path:
/
data
/
applications
/
aps
/
tikiwiki
/
3.2.0-5
/
standard
/
htdocs
/
lib
/
wiki-plugins
/
[
Home
]
File: wikiplugin_sf.php
<?php /* * $Id: /cvsroot/tikiwiki/tiki/lib/wiki-plugins/wikiplugin_sf.php,v 1.7 2007-03-02 19:49:06 luciash Exp $ * * Tikiwiki SF auto-links. * * Syntax: * * {SF([groupid=>groupid,][atid=>atid,][tag=>tag,]aid=>aid)}{SF} # for tikiwiki, the groupid is 64258 # bugtracker atid is 506846 # rfe atid is 506849 # support atid is 506847 # patches atid is 506848 # */ define('SF_CACHE',48); # in hours define('DEFAULT_TAG','bugs'); function wikiplugin_sf_help() { return tra("Automatically creates a link to the appropriate SourceForge object").":<br />~np~{SF(aid=>,adit=>,groupid=>)}".tra("text")."{SF}~/np~"; } function wikiplugin_sf_info() { return array( 'name' => tra('SourceForge'), 'documentation' => 'PluginSF', 'description' => tra("Automatically creates a link to the appropriate SourceForge object"), 'prefs' => array( 'wikiplugin_sf' ), 'body' => tra('text'), 'params' => array( 'aid' => array( 'required' => true, 'name' => tra('aid??'), 'description' => tra('?'), ), 'adit' => array( 'required' => true, 'name' => tra('adit??'), 'description' => tra('?'), ), 'groupid' => array( 'required' => true, 'name' => tra('groupid??'), 'description' => tra('?'), ), ), ); } function get_artifact_label($gid,$atid,$aid,$reload=false) { $agent = $_SERVER['HTTP_USER_AGENT']; $cachefile = "temp/sftrackers.cache.$gid.$atid.$aid"; $cachelimit = time() - 60*60*SF_CACHE; $url = "http://sourceforge.net/tracker/index.php?func=detail&aid=$aid&group_id=$gid&atid=$atid"; if (!is_file($cachefile)) $reload = true; $back = false; if ($reload or (filemtime($cachefile) < $cachelimit)) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_REFERER, $url); $buffer = curl_exec ($ch); curl_close ($ch); if (preg_match("/<title>[^-]*-([^<]*)<\/title>/i",$buffer,$match)) { $fp = fopen($cachefile,"wb"); fputs($fp,$match[1]); fclose($fp); } elseif (is_file($cachefile)) { $fp = fopen($cachefile,"rb"); $back = fgets($fp); fclose($fp); } } else { $fp = fopen($cachefile,"rb"); $back = fgets($fp,4096); fclose($fp); } return $back; } function wikiplugin_sf($data, $params) { if (function_exists("curl_init")) { # customize that (or extract it in a db) $sftags['bugs'] = array('64258','506846'); $sftags['rfe'] = array('64258','506849'); $sftags['patches'] = array('64258','506848'); $sftags['support'] = array('64258','506847'); $sftags['jgbugs'] = array('43118','435210'); $sftags['jgsupport'] = array('43118','435211'); $sftags['jgrfe'] = array('43118','435213'); extract ($params,EXTR_SKIP); if (isset($tag) and isset($sftags["$tag"]) and is_array($sftags["$tag"])) { list($sf_group_id,$sf_atid) = $sftags["$tag"]; } else { $sf_group_id = (isset($groupid)) ? "$groupid" : $sftags[DEFAULT_TAG][0]; $sf_atid = (isset($atid)) ? "$atid" : $sftags[DEFAULT_TAG][1]; $tag = DEFAULT_TAG; } if (!isset($aid)) { //return "__please use (aid=>xxx) as parameters__"; return "<b>please use (aid=>xxx) as parameters</b>"; } $label = get_artifact_label($sf_group_id,$sf_atid,$aid); //$back = "[http://sf.net/tracker/index.php?func=detail&aid=$aid&group_id=$sf_group_id&atid=$sf_atid|$tag:#$aid: $label|nocache]"; $back = "<a href='http://sf.net/tracker/index.php?func=detail&aid=$aid&group_id=$sf_group_id&atid=$sf_atid' target='_blank' title='$tag:#$aid' class='wiki'>$label</a>"; } else { $back = "SF plugin : You need php-curl module to be loaded to use that feature."; } return $back; } ?>