Difference between revisions of "MediaWiki/archive/extensions/Special/SiteSubscribe"
(explanation and table names modified to match with new name of extension) |
(ssub_post, ssub_post_line) |
||
Line 9: | Line 9: | ||
==Status== | ==Status== | ||
This extension is currently under development. Code will be posted here when it works. | This extension is currently under development. Code will be posted here when it works. | ||
− | ==Functionality== | + | ===Functionality=== |
* TO DO: record new subscriptions (sent via [[PayPal/IPN|IPN]]) | * TO DO: record new subscriptions (sent via [[PayPal/IPN|IPN]]) | ||
** TO DO: function to create/extend subscriptions when IPN received | ** TO DO: function to create/extend subscriptions when IPN received | ||
Line 16: | Line 16: | ||
** TO DO: detect when user's account has expired | ** TO DO: detect when user's account has expired | ||
** TO DO: remove user from "subscribers" group on expiration | ** TO DO: remove user from "subscribers" group on expiration | ||
− | ** | + | ** display subscription status for admins |
− | ** | + | ** allow admins to modify subscription status (change expiration, add new subscription) |
− | === | + | *** currently, subscriptions can only be extended to now plus one year; TO DO: subscription deletion (soon) |
− | * | + | ===History=== |
+ | * '''2009-02-15''' ssub_post, ssub_post_line tables designed | ||
==Data Design== | ==Data Design== | ||
===ssub_paymts=== | ===ssub_paymts=== | ||
Line 38: | Line 39: | ||
WhenExp DATETIME NOT NULL COMMENT "when the subscription expires", | WhenExp DATETIME NOT NULL COMMENT "when the subscription expires", | ||
PRIMARY KEY(`ID_User`) | PRIMARY KEY(`ID_User`) | ||
+ | ) | ||
+ | ENGINE = MYISAM;</mysql> | ||
+ | <section end=sql /> | ||
+ | ===ssub_post=== | ||
+ | * '''Purpose''': Http POSTs received by this extension -- partly for debugging, and partly as a fallback in case of technical problems or data loss | ||
+ | * '''History''': | ||
+ | ** '''2009-02-15''' Created | ||
+ | <section begin=sql /><mysql>CREATE TABLE `ssub_post` ( | ||
+ | ID INT NOT NULL AUTO_INCREMENT, | ||
+ | WhenRecd DATETIME NOT NULL COMMENT "when the payment was received", | ||
+ | WhenResp DATETIME DEFAULT NULL COMMENT "when a confirmation POST was sent back, if any", | ||
+ | RmtAddr VARCHAR(15) NOT NULL COMMENT "IP address of POST sender"; | ||
+ | PRIMARY KEY(`ID`) | ||
+ | ) | ||
+ | ENGINE = MYISAM;</mysql> | ||
+ | <section end=sql /> | ||
+ | ===ssub_post_line=== | ||
+ | * '''Purpose''': Data received via POST - child of ssub_post | ||
+ | * '''History''': | ||
+ | ** '''2009-02-15''' Created | ||
+ | <section begin=sql /><mysql>CREATE TABLE `ssub_post_line` ( | ||
+ | ID_Post INT NOT NULL COMMENT "ssub_post.ID", | ||
+ | DataKey VARCHAR(255) NOT NULL COMMENT "name of data item", | ||
+ | DataVal VARCHAR(255) NOT NULL COMMENT "value of data item", | ||
+ | PRIMARY KEY(`ID_Post`,`DataKey`) | ||
) | ) | ||
ENGINE = MYISAM;</mysql> | ENGINE = MYISAM;</mysql> | ||
<section end=sql /> | <section end=sql /> |
Revision as of 14:57, 15 February 2009
Overview
Special:SiteSubscribe is a MediaWiki extension to provide functions for managing paid subscriptions to a wiki site. The preliminary version supports PayPal and manual adjustment by site admins, but other payment methods could be added.
The access-restriction is being accomplished by a combination of MediaWiki site settings and W3TPL, and is very flexible.
Necessity
MediaWiki extensions currently available for interacting with PayPal seem to be limited to displaying static PayPal buttons, which can also be done using W3TPL and other extensions capable of displaying linked external images. This extension makes it possible to receive and process Instant Payment Notifications from PayPal.
In the long run, it may make sense for these two functions (managing subscriptions and handling PayPal IPN) to be split into separate modules.
Status
This extension is currently under development. Code will be posted here when it works.
Functionality
- TO DO: record new subscriptions (sent via IPN)
- TO DO: function to create/extend subscriptions when IPN received
- TO DO: add user into "subscribers" group when payment received
- TO DO: track subscription status (expiration)
- TO DO: detect when user's account has expired
- TO DO: remove user from "subscribers" group on expiration
- display subscription status for admins
- allow admins to modify subscription status (change expiration, add new subscription)
- currently, subscriptions can only be extended to now plus one year; TO DO: subscription deletion (soon)
History
- 2009-02-15 ssub_post, ssub_post_line tables designed
Data Design
ssub_paymts
Log of payments received
<mysql>CREATE TABLE `ssub_paymts` (
ID INT NOT NULL AUTO_INCREMENT, ID_User INT NOT NULL COMMENT "user.user_id of user making the payment", WhenRecd DATETIME NOT NULL COMMENT "when the payment was received", AmtRecd DECIMAL(9,2) NOT NULL COMMENT "dollar amount received", PRIMARY KEY(`ID`)
) ENGINE = MYISAM;</mysql>
ssub_subscrs
Subscription status
<mysql>CREATE TABLE `ssub_subscrs` (
ID_User INT NOT NULL COMMENT "user.user_id of user making the payment", WhenExp DATETIME NOT NULL COMMENT "when the subscription expires", PRIMARY KEY(`ID_User`)
) ENGINE = MYISAM;</mysql>
ssub_post
- Purpose: Http POSTs received by this extension -- partly for debugging, and partly as a fallback in case of technical problems or data loss
- History:
- 2009-02-15 Created
<mysql>CREATE TABLE `ssub_post` (
ID INT NOT NULL AUTO_INCREMENT, WhenRecd DATETIME NOT NULL COMMENT "when the payment was received", WhenResp DATETIME DEFAULT NULL COMMENT "when a confirmation POST was sent back, if any", RmtAddr VARCHAR(15) NOT NULL COMMENT "IP address of POST sender"; PRIMARY KEY(`ID`)
) ENGINE = MYISAM;</mysql>
ssub_post_line
- Purpose: Data received via POST - child of ssub_post
- History:
- 2009-02-15 Created
<mysql>CREATE TABLE `ssub_post_line` (
ID_Post INT NOT NULL COMMENT "ssub_post.ID", DataKey VARCHAR(255) NOT NULL COMMENT "name of data item", DataVal VARCHAR(255) NOT NULL COMMENT "value of data item", PRIMARY KEY(`ID_Post`,`DataKey`)
) ENGINE = MYISAM;</mysql>