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;
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.'));
}