| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | <?php | 
					
						
							|  |  |  | /* | 
					
						
							| 
									
										
										
										
											2009-08-25 18:14:12 -04:00
										 |  |  |  * StatusNet - the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2009-08-25 18:12:20 -04:00
										 |  |  |  * Copyright (C) 2008, 2009, StatusNet, Inc. | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05: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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |  * along with this program.     If not, see <http://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-20 16:32:30 -07:00
										 |  |  | if (!defined('STATUSNET') && !defined('LACONICA')) { | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-20 16:32:30 -07:00
										 |  |  | require_once INSTALLDIR . '/plugins/Facebook/facebookaction.php'; | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:49:23 -05:00
										 |  |  | class FacebookremoveAction extends FacebookAction | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     function handle($args) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         parent::handle($args); | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $secret = common_config('facebook', 'secret'); | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $sig = ''; | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         ksort($_POST); | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         foreach ($_POST as $key => $val) { | 
					
						
							|  |  |  |             if (substr($key, 0, 7) == 'fb_sig_') { | 
					
						
							|  |  |  |                 $sig .= substr($key, 7) . '=' . $val; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |          } | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $sig .= $secret; | 
					
						
							|  |  |  |         $verify = md5($sig); | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         if ($verify == $this->arg('fb_sig')) { | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |             $flink = Foreign_link::getByForeignID($this->arg('fb_sig_user'), 2); | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |             common_debug("Removing foreign link to Facebook - local user ID: $flink->user_id, Facebook ID: $flink->foreign_id"); | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |             $result = $flink->delete(); | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |             if (!$result) { | 
					
						
							|  |  |  |                 common_log_db_error($flink, 'DELETE', __FILE__); | 
					
						
							| 
									
										
										
										
											2009-12-08 12:17:11 -08:00
										 |  |  |                 $this->serverError(_m('Couldn\'t remove Facebook user.')); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |                 return; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         } else { | 
					
						
							|  |  |  |             # Someone bad tried to remove facebook link?
 | 
					
						
							|  |  |  |             common_log(LOG_ERR, "Someone from $_SERVER[REMOTE_ADDR] " . | 
					
						
							|  |  |  |                 'unsuccessfully tried to remove a foreign link to Facebook!'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-07 19:55:22 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | } |