filename; if (parent::delete()) { @unlink(common_avatar_path($filename)); } } # Create and save scaled version of this avatar # XXX: maybe break into different methods function scale($size) { $image_s = imagecreatetruecolor($size, $size); $image_a = $this->to_image(); $square = min($this->width, $this->height); imagecolortransparent($image_s, imagecolorallocate($image_s, 0, 0, 0)); imagealphablending($image_s, false); imagesavealpha($image_s, true); imagecopyresampled($image_s, $image_a, 0, 0, 0, 0, $size, $size, $square, $square); $ext = ($this->mediattype == 'image/jpeg') ? ".jpeg" : ".png"; $filename = common_avatar_filename($this->profile_id, $ext, $size, common_timestamp()); if ($this->mediatype == 'image/jpeg') { imagejpeg($image_s, common_avatar_path($filename)); } else { imagepng($image_s, common_avatar_path($filename)); } $scaled = DB_DataObject::factory('avatar'); $scaled->profile_id = $this->profile_id; $scaled->width = $size; $scaled->height = $size; $scaled->original = false; $scaled->mediatype = ($this->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png'; $scaled->filename = $filename; $scaled->url = common_avatar_url($filename); $scaled->created = DB_DataObject_Cast::dateTime(); # current time if ($scaled->insert()) { return $scaled; } else { return null; } } function to_image() { $filepath = common_avatar_path($this->filename); if ($this->mediatype == 'image/gif') { return imagecreatefromgif($filepath); } else if ($this->mediatype == 'image/jpeg') { return imagecreatefromjpeg($filepath); } else if ($this->mediatype == 'image/png') { return imagecreatefrompng($filepath); } else { return null; } } function &pkeyGet($kv) { return Memcached_DataObject::pkeyGet('Avatar', $kv); } }