| 
									
										
										
										
											2009-01-04 20:04:07 -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/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-18 01:31:39 +00:00
										 |  |  | require_once INSTALLDIR.'/extlib/facebook/facebook.php'; | 
					
						
							| 
									
										
										
										
											2009-01-23 04:23:44 +00:00
										 |  |  | require_once INSTALLDIR.'/lib/facebookaction.php'; | 
					
						
							| 
									
										
										
										
											2009-01-18 01:31:39 +00:00
										 |  |  | require_once INSTALLDIR.'/lib/noticelist.php'; | 
					
						
							| 
									
										
										
										
											2009-01-11 07:03:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | define("FACEBOOK_SERVICE", 2); // Facebook is foreign_service ID 2
 | 
					
						
							| 
									
										
										
										
											2009-01-19 00:50:45 +00:00
										 |  |  | define("FACEBOOK_NOTICE_PREFIX", 1); | 
					
						
							|  |  |  | define("FACEBOOK_PROMPTED_UPDATE_PREF", 2); | 
					
						
							| 
									
										
										
										
											2009-01-04 20:04:07 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Gets all the notices from users with a Facebook link since a given ID
 | 
					
						
							| 
									
										
										
										
											2009-01-23 04:23:44 +00:00
										 |  |  | function getFacebookNotices($since) | 
					
						
							| 
									
										
										
										
											2009-01-04 20:04:07 -05:00
										 |  |  | { | 
					
						
							|  |  |  |     $qry = 'SELECT notice.* ' . | 
					
						
							|  |  |  |         'FROM notice ' . | 
					
						
							|  |  |  |         'JOIN foreign_link ' . | 
					
						
							|  |  |  |         'WHERE notice.profile_id = foreign_link.user_id ' . | 
					
						
							|  |  |  |         'AND foreign_link.service = 2'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // XXX: What should the limit be?
 | 
					
						
							|  |  |  |     return Notice::getStreamDirect($qry, 0, 100, 0, 0, null, $since); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 04:23:44 +00:00
										 |  |  | function getFacebook() | 
					
						
							| 
									
										
										
										
											2009-01-04 20:04:07 -05:00
										 |  |  | { | 
					
						
							|  |  |  |     $apikey = common_config('facebook', 'apikey'); | 
					
						
							|  |  |  |     $secret = common_config('facebook', 'secret'); | 
					
						
							|  |  |  |     return new Facebook($apikey, $secret); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-11 07:03:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-19 07:24:12 +00:00
										 |  |  | function startFBML($indent = true) | 
					
						
							| 
									
										
										
										
											2009-01-11 07:03:59 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     global $xw; | 
					
						
							|  |  |  |     $xw = new XMLWriter(); | 
					
						
							|  |  |  |     $xw->openURI('php://output'); | 
					
						
							|  |  |  |     $xw->setIndent($indent); | 
					
						
							| 
									
										
										
										
											2009-01-11 08:33:28 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-19 01:34:25 +00:00
										 |  |  | function getFacebookBaseCSS() | 
					
						
							| 
									
										
										
										
											2009-01-19 00:50:45 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-01-18 01:31:39 +00:00
										 |  |  |     # Add a timestamp to the CSS file so Facebook cache wont ignore our changes
 | 
					
						
							| 
									
										
										
										
											2009-01-19 01:59:31 +00:00
										 |  |  |     $ts = filemtime(INSTALLDIR.'/theme/base/css/facebookapp.base.css'); | 
					
						
							| 
									
										
										
										
											2009-01-23 07:22:01 +00:00
										 |  |  |     $cssurl = theme_path('css/facebookapp.base.css', 'base') . "?ts=$ts"; | 
					
						
							| 
									
										
										
										
											2009-01-18 01:31:39 +00:00
										 |  |  |     return $cssurl; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-19 01:34:25 +00:00
										 |  |  | function getFacebookThemeCSS()  | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     # Add a timestamp to the CSS file so Facebook cache wont ignore our changes
 | 
					
						
							| 
									
										
										
										
											2009-01-19 01:59:31 +00:00
										 |  |  |     $ts = filemtime(theme_file('css/facebookapp.theme.css')); | 
					
						
							|  |  |  |     $cssurl = theme_path('css/facebookapp.theme.css') . "?ts=$ts"; | 
					
						
							| 
									
										
										
										
											2009-01-19 01:34:25 +00:00
										 |  |  |     return $cssurl;    | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-18 06:12:47 +00:00
										 |  |  | function getFacebookJS() { | 
					
						
							| 
									
										
										
										
											2009-01-19 00:50:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-18 06:12:47 +00:00
										 |  |  |     # Add a timestamp to the FBJS file so Facebook cache wont ignore our changes
 | 
					
						
							|  |  |  |     $ts = filemtime(INSTALLDIR.'/js/facebookapp.js'); | 
					
						
							| 
									
										
										
										
											2009-01-19 00:50:45 +00:00
										 |  |  |     $jsurl = common_path('js/facebookapp.js') . "?ts=$ts"; | 
					
						
							| 
									
										
										
										
											2009-01-18 06:12:47 +00:00
										 |  |  |     return $jsurl; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 04:23:44 +00:00
										 |  |  | function updateProfileBox($facebook, $flink, $notice) { | 
					
						
							|  |  |  |     $fbaction = new FacebookAction($output='php://output', $indent=true, $facebook, $flink); | 
					
						
							|  |  |  |     $fbaction->updateProfileBox($notice); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |