http://www.mediawiki.org/wiki/Special:Code/MediaWiki/97436
Revision: 97436
Author: demon
Date: 2011-09-18 19:47:09 +0000 (Sun, 18 Sep 2011)
Log Message:
-----------
Some work-in-progress for Wikimania ext (so people can get an idea of how I
envisioned it)
* Move lang files to /lang/ subdir. Also create a lazy-loaded per-year language
file so we can do per-year customizations (for things like hotel names, etc)
* Some basic docs and initial config for $wgWikimaniaConf
* I was thinking of making the schema be designed based on what fields are
configured/required. Haven't quite figured out the best way yet. If that's too
difficult I'll just do it the crappy normal way we usually do.
* Fix totally bogus $wgSpecialPageGroups config
* Add a bunch of qqq messages like Nikerabbit asked for in r97396.
Modified Paths:
--------------
trunk/extensions/Wikimania/README
trunk/extensions/Wikimania/Wikimania.php
Added Paths:
-----------
trunk/extensions/Wikimania/backend/Payment.php
trunk/extensions/Wikimania/backend/PaymentGoogleCheckout.php
trunk/extensions/Wikimania/backend/PaymentPaypal.php
trunk/extensions/Wikimania/backend/Wikimania.php
trunk/extensions/Wikimania/backend/WikimaniaRegistration.php
trunk/extensions/Wikimania/backend/WikimaniaSchema.php
trunk/extensions/Wikimania/lang/
trunk/extensions/Wikimania/lang/Wikimania.alias.php
trunk/extensions/Wikimania/lang/Wikimania.i18n.php
trunk/extensions/Wikimania/lang/Wikimania2012.i18n.php
Removed Paths:
-------------
trunk/extensions/Wikimania/Wikimania.alias.php
trunk/extensions/Wikimania/Wikimania.i18n.php
trunk/extensions/Wikimania/backend/WikimaniaHooks.php
Modified: trunk/extensions/Wikimania/README
===================================================================
--- trunk/extensions/Wikimania/README 2011-09-18 19:42:47 UTC (rev 97435)
+++ trunk/extensions/Wikimania/README 2011-09-18 19:47:09 UTC (rev 97436)
@@ -1,5 +1,7 @@
This extension is designed for managing the annual Wikimania conference.
-Install like a normal extension, run update.php to create tables.
-
-Configure $wgWikimaniaConf (see docs in Wikimania.php)
+* Install like a normal extension in LocalSettings.php
+* Configure $wgWikimaniaConf (see docs in Wikimania.php)
+* Add a line after your configuration called "Wikimania::host( 2012 );" where
+ '2012' is the year in question
+* Run update.php to create the schema
Deleted: trunk/extensions/Wikimania/Wikimania.alias.php
===================================================================
--- trunk/extensions/Wikimania/Wikimania.alias.php 2011-09-18 19:42:47 UTC
(rev 97435)
+++ trunk/extensions/Wikimania/Wikimania.alias.php 2011-09-18 19:47:09 UTC
(rev 97436)
@@ -1,16 +0,0 @@
-<?php
-/**
- * Aliases for extension Wikimania
- *
- * @file
- * @ingroup Extensions
- */
-
-$specialPageAliases = array();
-
-/** English (English) */
-$specialPageAliases['en'] = array(
- 'AdministerWikimania' => array( 'AdministerWikimania' ),
- 'CheckWikimaniaStatus' => array( 'CheckWikimaniaStatus' ),
- 'RegisterForWikimania' => array( 'RegisterForWikimania' ),
-);
Deleted: trunk/extensions/Wikimania/Wikimania.i18n.php
===================================================================
--- trunk/extensions/Wikimania/Wikimania.i18n.php 2011-09-18 19:42:47 UTC
(rev 97435)
+++ trunk/extensions/Wikimania/Wikimania.i18n.php 2011-09-18 19:47:09 UTC
(rev 97436)
@@ -1,27 +0,0 @@
-<?php
-/*
- * i18n for Wikimania extension
- */
-
-$messages = array();
-
-/**
- * English
- */
-$messages['en'] = array(
- 'wikimania' => 'Wikimania',
- 'wikimania-desc' => 'Extension designed to manage the annual Wikimania
conference',
- 'administerwikimania' => 'Administer Wikimania registrations',
- 'checkwikimaniastatus' => 'Check Wikimania registration status',
- 'registerforwikimania' => 'Register for Wikimania',
- 'right-wikimania-admin' => 'Manage Wikimania registrations',
- 'right-wikimania-register' => 'Register for Wikimania',
- 'right-wikimania-checkstatus' => 'Check status of a Wikimania
registration',
-);
-
-/**
- * Message docs (qqq)
- */
-$messages['qqq'] = array(
- 'wikimania-desc' => '{{desc}}',
-);
Modified: trunk/extensions/Wikimania/Wikimania.php
===================================================================
--- trunk/extensions/Wikimania/Wikimania.php 2011-09-18 19:42:47 UTC (rev
97435)
+++ trunk/extensions/Wikimania/Wikimania.php 2011-09-18 19:47:09 UTC (rev
97436)
@@ -22,7 +22,12 @@
/**
* Classes
*/
-$wgAutoloadClasses['WikimaniaHooks'] = "$d/backend/WikimaniaHooks.php";
+$wgAutoloadClasses['Payment'] = "$d/backend/Payment.php";
+$wgAutoloadClasses['PaymentGoogleCheckout'] =
"$d/backend/PaymentGoogleCheckout.php";
+$wgAutoloadClasses['PaymentPaypal'] = "$d/backend/PaymentPaypal.php";
+$wgAutoloadClasses['Wikimania'] = "$d/backend/Wikimania.php";
+$wgAutoloadClasses['WikimaniaRegistration'] =
"$d/backend/WikimaniaRegistration.php";
+$wgAutoloadClasses['WikimaniaSchema'] = "$d/backend/WikimaniaSchema.php";
$wgAutoloadClasses['SpecialAdministerWikimania'] =
"$d/specials/SpecialAdministerWikimania.php";
$wgAutoloadClasses['SpecialCheckWikimaniaStatus'] =
"$d/specials/SpecialCheckWikimaniaStatus.php";
$wgAutoloadClasses['SpecialRegisterForWikimania'] =
"$d/specials/SpecialRegisterForWikimania.php";
@@ -30,8 +35,8 @@
/**
* i18n
*/
-$wgExtensionMessageFiles['wikimania'] = "$d/Wikimania.i18n.php";
-$wgExtensionAliasesFiles['wikimania'] = "$d/Wikimania.alias.php";
+$wgExtensionMessageFiles['wikimania'] = "$d/lang/Wikimania.i18n.php";
+$wgExtensionAliasesFiles['wikimania'] = "$d/lang/Wikimania.alias.php";
/**
* Special pages
@@ -39,14 +44,14 @@
$wgSpecialPages['AdministerWikimania'] = 'SpecialAdministerWikimania';
$wgSpecialPages['CheckWikimaniaStatus'] = 'SpecialCheckWikimaniaStatus';
$wgSpecialPages['RegisterForWikimania'] = 'SpecialRegisterForWikimania';
-$wgSpecialPageGroups['wikimania'] = array(
- 'AdministerWikimania', 'CheckWikimaniaStatus', 'RegisterForWikimania'
-);
+$wgSpecialPageGroups['AdministerWikimania'] = 'wikimania';
+$wgSpecialPageGroups['CheckWikimaniaStatus'] = 'wikimania';
+$wgSpecialPageGroups['RegisterForWikimania'] = 'wikimania';
/**
* Hooks
*/
-$wgHooks['LoadExtensionSchemaUpdates'][] =
'WikimaniaHooks::loadExtensionSchemaUpdates';
+$wgHooks['LoadExtensionSchemaUpdates'][] = 'WikimaniaSchema::hook';
/**
* Rights
@@ -59,8 +64,47 @@
$wgGroupPermissions['sysop']['wikimania-admin'] = true;
/**
- * Configuration array for Wikimania
+ * Configuration array for Wikimania. It is a complex array, with many
sub-options.
+ * Dates, unless otherwise specified, should be in MediaWiki timestamp format,
+ * that is: YYYYMMDDHHMMSS
+ *
+ * year => The year of the conference, 2011, 2012, etc.
+ * openDate => Date to begin accepting registrations
+ * closeDate => Date to end accepting registrations
+ * baseCurrency => All prices are in this currency
+ * country => Country hosting this year's Wikimania
+ * paymentClass => Which payment handler to use for checkout. Right now
+ * takes one of PaymentGoogleCheckout|PaymentPaypal
+ * (pre|main|post)Days => Arrays configuring the days available for
registration
+ * for the conference, including pre-events (eg:
Developer
+ * Days) and post-event days (unconference or tours).
They
+ * should each be given a unique key, a date, price
and url
+ * to describe the event.
*/
$wgWikimaniaConf = array(
-
+ 'year' => 2012,
+ 'openDate' => '',
+ 'closeDate' => '',
+ 'baseCurrency' => 'USD',
+ 'country' => 'us',
+ 'paymentClass' => 'PaymentGoogleCheckout',
+ 'preDays' => array(
+ 'devday1' => array(
+ 'date' => '',
+ 'price' => '',
+ 'url' => '',
+ ),
+ 'devday2' => array(
+ 'date' => '',
+ 'price' => '',
+ ),
+ ),
+ 'mainDays' => array(
+
+ ),
+ 'postDays' => array(
+ 'unconf1' => array(
+
+ ),
+ ),
);
Added: trunk/extensions/Wikimania/backend/Payment.php
===================================================================
--- trunk/extensions/Wikimania/backend/Payment.php
(rev 0)
+++ trunk/extensions/Wikimania/backend/Payment.php 2011-09-18 19:47:09 UTC
(rev 97436)
@@ -0,0 +1,25 @@
+<?php
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+abstract class Payment {
+ /**
+ * Return the form for this payment provider, in HTML
+ * @return String
+ */
+ abstract function getForm();
+}
+
+/**
+ * Bogus class designed to throw an exception when it's used
+ */
+class PaymentBogus extends Payment {
+ public function __construct() {
+ throw new MWException( "Bogus payment handler defined" );
+ }
+
+ /** no-op */
+ public function getForm() {}
+}
Property changes on: trunk/extensions/Wikimania/backend/Payment.php
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/extensions/Wikimania/backend/PaymentGoogleCheckout.php
===================================================================
--- trunk/extensions/Wikimania/backend/PaymentGoogleCheckout.php
(rev 0)
+++ trunk/extensions/Wikimania/backend/PaymentGoogleCheckout.php
2011-09-18 19:47:09 UTC (rev 97436)
@@ -0,0 +1,10 @@
+<?php
+/*
+ * GoogleCheckout payment implementation
+ */
+
+class PaymentGoogleCheckout extends Payment {
+ public function getForm() {
+ return '';
+ }
+}
Property changes on:
trunk/extensions/Wikimania/backend/PaymentGoogleCheckout.php
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/extensions/Wikimania/backend/PaymentPaypal.php
===================================================================
--- trunk/extensions/Wikimania/backend/PaymentPaypal.php
(rev 0)
+++ trunk/extensions/Wikimania/backend/PaymentPaypal.php 2011-09-18
19:47:09 UTC (rev 97436)
@@ -0,0 +1,10 @@
+<?php
+/*
+ * Paypal payment implementation
+ */
+
+class PaymentPaypal extends Payment {
+ public function getForm() {
+ return '';
+ }
+}
Property changes on: trunk/extensions/Wikimania/backend/PaymentPaypal.php
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/extensions/Wikimania/backend/Wikimania.php
===================================================================
--- trunk/extensions/Wikimania/backend/Wikimania.php
(rev 0)
+++ trunk/extensions/Wikimania/backend/Wikimania.php 2011-09-18 19:47:09 UTC
(rev 97436)
@@ -0,0 +1,141 @@
+<?php
+/*
+ * Manager class for this year's Wikimania
+ */
+class Wikimania {
+ /**
+ * Singleton
+ * @var Wikimania
+ */
+ private static $i = null;
+
+ /**
+ * Payment handler
+ * @var Payment
+ */
+ private $paymentClass;
+
+ /**
+ * Year of Wikimania
+ * @var String
+ */
+ private $year;
+
+ /**
+ * Beginning registration date
+ * @var String
+ */
+ private $openDate;
+
+ /**
+ * Ending registration date
+ * @var String
+ */
+ private $closeDate;
+
+ /**
+ * Base currency code
+ * @var String
+ */
+ private $baseCurrency;
+
+ /**
+ * Country hosting Wikimania
+ * @var String
+ */
+ private $country;
+
+
+ /**
+ * Do a bit of delayed setup, based on this year's config
+ * @param $year int Year to host Wikimania for
+ */
+ public static function hostWikimania( $year ) {
+ if( !self::$i ) {
+ global $wgWikimaniaConf, $wgExtensionMessagesFiles;
+ if( !isset( $wgWikimaniaConf['year'] ) ||
$wgWikimaniaConf['year'] !== $year ) {
+ throw new MWException( "Trying to host
Wikimania for invalid $year\n" );
+ }
+ self::$i = new self( $wgWikimaniaConf );
+ $wgExtensionmessagesFiles["wikimania-$year"] = dirname(
__FILE__ ) .
+ "/lang/Wikimania{$year}.i18n.php";
+ } elseif( self::$i && self::$i->getYear() !== $year ) {
+ throw new MWException( "Can only host one year at a
time!\n" );
+ }
+ }
+
+ /**
+ * Accessor for singleton
+ * @return Wikimania
+ */
+ public static function getWikimania() {
+ if( !self::$i ) {
+ throw new MWException( "Tried to getWikimania() with no
instance found. Did you forget hostWikimania()?\n" );
+ }
+ return self::$i;
+ }
+
+ /**
+ * Constructor. Use the singleton
+ * @param $conf Array A $wgWikimaniaConf array
+ */
+ private function __construct( array $conf ) {
+ $baseRequiredConf = array( 'year', 'openDate', 'closeDate',
'baseCurrency', 'country' );
+ foreach( $baseRequiredConf as $confItem ) {
+ if( !isset( $conf[$confItem] ) ) {
+ throw new MWException( "Missing config item
'$confItem'\n" );
+ }
+ $this->$confItem = $conf[$confItem];
+ }
+ $paymentClass = isset( $conf['paymentClass'] ) ?
$conf['paymentClass'] : 'PaymentBogus';
+ $this->paymentClass = new $paymentClass( $this );
+ }
+
+ /**
+ * Get the configured payment handler
+ * @return Payment
+ */
+ public function getPaymentClass() {
+ return $this->paymentClass;
+ }
+
+ /**
+ * Get the year hosting Wikimania
+ * @return int
+ */
+ public function getYear() {
+ return $this->year;
+ }
+
+ /**
+ * Get the date we're opening registration on
+ * @return String
+ */
+ public function getOpenDate() {
+ return $this->openDate;
+ }
+
+ /**
+ * Get the date we're closing registration on
+ * @return String
+ */
+ public function getCloseDate() {
+ return $this->closeDate;
+ }
+
+ /**
+ * Get the currency code that all prices are configured in
+ * @return String
+ */
+ public function getBaseCurrency() {
+ return $this->baseCurrency;
+ }
+
+ /**
+ * Get the country code of the country hosting Wikimania
+ * @return String
+ */
+ public function getCountry() {
+ return $this->country;
+ }
+}
Property changes on: trunk/extensions/Wikimania/backend/Wikimania.php
___________________________________________________________________
Added: svn:eol-style
+ native
Deleted: trunk/extensions/Wikimania/backend/WikimaniaHooks.php
===================================================================
--- trunk/extensions/Wikimania/backend/WikimaniaHooks.php 2011-09-18
19:42:47 UTC (rev 97435)
+++ trunk/extensions/Wikimania/backend/WikimaniaHooks.php 2011-09-18
19:47:09 UTC (rev 97436)
@@ -1,15 +0,0 @@
-<?php
-/*
- * Hook registration
- */
-
-class WikimaniaHooks {
- public static function onLoadExtensionSchemaUpdates( $updater = null ) {
- if( !$updater ) {
- $updater->output( "Wikimania Extension requires MW
1.17+" );
- } else {
-
- }
- return true;
- }
-}
Added: trunk/extensions/Wikimania/backend/WikimaniaRegistration.php
===================================================================
--- trunk/extensions/Wikimania/backend/WikimaniaRegistration.php
(rev 0)
+++ trunk/extensions/Wikimania/backend/WikimaniaRegistration.php
2011-09-18 19:47:09 UTC (rev 97436)
@@ -0,0 +1,20 @@
+<?php
+/*
+ * Class referring to a specific registration
+ */
+
+class WikimaniaRegistration {
+
+ private static function fieldList() {
+ return array(
+ );
+ }
+
+ public static function getFields() {
+ return array_keys( self::fieldList() );
+ }
+
+ public static function buildSchema() {
+
+ }
+}
Property changes on:
trunk/extensions/Wikimania/backend/WikimaniaRegistration.php
___________________________________________________________________
Added: svn:eol-style
+ native
Copied: trunk/extensions/Wikimania/backend/WikimaniaSchema.php (from rev 97396,
trunk/extensions/Wikimania/backend/WikimaniaHooks.php)
===================================================================
--- trunk/extensions/Wikimania/backend/WikimaniaSchema.php
(rev 0)
+++ trunk/extensions/Wikimania/backend/WikimaniaSchema.php 2011-09-18
19:47:09 UTC (rev 97436)
@@ -0,0 +1,20 @@
+<?php
+/*
+ * Schema generation and such
+ */
+
+class WikimaniaSchema {
+ /**
+ * Hook for LoadExtensionSchemaUpdates
+ * @param $updater DatabaseUpdater object
+ * @return bool
+ */
+ public static function hook( $updater = null ) {
+ if( !$updater ) {
+ $updater->output( "Wikimania Extension requires MW
1.17+" );
+ } else {
+
+ }
+ return true;
+ }
+}
Copied: trunk/extensions/Wikimania/lang/Wikimania.alias.php (from rev 97396,
trunk/extensions/Wikimania/Wikimania.alias.php)
===================================================================
--- trunk/extensions/Wikimania/lang/Wikimania.alias.php
(rev 0)
+++ trunk/extensions/Wikimania/lang/Wikimania.alias.php 2011-09-18 19:47:09 UTC
(rev 97436)
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Aliases for extension Wikimania
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = array();
+
+/** English (English) */
+$specialPageAliases['en'] = array(
+ 'AdministerWikimania' => array( 'AdministerWikimania' ),
+ 'CheckWikimaniaStatus' => array( 'CheckWikimaniaStatus' ),
+ 'RegisterForWikimania' => array( 'RegisterForWikimania' ),
+);
Copied: trunk/extensions/Wikimania/lang/Wikimania.i18n.php (from rev 97396,
trunk/extensions/Wikimania/Wikimania.i18n.php)
===================================================================
--- trunk/extensions/Wikimania/lang/Wikimania.i18n.php
(rev 0)
+++ trunk/extensions/Wikimania/lang/Wikimania.i18n.php 2011-09-18 19:47:09 UTC
(rev 97436)
@@ -0,0 +1,36 @@
+<?php
+/*
+ * i18n for Wikimania extension
+ */
+
+$messages = array();
+
+/**
+ * English
+ */
+$messages['en'] = array(
+ 'wikimania' => 'Wikimania',
+ 'wikimania-desc' => 'Extension designed to manage the annual Wikimania
conference',
+ 'specialpages-group-wikimania' => 'Wikimania registration',
+ 'administerwikimania' => 'Administer Wikimania registrations',
+ 'checkwikimaniastatus' => 'Check Wikimania registration status',
+ 'registerforwikimania' => 'Register for Wikimania',
+ 'right-wikimania-admin' => 'Manage Wikimania registrations',
+ 'right-wikimania-register' => 'Register for Wikimania',
+ 'right-wikimania-checkstatus' => 'Check status of a Wikimania
registration',
+);
+
+/**
+ * Message docs (qqq)
+ */
+$messages['qqq'] = array(
+ 'wikimania' => 'Name of the annual Wikimedia conference, called
"Wikimania"',
+ 'wikimania-desc' => '{{desc}}',
+ 'specialpages-group-wikimania' => 'Group heading on
Special:SpecialPages',
+ 'administerwikimania' => "Special page for administering people's
Wikimania registrations",
+ 'checkwikimaniastatus' => 'Special page for a user to check their
Wikimania registration status',
+ 'registerforwikimania' => 'Special page form for registering for
Wikimania',
+ 'right-wikimania-admin' => 'User right for managing Wikimania
registerations',
+ 'right-wikimania-register' => 'User right for registering for
Wikimania',
+ 'right-wikimania-checkstatus' => 'User right for checking Wikimania
registration status',
+);
Added: trunk/extensions/Wikimania/lang/Wikimania2012.i18n.php
===================================================================
--- trunk/extensions/Wikimania/lang/Wikimania2012.i18n.php
(rev 0)
+++ trunk/extensions/Wikimania/lang/Wikimania2012.i18n.php 2011-09-18
19:47:09 UTC (rev 97436)
@@ -0,0 +1,13 @@
+<?php
+/*
+ * Year-specific localization for 2012
+ */
+
+$messages = array();
+
+/**
+ * English
+ */
+$messages['en'] = array(
+
+);
Property changes on: trunk/extensions/Wikimania/lang/Wikimania2012.i18n.php
___________________________________________________________________
Added: svn:eol-style
+ native
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs