]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Oauth_application.php
Don't store object type for verbs (as they don't have it)
[quix0rs-gnu-social.git] / classes / Oauth_application.php
index e81706104eaf6b9c17626d00db371d7d67bb1c0f..5d12484cf59df43678e41116c5d89ed5d6a81be3 100644 (file)
@@ -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
@@ -136,14 +139,14 @@ class Oauth_application extends Memcached_DataObject
         }
     }
 
-    function delete()
+    function delete($useWhere=false)
     {
         $this->_deleteAppUsers();
 
         $consumer = $this->getConsumer();
         $consumer->delete();
 
-        parent::delete();
+        return parent::delete($useWhere);
     }
 
     function _deleteAppUsers()
@@ -152,4 +155,35 @@ class Oauth_application extends Memcached_DataObject
         $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')),
+            ),
+        );
+    }
 }