Difference between revisions of "MediaWiki/archive/extensions/Special/SiteSubscribe"

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Jump to navigation Jump to search
m (→‎ssub_post: a couple of punctuation fixes)
Line 46: Line 46:
 
* '''History''':
 
* '''History''':
 
** '''2009-02-15''' Created
 
** '''2009-02-15''' Created
 +
** '''2009-02-22''' WhenRepl, isOkay fields
 
* '''Fields''':
 
* '''Fields''':
** '''RespCont''' should be status text from PayPal - "VERIFIED" or "INVALID"
+
** '''ConfText''' should be status text from PayPal - "VERIFIED" or "INVALID" - unless WhenRepl is NULL, in which case it is the http error message
 
<section begin=sql /><mysql>CREATE TABLE `ssub_post` (
 
<section begin=sql /><mysql>CREATE TABLE `ssub_post` (
 
   ID      INT          NOT NULL AUTO_INCREMENT,
 
   ID      INT          NOT NULL AUTO_INCREMENT,
Line 53: Line 54:
 
   WhenRecd DATETIME    NOT NULL COMMENT "when the POST was received",
 
   WhenRecd DATETIME    NOT NULL COMMENT "when the POST was received",
 
   WhenConf DATETIME    DEFAULT NULL COMMENT "when a confirmation was sent back, if any",
 
   WhenConf DATETIME    DEFAULT NULL COMMENT "when a confirmation was sent back, if any",
 +
  WhenRepl DATETIME    DEFAULT NULL COMMENT "when a reply to the confirmation was received, if any",
 +
  isOkay  BOOL        DEFAULT FALSE COMMENT "FALSE = reply was not received",
 
   ConfText VARCHAR(255) DEFAULT NULL COMMENT "contents retrieved by the confirmation",
 
   ConfText VARCHAR(255) DEFAULT NULL COMMENT "contents retrieved by the confirmation",
 
   PRIMARY KEY(`ID`)
 
   PRIMARY KEY(`ID`)

Revision as of 02:16, 23 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
    • 2009-02-22 WhenRepl, isOkay fields
  • Fields:
    • ConfText should be status text from PayPal - "VERIFIED" or "INVALID" - unless WhenRepl is NULL, in which case it is the http error message

<mysql>CREATE TABLE `ssub_post` (

  ID       INT          NOT NULL AUTO_INCREMENT,
  RmtAddr  VARCHAR(15)  NOT NULL COMMENT "IP address of POST sender",
  WhenRecd DATETIME     NOT NULL COMMENT "when the POST was received",
  WhenConf DATETIME     DEFAULT NULL COMMENT "when a confirmation was sent back, if any",
  WhenRepl DATETIME     DEFAULT NULL COMMENT "when a reply to the confirmation was received, if any",
  isOkay   BOOL         DEFAULT FALSE COMMENT "FALSE = reply was not received",
  ConfText VARCHAR(255) DEFAULT NULL COMMENT "contents retrieved by the confirmation",
 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>