X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FOauth_application.php;h=5d12484cf59df43678e41116c5d89ed5d6a81be3;hb=6d9ea620a3717921f8ad96b76a3e45afba4977db;hp=a6b5390872136308d663d0e8c806c26b2496b12a;hpb=c8bc598cfd67353f33d7785556374b5d6865a7d9;p=quix0rs-gnu-social.git diff --git a/classes/Oauth_application.php b/classes/Oauth_application.php index a6b5390872..5d12484cf5 100644 --- a/classes/Oauth_application.php +++ b/classes/Oauth_application.php @@ -4,7 +4,7 @@ */ require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; -class Oauth_application extends Memcached_DataObject +class Oauth_application extends Managed_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -12,23 +12,19 @@ class Oauth_application extends Memcached_DataObject public $__table = 'oauth_application'; // table name public $id; // int(4) primary_key not_null public $owner; // int(4) not_null - public $consumer_key; // varchar(255) not_null - public $name; // varchar(255) not_null - public $description; // varchar(255) - public $icon; // varchar(255) not_null - public $source_url; // varchar(255) - public $organization; // varchar(255) - public $homepage; // varchar(255) - public $callback_url; // varchar(255) not_null + public $consumer_key; // varchar(191) not_null not 255 because utf8mb4 takes more space + public $name; // varchar(191) not_null not 255 because utf8mb4 takes more space + public $description; // varchar(191) not 255 because utf8mb4 takes more space + public $icon; // varchar(191) not_null not 255 because utf8mb4 takes more space + public $source_url; // varchar(191) not 255 because utf8mb4 takes more space + public $organization; // varchar(191) not 255 because utf8mb4 takes more space + public $homepage; // varchar(191) not 255 because utf8mb4 takes more space + public $callback_url; // varchar(191) not_null not 255 because utf8mb4 takes more space public $type; // tinyint(1) public $access_type; // tinyint(1) public $created; // datetime not_null public $modified; // timestamp not_null default_CURRENT_TIMESTAMP - /* Static get */ - function staticGet($k,$v=NULL) { - return Memcached_DataObject::staticGet('Oauth_application',$k,$v); - } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -41,17 +37,24 @@ class Oauth_application extends Memcached_DataObject function getConsumer() { - return Consumer::staticGet('consumer_key', $this->consumer_key); + return Consumer::getKV('consumer_key', $this->consumer_key); } static function maxDesc() { - $desclimit = common_config('application', 'desclimit'); - // null => use global limit (distinct from 0!) - if (is_null($desclimit)) { - $desclimit = common_config('site', 'textlimit'); + // This used to default to textlimit or allow unlimited descriptions, + // but this isn't part of a notice and the field's limited to 191 chars + // in the DB, so those seem silly. (utf8mb4 takes up more space, so can't use 255) + // + // Now just defaulting to 191 max unless a smaller application desclimit + // is actually set. Setting to 0 will use the maximum. + $max = 191; + $desclimit = intval(common_config('application', 'desclimit')); + if ($desclimit > 0 && $desclimit < $max) { + return $desclimit; + } else { + return $max; } - return $desclimit; } static function descriptionTooLong($desc) @@ -77,7 +80,7 @@ class Oauth_application extends Memcached_DataObject function setOriginal($filename) { - $imagefile = new ImageFile($this->id, Avatar::path($filename)); + $imagefile = new ImageFile(null, Avatar::path($filename)); // XXX: Do we want to have a bunch of different size icons? homepage, stream, mini? // or just one and control size via CSS? --Zach @@ -110,7 +113,6 @@ class Oauth_application extends Memcached_DataObject * * @return void */ - function uploadLogo() { if ($_FILES['app_icon']['error'] == @@ -137,4 +139,51 @@ class Oauth_application extends Memcached_DataObject } } + function delete($useWhere=false) + { + $this->_deleteAppUsers(); + + $consumer = $this->getConsumer(); + $consumer->delete(); + + return parent::delete($useWhere); + } + + function _deleteAppUsers() + { + $oauser = new Oauth_application_user(); + $oauser->application_id = $this->id; + $oauser->delete(); + } + + public static function schemaDef() + { + return array( + 'description' => 'OAuth application registration record', + 'fields' => array( + 'id' => array('type' => 'serial', 'not null' => true, 'description' => 'unique identifier'), + 'owner' => array('type' => 'int', 'not null' => true, 'description' => 'owner of the application'), + 'consumer_key' => array('type' => 'varchar', 'length' => 191, 'not null' => true, 'description' => 'application consumer key'), + 'name' => array('type' => 'varchar', 'length' => 191, 'not null' => true, 'description' => 'name of the application'), + 'description' => array('type' => 'varchar', 'length' => 191, 'description' => 'description of the application'), + 'icon' => array('type' => 'varchar', 'length' => 191, 'not null' => true, 'default' => '/theme/base/default-avatar-stream.png', 'description' => 'application icon'), + 'source_url' => array('type' => 'varchar', 'length' => 191, 'description' => 'application homepage - used for source link'), + 'organization' => array('type' => 'varchar', 'length' => 191, 'description' => 'name of the organization running the application'), + 'homepage' => array('type' => 'varchar', 'length' => 191, 'description' => 'homepage for the organization'), + 'callback_url' => array('type' => 'varchar', 'length' => 191, 'description' => 'url to redirect to after authentication'), + 'type' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'type of app, 1 = browser, 2 = desktop'), + 'access_type' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'default access type, bit 1 = read, bit 2 = write'), + 'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'), + 'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'), + ), + 'primary key' => array('id'), + 'unique keys' => array( + 'oauth_application_name_key' => array('name'), // in the long run, we should perhaps not force these unique, and use another source id + ), + 'foreign keys' => array( + 'oauth_application_owner_fkey' => array('profile', array('owner' => 'id')), // Are remote users allowed to create oauth application records? + 'oauth_application_consumer_key_fkey' => array('consumer', array('consumer_key' => 'consumer_key')), + ), + ); + } }