Пример #1
0
function renderCalendar($paramstring, $params = array(), $parser)
{
    global $wgTitle, $wgUser, $wgOut, $wgVersion;
    if (!$parser) {
        $parser =& new Parser();
    }
    $p = array("view" => "year", "day" => 0, "month" => 0, "year" => 0, "days" => 7, "months" => 2, "weekstart" => 1, "formattitle" => "%j.%n.%Y %l", "skipempty" => 0, "showempty" => 1, "weekformat" => "text", "weekdaylen" => 1, "enddate" => false, "mergemonth" => false);
    preg_match_all('/([\\w]+)\\s*=\\s*(?:"([^"]+)"|([^"\\s]+))/', $paramstring, $matches);
    for ($i = 0; $i < count($matches[0]); $i++) {
        $p[$matches[1][$i]] = $matches[2][$i] . $matches[3][$i];
    }
    foreach (array('view', 'day', 'month', 'year', 'days', 'weekstart', 'formattitle', 'format', 'name', 'date', 'skipempty', 'showempty', 'weekformat', 'weekdaylen', 'enddate', 'months', 'mergemonth') as $i) {
        if (isset($params[$i])) {
            $p[$i] = $params[$i];
        }
    }
    if (!isset($p['name'])) {
        $p['name'] = 'calendar';
    }
    if (!isset($p['format'])) {
        $p['format'] = '%name_%year_%month_%day';
    }
    if (isset($p['date'])) {
        $time = strtotime($p['date']);
        $p['day'] = date('d', $time);
        $p['month'] = date('n', $time);
        $p['year'] = date('Y', $time);
    }
    $cal = new WikiCalendarClass($p["year"], $p["month"], $p["day"]);
    $cal->format = $p['format'];
    $cal->formattitle = $p['formattitle'];
    $cal->name = $p['name'];
    $cal->weekstart = $p['weekstart'];
    $cal->skipempty = $p['skipempty'];
    $cal->showempty = $p['showempty'];
    $cal->weekdaylen = $p['weekdaylen'];
    $cal->mergemonth = $p['mergemonth'];
    if (isset($p["merge"])) {
        $cal->merge = explode(',', $p["merge"]);
    }
    switch ($p['weekformat']) {
        case 'list':
            $cal->weekformat = new WikiCalendarFormatList();
            break;
        case 'table':
            $cal->weekformat = new WikiCalendarFormatTable();
            break;
        case 'ical':
            $cal->weekformat = new WikiCalendarFormatIcal();
            break;
        default:
            $cal->weekformat = new WikiCalendarFormatText();
    }
    switch ($p["view"]) {
        case "week":
            $calstr = $cal->displayDays();
            break;
        case "month":
            $calstr = $cal->displayMonth();
            break;
        case "today":
            $calstr = $cal->displayDays(1);
            break;
        case "threemonths":
            $calstr = $cal->displayThreeMonths();
            break;
        case "months":
            $calstr = $cal->displayMonths($p['months']);
            break;
        case "days":
            $calstr = $cal->displayDays($p["days"]);
            break;
        case "rdays":
            $calstr = $cal->displayDays($p["days"], true);
            break;
        case "weeks":
            $calstr = $cal->displayWeeks($p['enddate']);
            break;
        case "year":
        default:
            $calstr = $cal->displayYear();
    }
    $o =& $parser->parse($calstr, $wgTitle, ParserOptions::newFromUser($wgUser), true, false);
    clearCache();
    return $o->getText();
}
Пример #2
0
# Load up some global defines.
require_once '../../includes/Defines.php';
# Include this site setttings
require_once './LocalSettings.php';
# Prepare MediaWiki
require_once 'includes/Setup.php';
require_once 'extensions/CalendarClass.php';
require_once "extensions/WikiCalendarFormatIcal.php";
# Initialize MediaWiki base class
require_once "includes/Wiki.php";
$mediaWiki = new MediaWiki();
# Setting global variables in mediaWiki
$mediaWiki->setVal('Server', $wgServer);
$mediaWiki->setVal('DisableInternalSearch', $wgDisableInternalSearch);
$mediaWiki->setVal('action', $action);
$mediaWiki->setVal('SquidMaxage', $wgSquidMaxage);
$mediaWiki->setVal('EnableDublinCoreRdf', $wgEnableDublinCoreRdf);
$mediaWiki->setVal('EnableCreativeCommonsRdf', $wgEnableCreativeCommonsRdf);
$mediaWiki->setVal('CommandLineMode', $wgCommandLineMode);
$mediaWiki->setVal('UseExternalEditor', $wgUseExternalEditor);
$mediaWiki->setVal('DisabledActions', $wgDisabledActions);
header("Content-Type: text/plain;charset=us-ascii");
$cal = new WikiCalendarClass();
$cal->weekformat = new WikiCalendarFormatIcal();
$cal->name = "krass";
$cal->format = "%day.%month.%year";
$cal->formattitle = "%day.%month.%year";
$cal->skipempty = 0;
$cal->showempty = 1;
$cal->merge = array();
echo $cal->displayDays(60);