diff options
author | Zach Copley <zach@controlyourself.ca> | 2009-01-04 20:04:07 -0500 |
---|---|---|
committer | Zach Copley <zach@controlyourself.ca> | 2009-01-04 20:04:07 -0500 |
commit | fd6f9b9d7622f280f92810770deb217eb7301c14 (patch) | |
tree | 63cdbd1aeff69b33a9740360d97cdc4ffda404dd /_darcs/tentative_pristine | |
parent | d57c06b4171fbed9f059c53d66f6b313d9303d6d (diff) |
trac750 Automatically update linked Facebook users' statuses
darcs-hash:20090105010407-7b5ce-559da13720b18e3c570e730326f5e5ef2b2dc1ab.gz
Diffstat (limited to '_darcs/tentative_pristine')
-rw-r--r-- | _darcs/tentative_pristine | 219 |
1 files changed, 215 insertions, 4 deletions
diff --git a/_darcs/tentative_pristine b/_darcs/tentative_pristine index 6a29f612c..15afe3e09 100644 --- a/_darcs/tentative_pristine +++ b/_darcs/tentative_pristine @@ -1,4 +1,215 @@ -hunk ./actions/twitapilaconica.php 118 -+ common_element_start('config'); -hunk ./actions/twitapilaconica.php 135 -+ common_element_end('config'); +hunk ./actions/facebookhome.php 39 +- $facebook = $this->get_facebook(); ++ $facebook = get_facebook(); +hunk ./actions/facebookinvite.php 37 +- $facebook = $this->get_facebook(); ++ $facebook = get_facebook(); +hunk ./actions/facebooksettings.php 37 +- $facebook = $this->get_facebook(); ++ $facebook = get_facebook(); +hunk ./actions/facebooksettings.php 47 ++ $fbml .= '<fb:prompt-permission perms="status_update"><h2>Allow Identi.ca to update my Facebook status</h2></fb:prompt-permission>'; ++ +hunk ./classes/Foreign_link.php 7 +-class Foreign_link extends Memcached_DataObject ++class Foreign_link extends Memcached_DataObject +hunk ./classes/Foreign_link.php 16 +- public $credentials; // varchar(255) ++ public $credentials; // varchar(255) +hunk ./classes/Foreign_link.php 32 +- static function getByUserID($user_id, $service) { ++ static function getByUserID($user_id, $service) ++ { +hunk ./classes/Foreign_link.php 43 +- return null; ++ return null; +hunk ./classes/Foreign_link.php 45 +- +- static function getByForeignID($foreign_id, $service) { ++ ++ static function getByForeignID($foreign_id, $service) ++ { +hunk ./classes/Foreign_link.php 57 +- return null; ++ return null; +hunk ./classes/Foreign_link.php 59 +- ++ +hunk ./classes/Foreign_link.php 62 +- { ++ { +hunk ./classes/Foreign_link.php 66 +- ++ +hunk ./classes/Foreign_link.php 68 +- ++ +hunk ./classes/Foreign_link.php 72 +- +- return null; ++ ++ return null; +hunk ./classes/Foreign_link.php 75 +- ++ +hunk ./classes/Foreign_link.php 80 +- ++ +hunk ./lib/facebookaction.php 22 +-require_once(INSTALLDIR.'/extlib/facebook/facebook.php'); ++require_once(INSTALLDIR.'/lib/facebookutil.php'); ++ +hunk ./lib/facebookaction.php 32 +- +- function get_facebook() +- { +- $apikey = common_config('facebook', 'apikey'); +- $secret = common_config('facebook', 'secret'); +- return new Facebook($apikey, $secret); +- } +addfile ./lib/facebookutil.php +hunk ./lib/facebookutil.php 1 ++<?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/>. ++ */ ++ ++require_once(INSTALLDIR.'/extlib/facebook/facebook.php'); ++ ++// Gets all the notices from users with a Facebook link since a given ID ++function get_facebook_notices($since) ++{ ++ $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); ++} ++ ++function get_facebook() ++{ ++ $apikey = common_config('facebook', 'apikey'); ++ $secret = common_config('facebook', 'secret'); ++ return new Facebook($apikey, $secret); ++} +addfile ./scripts/update_facebook.php +hunk ./scripts/update_facebook.php 1 ++#!/usr/bin/env php ++<?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/>. ++ */ ++ ++# Abort if called from a web server ++if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { ++ print "This script must be run from the command line\n"; ++ exit(); ++} ++ ++define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); ++define('LACONICA', true); ++ ++require_once(INSTALLDIR . '/lib/common.php'); ++require_once(INSTALLDIR . '/lib/facebookutil.php'); ++ ++// For storing the last run date-time ++$last_updated_file = "/home/zach/laconica/scripts/facebook_last_updated"; ++ ++// Lock file name ++$tmp_file = "/tmp/update_facebook.lock"; ++ ++// Make sure only one copy of the script is running at a time ++if (!($tmp_file = @fopen($tmp_file, "w"))) ++{ ++ die("Can't open lock file. Script already running?"); ++} ++ ++$facebook = get_facebook(); ++ ++$current_time = time(); ++ ++$notice = get_facebook_notices(get_last_updated()); ++ ++while($notice->fetch()) { ++ ++ $flink = Foreign_link::getByUserID($notice->profile_id, 2); ++ $fbuid = $flink->foreign_id; ++ ++ update_status($fbuid, $notice); ++ ++} ++ ++update_last_updated($current_time); ++ ++exit(0); ++ ++ ++ ++function update_status($fbuid, $notice) { ++ global $facebook; ++ ++ try { ++ ++ $result = $facebook->api_client->users_setStatus($notice->content, $fbuid, false, true); ++ ++ } catch(FacebookRestClientException $e){ ++ ++ print_r($e); ++ } ++ ++} ++ ++function get_last_updated(){ ++ global $last_updated_file, $current_time; ++ ++ $file = fopen($last_updated_file, 'r'); ++ ++ if ($file) { ++ $last = fgets($file); ++ } else { ++ print "Unable to read $last_updated_file. Using current time.\n"; ++ return $current_time; ++ } ++ ++ fclose($file); ++ ++ return $last; ++} ++ ++function update_last_updated($time){ ++ global $last_updated_file; ++ $file = fopen($last_updated_file, 'w') or die("Can't open $last_updated_file for writing!"); ++ fwrite($file, $time); ++ fclose($file); ++} |