| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  |  * Laconica - a distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2008, Controlez-Vous, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!defined('LACONICA')) { exit(1); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-20 06:41:56 -05:00
										 |  |  | define('PROFILES_PER_PAGE', 20); | 
					
						
							| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | class ProfileList { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var $profile = NULL; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 	function __construct($profile) { | 
					
						
							| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | 		$this->profile = $profile; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	function show_list() { | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-11-21 11:16:45 -05:00
										 |  |  | 		common_element_start('ul', array('id' => 'profiles', 'class' => 'profile_list')); | 
					
						
							| 
									
										
										
										
											2008-11-20 05:57:26 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		$cnt = 0; | 
					
						
							| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-11-20 05:57:26 -05:00
										 |  |  | 		while ($this->profile->fetch()) { | 
					
						
							|  |  |  | 			$cnt++; | 
					
						
							|  |  |  | 			if($cnt > PROFILES_PER_PAGE) { | 
					
						
							| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | 				break; | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2008-11-20 05:57:26 -05:00
										 |  |  | 			$this->show(); | 
					
						
							| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		common_element_end('ul'); | 
					
						
							| 
									
										
										
										
											2008-11-20 07:31:46 -05:00
										 |  |  | 		 | 
					
						
							|  |  |  | 		return $cnt; | 
					
						
							| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	function show() { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->profile = $this->profile; | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		common_element_start('li', array('class' => 'profile_single', | 
					
						
							|  |  |  | 										 'id' => 'profile-' . $this->profile->id)); | 
					
						
							| 
									
										
										
										
											2008-11-20 15:40:22 -05:00
										 |  |  | 		 | 
					
						
							|  |  |  | 		$user = common_current_user(); | 
					
						
							| 
									
										
										
										
											2008-11-20 15:47:25 -05:00
										 |  |  | 		if ($user && $user->id != $this->profile->id) { | 
					
						
							| 
									
										
										
										
											2008-11-20 15:40:22 -05:00
										 |  |  | 			# XXX: special-case for user looking at own
 | 
					
						
							|  |  |  | 			# subscriptions page
 | 
					
						
							|  |  |  | 			if ($user->isSubscribed($this->profile)) { | 
					
						
							| 
									
										
										
										
											2008-11-20 15:43:47 -05:00
										 |  |  | 				common_unsubscribe_form($this->profile); | 
					
						
							| 
									
										
										
										
											2008-11-20 15:40:22 -05:00
										 |  |  | 			} else { | 
					
						
							| 
									
										
										
										
											2008-11-20 15:43:47 -05:00
										 |  |  | 				common_subscribe_form($this->profile); | 
					
						
							| 
									
										
										
										
											2008-11-20 15:40:22 -05:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | 		$avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE); | 
					
						
							|  |  |  | 		common_element_start('a', array('href' => $this->profile->profileurl)); | 
					
						
							|  |  |  | 		common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE), | 
					
						
							|  |  |  | 									'class' => 'avatar stream', | 
					
						
							|  |  |  | 									'width' => AVATAR_STREAM_SIZE, | 
					
						
							|  |  |  | 									'height' => AVATAR_STREAM_SIZE, | 
					
						
							|  |  |  | 									'alt' => | 
					
						
							|  |  |  | 									($this->profile->fullname) ? $this->profile->fullname : | 
					
						
							|  |  |  | 									$this->profile->nickname)); | 
					
						
							|  |  |  | 		common_element_end('a'); | 
					
						
							|  |  |  | 		common_element_start('p'); | 
					
						
							|  |  |  | 		common_element_start('a', array('href' => $this->profile->profileurl, | 
					
						
							|  |  |  | 										'class' => 'nickname')); | 
					
						
							|  |  |  | 		common_raw($this->highlight($this->profile->nickname)); | 
					
						
							|  |  |  | 		common_element_end('a'); | 
					
						
							|  |  |  | 		if ($this->profile->fullname) { | 
					
						
							|  |  |  | 			common_text(' | '); | 
					
						
							|  |  |  | 			common_element_start('span', 'fullname'); | 
					
						
							|  |  |  | 			common_raw($this->highlight($this->profile->fullname)); | 
					
						
							|  |  |  | 			common_element_end('span'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if ($this->profile->location) { | 
					
						
							|  |  |  | 			common_text(' | '); | 
					
						
							|  |  |  | 			common_element_start('span', 'location'); | 
					
						
							|  |  |  | 			common_raw($this->highlight($this->profile->location)); | 
					
						
							|  |  |  | 			common_element_end('span'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		common_element_end('p'); | 
					
						
							|  |  |  | 		if ($this->profile->homepage) { | 
					
						
							|  |  |  | 			common_element_start('p', 'website'); | 
					
						
							|  |  |  | 			common_element_start('a', array('href' => $this->profile->homepage)); | 
					
						
							|  |  |  | 			common_raw($this->highlight($this->profile->homepage)); | 
					
						
							|  |  |  | 			common_element_end('a'); | 
					
						
							|  |  |  | 			common_element_end('p'); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if ($this->profile->bio) { | 
					
						
							|  |  |  | 			common_element_start('p', 'bio'); | 
					
						
							|  |  |  | 			common_raw($this->highlight($this->profile->bio)); | 
					
						
							|  |  |  | 			common_element_end('p'); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-11-20 15:35:28 -05:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-11-20 17:59:17 -05:00
										 |  |  | 		$tags = Profile_tag::getTags($this->profile->id, $this->profile->id); | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-20 17:59:17 -05:00
										 |  |  | 		if ($tags) { | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 			common_element_start('div', 'tags_self'); | 
					
						
							|  |  |  | 			common_element_start('dl'); | 
					
						
							|  |  |  | 			common_element('dt', null, _("User's tags:")); | 
					
						
							|  |  |  | 			common_element_start('dd'); | 
					
						
							|  |  |  | 			common_element_start('ul', 'tags xoxo'); | 
					
						
							| 
									
										
										
										
											2008-11-20 17:59:17 -05:00
										 |  |  | 			foreach ($tags as $tag) { | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 				common_element_start('li'); | 
					
						
							| 
									
										
										
										
											2008-11-21 10:35:17 -05:00
										 |  |  | 				common_element('a', array('rel' => 'tag', | 
					
						
							| 
									
										
										
										
											2008-11-20 17:59:17 -05:00
										 |  |  | 										  'href' => common_local_url('peopletag', | 
					
						
							|  |  |  | 																	 array('tag' => $tag))), | 
					
						
							|  |  |  | 							   $tag); | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 				common_element_end('li'); | 
					
						
							| 
									
										
										
										
											2008-11-20 17:59:17 -05:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 			common_element_end('ul'); | 
					
						
							|  |  |  | 			common_element_end('dd'); | 
					
						
							|  |  |  | 			common_element_end('dl'); | 
					
						
							|  |  |  | 			common_element_end('div'); | 
					
						
							| 
									
										
										
										
											2008-11-20 17:59:17 -05:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-11-20 19:20:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 		if ($user) { | 
					
						
							| 
									
										
										
										
											2008-11-20 19:43:36 -05:00
										 |  |  | 			$action = NULL; | 
					
						
							| 
									
										
										
										
											2008-11-20 19:20:38 -05:00
										 |  |  | 			 | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 			if ($user->isSubscribed($this->profile)) { | 
					
						
							| 
									
										
										
										
											2008-11-20 19:43:36 -05:00
										 |  |  | 				$action = 'subscriptions'; | 
					
						
							|  |  |  | 			} else if (Subscription::pkeyGet(array('subscriber' => $this->profile->id, | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 												   'subscribed' => $user->id))) { | 
					
						
							| 
									
										
										
										
											2008-11-20 19:43:36 -05:00
										 |  |  | 				$action = 'subscribers'; | 
					
						
							| 
									
										
										
										
											2008-11-20 19:20:38 -05:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			 | 
					
						
							| 
									
										
										
										
											2008-11-20 19:43:36 -05:00
										 |  |  | 			 | 
					
						
							|  |  |  | 			if ($action) { | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 				$tags = Profile_tag::getTags($user->id, $this->profile->id); | 
					
						
							| 
									
										
										
										
											2008-11-20 19:43:36 -05:00
										 |  |  | 				 | 
					
						
							|  |  |  | 				if ($tags) { | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 					common_element_start('div', 'tags_user'); | 
					
						
							|  |  |  | 					common_element_start('dl'); | 
					
						
							| 
									
										
										
										
											2008-11-20 22:18:11 -05:00
										 |  |  | 					common_element_start('dt'); | 
					
						
							|  |  |  | 					common_element('a', array('href' => common_local_url('tagother', | 
					
						
							|  |  |  | 																	 array('id' => $this->profile->id))), | 
					
						
							|  |  |  | 							   _('Your tags')); | 
					
						
							|  |  |  | 					common_text(":"); | 
					
						
							|  |  |  | 					common_element_end('dt'); | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 					common_element_start('dd'); | 
					
						
							|  |  |  | 					common_element_start('ul', 'tags xoxo'); | 
					
						
							| 
									
										
										
										
											2008-11-20 19:43:36 -05:00
										 |  |  | 					foreach ($tags as $tag) { | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 						common_element_start('li'); | 
					
						
							| 
									
										
										
										
											2008-11-21 10:35:17 -05:00
										 |  |  | 						common_element('a', array('rel' => "tag", | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 												  'href' => common_local_url($action, | 
					
						
							|  |  |  | 																			 array('nickname' => $user->nickname, | 
					
						
							| 
									
										
										
										
											2008-11-20 19:43:36 -05:00
										 |  |  | 																				   'tag' => $tag))), | 
					
						
							|  |  |  | 									   $tag); | 
					
						
							| 
									
										
										
										
											2008-11-20 21:38:27 -05:00
										 |  |  | 						common_element_end('li'); | 
					
						
							|  |  |  | 					}					 | 
					
						
							|  |  |  | 					common_element_end('ul'); | 
					
						
							|  |  |  | 					common_element_end('dd'); | 
					
						
							|  |  |  | 					common_element_end('dl'); | 
					
						
							|  |  |  | 					common_element_end('div'); | 
					
						
							| 
									
										
										
										
											2008-11-20 19:43:36 -05:00
										 |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2008-11-20 19:20:38 -05:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-11-20 17:59:17 -05:00
										 |  |  | 		 | 
					
						
							| 
									
										
										
										
											2008-11-20 05:50:27 -05:00
										 |  |  | 		common_element_end('li'); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	function highlight($text) { | 
					
						
							|  |  |  | 		return htmlspecialchars($text); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |