| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * Laconica - a distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2008, Controlez-Vous, Inc. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-17 11:47:01 -04:00
										 |  |  | if (!defined('LACONICA')) { exit(1); } | 
					
						
							| 
									
										
										
										
											2008-05-14 15:26:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Table Definition for profile | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-09-26 12:18:24 -04:00
										 |  |  | require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-09-26 12:09:41 -04:00
										 |  |  | class Profile extends Memcached_DataObject  | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | { | 
					
						
							|  |  |  |     ###START_AUTOCODE
 | 
					
						
							|  |  |  |     /* the code below is auto generated do not remove the above tag */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public $__table = 'profile';                         // table name
 | 
					
						
							|  |  |  |     public $id;                              // int(4)  primary_key not_null
 | 
					
						
							| 
									
										
										
										
											2008-07-10 00:51:26 -04:00
										 |  |  |     public $nickname;                        // varchar(64)  multiple_key not_null
 | 
					
						
							|  |  |  |     public $fullname;                        // varchar(255)  multiple_key
 | 
					
						
							| 
									
										
										
										
											2008-07-15 15:55:13 -04:00
										 |  |  |     public $profileurl;                      // varchar(255)  
 | 
					
						
							| 
									
										
										
										
											2008-07-10 00:51:26 -04:00
										 |  |  |     public $homepage;                        // varchar(255)  multiple_key
 | 
					
						
							|  |  |  |     public $bio;                             // varchar(140)  multiple_key
 | 
					
						
							|  |  |  |     public $location;                        // varchar(255)  multiple_key
 | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  |     public $created;                         // datetime()   not_null
 | 
					
						
							|  |  |  |     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* Static get */ | 
					
						
							| 
									
										
										
										
											2008-09-26 12:09:41 -04:00
										 |  |  |     function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile',$k,$v); } | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* the code above is auto generated do not remove the tag below */ | 
					
						
							|  |  |  |     ###END_AUTOCODE
 | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-20 16:13:47 -05:00
										 |  |  |     function getSearchEngine() { | 
					
						
							|  |  |  |         require_once INSTALLDIR.'/classes/SearchEngines.php'; | 
					
						
							|  |  |  |         static $search_engine; | 
					
						
							|  |  |  |         if (!isset($search_engine)) { | 
					
						
							|  |  |  |                 if (common_config('sphinx', 'enabled')) { | 
					
						
							|  |  |  |                     $search_engine = new SphinxSearch($this); | 
					
						
							|  |  |  |                 } elseif ('mysql' === common_config('db', 'type')) { | 
					
						
							|  |  |  |                     $search_engine = new MySQLSearch($this); | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     $search_engine = new PGSearch($this); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $search_engine; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-15 12:28:44 -04:00
										 |  |  | 	function getAvatar($width, $height=NULL) { | 
					
						
							|  |  |  | 		if (is_null($height)) { | 
					
						
							| 
									
										
										
										
											2008-10-02 10:47:49 -04:00
										 |  |  | 			$height = $width; | 
					
						
							| 
									
										
										
										
											2008-05-15 12:28:44 -04:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-10-02 10:47:49 -04:00
										 |  |  | 		return Avatar::pkeyGet(array('profile_id' => $this->id, | 
					
						
							|  |  |  | 									 'width' => $width, | 
					
						
							|  |  |  | 									 'height' => $height)); | 
					
						
							| 
									
										
										
										
											2008-05-15 12:28:44 -04:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-05-20 15:14:12 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-15 12:28:44 -04:00
										 |  |  | 	function getOriginalAvatar() { | 
					
						
							|  |  |  | 		$avatar = DB_DataObject::factory('avatar'); | 
					
						
							|  |  |  | 		$avatar->profile_id = $this->id; | 
					
						
							|  |  |  | 		$avatar->original = true; | 
					
						
							|  |  |  | 		if ($avatar->find(true)) { | 
					
						
							|  |  |  | 			return $avatar; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			return NULL; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-06-05 15:37:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-05 15:52:22 -04:00
										 |  |  | 	function setOriginal($source) { | 
					
						
							| 
									
										
										
										
											2008-06-05 15:37:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$info = @getimagesize($source); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (!$info) { | 
					
						
							|  |  |  | 			return NULL; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-05 15:55:00 -04:00
										 |  |  | 		$filename = common_avatar_filename($this->id, | 
					
						
							| 
									
										
										
										
											2008-06-05 15:37:08 -04:00
										 |  |  | 										   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() { | 
					
						
							| 
									
										
										
										
											2008-11-13 01:38:50 -05:00
										 |  |  | 		$avatar = new Avatar(); | 
					
						
							| 
									
										
										
										
											2008-06-05 15:37:08 -04:00
										 |  |  | 		$avatar->profile_id = $this->id; | 
					
						
							|  |  |  | 		$avatar->find(); | 
					
						
							|  |  |  | 		while ($avatar->fetch()) { | 
					
						
							|  |  |  | 			$avatar->delete(); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return true; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-07-09 18:46:30 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-14 23:02:02 -04:00
										 |  |  | 	function getBestName() { | 
					
						
							|  |  |  | 		return ($this->fullname) ? $this->fullname : $this->nickname; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-07-07 01:43:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # Get latest notice on or before date; default now
 | 
					
						
							|  |  |  | 	function getCurrentNotice($dt=NULL) { | 
					
						
							|  |  |  | 		$notice = new Notice(); | 
					
						
							|  |  |  | 		$notice->profile_id = $this->id; | 
					
						
							|  |  |  | 		if ($dt) { | 
					
						
							|  |  |  | 			$notice->whereAdd('created < "' . $dt . '"'); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-07-13 02:50:09 -04:00
										 |  |  | 		$notice->orderBy('created DESC, notice.id DESC'); | 
					
						
							| 
									
										
										
										
											2008-07-07 01:43:58 -04:00
										 |  |  | 		$notice->limit(1); | 
					
						
							|  |  |  | 		if ($notice->find(true)) { | 
					
						
							|  |  |  | 			return $notice; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return NULL; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-05-07 13:15:42 -04:00
										 |  |  | } |