diff options
author | Zach Copley <zach@controlyourself.ca> | 2009-01-04 23:02:12 -0500 |
---|---|---|
committer | Zach Copley <zach@controlyourself.ca> | 2009-01-04 23:02:12 -0500 |
commit | e0fbf02bbf516db10070bddaabbbaea31d336cda (patch) | |
tree | c44b562a6a8bb73766884f2539928b2fb6209729 /_darcs/tentative_pristine | |
parent | fd6f9b9d7622f280f92810770deb217eb7301c14 (diff) |
trac750 configurable sync flags for Facebook app (noticesync, replysync)
darcs-hash:20090105040212-7b5ce-37f6195649dc673241e4566a93183b13e428d98f.gz
Diffstat (limited to '_darcs/tentative_pristine')
-rw-r--r-- | _darcs/tentative_pristine | 428 |
1 files changed, 225 insertions, 203 deletions
diff --git a/_darcs/tentative_pristine b/_darcs/tentative_pristine index 15afe3e09..a69792432 100644 --- a/_darcs/tentative_pristine +++ b/_darcs/tentative_pristine @@ -1,215 +1,237 @@ -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 +hunk ./actions/facebookhome.php 73 - -- function get_facebook() +- # $this->set_flags($flink, $noticesync, $replysync, $friendsync); ++ $flink->set_flags(true, false, false); +hunk ./actions/facebooksettings.php 31 +- $this->display(); ++ if ($this->arg('save')) { ++ $this->save_settings(); ++ } else { ++ $this->show_form(); ++ } +hunk ./actions/facebooksettings.php 38 +- function display() - { -- $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); ++ function save_settings() { + -+ } catch(FacebookRestClientException $e){ ++ $noticesync = $this->arg('noticesync'); ++ $replysync = $this->arg('replysync'); +hunk ./actions/facebooksettings.php 45 ++ $fbuid = $facebook->require_login(); + -+ print_r($e); -+ } ++ $flink = Foreign_link::getByForeignID($fbuid, 2); // 2 == Facebook ++ ++ $original = clone($flink); ++ $flink->set_flags($noticesync, $replysync, false); ++ $result = $flink->update($original); + -+} ++ if ($result) { ++ echo '<fb:success message="Sync preferences saved." />'; ++ } +hunk ./actions/facebooksettings.php 57 ++ $this->show_form(); + -+function get_last_updated(){ -+ global $last_updated_file, $current_time; ++ } + -+ $file = fopen($last_updated_file, 'r'); ++ function show_form() { + -+ if ($file) { -+ $last = fgets($file); -+ } else { -+ print "Unable to read $last_updated_file. Using current time.\n"; -+ return $current_time; -+ } ++ $facebook = get_facebook(); +hunk ./actions/facebooksettings.php 66 ++ $flink = Foreign_link::getByForeignID($fbuid, 2); // 2 == Facebook + -+ fclose($file); ++ $this->show_header('Settings'); + -+ return $last; -+} +hunk ./actions/facebooksettings.php 71 +- .'<h2>Add an Identi.ca box to your profile!</h2>' ++ .'<h2>Add an Identi.ca box to my profile</h2>' +hunk ./actions/facebooksettings.php 75 +- +hunk ./actions/facebooksettings.php 77 +- $this->show_header('Settings'); ++ $fbml .= '<form method="post" id="facebook_settings">' ++ .'<h2>Sync preferences</h2>' ++ .'<p>'; ++ ++ if ($flink->noticesync & FOREIGN_NOTICE_SEND) { ++ $fbml .= '<input name="noticesync" type="checkbox" class="checkbox" id="noticesync" checked="checked"/>'; ++ } else { ++ $fbml .= '<input name="noticesync" type="checkbox" class="checkbox" id="noticesync">'; ++ } ++ ++ $fbml .= '<label class="checkbox_label" for="noticesync">Automatically update my Facebook status with my notices.</label>' ++ .'</p>' ++ .'<p>'; ++ ++ if ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) { ++ $fbml .= '<input name="replysync" type="checkbox" class="checkbox" id="replysync" checked="checked"/>'; ++ } else { ++ $fbml .= '<input name="replysync" type="checkbox" class="checkbox" id="replysync"/>'; ++ } ++ ++ $fbml .= '<label class="checkbox_label" for="replysync">Send "@" replies to Facebook.</label>' ++ .'</p>' ++ .'<p>' ++ .'<input type="submit" id="save" name="save" class="submit" value="Save"/>' ++ .'</p>' ++ .'</form>'; +hunk ./actions/facebooksettings.php 107 +- +hunk ./actions/twittersettings.php 254 +- $this->set_flags($flink, $noticesync, $replysync, $friendsync); ++ $flink->set_flags($noticesync, $replysync, $friendsync); +hunk ./actions/twittersettings.php 326 +- $this->set_flags($flink, $noticesync, $replysync, $friendsync); ++ $flink->set_flags($noticesync, $replysync, $friendsync); +hunk ./actions/twittersettings.php 366 +- function set_flags(&$flink, $noticesync, $replysync, $friendsync) +- { +- if ($noticesync) { +- $flink->noticesync |= FOREIGN_NOTICE_SEND; +- } else { +- $flink->noticesync &= ~FOREIGN_NOTICE_SEND; +- } +- +- if ($replysync) { +- $flink->noticesync |= FOREIGN_NOTICE_SEND_REPLY; +- } else { +- $flink->noticesync &= ~FOREIGN_NOTICE_SEND_REPLY; +- } +- +- if ($friendsync) { +- $flink->friendsync |= FOREIGN_FRIEND_RECV; +- } else { +- $flink->friendsync &= ~FOREIGN_FRIEND_RECV; +- } +- +- $flink->profilesync = 0; +- } +hunk ./classes/Foreign_link.php 59 + -+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); -+} ++ function set_flags($noticesync, $replysync, $friendsync) ++ { ++ if ($noticesync) { ++ $this->noticesync |= FOREIGN_NOTICE_SEND; ++ } else { ++ $this->noticesync &= ~FOREIGN_NOTICE_SEND; ++ } ++ ++ if ($replysync) { ++ $this->noticesync |= FOREIGN_NOTICE_SEND_REPLY; ++ } else { ++ $this->noticesync &= ~FOREIGN_NOTICE_SEND_REPLY; ++ } ++ ++ if ($friendsync) { ++ $this->friendsync |= FOREIGN_FRIEND_RECV; ++ } else { ++ $this->friendsync &= ~FOREIGN_FRIEND_RECV; ++ } ++ ++ $this->profilesync = 0; ++ } +hunk ./lib/facebookaction.php 40 +- $style = '<style> +- #notices { +- clear: both; +- margin: 0 auto; +- padding: 0; +- list-style-type: none; +- width: 600px; +- border-top: 1px solid #dec5b5; +- } +- #notices a:hover { +- text-decoration: underline; +- } +- .notice_single { +- clear: both; +- display: block; +- margin: 0; +- padding: 5px 5px 5px 0; +- min-height: 48px; +- font-family: Georgia, "Times New Roman", Times, serif; +- font-size: 13px; +- line-height: 16px; +- border-bottom: 1px solid #dec5b5; +- background-color:#FCFFF5; +- opacity:1; +- } +- .notice_single:hover { +- background-color: #f7ebcc; +- } +- .notice_single p { +- display: inline; +- margin: 0; +- padding: 0; +- } +- </style>'; ++ $style = '<style> ++ #notices { ++ clear: both; ++ margin: 0 auto; ++ padding: 0; ++ list-style-type: none; ++ width: 600px; ++ border-top: 1px solid #dec5b5; ++ } ++ #notices a:hover { ++ text-decoration: underline; ++ } ++ .notice_single { ++ clear: both; ++ display: block; ++ margin: 0; ++ padding: 5px 5px 5px 0; ++ min-height: 48px; ++ font-family: Georgia, "Times New Roman", Times, serif; ++ font-size: 13px; ++ line-height: 16px; ++ border-bottom: 1px solid #dec5b5; ++ background-color:#FCFFF5; ++ opacity:1; ++ } ++ .notice_single:hover { ++ background-color: #f7ebcc; ++ } ++ .notice_single p { ++ display: inline; ++ margin: 0; ++ padding: 0; ++ } ++ </style>'; +hunk ./lib/facebookaction.php 75 +- $html = $this->render_notice($notice); ++ $html = Facebookaction::Aender_notice($notice); +hunk ./lib/facebookaction.php 77 +- $fbml = "<fb:wide>$content $html</fb:wide>"; +- $fbml .= "<fb:narrow>$content $html</fb:narrow>"; ++ ++ $fbml = "<fb:wide>$style $html</fb:wide>"; ++ $fbml .= "<fb:narrow>$style $html</fb:narrow>"; +hunk ./lib/facebookaction.php 81 +- $fbml_main = "<fb:narrow>$content $html</fb:narrow>"; ++ $fbml_main = "<fb:narrow>$style $html</fb:narrow>"; +hunk ./scripts/update_facebook.php 55 ++ $content = $notice->content; +hunk ./scripts/update_facebook.php 57 +- update_status($fbuid, $notice); ++ if (($flink->noticesync & FOREIGN_NOTICE_SEND) == FOREIGN_NOTICE_SEND) { +hunk ./scripts/update_facebook.php 59 ++ // If it's not a reply, or if the user WANTS to send replies... ++ if (!preg_match('/@[a-zA-Z0-9_]{1,15}\b/u', $content) || ++ (($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) == FOREIGN_NOTICE_SEND_REPLY)) { ++ update_status($fbuid, $content); ++ } ++ } +hunk ./scripts/update_facebook.php 73 +-function update_status($fbuid, $notice) { ++function update_status($fbuid, $content) { +hunk ./scripts/update_facebook.php 77 +- +- $result = $facebook->api_client->users_setStatus($notice->content, $fbuid, false, true); +- ++ $result = $facebook->api_client->users_setStatus($content, $fbuid, false, true); +hunk ./scripts/update_facebook.php 79 +- +hunk ./scripts/update_facebook.php 81 +- |