Creating albums and uploading to them

This commit is contained in:
Max Shinn 2010-12-28 07:33:06 -06:00
parent 89d8c0c6f2
commit 22fe5d0215
2 changed files with 69 additions and 12 deletions

View File

@ -59,6 +59,7 @@ class PhotouploadAction extends Action
function showContent() function showContent()
{ {
//Upload a photo
if(empty($this->user)) { if(empty($this->user)) {
$this->element('p', array(), 'You are not logged in.'); $this->element('p', array(), 'You are not logged in.');
} else { } else {
@ -73,14 +74,34 @@ class PhotouploadAction extends Action
$this->elementEnd('li'); $this->elementEnd('li');
//$this->element('br'); //$this->element('br');
$this->elementStart('li'); $this->elementStart('li');
$this->input('phototitle', "Title", null, "The title of the photo. (Optional)"); $this->input('phototitle', _("Title"), null, _("The title of the photo. (Optional)"));
$this->elementEnd('li'); $this->elementEnd('li');
$this->elementStart('li'); $this->elementStart('li');
$this->textarea('photo_description', "Description", null, "A description of the photo. (Optional)"); $this->textarea('photo_description', _("Description"), null, _("A description of the photo. (Optional)"));
$this->elementEnd('li');
$this->elementStart('li');
$this->dropdown('album', _("Album"), $this->albumList(), _("The album in which to place this photo"), false);
$this->elementEnd('li'); $this->elementEnd('li');
$this->elementEnd('ul'); $this->elementEnd('ul');
$this->submit('upload', _('Upload')); $this->submit('upload', _('Upload'));
$this->elementEnd('form'); $this->elementEnd('form');
$this->element('br');
//Create a new album
$this->element('h3', array(), _("Create a new album"));
$this->elementStart('form', array('method' => 'post',
'action' =>common_local_url('photoupload')));
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
$this->input('album_name', _("Title"), null, _("The title of the album."));
$this->elementEnd('li');
$this->elementStart('li');
$this->textarea('album_description', _("Description"), null, _("A description of the album. (Optional)"));
$this->elementEnd('li');
$this->elementEnd('ul');
$this->submit('create', _('Create'));
$this->elementEnd('form');
} }
} }
@ -111,9 +132,12 @@ class PhotouploadAction extends Action
return; return;
} */ } */
if($this->arg('upload')) { if ($this->arg('upload')) {
$this->uploadPhoto(); $this->uploadPhoto();
} }
if ($this->arg('create')) {
$this->createAlbum();
}
} }
function showForm($msg, $success=false) function showForm($msg, $success=false)
@ -124,6 +148,22 @@ class PhotouploadAction extends Action
// $this->showPage(); // $this->showPage();
} }
function albumList()
{
$cur = common_current_user();
$album = new GNUsocialPhotoAlbum();
$album->user_id = $cur->id;
$albumlist = array();
if (!$album->find()) {
GNUsocialPhotoAlbum::newAlbum($cur->id, 'Default');
}
while ($album->fetch()) {
$albumlist[$album->album_id] = $album->album_name;
}
return $albumlist;
}
function uploadPhoto() function uploadPhoto()
{ {
$cur = common_current_user(); $cur = common_current_user();
@ -154,10 +194,24 @@ class PhotouploadAction extends Action
$profile_id = $cur->id; $profile_id = $cur->id;
// TODO: proper multiple album support // TODO: proper multiple album support
$album = GNUsocialPhotoAlbum::staticGet('profile_id', $profile_id); $album = GNUsocialPhotoAlbum::staticGet('album_id', $this->trimmed('album'));
if(!$album) if ($album->profile_id != $profile_id) {
$album = GNUsocialPhotoAlbum::newAlbum($profile_id, 'Default'); $this->showForm(_('Error: This is not your album!'));
return;
}
GNUsocialPhoto::saveNew($profile_id, $album->album_id, $thumb_uri, $uri, 'web', false, $title, $photo_description); GNUsocialPhoto::saveNew($profile_id, $album->album_id, $thumb_uri, $uri, 'web', false, $title, $photo_description);
} }
function createAlbum()
{
$cur = common_current_user();
if(empty($cur)) {
return;
}
$album_name = $this->trimmed('album_name');
$album_description = $this->trimmed('album_description');
GNUsocialPhotoAlbum::newAlbum($cur->id, $album_name, $album_description);
}
} }

View File

@ -36,9 +36,10 @@ require_once INSTALLDIR . '/classes/Memcached_DataObject.php';
class GNUsocialPhotoAlbum extends Memcached_DataObject class GNUsocialPhotoAlbum extends Memcached_DataObject
{ {
public $__table = 'GNUsocialPhotoAlbum'; public $__table = 'GNUsocialPhotoAlbum';
public $album_id; // int(11) -- Unique identifier for the album public $album_id; // int(11) -- Unique identifier for the album
public $profile_id; // int(11) -- Profile ID for the owner of 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(256) -- Title for this album
public $album_description; // text -- A description of the album
function staticGet($k,$v=NULL) function staticGet($k,$v=NULL)
@ -52,7 +53,8 @@ class GNUsocialPhotoAlbum extends Memcached_DataObject
{ {
return array('album_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, return array('album_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
'profile_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, 'profile_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
'album_name' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL); 'album_name' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'album_description' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL);
} }
function keys() function keys()
@ -72,7 +74,7 @@ class GNUsocialPhotoAlbum extends Memcached_DataObject
return array('album_id', true, false); return array('album_id', true, false);
} }
static function newAlbum($profile_id, $album_name) static function newAlbum($profile_id, $album_name, $album_description)
{ {
//TODO: Should use foreign key instead... //TODO: Should use foreign key instead...
if (!Profile::staticGet('id', $profile_id)){ if (!Profile::staticGet('id', $profile_id)){
@ -83,6 +85,7 @@ class GNUsocialPhotoAlbum extends Memcached_DataObject
$album = new GNUsocialPhotoAlbum(); $album = new GNUsocialPhotoAlbum();
$album->profile_id = $profile_id; $album->profile_id = $profile_id;
$album->album_name = $album_name; $album->album_name = $album_name;
$album->album_description = $album_description;
$album->album_id = $album->insert(); $album->album_id = $album->insert();
if (!$album->album_id){ if (!$album->album_id){