summaryrefslogtreecommitdiff
path: root/classes/Profile.php
diff options
context:
space:
mode:
authorEvan Prodromou <evan@prodromou.name>2008-06-05 15:37:08 -0400
committerEvan Prodromou <evan@prodromou.name>2008-06-05 15:37:08 -0400
commit56021d95721c06b618dac6272e58d22a3e87037f (patch)
treef232f32b5f7e78f80704c76b1ec6e5d4fd633893 /classes/Profile.php
parentdcc915bd9305349ba6c1a0a716481de0806f5ecf (diff)
move avatar scaling and saving to Avatar and Profile
Extracted the code for setting a new original avatar to the Profile class, and moved some of it to Avatar, too. This makes it easier to have the same functionality whether an avatar is set using the profile settings (for our users), or on a remote subscription. Necessitated changing the filenaming function to just take an ID. darcs-hash:20080605193708-84dde-a441cc0474951ce7f1a1da9310b5145c0b7c3070.gz
Diffstat (limited to 'classes/Profile.php')
-rw-r--r--classes/Profile.php73
1 files changed, 67 insertions, 6 deletions
diff --git a/classes/Profile.php b/classes/Profile.php
index eb29d63a2..ff63bc79e 100644
--- a/classes/Profile.php
+++ b/classes/Profile.php
@@ -24,7 +24,7 @@ if (!defined('LACONICA')) { exit(1); }
*/
require_once 'DB/DataObject.php';
-class Profile extends DB_DataObject
+class Profile extends DB_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
@@ -32,11 +32,11 @@ class Profile extends DB_DataObject
public $__table = 'profile'; // table name
public $id; // int(4) primary_key not_null
public $nickname; // varchar(64) not_null
- public $fullname; // varchar(255)
- public $profileurl; // varchar(255)
- public $homepage; // varchar(255)
- public $bio; // varchar(140)
- public $location; // varchar(255)
+ public $fullname; // varchar(255)
+ public $profileurl; // varchar(255)
+ public $homepage; // varchar(255)
+ public $bio; // varchar(140)
+ public $location; // varchar(255)
public $created; // datetime() not_null
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
@@ -72,4 +72,65 @@ class Profile extends DB_DataObject
return NULL;
}
}
+
+ static function setOriginal($source) {
+
+ $info = @getimagesize($source);
+
+ if (!$info) {
+ return NULL;
+ }
+
+ $filename = common_avatar_filename($this,
+ image_type_to_extension($info[2]),
+ NULL, common_timestamp());
+ $filepath = common_avatar_path($filename);
+
+ copy($source, $filepath);
+
+ $avatar = new Avatar();
+
+ $avatar->profile_id = $this->id;
+ $avatar->width = $info[0];
+ $avatar->height = $info[1];
+ $avatar->mediatype = image_type_to_mime_type($info[2]);
+ $avatar->filename = $filename;
+ $avatar->original = true;
+ $avatar->url = common_avatar_url($filename);
+ $avatar->created = DB_DataObject_Cast::dateTime(); # current time
+
+ # XXX: start a transaction here
+
+ if (!$this->delete_avatars()) {
+ @unlink($filepath);
+ return NULL;
+ }
+
+ if (!$avatar->insert()) {
+ @unlink($filepath);
+ return NULL;
+ }
+
+ foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
+ # We don't do a scaled one if original is our scaled size
+ if (!($avatar->width == $size && $avatar->height == $size)) {
+ $s = $avatar->scale($size);
+ if (!$s) {
+ return NULL;
+ }
+ }
+ }
+
+ return $avatar;
+ }
+
+ function delete_avatars() {
+ $avatar = DB_DataObject::factory('avatar');
+ $avatar->profile_id = $this->id;
+ $avatar->find();
+ while ($avatar->fetch()) {
+ $avatar->delete();
+ }
+ return true;
+ }
}