diff options
author | Zach Copley <zach@status.net> | 2009-11-25 13:38:59 -0800 |
---|---|---|
committer | Zach Copley <zach@status.net> | 2009-11-25 13:38:59 -0800 |
commit | 8acc1587b1cd4f6fc78bbedb88f414cd18efa942 (patch) | |
tree | 26a1b17a252cca0e91686af9faa5bef202828448 | |
parent | 88d41988679b6188095d20b8bbfdf016e3f2d605 (diff) |
Revert "Allow plugin DB_DataObject classes to not have to use the .ini file by overriding keys(), table(), and sequenceKey() for them"
This reverts commit a373d07ae00b878f47970f2e4a7d86c6ec3a65cf.
Conflicts:
classes/statusnet.ini
lib/schema.php
plugins/Authentication/AuthenticationPlugin.php
plugins/OpenID/OpenIDPlugin.php
plugins/UserFlag/UserFlagPlugin.php
-rw-r--r-- | classes/Plugin_DataObject.php | 195 | ||||
-rw-r--r-- | classes/statusnet.ini | 3 | ||||
-rw-r--r-- | lib/schema.php | 20 | ||||
-rw-r--r-- | plugins/Authentication/AuthenticationPlugin.php | 13 | ||||
-rw-r--r-- | plugins/Authentication/User_username.php | 22 | ||||
-rw-r--r-- | plugins/OpenID/OpenIDPlugin.php | 20 | ||||
-rw-r--r-- | plugins/OpenID/User_openid.php | 22 | ||||
-rw-r--r-- | plugins/OpenID/User_openid_trustroot.php | 20 | ||||
-rw-r--r-- | plugins/UserFlag/UserFlagPlugin.php | 11 | ||||
-rw-r--r-- | plugins/UserFlag/User_flag_profile.php | 21 |
10 files changed, 48 insertions, 299 deletions
diff --git a/classes/Plugin_DataObject.php b/classes/Plugin_DataObject.php deleted file mode 100644 index d5cecf0f7..000000000 --- a/classes/Plugin_DataObject.php +++ /dev/null @@ -1,195 +0,0 @@ -<?php -/* - * StatusNet - the distributed open-source microblogging tool - * Copyright (C) 2008, 2009, StatusNet, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } - -require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; - -abstract class Plugin_DataObject extends Memcached_DataObject -{ - function table() { - static $table = null; - if($table == null) { - $table = array(); - $DB = $this->getDatabaseConnection(); - $dbtype = $DB->phptype; - $tableDef = $this->tableDef(); - foreach($tableDef->columns as $columnDef){ - switch(strtoupper($columnDef->type)) { - /*shamelessly copied from DB_DataObject_Generator*/ - case 'INT': - case 'INT2': // postgres - case 'INT4': // postgres - case 'INT8': // postgres - case 'SERIAL4': // postgres - case 'SERIAL8': // postgres - case 'INTEGER': - case 'TINYINT': - case 'SMALLINT': - case 'MEDIUMINT': - case 'BIGINT': - $type = DB_DATAOBJECT_INT; - if ($columnDef->size == 1) { - $type += DB_DATAOBJECT_BOOL; - } - break; - - case 'REAL': - case 'DOUBLE': - case 'DOUBLE PRECISION': // double precision (firebird) - case 'FLOAT': - case 'FLOAT4': // real (postgres) - case 'FLOAT8': // double precision (postgres) - case 'DECIMAL': - case 'MONEY': // mssql and maybe others - case 'NUMERIC': - case 'NUMBER': // oci8 - $type = DB_DATAOBJECT_INT; // should really by FLOAT!!! / MONEY... - break; - - case 'YEAR': - $type = DB_DATAOBJECT_INT; - break; - - case 'BIT': - case 'BOOL': - case 'BOOLEAN': - - $type = DB_DATAOBJECT_BOOL; - // postgres needs to quote '0' - if ($dbtype == 'pgsql') { - $type += DB_DATAOBJECT_STR; - } - break; - - case 'STRING': - case 'CHAR': - case 'VARCHAR': - case 'VARCHAR2': - case 'TINYTEXT': - - case 'ENUM': - case 'SET': // not really but oh well - - case 'POINT': // mysql geometry stuff - not really string - but will do.. - - case 'TIMESTAMPTZ': // postgres - case 'BPCHAR': // postgres - case 'INTERVAL': // postgres (eg. '12 days') - - case 'CIDR': // postgres IP net spec - case 'INET': // postgres IP - case 'MACADDR': // postgress network Mac address. - - case 'INTEGER[]': // postgres type - case 'BOOLEAN[]': // postgres type - - $type = DB_DATAOBJECT_STR; - break; - - case 'TEXT': - case 'MEDIUMTEXT': - case 'LONGTEXT': - - $type = DB_DATAOBJECT_STR + DB_DATAOBJECT_TXT; - break; - - - case 'DATE': - $type = DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE; - break; - - case 'TIME': - $type = DB_DATAOBJECT_STR + DB_DATAOBJECT_TIME; - break; - - - case 'DATETIME': - - $type = DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME; - break; - - case 'TIMESTAMP': // do other databases use this??? - - $type = ($dbtype == 'mysql') ? - DB_DATAOBJECT_MYSQLTIMESTAMP : - DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME; - break; - - - case 'BLOB': /// these should really be ignored!!!??? - case 'TINYBLOB': - case 'MEDIUMBLOB': - case 'LONGBLOB': - - case 'CLOB': // oracle character lob support - - case 'BYTEA': // postgres blob support.. - $type = DB_DATAOBJECT_STR + DB_DATAOBJECT_BLOB; - break; - - default: - throw new Exception("Cannot handle datatype: $columnDef->type"); - } - if(! $columnDef->nullable) { - $type+=DB_DATAOBJECT_NOTNULL; - } - $table[$columnDef->name]=$type; - } - } - return $table; - } - - function keys() { - static $keys = null; - if($keys == null) { - $keys = array(); - $tableDef = $this->tableDef(); - foreach($tableDef->columns as $columnDef){ - if($columnDef->key != null){ - $keys[] = $columnDef->name; - } - } - } - return $keys; - } - - function sequenceKey() { - static $sequenceKey = null; - if($sequenceKey == null) { - $sequenceKey = array(false,false); - $tableDef = $this->tableDef(); - foreach($tableDef->columns as $columnDef){ - if($columnDef->key == 'PRI' && $columnDef->auto_increment){ - $sequenceKey=array($columnDef->name,true); - } - } - } - return $sequenceKey; - } - - /** - * Get the TableDef object that represents the table backing this class - * Ideally, this function would a static function, but PHP doesn't allow - * abstract static functions - * @return TableDef TableDef instance - */ - abstract function tableDef(); -} - diff --git a/classes/statusnet.ini b/classes/statusnet.ini index 69b355870..b2509dac5 100644 --- a/classes/statusnet.ini +++ b/classes/statusnet.ini @@ -261,7 +261,6 @@ modified = 384 [login_token__keys] user_id = K -token = K [message] id = 129 @@ -543,4 +542,4 @@ created = 142 modified = 384 [user_group__keys] -id = N +id = N
\ No newline at end of file diff --git a/lib/schema.php b/lib/schema.php index 11e2b6f60..df7cb65f5 100644 --- a/lib/schema.php +++ b/lib/schema.php @@ -373,26 +373,6 @@ class Schema } /** - * Ensures that the table that backs a given - * Plugin_DataObject class exists. - * - * If the table does not yet exist, it will - * create the table. If it does exist, it will - * alter the table to match the column definitions. - * - * @param Plugin_DataObject $dataObjectClass - * - * @return boolean success flag - */ - - public function ensureDataObject($dataObjectClass) - { - $obj = new $dataObjectClass(); - $tableDef = $obj->tableDef(); - return $this->ensureTable($tableDef->name,$tableDef->columns); - } - - /** * Ensures that a table exists with the given * name and the given column definitions. * diff --git a/plugins/Authentication/AuthenticationPlugin.php b/plugins/Authentication/AuthenticationPlugin.php index cd1de1149..a76848b04 100644 --- a/plugins/Authentication/AuthenticationPlugin.php +++ b/plugins/Authentication/AuthenticationPlugin.php @@ -2,7 +2,7 @@ /** * StatusNet, the distributed open-source microblogging tool * - * Superclass for plugins that do authentication + * Superclass for plugins that do authentication and/or authorization * * PHP version 5 * @@ -204,7 +204,16 @@ abstract class AuthenticationPlugin extends Plugin function onCheckSchema() { $schema = Schema::get(); - $schema->ensureDataObject('User_username'); + $schema->ensureTable('user_username', + array(new ColumnDef('provider_name', 'varchar', + '255', false, 'PRI'), + new ColumnDef('username', 'varchar', + '255', false, 'PRI'), + new ColumnDef('user_id', 'integer', + null, false), + new ColumnDef('created', 'datetime', + null, false), + new ColumnDef('modified', 'timestamp'))); return true; } diff --git a/plugins/Authentication/User_username.php b/plugins/Authentication/User_username.php index 6826f2681..f30f60d83 100644 --- a/plugins/Authentication/User_username.php +++ b/plugins/Authentication/User_username.php @@ -2,9 +2,9 @@ /** * Table Definition for user_username */ -require_once INSTALLDIR.'/classes/Plugin_DataObject.php'; +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; -class User_username extends Plugin_DataObject +class User_username extends Memcached_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -43,22 +43,4 @@ class User_username extends Plugin_DataObject return false; } } - - /** - * Get the TableDef object that represents the table backing this class - * @return TableDef TableDef instance - */ - function tableDef() - { - return new TableDef($this->__table, - array(new ColumnDef('provider_name', 'varchar', - '255', false, 'PRI'), - new ColumnDef('username', 'varchar', - '255', false, 'PRI'), - new ColumnDef('user_id', 'integer', - null, false), - new ColumnDef('created', 'datetime', - null, false), - new ColumnDef('modified', 'timestamp'))); - } } diff --git a/plugins/OpenID/OpenIDPlugin.php b/plugins/OpenID/OpenIDPlugin.php index 6dd8a3f5a..9b0a4cd45 100644 --- a/plugins/OpenID/OpenIDPlugin.php +++ b/plugins/OpenID/OpenIDPlugin.php @@ -281,8 +281,24 @@ class OpenIDPlugin extends Plugin function onCheckSchema() { $schema = Schema::get(); - $schema->ensureDataObject('User_openid'); - $schema->ensureDataObject('User_openid_trustroot'); + $schema->ensureTable('user_openid', + array(new ColumnDef('canonical', 'varchar', + '255', false, 'PRI'), + new ColumnDef('display', 'varchar', + '255', false), + new ColumnDef('user_id', 'integer', + null, false, 'MUL'), + new ColumnDef('created', 'datetime', + null, false), + new ColumnDef('modified', 'timestamp'))); + $schema->ensureTable('user_openid_trustroot', + array(new ColumnDef('trustroot', 'varchar', + '255', false, 'PRI'), + new ColumnDef('user_id', 'integer', + null, false, 'PRI'), + new ColumnDef('created', 'datetime', + null, false), + new ColumnDef('modified', 'timestamp'))); return true; } diff --git a/plugins/OpenID/User_openid.php b/plugins/OpenID/User_openid.php index c3624118e..338e0f6e9 100644 --- a/plugins/OpenID/User_openid.php +++ b/plugins/OpenID/User_openid.php @@ -2,9 +2,9 @@ /** * Table Definition for user_openid */ -require_once INSTALLDIR.'/classes/Plugin_DataObject.php'; +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; -class User_openid extends Plugin_DataObject +class User_openid extends Memcached_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -33,22 +33,4 @@ class User_openid extends Plugin_DataObject return ($cnt > 0); } - - /** - * Get the TableDef object that represents the table backing this class - * @return TableDef TableDef instance - */ - function tableDef() - { - return new TableDef($this->__table, - array(new ColumnDef('canonical', 'varchar', - '255', false, 'PRI'), - new ColumnDef('display', 'varchar', - '255', false), - new ColumnDef('user_id', 'integer', - null, false, 'MUL'), - new ColumnDef('created', 'datetime', - null, false), - new ColumnDef('modified', 'timestamp'))); - } } diff --git a/plugins/OpenID/User_openid_trustroot.php b/plugins/OpenID/User_openid_trustroot.php index b208dddfd..4654b72df 100644 --- a/plugins/OpenID/User_openid_trustroot.php +++ b/plugins/OpenID/User_openid_trustroot.php @@ -2,9 +2,9 @@ /** * Table Definition for user_openid_trustroot */ -require_once INSTALLDIR.'/classes/Plugin_DataObject.php'; +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; -class User_openid_trustroot extends Plugin_DataObject +class User_openid_trustroot extends Memcached_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -26,20 +26,4 @@ class User_openid_trustroot extends Plugin_DataObject { return Memcached_DataObject::pkeyGet('User_openid_trustroot', $kv); } - - /** - * Get the TableDef object that represents the table backing this class - * @return TableDef TableDef instance - */ - function tableDef() - { - return new TableDef($this->__table, - array(new ColumnDef('trustroot', 'varchar', - '255', false, 'PRI'), - new ColumnDef('user_id', 'integer', - null, false, 'PRI'), - new ColumnDef('created', 'datetime', - null, false), - new ColumnDef('modified', 'timestamp'))); - } } diff --git a/plugins/UserFlag/UserFlagPlugin.php b/plugins/UserFlag/UserFlagPlugin.php index c276c4b9f..1a3ef3777 100644 --- a/plugins/UserFlag/UserFlagPlugin.php +++ b/plugins/UserFlag/UserFlagPlugin.php @@ -48,7 +48,16 @@ class UserFlagPlugin extends Plugin $schema = Schema::get(); // For storing user-submitted flags on profiles - $schema->ensureDataObject('User_flag_profile'); + + $schema->ensureTable('user_flag_profile', + array(new ColumnDef('profile_id', 'integer', null, + false, 'PRI'), + new ColumnDef('user_id', 'integer', null, + false, 'PRI'), + new ColumnDef('created', 'datetime', null, + false, 'MUL'), + new ColumnDef('cleared', 'datetime', null, + true, 'MUL'))); return true; } diff --git a/plugins/UserFlag/User_flag_profile.php b/plugins/UserFlag/User_flag_profile.php index 2fb27912d..30bd4ae68 100644 --- a/plugins/UserFlag/User_flag_profile.php +++ b/plugins/UserFlag/User_flag_profile.php @@ -21,9 +21,9 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/classes/Plugin_DataObject.php'; +require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; -class User_flag_profile extends Plugin_DataObject +class User_flag_profile extends Memcached_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -65,21 +65,4 @@ class User_flag_profile extends Plugin_DataObject return !empty($ufp); } - - /** - * Get the TableDef object that represents the table backing this class - * @return TableDef TableDef instance - */ - function tableDef() - { - return new TableDef($this->__table, - array(new ColumnDef('profile_id', 'integer', null, - false, 'PRI'), - new ColumnDef('user_id', 'integer', null, - false, 'PRI'), - new ColumnDef('created', 'datetime', null, - false, 'MUL'), - new ColumnDef('cleared', 'datetime', null, - true, 'MUL'))); - } } |