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

Reply via email to