]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Rough draft of the photo album class to control photo ownership / permissions.
authorSean Corbett <sean@gnu.org>
Sun, 5 Sep 2010 02:14:49 +0000 (22:14 -0400)
committerSean Corbett <sean@gnu.org>
Sun, 5 Sep 2010 02:14:49 +0000 (22:14 -0400)
plugins/GNUsocialPhotos/GNUsocialPhotosPlugin.php
plugins/GNUsocialPhotos/classes/gnusocialphoto.php
plugins/GNUsocialPhotos/classes/gnusocialphotoalbum.php [new file with mode: 0644]

index f67cfec3412a80b291c5e0483cd5d156e37a5b0e..8aa10c7f70a65e7a425bff88356b575c469e6049 100644 (file)
@@ -54,6 +54,7 @@ class GNUsocialPhotosPlugin extends Plugin
         }
 
         include_once $dir . '/classes/gnusocialphoto.php';
+        include_once $dir . '/classes/gnusocialphotoalbum.php';
         return true;
     }
 
@@ -63,9 +64,13 @@ class GNUsocialPhotosPlugin extends Plugin
         $schema->ensureTable('GNUsocialPhoto',
                                 array(new ColumnDef('notice_id', 'int(11)', null, false),
                                       new ColumnDef('album_id', 'int(11)', null, false),
-                                      //new ColumnDef('album_name', 'varchar(30)', null, false),
                                       new ColumnDef('uri', 'varchar(512)', null, false),
                                       new ColumnDef('thumb_uri', 'varchar(512)', null, false)));
+        $schema->ensureTable('GNUsocialPhotoAlbum',
+                                array(new ColumnDef('album_id', 'int(11)', null, false, 'PRI', null, null, true),
+                                      new ColumnDef('profile_id', 'int(11)', null, false),
+                                      new ColumnDef('album_name', 'varchar(256)', null, false)));
+                                          
     }
 
     function onRouterInitialized($m)
index 3ff0e494dc96b9a22f4cb4631b118684005c761e..1b5a545878514e82e0a44f63c7ae12f3a029c853 100644 (file)
@@ -62,6 +62,10 @@ class GNUsocialPhoto extends Memcached_DataObject
         return parent::delete();
     } */
 
+
+    /*
+     * TODO: Foriegn key on album_id.
+     */
     function table()
     {
         return array('notice_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
diff --git a/plugins/GNUsocialPhotos/classes/gnusocialphotoalbum.php b/plugins/GNUsocialPhotos/classes/gnusocialphotoalbum.php
new file mode 100644 (file)
index 0000000..853854e
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+/**
+ * GNU Social
+ * Copyright (C) 2010, Free Software Foundation, Inc.
+ *
+ * PHP version 5
+ *
+ * LICENCE:
+ * 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/>.
+ *
+ * @category  Widget
+ * @package   GNU Social
+ * @author    Ian Denhardt <ian@zenhack.net>
+ * @author    Sean Corbett <sean@gnu.org>
+ * @copyright 2010 Free Software Foundation, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ */
+
+if (!defined('STATUSNET')) {
+    exit(1);
+}
+
+require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
+
+class GNUsocialPhotoAlbum extends Memcached_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
+    
+
+    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);
+    }
+    
+    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()
+    {
+        return array(false, false, false);
+    } 
+
+    static function newAlbum($profile_id, $album_name)
+    {
+        //TODO: Should use foreign key instead...
+        if (!Profile::staticGet('id', $profile_id)){
+            //Is this a bit extreme?
+            throw new ServerException(_m('No such user exists with id ' . $profile_id . ', couldn\'t create album.'));
+        }
+        
+        $album = new GNUsocialPhotoAlbum();
+        //TODO: Should autoincrement..
+        $album->profile_id = $profile_id;
+        $album->album_name = $album_name;
+        
+        if ($album->insert() == false){
+            common_log_db_error($album, 'INSERT', __FILE__);
+            throw new ServerException(_m('Error creating new album.'));
+        }
+    } 
+
+}