class GNUsocialPhoto extends Memcached_DataObject
{
public $__table = 'GNUsocialPhoto';
- public $noitce_id; // integer
- public $path; // varchar(150)
- public $thumb_path; // varchar(156)
- public $owner_id; // int(11) (user who posted the photo)
+ public $id; // int(11)
+ public $notice_id; // int(11)
+ public $album_id; // int(11)
+ public $uri; // varchar(512)
+ public $thumb_uri; // varchar(512)
+ public $title; // varchar(512)
+ public $photo_description; // text
+
+ /**
+ *
+ * k key
+ * v value
+ */
function staticGet($k,$v=NULL)
{
return Memcached_DataObject::staticGet('GNUsocialPhoto',$k,$v);
}
- function delete()
+/* function delete()
{
- if(!unlink(INSTALLDIR . $this->thumb_path)) {
+ if(!unlink(INSTALLDIR . $this->thumb_uri)) {
return false;
}
if(!unlink(INSTALLDIR . $this->path)) {
return false;
}
return parent::delete();
- }
+ } */
+
+ /*
+ * TODO: Foriegn key on album_id.
+ */
function table()
{
- return array('notice_id' => DB_DATAOBJECT_INT,
- 'path' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
- 'thumb_path' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
- 'owner_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL);
+ return array('id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
+ 'notice_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
+ 'album_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL,
+ 'uri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+ 'thumb_uri' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+ 'title' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
+ 'photo_description' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL);
}
-
+
function keys()
{
return array_keys($this->keyTypes());
return array(false, false, false);
}
- function saveNew($profile_id, $thumb_path, $path, $source)
+ function saveNew($profile_id, $album_id, $thumb_uri, $uri, $source, $insert_now, $title = null, $photo_description = null)
{
$photo = new GNUsocialPhoto();
- $photo->thumb_path = $thumb_path;
- $photo->path = $path;
- $photo->owner_id = $profile_id;
-
- $rend = sprintf('<a href="http://%s%s"><img src="http://%s%s" /></a>', common_config('site', 'server'), $path, common_config('site', 'server'), $thumb_path);
+ $photo->thumb_uri = $thumb_uri;
+ $photo->uri = $uri;
+ $photo->album_id = $album_id;
+ if(!empty($title)) $photo->title = $title;
+ if(!empty($photo_description)) $photo->photo_description = (string)$photo_description;
- $notice = Notice::saveNew($profile_id, 'http://' . common_config('site', 'server') . $path, $source, array('rendered' => $rend));
- $photo->notice_id = $notice->id;
- $photo_id = $photo->insert();
- if (!$photo_id) {
- common_log_db_error($photo, 'INSERT', __FILE__);
- throw new ServerException(_m('Problem Saving Photo.'));
+ if($insert_now) {
+ $notice = Notice::saveNew($profile_id, $uri, $source);
+ $photo->notice_id = $notice->id;
+ $photo_id = $photo->insert();
+ if (!$photo_id) {
+ common_log_db_error($photo, 'INSERT', __FILE__);
+ throw new ServerException(_m('Problem Saving Photo.'));
+ }
+ } else {
+ GNUsocialPhotoTemp::$tmp = $photo;
+ Notice::saveNew($profile_id, $uri, $source);
}
- }
+ }
+
+ function getPageLink()
+ {
+ return '/photo/' . $this->id;
+ }
+
/*
- function asActivityNoun($element)
+ * TODO: -Sanitize input
+ * @param int page_id The desired page of the gallery to show.
+ * @param int album_id The id of the album to get photos from.
+ * @param int gallery_size The number of thumbnails to show per page in the gallery.
+ * @return array Array of GNUsocialPhotos for this gallery page.
+ */
+ static function getGalleryPage($page_id, $album_id, $gallery_size)
{
- $object = new ActivityObject();
+ $page_offset = ($page_id-1) * $gallery_size;
+ $sql = 'SELECT * FROM GNUsocialPhoto WHERE album_id = ' . $album_id .
+ ' ORDER BY notice_id LIMIT ' . $page_offset . ',' . $gallery_size;
+ $photo = new GNUsocialPhoto();
+ $photo->query($sql);
+ $photos = array();
- $object->type = ActivityObject::PHOTO;
- $object->title = "";
- $object->thumbnail = 'http://' . common_config('site', 'server') . $this->thumb_path;
- $object->largerImage = 'http://' . common_config('site', 'server') . $this->path;
- return $object;
- } */
+ while ($photo->fetch()) {
+ $photos[] = clone($photo);
+ }
+
+ return $photos;
+ }
}