User:Mike Dillon/AdSense

From Meta, a Wikimedia project coordination wiki
<?php

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

/**
 * Adsense WikiMedia extension
 *
 * Firstly create a file called adsense.php and place this in the extensions
 * directory - copy all this code to that file.
 * To activate the extension, include it from your LocalSettings.php
 * with: require_once 'extensions/YourExtensionName.php';
 *
 * PHP versions 5
 *
 * LICENSE: This source file is subject to version 3.0 of the PHP license
 * that is available through the world-wide-web at the following URI:
 * http://www.php.net/license/3_0.txt. If you did not receive a copy of
 * the PHP License and are unable to obtain it through the web, please
 * send a note to license@php.net so we can mail you a copy immediately.
 *
 * @category   Wiki
 * @package    wiki
 * @author     Naoise Golden Santos
 * @copyright  2006 Naoise Golden Santos
 * @license    http://www.php.net/license/3_0.txt PHP License 3.0
 * @version    SVN: $Id: $
 * @link       http://www.goldensantos.com/blog/?p=7
 * 
 * <code>
 * <adsense
 *     ad_client    = "pub-XXXXXXXXXXXXXXXX"
 *     ad_width     = "728"
 *     ad_height    = "90"
 *     ad_format    = "728x90_as"
 *     ad_type      = "text_image"
 *     ad_channel   = "3267063621"
 *     color_border = "FFFFFF"
 *     color_bg     = "FFFFFF"
 *     color_link   = "3D81EE"
 *     color_text   = "000000"
 *     color_url    = "3D81EE"
 * />
 * </code>
 */

/*
 * @todo Document 
 */
$wgExtensionFunctions[] = 'wfAdsense';

/**
 * @todo Document
 */
function wfAdsense()
{
    global $wgParser;

    // registers the <adsense> extension with the WikiText parser
    $wgParser->setHook('adsense', 'renderAdsense');
}

/**
 * @todo Document
 */
function renderAdsense($input, $argv)
{
    $params = array(
        "ad_client", "ad_width", "ad_height", "ad_format", "ad_type", "ad_channel",
        "color_border", "color_bg", "color_link", "color_text", "color_url"
    );

    $output  = "<script type=\"text/javascript\">/* <![CDATA[ */\n";

    // Render parameters
    foreach ($params as $param) {
        if (!isset($argv[$param])) {
            // Error on missing param?
            continue;
        }

        $output .= "google_$param = \"";
        $output .= preg_replace('/([\\\\"])/', '\\\\$1', $argv[$param]);
        $output .= "\";\n";
    }

    $output .= "/* ]]> */</script>\n";
    $output .= "<script type=\"text/javascript\"";
    $output .= " src=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">";
    $output .= "</script>";

    return $output;
}
?>