]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/GNUsocialPhotos/classes/gnusocialphotoalbum.php
utf8mb4 conversion on database with index adjusts
[quix0rs-gnu-social.git] / plugins / GNUsocialPhotos / classes / gnusocialphotoalbum.php
index 848f92dffabdaed1488a71f2d23314b15cf65437..acf509a22ac0c84dc73e9534e506dac81cd61711 100644 (file)
@@ -33,56 +33,47 @@ if (!defined('STATUSNET')) {
 
 require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
 
-class GNUsocialPhotoAlbum extends Memcached_DataObject
+class GNUsocialPhotoAlbum extends Managed_DataObject
 {
     public $__table = 'GNUsocialPhotoAlbum';
     public $album_id;          // int(11) -- Unique identifier for the album
     public $profile_id;        // int(11) -- Profile ID for the owner of the album
-    public $album_name;        // varchar(256) -- Title for this album
+    public $album_name;        // varchar(191) -- Title for this album   not 255 because utf8mb4 takes more space
     public $album_description; // text -- A description of the album
+    public $created;           // datetime()   not_null
+    public $modified;          // timestamp()   not_null default_CURRENT_TIMESTAMP
     
-
-    function staticGet($k,$v=NULL)
-    {
-        return Memcached_DataObject::staticGet('GNUsocialPhotoAlbum',$k,$v);
-    }
-
-
     /* TODO: Primary key on both album_id, profile_id / foriegn key on profile_id */
-    function table()
-    {
-        return array('album_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-                     'profile_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
-                     'album_name' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
-                     'album_description' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL);
-    }
-    
-    function keys()
-    {
-        return array_keys($this->keyTypes());
-    }
-
-    
-    /* Using album_id as the primary key for now.. */
-    function keyTypes()
-    {
-        return array('album_id' => 'K');
-    }
-
-    function sequenceKey()
+    public static function schemaDef()
     {
-        return array('album_id', true, false);
+        return array(
+            'fields' => array(
+                'album_id' => array('type' => 'serial', 'not null' => true, 'description' => 'Unique identifier for the album'),
+                'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'Profile ID for the owner of the album'),
+                'album_name' => array('type' => 'varchar', 'not null' => true, 'length' => 191, 'description' => 'Title for this album'),
+                'album_description' => array('type' => 'text', 'not null' => true, 'description' => 'A description for this album'),
+                '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('user_id'),
+            'foreign keys' => array(
+                'gnusocialphotoalbum_profile_id_fkey' => array('profile', array('profile_id' => 'id')),
+            ),
+            'indexes' => array(
+                'gnusocialphotoalbum_album_name_idx' => array('album_name'),
+            ),
+        );
     }
 
     function getPageLink()
     {
-        $profile = Profile::StaticGet('id', $this->profile_id);
+        $profile = Profile::getKV('id', $this->profile_id);
         return '/' . $profile->nickname . '/photos/' . $this->album_id;
     }
 
     function getThumbUri()
     {
-        $photo = GNUsocialPhoto::staticGet('album_id', $this->album_id);
+        $photo = GNUsocialPhoto::getKV('album_id', $this->album_id);
         if (empty($photo))
             return '/theme/default/default-avatar-profile.png'; //For now...
         return $photo->thumb_uri;
@@ -91,7 +82,7 @@ class GNUsocialPhotoAlbum extends Memcached_DataObject
     static function newAlbum($profile_id, $album_name, $album_description)
     {
         //TODO: Should use foreign key instead...
-        if (!Profile::staticGet('id', $profile_id)){
+        if (!Profile::getKV('id', $profile_id)){
             //Is this a bit extreme?
             throw new ServerException(_m('No such user exists with id ' . $profile_id . ', couldn\'t create album.'));
         }