From 70976ca3147e86d40bbc19cc25b152cb52ce6004 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 24 Feb 2012 22:42:47 +0100 Subject: [PATCH 01/41] added hint to SN/T connector settings about colliding privacy settings --- statusnet.tgz | Bin 26273 -> 16108 bytes statusnet/statusnet.php | 3 +++ twitter.tgz | Bin 9596 -> 9750 bytes twitter/twitter.php | 3 +++ 4 files changed, 6 insertions(+) diff --git a/statusnet.tgz b/statusnet.tgz index 3f248156943b5f594a78c840b05f8996033c7f63..05d56d88222be4e8b1c0154f2493d4fcdb54534f 100755 GIT binary patch literal 16108 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 ogvM392co8hSatK(J~Z_@23kUcOV diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index a76399260..8f2fbf819 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -327,6 +327,9 @@ function statusnet_settings(&$a,&$s) { $details = $connection->get('account/verify_credentials'); $s .= ''; $s .= '

'. t('If enabled all your public postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.') .'

'; + if ($a->user['hidewall']) { + $s .= '

'. t('Note: Due your privacy settings (Hide your profile details from unknown viewers?) the link potentially included in public postings relayed to StatusNet will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.') .'

'; + } $s .= '
'; $s .= ''; $s .= ''; diff --git a/twitter.tgz b/twitter.tgz index 1b93943c2117c0b40715b7735dd0fe165fa34699..e3fbdec50cd041db5154c1a6d883b4341b6151a2 100755 GIT binary patch literal 9750 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 literal 9596 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'account/verify_credentials'); $s .= '

'. t('Currently connected to: ') .''.$details->screen_name.'
'.$details->description.'

'; $s .= '

'. t('If enabled all your public postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.') .'

'; + if ($a->user['hidewall']) { + $s .= '

'. t('Note: Due your privacy settings (Hide your profile details from unknown viewers?) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.') .'

'; + } $s .= '
'; $s .= ''; $s .= ''; From 2e6e68c24292ac3ce19ed8af30a47a4428d7f434 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 24 Feb 2012 20:06:18 -0800 Subject: [PATCH 02/41] update tgz --- facebook.tgz | Bin 10968 -> 10958 bytes piwik.tgz | Bin 3208 -> 3262 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/facebook.tgz b/facebook.tgz index 582d4e5a0e4a9997accc1b09712f10fa6458f465..24fccdaf51555ab9c9dcfcf11a3bf1859e5efc34 100755 GIT binary patch literal 10958 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 literal 10968 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 B{?-5h diff --git a/piwik.tgz b/piwik.tgz index 2e572dc16a885970edfb88539df6d12e4e02b14f..65c92244a6d4f3f3dcf323f94d30e3c5bc523613 100755 GIT binary patch literal 3262 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 literal 3208 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 From c51ae6551d9d3fd0afe1a8ea5c48663de05feca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Sun, 26 Feb 2012 14:45:26 +0000 Subject: [PATCH 03/41] Support for FB Real-Time Updates according to http://developers.facebook.com/docs/reference/api/realtime/ . Plugin needs to be deactivated and activated again in order to enable the settings --- facebook/facebook.php | 283 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 282 insertions(+), 1 deletion(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index 6b6c7f844..cc8b85cdb 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -76,10 +76,90 @@ function facebook_module() {} -/* If a->argv[1] is a nickname, this is a callback from Facebook oauth requests. */ +// If a->argv[1] is a nickname, this is a callback from Facebook oauth requests. +// If $_REQUEST["realtime_cb"] is set, this is a callback from the Real-Time Updates API function facebook_init(&$a) { + + if (x($_REQUEST, "realtime_cb") && x($_REQUEST, "realtime_cb")) { + logger("facebook_init: Facebook Real-Time callback called", LOGGER_DEBUG); + + if (x($_REQUEST["hub_verify_token"])) { + // this is the verification callback while registering for real time updates + + $verify_token = get_config('facebook', 'cb_verify_token'); + if ($verify_token != $_REQUEST["hub_verify_token"]) { + logger('facebook_init: Wrong Facebook Callback Verifier - expected ' . $verify_token . ', got ' . $_REQUEST["hub_verify_token"]); + return; + } + + if (x($_REQUEST, "hub_challenge")) { + logger('facebook_init: Answering Challenge: ' . $_REQUEST["hub_challenge"], LOGGER_DATA); + echo $_REQUEST["hub_challenge"]; + die(); + } + } + + require_once('include/items.php'); + + // this is a status update + $content = file_get_contents("php://input"); + if (is_numeric($content)) $content = file_get_contents("php://input"); + $js = json_decode($content); + logger(print_r($js, true), LOGGER_DATA); + + if (!isset($js->object) || $js->object != "user" || !isset($js->entry)) { + logger('facebook_init: Could not parse Real-Time Update data', LOGGER_DEBUG); + return; + } + + $affected_users = array("feed" => array(), "friends" => array(), "activities" => array()); + + foreach ($js->entry as $entry) { + $fbuser = $entry->uid; + foreach ($entry->changed_fields as $field) { + if (!isset($affected_users[$field])) { + logger('facebook_init: Unknown field "' . $field . '"'); + continue; + } + if (in_array($fbuser, $affected_users[$field])) continue; + switch ($field) { + case "feed": + logger('facebook_init: FB-User ' . $fbuser . ' / feed', LOGGER_DEBUG); + + $r = q("SELECT `uid` FROM `pconfig` WHERE `cat` = 'facebook' AND `k` = 'self_id' AND `v` = '%s' LIMIT 1", dbesc($fbuser)); + if(! count($r)) + continue; + $uid = $r[0]['uid']; + + $access_token = get_pconfig($uid,'facebook','access_token'); + if(! $access_token) + return; + + if(! get_pconfig($uid,'facebook','no_wall')) { + $private_wall = intval(get_pconfig($uid,'facebook','private_wall')); + $s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token); + if($s) { + $j = json_decode($s); + logger('facebook_init: wall: ' . print_r($j,true), LOGGER_DATA); + fb_consume_stream($uid,$j,($private_wall) ? false : true); + } + } + + break; + case "friend": + // @TODO + break; + case "activities": + //@TODO + break; + } + $affected_users[$field][] = $fbuser; + } + } + } + if($a->argc != 2) return; $nick = $a->argv[1]; @@ -479,6 +559,32 @@ function facebook_plugin_settings(&$a,&$b) { } + +function facebook_plugin_admin(&$a, &$o){ + + $activated = false; + $access_token = fb_get_app_access_token(); + if ($access_token) { + $ret = facebook_subscriptions_get(); + if (is_array($ret)) foreach ($ret as $re) if (is_object($re) && $re->object == "user") $activated = true; + } + if ($activated) { + $o = t('Real-Time Updates are activated.') . '

'; + $o .= ''; + } else { + $o = t('Real-Time Updates not activated.') . '
'; + } +} + +function facebook_plugin_admin_post(&$a, &$o){ + if (x($_REQUEST,'real_time_activate')) { + facebook_subscription_add_users(); + } + if (x($_REQUEST,'real_time_deactivate')) { + facebook_subscription_del_users(); + } +} + function facebook_jot_nets(&$a,&$b) { if(! local_user()) return; @@ -1153,3 +1259,178 @@ function fb_consume_stream($uid,$j,$wall = false) { } } + +function fb_get_app_access_token() { + + $acc_token = get_config('facebook','app_access_token'); + + if ($acc_token !== false) return $acc_token; + + $appid = get_config('facebook','appid'); + $appsecret = get_config('facebook', 'appsecret'); + + if ($appid === false || $appsecret === false) { + logger('fb_get_app_access_token: appid and/or appsecret not set', LOGGER_DEBUG); + return false; + } + + $x = fetch_url('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . "&grant_type=client_credentials"); + + if(strpos($x,'access_token=') !== false) { + logger('fb_get_app_access_token: returned access token: ' . $x, LOGGER_DATA); + + $token = str_replace('access_token=', '', $x); + if(strpos($token,'&') !== false) + $token = substr($token,0,strpos($token,'&')); + + if ($token == "") { + logger('fb_get_app_access_token: empty token: ' . $x, LOGGER_DEBUG); + return false; + } + set_config('facebook','app_access_token',$token); + return $token; + } else { + logger('fb_get_app_access_token: response did not contain an access_token: ' . $x, LOGGER_DATA); + return false; + } +} + +function facebook_subscription_del_users() { + $a = get_app(); + $access_token = fb_get_app_access_token(); + + $url = "https://graph.facebook.com/" . get_config('facebook', 'appid' ) . "/subscriptions?access_token=" . $access_token; + delete_url($url); +} + +function facebook_subscription_add_users() { + + $a = get_app(); + $access_token = fb_get_app_access_token(); + + $url = "https://graph.facebook.com/" . get_config('facebook', 'appid' ) . "/subscriptions?access_token=" . $access_token; + + list($usec, $sec) = explode(" ", microtime()); + $verify_token = sha1($usec . $sec . rand(0, 999999999)); + set_config('facebook', 'cb_verify_token', $verify_token); + + $cb = $a->get_baseurl() . '/facebook/?realtime_cb=1'; + + $j = post_url($url,array( + "object" => "user", + "fields" => "feed,friends,activities", + "callback_url" => $cb, + "verify_token" => $verify_token, + )); + del_config('facebook', 'cb_verify_token'); + + if ($j) { + logger("Facebook reponse: " . $j, LOGGER_DATA); + }; +} + +function facebook_subscriptions_get() { + + $access_token = fb_get_app_access_token(); + + $url = "https://graph.facebook.com/" . get_config('facebook', 'appid' ) . "/subscriptions?access_token=" . $access_token; + $j = fetch_url($url); + $ret = null; + if ($j) { + $x = json_decode($j); + if (isset($x->data)) $ret = $x->data; + } + return $ret; +} + + + + + + + +// DELETE-request to $url + +if(! function_exists('delete_url')) { +function delete_url($url,$headers = null, &$redirects = 0, $timeout = 0) { + $a = get_app(); + $ch = curl_init($url); + if(($redirects > 8) || (! $ch)) + return false; + + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); + curl_setopt($ch, CURLOPT_USERAGENT, "Friendica"); + + if(intval($timeout)) { + curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); + } + else { + $curl_time = intval(get_config('system','curl_timeout')); + curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); + } + + if(defined('LIGHTTPD')) { + if(!is_array($headers)) { + $headers = array('Expect:'); + } else { + if(!in_array('Expect:', $headers)) { + array_push($headers, 'Expect:'); + } + } + } + if($headers) + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + + $check_cert = get_config('system','verifyssl'); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false)); + $prx = get_config('system','proxy'); + if(strlen($prx)) { + curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); + curl_setopt($ch, CURLOPT_PROXY, $prx); + $prxusr = get_config('system','proxyuser'); + if(strlen($prxusr)) + curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr); + } + + $a->set_curl_code(0); + + // don't let curl abort the entire application + // if it throws any errors. + + $s = @curl_exec($ch); + + $base = $s; + $curl_info = curl_getinfo($ch); + $http_code = $curl_info['http_code']; + + $header = ''; + + // Pull out multiple headers, e.g. proxy and continuation headers + // allow for HTTP/2.x without fixing code + + while(preg_match('/^HTTP\/[1-2].+? [1-5][0-9][0-9]/',$base)) { + $chunk = substr($base,0,strpos($base,"\r\n\r\n")+4); + $header .= $chunk; + $base = substr($base,strlen($chunk)); + } + + if($http_code == 301 || $http_code == 302 || $http_code == 303) { + $matches = array(); + preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); + $url = trim(array_pop($matches)); + $url_parsed = @parse_url($url); + if (isset($url_parsed)) { + $redirects++; + return delete_url($url,$headers,$redirects,$timeout); + } + } + $a->set_curl_code($http_code); + $body = substr($s,strlen($header)); + + $a->set_curl_headers($header); + + curl_close($ch); + return($body); +}} \ No newline at end of file From b83a5a74241c2abeea45ad674fed958468896b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Sun, 26 Feb 2012 20:36:24 +0000 Subject: [PATCH 04/41] Bugfix --- facebook/facebook.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index cc8b85cdb..039b27ff9 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -84,7 +84,7 @@ function facebook_init(&$a) { if (x($_REQUEST, "realtime_cb") && x($_REQUEST, "realtime_cb")) { logger("facebook_init: Facebook Real-Time callback called", LOGGER_DEBUG); - if (x($_REQUEST["hub_verify_token"])) { + if (x($_REQUEST, "hub_verify_token")) { // this is the verification callback while registering for real time updates $verify_token = get_config('facebook', 'cb_verify_token'); From b2becc7552b1c1ccd9f4a4b27df5afde4d6120e0 Mon Sep 17 00:00:00 2001 From: Leonard Date: Sun, 26 Feb 2012 21:38:01 +0100 Subject: [PATCH 05/41] Updated the Readme (and added the "Select how your app integrates with Facebook" section) --- facebook/README | 2 ++ 1 file changed, 2 insertions(+) diff --git a/facebook/README b/facebook/README index ee7e489ba..9e381e7dc 100755 --- a/facebook/README +++ b/facebook/README @@ -17,6 +17,8 @@ Installing the Friendica/Facebook connector Replace with the settings Facebook gives you. d. Navigate to Set Web->Site URL & Domain -> Website Settings. Set Site URL to yoursubdomain.yourdomain.com. Set Site Domain to your yourdomain.com. + e. Chose "Website" (the url should be your site URL with a trailing slash) in the + "Select how your app integrates with Facebook" section. 2. Enable the facebook plugin by including it in .htconfig.php - e.g. $a->config['system']['addon'] = 'plugin1,plugin2,facebook'; 3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page. From 318b9e6806907368975e1c331b6c3c119efd5ac9 Mon Sep 17 00:00:00 2001 From: Leonard Lausen Date: Sun, 26 Feb 2012 21:42:44 +0100 Subject: [PATCH 06/41] created tgz (facebook) --- facebook.tgz | Bin 10958 -> 11028 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 facebook.tgz diff --git a/facebook.tgz b/facebook.tgz old mode 100755 new mode 100644 index 24fccdaf51555ab9c9dcfcf11a3bf1859e5efc34..2cb406a1a615a0be427fd1ec02c4f3d5490c8492 GIT binary patch delta 10996 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 blv+>yJa}~epRAgAz7yQa;FzF)Jx2(rWFr= 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 G*#7{9pyn$8 From bce0e4f5a0e0d1bd72c5511cb284ee8e334ccd18 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 27 Feb 2012 17:17:22 -0800 Subject: [PATCH 07/41] add gnot plugin --- gnot.tgz | Bin 0 -> 1388 bytes gnot/gnot.css | 16 ++++++++ gnot/gnot.php | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+) create mode 100644 gnot.tgz create mode 100755 gnot/gnot.css create mode 100755 gnot/gnot.php diff --git a/gnot.tgz b/gnot.tgz new file mode 100644 index 0000000000000000000000000000000000000000..fbf7f26721022228eadac4aecc59b449694cc4a9 GIT binary patch literal 1388 zcmV-y1(W(8iwFP%D@;!S1MOFTZ`(Ey&A;}ixT#rX7l~y%aZ)&Of}(4?0ZmdM!G<9% z3|gXOHWDdNl#^iHci$Z)*;dmc-H)^bszYpq)bV(H_wG@Sq%z*d!&)D0e}A+w9PRE8 zhr1j7(cW-xcVOpB+ZYV?hdce@Xo!A&9PI3E!03VVvX*CtX@HG{`H|2IAwT1nMx(vK z)2C0rMowSRBC0=q_53V*pgr!Z|FA!*>c2A>Q2lpy`&j?}1Lae*@4Wu)M^yanfM-7Z z(QYM7M?!ATlrbt9!=Rtu9JK#zmtHZO@tEAgSTQq(n1|+|-MSWmnU7)Ex85Je7>?Fs z+*yqe+TR+4@7PxTpU%?<+T))7AMFg*^?%p)|6srA|F2<($5{8a_vA?%p1>(f_!wRx z8))$${NSI5;t}T3 zrv!jlJQWh_8ONP23QfDEc_cE!^>nV(RmV-^9F=LBabtvxGItAH76eLqwJxA(8*Ay; zJ-9E_G*y}T(s+gQCxUVd=TEsCV42hrR8i(9naES1BWUyed2q4e62Il)Jm$nzFr9=ps zqRm0&n)V1qlxy33RZ0*ljhhNg4ZE$#sc4gW`D@^IHrbZVo2bwdVdn>kmCxcSC4v0- z@Bwh@rc)eb%i_76<+DU!UAoVWCEq(dvL^E6JZU2D$@V9T#u4ZDwv`p3OPdacw^;?KKCV$$}Tw zvq~;Tx`Pxxw+Xd2+4d2wxpe0yiRY-x?mOsBz&(tGyaLVRiL=_p0Wh~IpE!o!7!Tj_ z9Y8G)Cyt9iQm6=PHe(sjHK{=lT<_yX!bRllI*{-{u!)0EJK!DBr1Mt4l}>raS9B;m zk)LZ#7X(U-!Lx*Gj75TLK^!R0VqXd;Q1T)ALjH8E;@QPhf6o0Yto#Hz9Xr#7V{oCI zo;c+{4$h6ib%98>tVpI34nJRx2EHD*=&zI6j5FUE;_@EwCV3xM4t~E=sbDht7(2KfL#&@2@vAQOep}U!KMx_7t z4NdE;s^zoy+&6$6;ytHK7Wb~@Qv3o~W@CpAK~+ptnYk})nMx_LjaZQCxI)3Mtc4ab z&CM#b9Xcg-Z3$=U#sP`1DCJ%xl{pRuj@tvMbAeb~i*8S{UO_+R41r!A(J}&GGZrG? zD8q%m!7RrgG4g&I6z + * + * + */ + + +function gnot_install() { + + register_hook('plugin_settings', 'addon/gnot/gnot.php', 'gnot_settings'); + register_hook('plugin_settings_post', 'addon/gnot/gnot.php', 'gnot_settings_post'); + register_hook('enotify_mail', 'addon/gnot/gnot.php', 'gnot_enotify_mail'); + + logger("installed gnot"); +} + + +function gnot_uninstall() { + + unregister_hook('plugin_settings', 'addon/gnot/gnot.php', 'gnot_settings'); + unregister_hook('plugin_settings_post', 'addon/gnot/gnot.php', 'gnot_settings_post'); + unregister_hook('enotify_mail', 'addon/gnot/gnot.php', 'gnot_enotify_mail'); + + + logger("removed gnot"); +} + + + +/** + * + * Callback from the settings post function. + * $post contains the $_POST array. + * We will make sure we've got a valid user account + * and if so set our configuration setting for this person. + * + */ + +function gnot_settings_post($a,$post) { + if(! local_user() || (! x($_POST,'gnot-submit'))) + return; + + set_pconfig(local_user(),'gnot','enable',intval($_POST['gnot'])); + info( t('Gnot settings updated.') . EOL); +} + + +/** + * + * Called from the Plugin Setting form. + * Add our own settings info to the page. + * + */ + + + +function gnot_settings(&$a,&$s) { + + if(! local_user()) + return; + + /* Add our stylesheet to the page so we can make our settings look nice */ + + $a->page['htmlhead'] .= '' . "\r\n"; + + /* Get the current state of our config variable */ + + $gnot = intval(get_pconfig(local_user(),'gnot','enable')); + + $gnot_checked = (($gnot) ? ' checked="checked" ' : '' ); + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('Gnot Settings') . '

'; + $s .= '
'; + $s .= '
' . t("Allows threading of email comment notifications on Gmail and anonymising the subject line.") . '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + /* provide a submit button */ + + $s .= '
'; + +} + + +function gnot_enotify_mail(&$a,&$b) { + if((! $b['uid']) || (! intval(get_pconfig($b['uid'], 'gnot','enable')))) + return; + if($b['type'] == NOTIFY_COMMENT) + $b['subject'] = sprintf( t('[Friendica:Notify] Comment to conversation #%d'), $b['parent']); +} + From 4b35c8e1403c4a0aa1dc62149f93086454a0fe3d Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 27 Feb 2012 23:19:25 -0800 Subject: [PATCH 08/41] minor fixes --- wppost.tgz | Bin 2273 -> 2276 bytes wppost/wppost.php | 5 ++--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/wppost.tgz b/wppost.tgz index 6dad5c117973a78a07fc7ea29a3b82d21bed43aa..b5758f6e6c99366a5a5973d15c866826b072b12d 100755 GIT binary patch delta 2270 zcmV<42qE|35#$knABzY8>VHg600ZqAYj4}g(O<1!F=35R3S?2TEjv&o8EMW<3nUj` z;#>>Ffk2TfiD!yr$)#nZm;ZjVFFs{ka^noFsVy8QlLTcl*EJJ7oUv9d!FAy%XH;9UbC7 z=stliHTXaGf8$TW_4_2Sr#{*D?J4owpjOj_#DTr6tw(l}tisr>u221NUR%3$$;?iD zDmLI>joq1lAKG*PKAF*1jop>!(!~G{y4~moAD4DK_kw*IMg!>arEiT)O=m%zt7&*s zSFx^KS*?%z^j`fz`ru7Jx~b0L#KTiQymb-+erP1Fz5j)?zGwC2_*p^*UYl{5qwJ zFdo2r?~1^C8gi9-m!AeR zxquLVlew2r5>FOkc-1sHjvqRjxYuvo0i)$>`IQbEO4z98Nt}fny`@iMnUCV-SnuI=~1okna zmfvEY2$-K871{kyEoMS_)9oPr(G^e1DjBaRup-N*@X!>of(^Y6lrzgzhTY25WYu9xlOk+ss ztxu8#AzT-_AQ0Je0!auf0*)QP(#Ct4V@jzgAiRRWa|pkGxiRhiF(dn8F6h!<5Zg7s z3iJA2aD}q{k&z2BK$?`28*1SYYQQ2Uvys7Vh^$zkOzniEF{|%r6Kh?%AR!}vFb!A| z*Rw|kUI)z9Y|*%kF9Rb#?OS#{Je!loF$pN1+Qupq&iKJZNTR=DkNGmmk0qSzZkHT_ zR7M^TR>kMR;1r}7(37ntSF$GOR8pkC`e9{uS$3&;>po2&Q-%G?NEj2&LrrK~@K7Wf z57td?LC?_nA&T*ygm{j>Uc7&Qr$U|FV6kSs>kO~*-0exNG^p5Tqos3YsPt5ri$flD znADYK`crm6h}33?uWCX(SCtbrm#<$FUv!iW zr}m7xPxHv$##|Z0LfOkrHOaT7y|}T8smF`l_cdAeMrUJ_mEQrCO{VtNm@H4^ZA_Li zlqSocGqdGO6|-g4<_XNkUwCb7vi$W}*<5UWjj3=#hR+}0ZD%RYYkgpet%`Mc9eoPR zWUu`;H&6LZVZ}yjGc#0w{q@827P2dEE1PA!?<`=G0#2oj6))AtmomJPu;0A)Tmm-8 zSB=w@Qta|JxrYQrW@{+-s$$nDo>?swD|EKFo_i^F&;g(LsxUPRA9>R3SogK6d_X7; zDUDrhR&Sbnlk*RsE>tfg1)D8_v72nzb+y$vz`1=@??lY!h5>HY2=CX9W?5cD^kFW^ek%WQ3?2 zo-mtf*j9D&f!}|Bhtj#>*$5bY>TwfQ>Dg8kd)GJ^;P8UPe8FalRHT*WX27OY2Fu1X zLe^Z1?oG7jisAF;z|!L5*)N~Z^30H^EHh3a3r>mjrGoUeg*|+?r4E*(*^xI%aO82= z5mC@~ikC(VZotwRdanvYXugw;pe6euQbJ>&1j6pfJ&b67!u^sB=*4wj3EQ&LuG^EE z@=r5s>rmj90#z!(IJtzqb8-t_FNOg}abjW%lxHImMJx)5TU5Aqz-KsS#`sq`VrJEQ zNQ<$j;+BVPo#NgxEsOU%iqZoU+8yMZ3}<(cW^);j%%b8LjwMaxGb50Jn=@bwZc$muH;s?jH3h4@h&!fARjI$ra+yEIm%4@QBHx+KX8nF5xe+ zhtc9WHp@2NR!Baqs_w~`SyD;|gnZ6^8oIa0y@+lJ s&!6AQ>;1p=W44pM2p5yf2nmzR2niC00ZqA{ZHFSmS4$VG4-N4sX`n>16-N}Rb8&TQhViE z_I9OGMUFj5W^rtvJtm;r{_pqZ%bx*auJp9pc|szdd0+Fs<~@5IMPWj%ou`C8!0}+P zb1-;$d~on`r$0D4IC^RGbqPDReSBc|4-O9xk9PX@!J&PBxPt~ys+EK^p-zm@&dPBY zB)%rW9eB}VaAcpHoO}b0_tw z*g*ej?auvw(4j-*<2ilR+FcWmE{Eu#-;ZwKaplAd671738X}u7eQjlGx=ZX{&BB|y zigo46YHd)cuFAc#lXSKsoT!90kZAvJS3U~L`5!H#Cy;S}{@X|JSE>Jy|F+Km?*XGz z@Oi6cy?D_=FVH_AkA~=1$er^TCkZ--pg?cJAiyqv4P%D!BTn3yM3jWVP;Aq%K+q0j z8d_H7sGb|HtSAoW#K+bOkS9QGwOaEuaG8Ec1oe~z;9}ozcOY{S zK#UiEB%wH-F2nGuZE_qxbRFO9q8v=e^TNQY|Cx8VLiIeFKzP&i9MA5)C>A);2{ zHGasoQ)bm}^CYXY^i#OvOLqDeHma~y26}87)T^C}f%fw~r~7G&5T$VC-9}ilf>zW(to;+e%>wwvsEgF~cWnko|eansqXLHjy#sP&>J5Xi9IX{>PN$^)pm@kw3Si-qpv*Zw@ zGV*w^Dn1VeryzxZo;H?T$(o!~Ns$8Uhn3l7*`?;K`!qqBD(qKA!kBO#YC>zkLy=@W zSU1^#o}u$Y6yrS!;T%6*ynm;ELLJ{gv1YyN9Io=*?MbaPsMu$trF&(l^i-J3LmqXI z)RkuXQ+7d!)MkjUYC?#o%88oG*Rc~tIIam2BXu30uN&+b*-loklxk-jwc75V^BYR( z$N5x+iYizTnwP@+N~2MzfIPERB(j9A%HTz>XmQua4xB%$hW8mQdu_3Qwb{xqI?9Gq zdq&--d1N;+SH`eV_Ht8A^KEG_ZmeSJ@gnzaO_sgU+1g~~cR*#6sl5#*%M-bY$ufr0 zWchPuwtT5#wyfGbf!X*AudPj%zaA@_i>+@k6->zJmyhq7S&H-899UwjVjW&bpTaWP zYrpNyQ+`uev60%$3{`)B{V=;l*_GGGW*P503)r-PQz>J`OZD-k46Y>TH?N6@k%Q!` z##u@!ba~s{LxLi+H7fV2V%I31SuGVSbhfyedntCn0iXD)Ff|JwdD84y_qD2gKqw9= ztzBqVZ`ym)^ADdcR4*e1n;n6%n{3&2b=5e)xqVi9*8D=|;_+|C9#xL7x#E&;hHC}v`^J(pV<({oNHlM-EUWF)NgRb>ZuXmPB9F}Hn0M){Ai~hjw?)A0%|4rq5OjkR zW-|@js!l%Wk3Ud<>D=hq7%}>ka1&MO*;W*jYZwe*cmZO*;4noh(n@nPf~Hgk%hoeO z)?AD3O|<5U;q&K+rNzgyfBtfoXNE*&nQ@A;;FL(8D@b2D(8KpT>R>sV6Om~GBah3D z2!fg^UK%mD0ZV7FUloSXd?y=0OZEe#gvLG&gx!IA7}11(`z0IDi|f1+c4ejAv?n#? zpJq1Jp};Ezs#Jn;@-Tbng&h8-1<}x0cMa3Z;OPa`MMj&s482>vZF`kBj zi`ym%TtD@Hur-^xp@;d)GtPH+j}poQ(j4($ynkqOh4?c|k5g25gk(|e#XJsI=SDk`Jq@d-7$Ll+r^&K4(7*y<6a3M7vq}WPaP`k5WBYf{oE=gw8%(v|6K6 zws0-Jii|G}yVt)opzHxxD2cE@l5qdzWbn6r`_ednowP-h$v^3On3~5hslUv@skmRDM({?x?Hft{K)i_09D5%fNpDuPtvg08jt`42)(S diff --git a/wppost/wppost.php b/wppost/wppost.php index 5c1482e78..f07861667 100755 --- a/wppost/wppost.php +++ b/wppost/wppost.php @@ -174,8 +174,7 @@ function wppost_send(&$a,&$b) { $post = xmlify($post); $xml = <<< EOT - - + blogger.newPost @@ -194,7 +193,7 @@ EOT; if($wp_blog !== 'test') $x = post_url($wp_blog,$xml); - logger('posted to wordpress: ' . ($x) ? $x : ''); + logger('posted to wordpress: ' . (($x) ? $x : ''), LOGGER_DEBUG); } } From 23e7a30108da87bfe42a39e9a4aa9f02034664bc Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Tue, 28 Feb 2012 02:27:12 -0500 Subject: [PATCH 09/41] added livejournal plugin --- ljpost/ljpost.php | 221 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 ljpost/ljpost.php diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php new file mode 100644 index 000000000..de7567adb --- /dev/null +++ b/ljpost/ljpost.php @@ -0,0 +1,221 @@ + +* Author: Tony Baldwin +*/ + +function ljpost_install() { + register_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + register_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + register_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + register_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + register_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); + +} +function ljpost_uninstall() { + unregister_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + unregister_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + unregister_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + unregister_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); + +// obsolete - remove + unregister_hook('post_local_end', 'addon/ljpost/ljpost.php', 'ljpost_send'); + unregister_hook('plugin_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + unregister_hook('plugin_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); + +} + + + + +function ljpost_jot_nets(&$a,&$b) { + if(! local_user()) + return; + + $lj_post = get_pconfig(local_user(),'ljpost','post'); + if(intval($lj_post) == 1) { + $wp_defpost = get_pconfig(local_user(),'ljpost','post_by_default'); + $selected = ((intval($wp_defpost) == 1) ? ' checked="checked" ' : ''); + $b .= '
' + . t('Post to Livejournal') . '
'; + } +} + + +function ljpost_settings(&$a,&$s) { + + if(! local_user()) + return; + + /* Add our stylesheet to the page so we can make our settings look nice */ + + $a->page['htmlhead'] .= '' . "\r\n"; + + /* Get the current state of our config variables */ + + $enabled = get_pconfig(local_user(),'ljpost','post'); + + $checked = (($enabled) ? ' checked="checked" ' : ''); + + $def_enabled = get_pconfig(local_user(),'ljpost','post_by_default'); + + $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); + +$lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); +$lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); +$lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog'); + + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('LiveJournal Post Settings') . '

'; + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + /* provide a submit button */ + + $s .= '
'; + +} + + +function ljpost_settings_post(&$a,&$b) { + +if(x($_POST,'ljpost-submit')) { + +set_pconfig(local_user(),'ljpost','post',intval($_POST['ljpost'])); +set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); +set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); +set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); +set_pconfig(local_user(),'ljpost','lj_blog',trim($_POST['lj_blog'])); + +} + +} + +function ljpost_post_local(&$a,&$b) { + +// This can probably be changed to allow editing by pointing to a different API endpoint + +if($b['edit']) +return; + +if((! local_user()) || (local_user() != $b['uid'])) +return; + +if($b['private'] || $b['parent']) +return; + + $lj_post = intval(get_pconfig(local_user(),'ljpost','post')); + +$lj_enable = (($lj_post && x($_REQUEST,'ljpost_enable')) ? intval($_REQUEST['ljpost_enable']) : 0); + +if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ljpost','post_by_default'))) +$lj_enable = 1; + + if(! $lj_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'ljpost'; +} + + + + +function ljpost_send(&$a,&$b) { + + if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) + return; + + if(! strstr($b['postopts'],'ljpost')) + return; + + if($b['parent'] != $b['id']) + return; + + +$lj_username = get_pconfig($b['uid'],'ljpost','lj_username'); +$lj_password = get_pconfig($b['uid'],'ljpost','lj_password'); +$lj_blog = get_pconfig($b['uid'],'ljpost','lj_blog'); + +if($lj_username && $lj_password && $lj_blog) { + +require_once('include/bbcode.php'); + +$title = '' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . ''; +$post = $title . bbcode($b['body']); +$post = xmlify($post); + +$year = date('Y') +$month = date('F') +$day = date('l') +$hour = date('H') +$min = date('i') + +$xml = <<< EOT + + +LJ.XMLRPC.postevent + + +year$year +mon$month +day$day +hour$hour +min$min +usejournal$lj_blog +event$post +username$lj_username +password$lj_password +subjectfriendica post +lineendingsunix +ver1 +props + +useragentFriendica +taglistfriendica,crosspost + + + + + +EOT; + +logger('ljpost: data: ' . $xml, LOGGER_DATA); + +if($lj_blog !== 'test') +$x = post_url($lj_blog,$xml); +logger('posted to livejournal: ' . ($x) ? $x : ''); + + } +} From 7740ca3907ff1ffe50d293997fb57dfa4e59e887 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Tue, 28 Feb 2012 02:34:05 -0500 Subject: [PATCH 10/41] added the tarball --- ljpost.tar.gz | Bin 0 -> 2267 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ljpost.tar.gz diff --git a/ljpost.tar.gz b/ljpost.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..b3f354fc337df7e5ff9f9f049aa1bf3b580a1d5a GIT binary patch literal 2267 zcmV<12qgC(iwFo;gG^5V18iz=Z*z1mbYXG;?OJVb+c*-=*YmGng`lzv+ltyvx|iAx zy4`H|7U?zDW)F903PUfn#Y7f;66M6$?SJ1Hilk&)PUK62!(mGVur=g7Gn_XL<-}KW zo(X5~F~ApNXsDA3P=ejSSzi?sV$lW_|UHAFn9yxqet<=af;iZJ^37#zP zT6f?4|LKSe{}&(qc{G0n8R+1n@4nmOfA{5)``q~d;0WmM3-|D7j~qOLE*s-d?*G9F z_`KC}o;_V(rot*BnnkRi zQp1K`1vaPEn&e4`E}ctYhoUFvE3!M7lu4> zHgXB46kKI}=T#kG!UdZ!cuaUYYl@oDB;0~`#l<+G;)bW!Su-%jk!=ACbQFM8A;7y0 zVa@8Mu+mn$VHYeQp!H?Lk$JN2$~^h%&fI`}usb&pAMVf%$gkzn2EY$;s^bvuXFR5Y zk{$%mj4$YYo*bhsA8z$|oKIQuwe7Qp`oM_Cu^#o>_wA?qUiay~uVbH0+D}MfAgIV` zyVH^6A~6M&a6rU|{rF0XAVV^x5b@yA37fX7oL!}p-LZy8FoT_#QIR_3XHL?p`zevZgyIqHea(jkG-^uR|9HC)I zKrG3`GKTY#QmGA`on-D!Dakmwp(OAUGV|bomMfK15WufV!U9V0NR{UFdLv}}WJh8a zN7M`L&xL_wmRy7EcxaV^EM-$cZ-oL}$uOcSFVJSmrX63F5?}oc& zN5QH>Pe!Z8xi>lsR*2~F&XU*CrbJp%qyl}vGMLyX3j_WxMTpS^zZn+9khKA_3y!lp z_p%0|Su_MTlsmBFa=C+QtY;i{@$<#IGacsi7HT!NuM;@COP^;Og+a%C4{(EPOQ)t@ z8NHAp2PwVLQhzijM3LCI^wowK7V2`+D}2+tNxk`;rW>MS&!=(CdP%o%BWA|bE3MqA zT)NrzpUXo^YbcS{#TIq2BDO4scNIsgQUhgb>rljuUY8+@Ue)SBOg*rGsfKr%O@~}_ z!x@em)9E>@&aY*3?_w|mS*d)bvBu@JvY0eiHT`6r`?^NcN!HwGhNH%4dal-JWj^m> zGy|!ORz4fUm83PpnWFOuhQspG+-P!jjlqy!Yb>}flV3la?Pe>9Rv%o&)S7){MSTq0 zEY%^jgMkc7ot5;YF;(5$2!Bb;*|(F`4EmNr2K{Aa&00CDp059WNrU4FI?n|QDe*{_ z`!gnpp9=xqUXwGa;4s!Et6gg`YgPBGN!3bii1p|z(E~2{D5-_1F@V%g&9?4pS>;us zdR=Kj&wAV5AD_Sfc%ge5CD-oA1zE%1tE+DX66=$m{oH|8pdm)Ji`s-MW1%r;%uglI0@^;R_%=jHANysJ>Dm!$nf^cJ((=tZ({ZBUXfnqIlmjU|v zg@^q9J6YK=c`_u(oHJ>f6=tN*Q?`KH09;srQxZJXU`5W_U0Fp&<4b|=ri*s1XvHT5kW~(t?@^xv8jh-8M#p#I1=Cw^?{VcQw~a+>?*!4R5;D z`KAswR$O?~m}U2wwi~28%kHzUqjYXC1(c%xsLu>3m6FzKK~;nTT>SRjR%g*MR#5M_ zxUfOJ?2@zhZ{MDN82|YC;&tV8lII#8_qL#TT0^ykT3h_Gn8s#F7cqcM3y~F5Hnws3 p8o!X%-oKSc(5-o&`WJke|G)lEfN$g5_%{A*;}1Kp{X+mK001^3Y~cU^ literal 0 HcmV?d00001 From c76f70605f6a470b40f81ff6730509faec8cb66f Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 28 Feb 2012 00:12:18 -0800 Subject: [PATCH 11/41] add ljpost.css --- ljpost/ljpost.css | 16 ++++++++++++++++ ljpost/ljpost.php | 5 ----- wppost.tgz | Bin 2276 -> 2269 bytes 3 files changed, 16 insertions(+), 5 deletions(-) create mode 100755 ljpost/ljpost.css diff --git a/ljpost/ljpost.css b/ljpost/ljpost.css new file mode 100755 index 000000000..50a3d4a06 --- /dev/null +++ b/ljpost/ljpost.css @@ -0,0 +1,16 @@ + +#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-blog-label, #ljpost-bydefault-label { + float: left; + width: 200px; + margin-top: 10px; +} + +#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-blog, #ljpost-bydefault { + float: left; + margin-top: 10px; +} + +#ljpost-submit { + margin-top: 15px; +} + diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index de7567adb..a55a7bf47 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -23,11 +23,6 @@ function ljpost_uninstall() { unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); unregister_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); -// obsolete - remove - unregister_hook('post_local_end', 'addon/ljpost/ljpost.php', 'ljpost_send'); - unregister_hook('plugin_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); - unregister_hook('plugin_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); - } diff --git a/wppost.tgz b/wppost.tgz index b5758f6e6c99366a5a5973d15c866826b072b12d..50e9234c628c5420149913152f874806d1fbb167 100755 GIT binary patch delta 2244 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 i&!6AQ>;1p=W44p62qTle2n-DW Date: Tue, 28 Feb 2012 15:03:48 -0800 Subject: [PATCH 12/41] ljpost typos --- ljpost/ljpost.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index a55a7bf47..3b2bbe8b4 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -171,11 +171,11 @@ $title = '' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . $post = $title . bbcode($b['body']); $post = xmlify($post); -$year = date('Y') -$month = date('F') -$day = date('l') -$hour = date('H') -$min = date('i') +$year = date('Y'); +$month = date('F'); +$day = date('l'); +$hour = date('H'); +$min = date('i'); $xml = <<< EOT From 8427fe4e03df638b91ed3ee7505ee07531d18a9b Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Tue, 28 Feb 2012 18:41:24 -0800 Subject: [PATCH 13/41] descriptive text for qcomment settings --- qcomment.tgz | Bin 1426 -> 1489 bytes qcomment/qcomment.php | 1 + 2 files changed, 1 insertion(+) diff --git a/qcomment.tgz b/qcomment.tgz index 76dffda1c46b5eac43e558fa50e9ffa378a801e4..1ab55a43f8d3a0cc5b146950d35c7a65b5211726 100644 GIT binary patch literal 1489 zcmV;?1ups@iwFQtkWEhj1MOFBZ`(Ey&R6?a+|;153&(GXlOl~X3|$8dSl1RUwhwI) z&=O^Fp-6?K>=;G=`|c>oiJb%~hNK%X9a_Yu$b0U&J3eP!L^{j3a)X`6vmx5i(PU>l zIXD`R4|ax=!|~z4$gfwnGa4O@_xDHmak4WUjVDKkJ1}{~nATQU#|*$u#-h0}3!(1V zm(M4Mqvy|`e~*~Hqg~YXuRrwjG=E@>d+I+qJUG~@|73K4^&dWP9Jkv4y#6OYV!hk# z_TbsGHavshS;mjyT_K`#cv&_CE&t4IWJK<SR>$yRsUecIqiPvTTmIn2`p2XGkiP#^ zxKx{CcrDI3ysncAC#iG!@nEn{cORV$a-$O=`5?p1r*xYBzcqRxVs3$f<qmWLj$b+m ztP*+7oef}_iYSGMDVT8(%5vj)j31oFGgWY~6e`wBn61j7g_?s_;8LFT3FQ}ItOKst zOmbQU7RUHp_$^>p*6|G2GF-@+;<E2!`;c-4oFRISym3DT;h2!x&^cisO0|eMMZMG} zw&d_VcMjq0-sxLe%&#rfXz%Kn34+l2@T(F|Fez7{G}Lz#Q(`#eWq#rw%nC=G7J@H{ zo)5fsowGUbVLD=-utK^jl>~4Vngv_T=NzfVeWGT0om3V@Jg1~~%8I`)W|?qZK$<)j z^dO=9_2Cue!q-O%#li60pc@L6pb%ap2{*)TEj0egYo=Dd7+B|}kP=d)<QZHeJJSnJ zkOCKC!5qhQu=p<)kv}XpZLd=&RF2u0=}Rb-6Ou4ix<KDHrLBeKW$odO0;@A#gX5nS zWNbyO7s3i`2j3rmvPBtBrs*s*x==AF&deRK3?FaC?|Io2o3P0H@X{v|%SFtw1_VMe zP;@%yYQt^Syh%YFK%UDk-vH>B-58X$2`V`M1%x9K_;1i|CxwdW2ComEp)-fQ)#<{Q zcFXX&zz#5Hsn+M6F!wEbR`*fZgV5iM!L1X69<SZ{eOD*DFYa@GmTT+&IYN0HVcK8Y zx6v%r2GK%2D%JbkKPcH-`EDNQJl$ozr@NN8w_76V`~Xr%OrBvon@+deZeev?VHCOq zv;k^&9D^<lShtegrkt;D8L0_g8(5YKkuel^zq6JbiIhQ+@=?o?zg@O>O2<Bismo-_ zSsZ?b{uII!REl#{3ONm~fC2!w%K0=PEg3`>RX#O5nFb;By{kEQXESDbVW^ya2nToN z5f9U$FaWO_(*QdlfWav(2A|9)6(Hl*ZmEG&Ajf&6RU+n{>j~<uD-rfWzuA`=6Imaf zP9b5^a!Tdeo$G|hd)=_>!Bl{M{7UEg3N1-3eKmcmY?+u?EO1ycYcVtR%$Q+J=fP?C zVq<5z@9ChQjhVfkEFLX98PL8LH!wsz4Qg_GOT%!i8V}LBa~ICzD5x-l5_4lHC0FuT zYZ!_mw>>YmPLR~1#K&CKN?2=OHO|0_ESG+QNWpDCs2E@*+Y}_5ak&|uUkWe^bDbHL zqz*cKrSNLP#YX5o)MHMg+)uAEX>c;|-nLPxF_9_T%AUu#*1G{H{4I5JhYy2pg3Wn^ zlRZkAv7JI)W>O@ps;9aY=^AT02A_@VZ4yb$cyPK-)4lCf&WCl;;q;`OU?l-tjgk$D z_2L$<dii#Q02WLZyu81d{c=c^8K%p)j<~hKjVN5n(%1V{&dXvYb+d1gI)8!B-oAPN z;bXYPCH(B?M9Y4=BJ}F=ZF?*qf9{fGw1i4@=jLTyi>Jlk8gbtz=hd6v=*U;%{+Pf2 zZ<Wml#<=hOe;?oZ=>2avJ{nIZNB;e9a?rg0eGh9t+0;&I{6uQzjzRLoVGAxr?9yY{ z9}e?N{F*U?zh?HF&hb^xFJXs1+3fe5PHvv6{f;WX_|h~_@xW-}zi)c2e$9T_ax|&n r|Lr6;)>vbWHP%>TjWyO-V~sV|SYwSf)>vbW{Ri!DlOcU~04M+eqxt6n literal 1426 zcmV;D1#S8tiwFSsc0o@71MOFBZ`(Ey&e!-?+_a#w3&*nEI4RQD!_alWfOT!rV*Ah* z0WDD$7m8F#%8pU=zweH+9KWPUF{JH)>5#zo@!p<$qx2!xdCrxK4!$1sk<QLW2gA|H z*>HGr&>x)+PfrG(zoLV|;B43*o()H%vxEL%cse*efYDcsX-%bd%m5tZES?E77wR)| z#cXssc>MVBw}|N*(ucbK^_O0e75D7pj{1*I2E(2Dj|TVw{d<n%R{EdU|KcaCcdONk z9zJZrL->Q`{2X4DBEEvBRYMT_7j9!C3MaHWhc^oiu_TFA%UBZmlN;-g2faT1{<(CS zHs|nMTyc0_Cl@X<=Zf<vTBo~*Mxw&#R7f7>C_Eu;`hRKkTqN8A1Ir!g6db>H5LhLO zf;$_)A`@{2F;g(*Ae80C@dUp(jXJB~U?EhZ7cgB`K?^klt-xhG?~#{Zg|QB}VpGY9 z3oJ?STzC<%OY3-!yc`(?Q(X3ZY;Q8IfHU-7Aa0bWARH4?8`2X7;!KN}Q`8G>5=#bO zbLY^#J)XRj<!pmddwW&KOfJY<4}Md^2`1$dl!kgnF(rmWQROG;!nAaRX)gGJ;Q7F7 z(*>LHE~X>lDJ!L0rIH-ngl55(vl&OINspjeUMH2sF)t{o?W*Fh%V{oL2M{Jt1RbQ5 zzaBiJT=@D(p*R>`7&Jqnk}GsC(v%y*wq7*;<T+DIUkt4CLP!Z2Lh=YUz)tm?lS_e& zL@>uO9W42q#bghQP2zRxgeou_Q+*Akazc`ir7qF7%}BJgysACCP+)b=Yv=f}gq$r2 z^;}qi?cn?4FE+2@$u;RRqf3>5;>>);EyLsO_&qM0VH1``51#r&Vz~%8)_|N)3>2L% zxY{ziYTmS@4j{`_mv1@fRoxg=wFy@4{0|V0K;U20YNe%$X@b{^muSpkZ?!w{v2|$p zOkf9?%S`L5c3Aipy{!8v>_X@#Bf9m*pyRb!FL$Had2*NW%R*cC?>$uN=%)3lbsNl5 zZ2>LSSA}|)`FjO>E8cB|_JbqVeQ;z6d+Si7?H@qun8{0QXVdO<T8CI2R~m&T0V%@W zog|=31J*4iw;AW_DWh$IV*`t7L*xvXyO*rjjYP<xX!B9ak-Z~!JR!BWVdip~ah8Pd zp*M!`0yo7KZVEXLZX5*wZdvegK)WQ0EpGYD@N^u6(DSBd++9wY<)xu=_8^Qtmq%14 zr7!@$HO2vUKmgH%n87>qP6deg@Tl5>V<5vttW_#z?ac&r*Odsnp%?aL#zfYt<1wU6 zT2854n{(~({J0Z#yfYQxhv&36ImD7$`fB=A*(x!KnB!%|ti{aKcg7TBx(X)YlP$^Y zk%xnJw(jip&Ema<7ZJ%l+4CWiaZrOhUKobgs@ZcP*_6v|QO^n>)n-$lfCqIr&lC;- zd?+^`6S}zdI9-_jj;KO|i^yBs^-AT(OOEZt=zVN-NB|0-SoS4+7}RgJ;4$8xamI{o zm+Cr~B3-U3*I6Z}_O%;BggKgQ79*Cp_Jc`v5Pm_?sx7=uEle(|d!hnhR||U!V$Iya zRkLsR5Wt+tl2=oL*{`mGD#O(B>xd7xun~lt;s12^F7eA}wNR#CvQYe(T)uqq`pw&L z2TS<gZ{tJz<#X4q%eQN>I)2}w!8{Zy)$RR}Sg$CHH+s_Z$$9qTcT)L8*uVFa`1he( z*XBL@xa<A@QGc}m{&&*6|9uN;{kXl=X(UsrnL7u`Q-{N`5Q)pq;ZeU|T;tE28GM>K zcDle<J<r0~`Eh#^_l@jp)piFfyZF*H%TQr3^1rvOuAXK;?id=a+<)&RHq=l<4K>tI gLk%_5P(uwh)KEhWHPlc;4gCk{ABFtq4FD(r0Kyj0qyPW_ diff --git a/qcomment/qcomment.php b/qcomment/qcomment.php index 45e6332ef..6b3725799 100755 --- a/qcomment/qcomment.php +++ b/qcomment/qcomment.php @@ -53,6 +53,7 @@ function qcomment_addon_settings(&$a,&$s) { $s .= '<div class="settings-block">'; $s .= '<h3>' . t('Quick Comment Settings') . '</h3>'; $s .= '<div id="qcomment-wrapper">'; + $s .= '<div id="qcomment-desc">' . t("Quick comments are found near comment boxes, sometimes hidden. Click them to provide simple replies.") . '</div>'; $s .= '<label id="qcomment-label" for="qcomment-words">' . t('Enter quick comments, one per line') . ' </label>'; $s .= '<textarea id="qcomment-words" type="text" name="qcomment-words" >' . htmlspecialchars(unxmlify($words)) . '</textarea>'; $s .= '</div><div class="clear"></div>'; From b0a59bd21a697b88a491fa454a1856e3f746d92c Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Tue, 28 Feb 2012 20:54:02 -0800 Subject: [PATCH 14/41] some small improvements to ljpost --- ljpost.tgz | Bin 0 -> 2502 bytes ljpost/ljpost.css | 4 +- ljpost/ljpost.php | 176 +++++++++++++++++++++++----------------------- 3 files changed, 90 insertions(+), 90 deletions(-) create mode 100644 ljpost.tgz mode change 100644 => 100755 ljpost/ljpost.php diff --git a/ljpost.tgz b/ljpost.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2af2a685aa0c8d000186514368467a2b70eb9c60 GIT binary patch literal 2502 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 Q(xeIKPsmd({s2$_0I*!jT>t<8 literal 0 HcmV?d00001 diff --git a/ljpost/ljpost.css b/ljpost/ljpost.css index 50a3d4a06..e0494c5c4 100755 --- a/ljpost/ljpost.css +++ b/ljpost/ljpost.css @@ -1,11 +1,11 @@ -#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-blog-label, #ljpost-bydefault-label { +#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label { float: left; width: 200px; margin-top: 10px; } -#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-blog, #ljpost-bydefault { +#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-bydefault { float: left; margin-top: 10px; } diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php old mode 100644 new mode 100755 index 3b2bbe8b4..1ea8dfe55 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -1,43 +1,41 @@ <?php /** -* Name: LiveJournal Post Connector -* Description: Post to LiveJournal (or anything else which uses blogger XMLRPC API) -* Version: 1.0 -* Author: Mike Macgirvin <http://macgirvin.com/profile/mike> -* Author: Tony Baldwin <http://theshi.re/profile/tony> -*/ + * Name: LiveJournal Post Connector + * Description: Post to LiveJournal + * Version: 1.0 + * Author: Tony Baldwin <http://theshi.re/profile/tony> + * Author: Michael Johnston + */ function ljpost_install() { - register_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); - register_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); - register_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); - register_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + register_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + register_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + register_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + register_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); register_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); } function ljpost_uninstall() { - unregister_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); - unregister_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); - unregister_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); - unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + unregister_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + unregister_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + unregister_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); unregister_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); } - - function ljpost_jot_nets(&$a,&$b) { if(! local_user()) return; $lj_post = get_pconfig(local_user(),'ljpost','post'); if(intval($lj_post) == 1) { - $wp_defpost = get_pconfig(local_user(),'ljpost','post_by_default'); - $selected = ((intval($wp_defpost) == 1) ? ' checked="checked" ' : ''); + $lj_defpost = get_pconfig(local_user(),'ljpost','post_by_default'); + $selected = ((intval($lj_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '<div class="profile-jot-net"><input type="checkbox" name="ljpost_enable" ' . $selected . ' value="1" /> ' - . t('Post to Livejournal') . '</div>'; + . t('Post to LiveJournal') . '</div>'; } } @@ -49,7 +47,7 @@ function ljpost_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/ljpost/ljpost.css' . '" media="all" />' . "\r\n"; + $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/ljpost/ljpost.css' . '" media="all" />' . "\r\n"; /* Get the current state of our config variables */ @@ -61,9 +59,8 @@ function ljpost_settings(&$a,&$s) { $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); -$lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); -$lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); -$lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog'); + $lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); + $lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); /* Add some HTML to the existing form */ @@ -85,14 +82,9 @@ $lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog'); $s .= '<input id="ljpost-password" type="password" name="lj_password" value="' . $lj_password . '" />'; $s .= '</div><div class="clear"></div>'; - $s .= '<div id="ljpost-blog-wrapper">'; - $s .= '<label id="ljpost-blog-label" for="ljpost-blog">' . t('LiveJournal API URL') . '</label>'; - $s .= '<input id="ljpost-blog" type="text" name="lj_blog" value="' . $lj_blog . '" />'; - $s .= '</div><div class="clear"></div>'; - $s .= '<div id="ljpost-bydefault-wrapper">'; $s .= '<label id="ljpost-bydefault-label" for="ljpost-bydefault">' . t('Post to LiveJournal by default') . '</label>'; - $s .= '<input id="ljpost-bydefault" type="checkbox" name="wp_bydefault" value="1" ' . $def_checked . '/>'; + $s .= '<input id="ljpost-bydefault" type="checkbox" name="lj_bydefault" value="1" ' . $def_checked . '/>'; $s .= '</div><div class="clear"></div>'; /* provide a submit button */ @@ -104,37 +96,36 @@ $lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog'); function ljpost_settings_post(&$a,&$b) { -if(x($_POST,'ljpost-submit')) { + if(x($_POST,'ljpost-submit')) { -set_pconfig(local_user(),'ljpost','post',intval($_POST['ljpost'])); -set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); -set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); -set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); -set_pconfig(local_user(),'ljpost','lj_blog',trim($_POST['lj_blog'])); + set_pconfig(local_user(),'ljpost','post',intval($_POST['ljpost'])); + set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); + set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); + set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); -} + } } function ljpost_post_local(&$a,&$b) { -// This can probably be changed to allow editing by pointing to a different API endpoint + // This can probably be changed to allow editing by pointing to a different API endpoint -if($b['edit']) -return; + if($b['edit']) + return; -if((! local_user()) || (local_user() != $b['uid'])) -return; + if((! local_user()) || (local_user() != $b['uid'])) + return; -if($b['private'] || $b['parent']) -return; + if($b['private'] || $b['parent']) + return; - $lj_post = intval(get_pconfig(local_user(),'ljpost','post')); + $lj_post = intval(get_pconfig(local_user(),'ljpost','post')); -$lj_enable = (($lj_post && x($_REQUEST,'ljpost_enable')) ? intval($_REQUEST['ljpost_enable']) : 0); + $lj_enable = (($lj_post && x($_REQUEST,'ljpost_enable')) ? intval($_REQUEST['ljpost_enable']) : 0); -if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ljpost','post_by_default'))) -$lj_enable = 1; + if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ljpost','post_by_default'))) + $lj_enable = 1; if(! $lj_enable) return; @@ -158,59 +149,68 @@ function ljpost_send(&$a,&$b) { if($b['parent'] != $b['id']) return; + // LiveJournal post in the LJ user's timezone. + // Hopefully the person's Friendica account + // will be set to the same thing. -$lj_username = get_pconfig($b['uid'],'ljpost','lj_username'); -$lj_password = get_pconfig($b['uid'],'ljpost','lj_password'); -$lj_blog = get_pconfig($b['uid'],'ljpost','lj_blog'); + $tz = 'UTC'; -if($lj_username && $lj_password && $lj_blog) { + $x = q("select timezone from user where uid = %d limit 1", + intval($b['uid']) + ); + if($x && strlen($x[0]['timezone'])) + $tz = $x[0]['timezone']; -require_once('include/bbcode.php'); + $lj_username = get_pconfig($b['uid'],'ljpost','lj_username'); + $lj_password = get_pconfig($b['uid'],'ljpost','lj_password'); + $lj_blog = 'http://www.livejournal.com/interface/xmlrpc'; -$title = '<title>' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . ''; -$post = $title . bbcode($b['body']); -$post = xmlify($post); + if($lj_username && $lj_password && $lj_blog) { -$year = date('Y'); -$month = date('F'); -$day = date('l'); -$hour = date('H'); -$min = date('i'); + require_once('include/bbcode.php'); + require_once('include/datetime.php'); -$xml = <<< EOT + $title = (($b['title']) ? $b['title'] : t('[no subject]')); + $post = bbcode($b['body']); + $post = xmlify($post); - -LJ.XMLRPC.postevent - - -year$year -mon$month -day$day -hour$hour -min$min -usejournal$lj_blog -event$post -username$lj_username -password$lj_password -subjectfriendica post -lineendingsunix -ver1 -props - -useragentFriendica -taglistfriendica,crosspost - - - + $date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s'); + $year = intval(substr($date,0,4)); + $mon = intval(substr($date,5,2)); + $day = intval(substr($date,8,2)); + $hour = intval(substr($date,11,2)); + $min = intval(substr($date,14,2)); + + $xml = <<< EOT + + + LJ.XMLRPC.postevent + + + + username$lj_username + password$lj_password + event$post + subject$title + lineendingsunix + year$year + mon$mon + day$day + hour$hour + min$min + + + EOT; -logger('ljpost: data: ' . $xml, LOGGER_DATA); + logger('ljpost: data: ' . $xml, LOGGER_DATA); -if($lj_blog !== 'test') -$x = post_url($lj_blog,$xml); -logger('posted to livejournal: ' . ($x) ? $x : ''); + if($lj_blog !== 'test') + $x = post_url($lj_blog,$xml); + logger('posted to livejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); } } + From 199df2a28bedc1fefb40d958127e60045ce44004 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 28 Feb 2012 21:21:03 -0800 Subject: [PATCH 15/41] inconsistent file extension --- ljpost.tar.gz | Bin 2267 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ljpost.tar.gz diff --git a/ljpost.tar.gz b/ljpost.tar.gz deleted file mode 100644 index b3f354fc337df7e5ff9f9f049aa1bf3b580a1d5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2267 zcmV<12qgC(iwFo;gG^5V18iz=Z*z1mbYXG;?OJVb+c*-=*YmGng`lzv+ltyvx|iAx zy4`H|7U?zDW)F903PUfn#Y7f;66M6$?SJ1Hilk&)PUK62!(mGVur=g7Gn_XL<-}KW zo(X5~F~ApNXsDA3P=ejSSzi?sV$lW_|UHAFn9yxqet<=af;iZJ^37#zP zT6f?4|LKSe{}&(qc{G0n8R+1n@4nmOfA{5)``q~d;0WmM3-|D7j~qOLE*s-d?*G9F z_`KC}o;_V(rot*BnnkRi zQp1K`1vaPEn&e4`E}ctYhoUFvE3!M7lu4> zHgXB46kKI}=T#kG!UdZ!cuaUYYl@oDB;0~`#l<+G;)bW!Su-%jk!=ACbQFM8A;7y0 zVa@8Mu+mn$VHYeQp!H?Lk$JN2$~^h%&fI`}usb&pAMVf%$gkzn2EY$;s^bvuXFR5Y zk{$%mj4$YYo*bhsA8z$|oKIQuwe7Qp`oM_Cu^#o>_wA?qUiay~uVbH0+D}MfAgIV` zyVH^6A~6M&a6rU|{rF0XAVV^x5b@yA37fX7oL!}p-LZy8FoT_#QIR_3XHL?p`zevZgyIqHea(jkG-^uR|9HC)I zKrG3`GKTY#QmGA`on-D!Dakmwp(OAUGV|bomMfK15WufV!U9V0NR{UFdLv}}WJh8a zN7M`L&xL_wmRy7EcxaV^EM-$cZ-oL}$uOcSFVJSmrX63F5?}oc& zN5QH>Pe!Z8xi>lsR*2~F&XU*CrbJp%qyl}vGMLyX3j_WxMTpS^zZn+9khKA_3y!lp z_p%0|Su_MTlsmBFa=C+QtY;i{@$<#IGacsi7HT!NuM;@COP^;Og+a%C4{(EPOQ)t@ z8NHAp2PwVLQhzijM3LCI^wowK7V2`+D}2+tNxk`;rW>MS&!=(CdP%o%BWA|bE3MqA zT)NrzpUXo^YbcS{#TIq2BDO4scNIsgQUhgb>rljuUY8+@Ue)SBOg*rGsfKr%O@~}_ z!x@em)9E>@&aY*3?_w|mS*d)bvBu@JvY0eiHT`6r`?^NcN!HwGhNH%4dal-JWj^m> zGy|!ORz4fUm83PpnWFOuhQspG+-P!jjlqy!Yb>}flV3la?Pe>9Rv%o&)S7){MSTq0 zEY%^jgMkc7ot5;YF;(5$2!Bb;*|(F`4EmNr2K{Aa&00CDp059WNrU4FI?n|QDe*{_ z`!gnpp9=xqUXwGa;4s!Et6gg`YgPBGN!3bii1p|z(E~2{D5-_1F@V%g&9?4pS>;us zdR=Kj&wAV5AD_Sfc%ge5CD-oA1zE%1tE+DX66=$m{oH|8pdm)Ji`s-MW1%r;%uglI0@^;R_%=jHANysJ>Dm!$nf^cJ((=tZ({ZBUXfnqIlmjU|v zg@^q9J6YK=c`_u(oHJ>f6=tN*Q?`KH09;srQxZJXU`5W_U0Fp&<4b|=ri*s1XvHT5kW~(t?@^xv8jh-8M#p#I1=Cw^?{VcQw~a+>?*!4R5;D z`KAswR$O?~m}U2wwi~28%kHzUqjYXC1(c%xsLu>3m6FzKK~;nTT>SRjR%g*MR#5M_ zxUfOJ?2@zhZ{MDN82|YC;&tV8lII#8_qL#TT0^ykT3h_Gn8s#F7cqcM3y~F5Hnws3 p8o!X%-oKSc(5-o&`WJke|G)lEfN$g5_%{A*;}1Kp{X+mK001^3Y~cU^ From e964ed80087532a507772d6081c630c70bfe51fa Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 28 Feb 2012 22:41:01 -0800 Subject: [PATCH 16/41] seems the subject isn't really required, contrary to the docs. --- ljpost/ljpost.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index 1ea8dfe55..6a85d8f2f 100755 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -170,7 +170,7 @@ function ljpost_send(&$a,&$b) { require_once('include/bbcode.php'); require_once('include/datetime.php'); - $title = (($b['title']) ? $b['title'] : t('[no subject]')); + $title = $b['title']; $post = bbcode($b['body']); $post = xmlify($post); From 665ffab5c7572ba274402e9d42736590383d185d Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 28 Feb 2012 22:41:33 -0800 Subject: [PATCH 17/41] rebuild tgz --- ljpost.tgz | Bin 2502 -> 2494 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ljpost.tgz b/ljpost.tgz index 2af2a685aa0c8d000186514368467a2b70eb9c60..5189d6e09312ad392b92620e95eda3e691992840 100644 GIT binary patch literal 2494 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 Q(xeIKPsmd({s2$_0I*!jT>t<8 From 5a4ca9459ddf60d4b19748625b73015ff6149a92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Wed, 29 Feb 2012 14:06:19 +0000 Subject: [PATCH 18/41] Real-Time Updates --- facebook/README | 5 +- facebook/facebook.php | 348 +++++++++++++++++++++++++----------------- 2 files changed, 210 insertions(+), 143 deletions(-) diff --git a/facebook/README b/facebook/README index ee7e489ba..e2a3c8387 100755 --- a/facebook/README +++ b/facebook/README @@ -23,7 +23,10 @@ Installing the Friendica/Facebook connector and click 'Install Facebook Connector'. 4. This will ask you to login to Facebook and grant permission to the plugin to do its stuff. Allow it to do so. -5. You're done. To turn it off visit the Plugin Settings page again and +5. Optional step: If you want to use Facebook Real Time Updates (so new messages + and new contacts are added ~1min after they are postet / added on FB), go to + Settings -> plugins -> facebook and press the "Activate Real-Time Updates"-button. +6. You're done. To turn it off visit the Plugin Settings page again and 'Remove Facebook posting'. Vidoes and embeds will not be posted if there is no other content. Links diff --git a/facebook/facebook.php b/facebook/facebook.php index 039b27ff9..0e30b62b2 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -1,8 +1,9 @@ + * Tobias Hößl */ /** @@ -31,7 +32,10 @@ * and click 'Install Facebook Connector'. * 4. This will ask you to login to Facebook and grant permission to the * plugin to do its stuff. Allow it to do so. - * 5. You're done. To turn it off visit the Plugin Settings page again and + * 5. Optional step: If you want to use Facebook Real Time Updates (so new messages + * and new contacts are added ~1min after they are postet / added on FB), go to + * Settings -> plugins -> facebook and press the "Activate Real-Time Updates"-button. + * 6. You're done. To turn it off visit the Plugin Settings page again and * 'Remove Facebook posting'. * * Vidoes and embeds will not be posted if there is no other content. Links @@ -53,6 +57,8 @@ function facebook_install() { register_hook('connector_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings'); register_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron'); register_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook'); + + if (get_config('facebook', 'realtime_active') == 1) facebook_subscription_add_users(); // Restore settings, if the plugin was installed before } @@ -67,6 +73,8 @@ function facebook_uninstall() { // hook moved unregister_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook'); unregister_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings'); + + if (get_config('facebook', 'realtime_active') == 1) facebook_subscription_del_users(); } @@ -113,7 +121,7 @@ function facebook_init(&$a) { return; } - $affected_users = array("feed" => array(), "friends" => array(), "activities" => array()); + $affected_users = array("feed" => array(), "friends" => array()); foreach ($js->entry as $entry) { $fbuser = $entry->uid; @@ -123,19 +131,20 @@ function facebook_init(&$a) { continue; } if (in_array($fbuser, $affected_users[$field])) continue; + + $r = q("SELECT `uid` FROM `pconfig` WHERE `cat` = 'facebook' AND `k` = 'self_id' AND `v` = '%s' LIMIT 1", dbesc($fbuser)); + if(! count($r)) + continue; + $uid = $r[0]['uid']; + + $access_token = get_pconfig($uid,'facebook','access_token'); + if(! $access_token) + return; + switch ($field) { case "feed": logger('facebook_init: FB-User ' . $fbuser . ' / feed', LOGGER_DEBUG); - $r = q("SELECT `uid` FROM `pconfig` WHERE `cat` = 'facebook' AND `k` = 'self_id' AND `v` = '%s' LIMIT 1", dbesc($fbuser)); - if(! count($r)) - continue; - $uid = $r[0]['uid']; - - $access_token = get_pconfig($uid,'facebook','access_token'); - if(! $access_token) - return; - if(! get_pconfig($uid,'facebook','no_wall')) { $private_wall = intval(get_pconfig($uid,'facebook','private_wall')); $s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token); @@ -147,12 +156,14 @@ function facebook_init(&$a) { } break; - case "friend": - // @TODO - break; - case "activities": - //@TODO + case "friends": + logger('facebook_init: FB-User ' . $fbuser . ' / friends', LOGGER_DEBUG); + + fb_get_friends($uid, false); + set_pconfig($uid,'facebook','friend_check',time()); break; + default: + logger('facebook_init: Unknown callback field for ' . $fbuser, LOGGER_NORMAL); } $affected_users[$field][] = $fbuser; } @@ -171,8 +182,8 @@ function facebook_init(&$a) { return; $uid = $r[0]['uid']; - $auth_code = (($_GET['code']) ? $_GET['code'] : ''); - $error = (($_GET['error_description']) ? $_GET['error_description'] : ''); + $auth_code = (x($_GET, 'code') ? $_GET['code'] : ''); + $error = (x($_GET, 'error_description') ? $_GET['error_description'] : ''); if($error) @@ -199,7 +210,7 @@ function facebook_init(&$a) { if(get_pconfig($uid,'facebook','no_linking') === false) set_pconfig($uid,'facebook','no_linking',1); fb_get_self($uid); - fb_get_friends($uid); + fb_get_friends($uid, true); fb_consume_all($uid); } @@ -220,9 +231,130 @@ function fb_get_self($uid) { } } +function fb_get_friends_sync_new($uid, $access_token, $person) { + $link = 'http://facebook.com/profile.php?id=' . $person->id; + + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1", + intval($uid), + dbesc($link) + ); + + if (count($r) == 0) { + logger('fb_get_friends: new contact found: ' . $link, LOGGER_DEBUG); + + fb_get_friends_sync_full($uid, $access_token, $person); + } +} +function fb_get_friends_sync_full($uid, $access_token, $person) { + $s = fetch_url('https://graph.facebook.com/' . $person->id . '?access_token=' . $access_token); + if($s) { + $jp = json_decode($s); + logger('fb_get_friends: info: ' . print_r($jp,true), LOGGER_DATA); -function fb_get_friends($uid) { + // always use numeric link for consistency + + $jp->link = 'http://facebook.com/profile.php?id=' . $person->id; + + // check if we already have a contact + + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1", + intval($uid), + dbesc($jp->link) + ); + + if(count($r)) { + + // check that we have all the photos, this has been known to fail on occasion + + if((! $r[0]['photo']) || (! $r[0]['thumb']) || (! $r[0]['micro'])) { + require_once("Photo.php"); + + $photos = import_profile_photo('https://graph.facebook.com/' . $jp->id . '/picture', $uid, $r[0]['id']); + + $r = q("UPDATE `contact` SET `photo` = '%s', + `thumb` = '%s', + `micro` = '%s', + `name-date` = '%s', + `uri-date` = '%s', + `avatar-date` = '%s' + WHERE `id` = %d LIMIT 1 + ", + dbesc($photos[0]), + dbesc($photos[1]), + dbesc($photos[2]), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + intval($r[0]['id']) + ); + } + continue; + } + else { + + // create contact record + $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`, + `name`, `nick`, `photo`, `network`, `rel`, `priority`, + `writable`, `blocked`, `readonly`, `pending` ) + VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ", + intval($uid), + dbesc(datetime_convert()), + dbesc($jp->link), + dbesc(normalise_link($jp->link)), + dbesc(''), + dbesc(''), + dbesc($jp->id), + dbesc('facebook ' . $jp->id), + dbesc($jp->name), + dbesc(($jp->nickname) ? $jp->nickname : strtolower($jp->first_name)), + dbesc('https://graph.facebook.com/' . $jp->id . '/picture'), + dbesc(NETWORK_FACEBOOK), + intval(CONTACT_IS_FRIEND), + intval(1), + intval(1) + ); + } + + $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1", + dbesc($jp->link), + intval($uid) + ); + + if(! count($r)) { + continue; + } + + $contact = $r[0]; + $contact_id = $r[0]['id']; + + require_once("Photo.php"); + + $photos = import_profile_photo($r[0]['photo'],$uid,$contact_id); + + $r = q("UPDATE `contact` SET `photo` = '%s', + `thumb` = '%s', + `micro` = '%s', + `name-date` = '%s', + `uri-date` = '%s', + `avatar-date` = '%s' + WHERE `id` = %d LIMIT 1 + ", + dbesc($photos[0]), + dbesc($photos[1]), + dbesc($photos[2]), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + intval($contact_id) + ); + + } +} + +// if $fullsync is true, only new contacts are searched for + +function fb_get_friends($uid, $fullsync = true) { $r = q("SELECT `uid` FROM `user` WHERE `uid` = %d AND `account_expired` = 0 LIMIT 1", intval($uid) @@ -245,111 +377,11 @@ function fb_get_friends($uid) { logger('facebook: fb_get_friends: json: ' . print_r($j,true), LOGGER_DATA); if(! $j->data) return; - foreach($j->data as $person) { - $s = fetch_url('https://graph.facebook.com/' . $person->id . '?access_token=' . $access_token); - if($s) { - $jp = json_decode($s); - logger('fb_get_friends: info: ' . print_r($jp,true), LOGGER_DATA); - - // always use numeric link for consistency - - $jp->link = 'http://facebook.com/profile.php?id=' . $person->id; - - // check if we already have a contact - - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1", - intval($uid), - dbesc($jp->link) - ); - - if(count($r)) { - - // check that we have all the photos, this has been known to fail on occasion - - if((! $r[0]['photo']) || (! $r[0]['thumb']) || (! $r[0]['micro'])) { - require_once("Photo.php"); - - $photos = import_profile_photo('https://graph.facebook.com/' . $jp->id . '/picture', $uid, $r[0]['id']); - - $r = q("UPDATE `contact` SET `photo` = '%s', - `thumb` = '%s', - `micro` = '%s', - `name-date` = '%s', - `uri-date` = '%s', - `avatar-date` = '%s' - WHERE `id` = %d LIMIT 1 - ", - dbesc($photos[0]), - dbesc($photos[1]), - dbesc($photos[2]), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($r[0]['id']) - ); - } - continue; - } - else { - - // create contact record - $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`, - `name`, `nick`, `photo`, `network`, `rel`, `priority`, - `writable`, `blocked`, `readonly`, `pending` ) - VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ", - intval($uid), - dbesc(datetime_convert()), - dbesc($jp->link), - dbesc(normalise_link($jp->link)), - dbesc(''), - dbesc(''), - dbesc($jp->id), - dbesc('facebook ' . $jp->id), - dbesc($jp->name), - dbesc(($jp->nickname) ? $jp->nickname : strtolower($jp->first_name)), - dbesc('https://graph.facebook.com/' . $jp->id . '/picture'), - dbesc(NETWORK_FACEBOOK), - intval(CONTACT_IS_FRIEND), - intval(1), - intval(1) - ); - } - - $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1", - dbesc($jp->link), - intval($uid) - ); - - if(! count($r)) { - continue; - } - - $contact = $r[0]; - $contact_id = $r[0]['id']; - - require_once("Photo.php"); - - $photos = import_profile_photo($r[0]['photo'],$uid,$contact_id); - - $r = q("UPDATE `contact` SET `photo` = '%s', - `thumb` = '%s', - `micro` = '%s', - `name-date` = '%s', - `uri-date` = '%s', - `avatar-date` = '%s' - WHERE `id` = %d LIMIT 1 - ", - dbesc($photos[0]), - dbesc($photos[1]), - dbesc($photos[2]), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - intval($contact_id) - ); - - } - } + foreach($j->data as $person) + if ($fullsync) + fb_get_friends_sync_full($uid, $access_token, $person); + else + fb_get_friends_sync_new($uid, $access_token, $person); } } @@ -394,7 +426,7 @@ function facebook_post(&$a) { elseif(intval($no_linking) && intval($linkvalue)) { // FB linkage is now allowed - import stuff. fb_get_self($uid); - fb_get_friends($uid); + fb_get_friends($uid, true); fb_consume_all($uid); } @@ -419,7 +451,7 @@ function facebook_content(&$a) { } if($a->argc > 1 && $a->argv[1] === 'friends') { - fb_get_friends(local_user()); + fb_get_friends(local_user(), true); info( t('Updating contacts') . EOL); } @@ -537,13 +569,40 @@ function facebook_cron($a,$b) { if($last_friend_check) $next_friend_check = $last_friend_check + 86400; if($next_friend_check <= time()) { - fb_get_friends($rr['uid']); + fb_get_friends($rr['uid'], true); set_pconfig($rr['uid'],'facebook','friend_check',time()); } fb_consume_all($rr['uid']); } - } - + } + + if (get_config('facebook', 'realtime_active') == 1) { + if (!facebook_check_realtime_active()) { + + logger('facebook_cron: Facebook is not sending Real-Time Updates any more, although it is supposed to. Trying to fix it...', LOGGER_NORMAL); + facebook_subscription_add_users(); + + if (facebook_check_realtime_active()) + logger('facebook_cron: Successful', LOGGER_NORMAL); + else { + logger('facebook_cron: Failed', LOGGER_NORMAL); + + if(strlen($a->config['admin_email']) && !get_config('facebook', 'realtime_err_mailsent')) { + $res = mail($a->config['admin_email'], t('Problems with Facebook Real-Time Updates'), + "Hi!\n\nThere's a problem with the Facebook Real-Time Updates that cannob be solved automatically. Maybe an permission issue?\n\nThis e-mail will only be sent once.", + 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n" + . 'Content-type: text/plain; charset=UTF-8' . "\n" + . 'Content-transfer-encoding: 8bit' + ); + + set_config('facebook', 'realtime_err_mailsent', 1); + } + } + } else { // !facebook_check_realtime_active() + del_config('facebook', 'realtime_err_mailsent'); + } + } + set_config('facebook','last_poll', time()); } @@ -562,12 +621,7 @@ function facebook_plugin_settings(&$a,&$b) { function facebook_plugin_admin(&$a, &$o){ - $activated = false; - $access_token = fb_get_app_access_token(); - if ($access_token) { - $ret = facebook_subscriptions_get(); - if (is_array($ret)) foreach ($ret as $re) if (is_object($re) && $re->object == "user") $activated = true; - } + $activated = facebook_check_realtime_active(); if ($activated) { $o = t('Real-Time Updates are activated.') . '

'; $o .= ''; @@ -1300,7 +1354,9 @@ function facebook_subscription_del_users() { $access_token = fb_get_app_access_token(); $url = "https://graph.facebook.com/" . get_config('facebook', 'appid' ) . "/subscriptions?access_token=" . $access_token; - delete_url($url); + facebook_delete_url($url); + + del_config('facebook', 'realtime_active'); } function facebook_subscription_add_users() { @@ -1318,7 +1374,7 @@ function facebook_subscription_add_users() { $j = post_url($url,array( "object" => "user", - "fields" => "feed,friends,activities", + "fields" => "feed,friends", "callback_url" => $cb, "verify_token" => $verify_token, )); @@ -1326,12 +1382,15 @@ function facebook_subscription_add_users() { if ($j) { logger("Facebook reponse: " . $j, LOGGER_DATA); + + if (facebook_check_realtime_active()) set_config('facebook', 'realtime_active', 1); }; } function facebook_subscriptions_get() { $access_token = fb_get_app_access_token(); + if (!$access_token) return null; $url = "https://graph.facebook.com/" . get_config('facebook', 'appid' ) . "/subscriptions?access_token=" . $access_token; $j = fetch_url($url); @@ -1344,15 +1403,20 @@ function facebook_subscriptions_get() { } - +function facebook_check_realtime_active() { + $ret = facebook_subscriptions_get(); + if (is_null($ret)) return false; + if (is_array($ret)) foreach ($ret as $re) if (is_object($re) && $re->object == "user") return true; + return false; +} // DELETE-request to $url -if(! function_exists('delete_url')) { -function delete_url($url,$headers = null, &$redirects = 0, $timeout = 0) { +if(! function_exists('facebook_delete_url')) { +function facebook_delete_url($url,$headers = null, &$redirects = 0, $timeout = 0) { $a = get_app(); $ch = curl_init($url); if(($redirects > 8) || (! $ch)) From b616382cbd07855c64a429ba03e81f5594cfeb55 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Feb 2012 16:28:28 -0800 Subject: [PATCH 19/41] Add Thomas Willingham contributed alternate version --- communityhome.tgz | Bin 3662 -> 4127 bytes communityhome/twillingham/README | 7 ++ communityhome/twillingham/communityhome.php | 107 ++++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 communityhome/twillingham/README create mode 100644 communityhome/twillingham/communityhome.php diff --git a/communityhome.tgz b/communityhome.tgz index b08abd2ec236c20a20c24d7b8083cff317798e8c..33c6abc12fee0a7042e3aa38e0850d9ec3f55dd9 100755 GIT binary patch literal 4127 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 diff --git a/communityhome/twillingham/README b/communityhome/twillingham/README new file mode 100644 index 000000000..bb5742785 --- /dev/null +++ b/communityhome/twillingham/README @@ -0,0 +1,7 @@ +Thomas Willingham + +This isn't even close to being worth a pull request, but some people might find it useful. + +Enable community home in your admin panel, then replace communityhome.php with this one to get a front page like mine (a normal front page, but with latest users shown in the sidebar, which looks bleak when there's nothing in it). + +There are more graceful ways of doing this, I used communityhome as I plan to make use of a limited stream and likes in future. diff --git a/communityhome/twillingham/communityhome.php b/communityhome/twillingham/communityhome.php new file mode 100644 index 000000000..102732acd --- /dev/null +++ b/communityhome/twillingham/communityhome.php @@ -0,0 +1,107 @@ + + */ + + +require_once('mod/community.php'); + + +function communityhome_install() { + register_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home'); + logger("installed communityhome"); +} + +function communityhome_uninstall() { + unregister_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home'); + logger("removed communityhome"); +} + +function communityhome_home(&$a, &$o){ + // custom css + $a->page['htmlhead'] .= ''; + + $aside = array( + '$tab_1' => t('Login'), + '$tab_2' => t('OpenID'), + '$noOid' => get_config('system','no_openid'), + ); + + // login form + $aside['$login_title'] = t('Login'); + $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); + + // last 12 users + $aside['$lastusers_title'] = t('Latest users'); + $aside['$lastusers_items'] = array(); + $sql_extra = ""; + $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); + $order = " ORDER BY `register_date` DESC "; + + $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` + FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` + WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", + 0, + 12 + ); + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + if(count($r)) { + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $profile_link, + '$photo' => $rr[$photo], + '$alt-text' => $rr['name'], + )); + $aside['$lastusers_items'][] = $entry; + } + } + + // 12 most active users (by posts and contacts) + // this query don't work on some mysql versions + $r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM + (SELECT COUNT(`id`) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`, + (SELECT COUNT(`id`) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`, + ( + SELECT `contacts`,`items`,`ite`.`uid` FROM `con` RIGHT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` + UNION ALL + SELECT `contacts`,`items`,`con`.`uid` FROM `con` LEFT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` + ) AS `uni`, `user`, `profile` + WHERE `uni`.`uid`=`user`.`uid` + AND `uni`.`uid`=`profile`.`uid` AND `profile`.`publish`=1 + GROUP BY `uid` + ORDER BY `items` DESC,`contacts` DESC + LIMIT 0,10"); + if($r && count($r)) { + $aside['$activeusers_title'] = t('Most active users'); + $aside['$activeusers_items'] = array(); + + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $profile_link, + '$photo' => $rr[$photo], + '$alt-text' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0')) + )); + $aside['$activeusers_items'][] = $entry; + } + } + + + + + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['aside'] = replace_macros($tpl, $aside); + $o = ''; + if(file_exists('home.html')) + + $o .= file_get_contents('home.html'); + +} From 734d400b2f1a29ab595d1db0ee43be812a0fbdd7 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Thu, 1 Mar 2012 00:25:34 -0500 Subject: [PATCH 20/41] the xml POST data was missing the "usejournal" parameter, required for LJ to know to which blog to post (since users have posting permission to their own AND to community blogs). It is now hardwired to their own, personal blog. Eventually this should be more configurable. Also, the plugin shouldn't be hardwired for livejournal, but also allow dreamwidth, insanejournal, deadjournal, etc. I'll work on that. --- ljpost/ljpost.css | 15 ++++ ljpost/ljpost.php | 183 +++++++++++++++++++++++----------------------- 2 files changed, 107 insertions(+), 91 deletions(-) create mode 100644 ljpost/ljpost.css diff --git a/ljpost/ljpost.css b/ljpost/ljpost.css new file mode 100644 index 000000000..8edab3d99 --- /dev/null +++ b/ljpost/ljpost.css @@ -0,0 +1,15 @@ + +#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label { +float: left; +width: 200px; +margin-top: 10px; +} + +#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-bydefault { +float: left; +margin-top: 10px; +} + +#ljpost-submit { +margin-top: 15px; +} \ No newline at end of file diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index de7567adb..8910adb6b 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -1,48 +1,41 @@ -* Author: Tony Baldwin -*/ + * Name: LiveJournal Post Connector + * Description: Post to LiveJournal + * Version: 1.0 + * Author: Tony Baldwin + * Author: Michael Johnston + */ function ljpost_install() { - register_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); - register_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); - register_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); - register_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + register_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + register_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + register_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + register_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); register_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); } function ljpost_uninstall() { - unregister_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); - unregister_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); - unregister_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); - unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + unregister_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + unregister_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + unregister_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); unregister_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); -// obsolete - remove - unregister_hook('post_local_end', 'addon/ljpost/ljpost.php', 'ljpost_send'); - unregister_hook('plugin_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); - unregister_hook('plugin_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); - } - - function ljpost_jot_nets(&$a,&$b) { if(! local_user()) return; $lj_post = get_pconfig(local_user(),'ljpost','post'); if(intval($lj_post) == 1) { - $wp_defpost = get_pconfig(local_user(),'ljpost','post_by_default'); - $selected = ((intval($wp_defpost) == 1) ? ' checked="checked" ' : ''); + $lj_defpost = get_pconfig(local_user(),'ljpost','post_by_default'); + $selected = ((intval($lj_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '
' - . t('Post to Livejournal') . '
'; + . t('Post to LiveJournal') . '
'; } } @@ -54,7 +47,7 @@ function ljpost_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ @@ -66,9 +59,8 @@ function ljpost_settings(&$a,&$s) { $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); -$lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); -$lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); -$lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog'); + $lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); + $lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); /* Add some HTML to the existing form */ @@ -90,14 +82,14 @@ $lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog'); $s .= ''; $s .= '
'; - $s .= '
'; - $s .= ''; - $s .= ''; + $s .= '
'; + $s .= ''; + $s .= ''; $s .= '
'; $s .= '
'; $s .= ''; - $s .= ''; + $s .= ''; $s .= '
'; /* provide a submit button */ @@ -109,37 +101,36 @@ $lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog'); function ljpost_settings_post(&$a,&$b) { -if(x($_POST,'ljpost-submit')) { + if(x($_POST,'ljpost-submit')) { -set_pconfig(local_user(),'ljpost','post',intval($_POST['ljpost'])); -set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); -set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); -set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); -set_pconfig(local_user(),'ljpost','lj_blog',trim($_POST['lj_blog'])); + set_pconfig(local_user(),'ljpost','post',intval($_POST['ljpost'])); + set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); + set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); + set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); -} + } } function ljpost_post_local(&$a,&$b) { -// This can probably be changed to allow editing by pointing to a different API endpoint + // This can probably be changed to allow editing by pointing to a different API endpoint -if($b['edit']) -return; + if($b['edit']) + return; -if((! local_user()) || (local_user() != $b['uid'])) -return; + if((! local_user()) || (local_user() != $b['uid'])) + return; -if($b['private'] || $b['parent']) -return; + if($b['private'] || $b['parent']) + return; - $lj_post = intval(get_pconfig(local_user(),'ljpost','post')); + $lj_post = intval(get_pconfig(local_user(),'ljpost','post')); -$lj_enable = (($lj_post && x($_REQUEST,'ljpost_enable')) ? intval($_REQUEST['ljpost_enable']) : 0); + $lj_enable = (($lj_post && x($_REQUEST,'ljpost_enable')) ? intval($_REQUEST['ljpost_enable']) : 0); -if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ljpost','post_by_default'))) -$lj_enable = 1; + if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ljpost','post_by_default'))) + $lj_enable = 1; if(! $lj_enable) return; @@ -163,59 +154,69 @@ function ljpost_send(&$a,&$b) { if($b['parent'] != $b['id']) return; + // LiveJournal post in the LJ user's timezone. + // Hopefully the person's Friendica account + // will be set to the same thing. -$lj_username = get_pconfig($b['uid'],'ljpost','lj_username'); -$lj_password = get_pconfig($b['uid'],'ljpost','lj_password'); -$lj_blog = get_pconfig($b['uid'],'ljpost','lj_blog'); + $tz = 'UTC'; -if($lj_username && $lj_password && $lj_blog) { + $x = q("select timezone from user where uid = %d limit 1", + intval($b['uid']) + ); + if($x && strlen($x[0]['timezone'])) + $tz = $x[0]['timezone']; -require_once('include/bbcode.php'); + $lj_username = get_pconfig($b['uid'],'ljpost','lj_username'); + $lj_password = get_pconfig($b['uid'],'ljpost','lj_password'); + $lj_blog = '$lj_url/interface/xmlrpc'; -$title = '' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . ''; -$post = $title . bbcode($b['body']); -$post = xmlify($post); + if($lj_username && $lj_password && $lj_blog) { -$year = date('Y') -$month = date('F') -$day = date('l') -$hour = date('H') -$min = date('i') + require_once('include/bbcode.php'); + require_once('include/datetime.php'); -$xml = <<< EOT + $title = $b['title']; + $post = bbcode($b['body']); + $post = xmlify($post); - -LJ.XMLRPC.postevent - - -year$year -mon$month -day$day -hour$hour -min$min -usejournal$lj_blog -event$post -username$lj_username -password$lj_password -subjectfriendica post -lineendingsunix -ver1 -props - -useragentFriendica -taglistfriendica,crosspost - - - + $date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s'); + $year = intval(substr($date,0,4)); + $mon = intval(substr($date,5,2)); + $day = intval(substr($date,8,2)); + $hour = intval(substr($date,11,2)); + $min = intval(substr($date,14,2)); + + $xml = <<< EOT + + + LJ.XMLRPC.postevent + + + + username$lj_username + password$lj_password + usejournal$lj_username + event$post + subject$title + lineendingsunix + year$year + mon$mon + day$day + hour$hour + min$min + + + EOT; -logger('ljpost: data: ' . $xml, LOGGER_DATA); + logger('ljpost: data: ' . $xml, LOGGER_DATA); -if($lj_blog !== 'test') -$x = post_url($lj_blog,$xml); -logger('posted to livejournal: ' . ($x) ? $x : ''); + if($lj_blog !== 'test') + $x = post_url($lj_blog,$xml); + logger('posted to livejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); } } + From 4ff22560f88bc0400f695f11618ab85c8b2bf45e Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Thu, 1 Mar 2012 01:31:10 -0500 Subject: [PATCH 21/41] should work, doesn't. xml is correct, required parameters include, nothing gets through... --- ljpost/ljpost.php | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index 8910adb6b..3fb30bc8e 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -187,26 +187,30 @@ function ljpost_send(&$a,&$b) { $min = intval(substr($date,14,2)); $xml = <<< EOT - - - LJ.XMLRPC.postevent - - - - username$lj_username - password$lj_password - usejournal$lj_username - event$post - subject$title - lineendingsunix - year$year - mon$mon - day$day - hour$hour - min$min - - - + + +LJ.XMLRPC.postevent + + +year$year +mon$mon +day$day +hour$hour +min$min +usejournal$lj_username +event$post +username$lj_username +password$lj_password +subjectxpost from friendica +lineendingsunix +ver1 +props + +useragentFriendica +taglistfriendica + + + EOT; From df6ee56969a53bb20a4a67728c5fa538766a7a6f Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Thu, 1 Mar 2012 02:29:19 -0500 Subject: [PATCH 22/41] minor corrections, but still not working --- ljpost/ljpost.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index 3fb30bc8e..dfd51469e 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -4,7 +4,7 @@ * Name: LiveJournal Post Connector * Description: Post to LiveJournal * Version: 1.0 - * Author: Tony Baldwin + * Author: Tony Baldwin * Author: Michael Johnston */ From 7b86f5babe9ac38fb2c878ba6b21e76f8907a935 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 1 Mar 2012 00:21:30 -0800 Subject: [PATCH 23/41] xml escape ljpost vars --- ljpost.tgz | Bin 2494 -> 2538 bytes ljpost/ljpost.php | 14 ++++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ljpost.tgz b/ljpost.tgz index 5189d6e09312ad392b92620e95eda3e691992840..f14b33d4ac398b832e02f46d3469e83ea8db5a22 100644 GIT binary patch delta 2526 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 delta 2481 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 Date: Thu, 1 Mar 2012 15:48:58 -0800 Subject: [PATCH 24/41] xmlify the login credentials - just in case --- wppost.tgz | Bin 2269 -> 2280 bytes wppost/wppost.php | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wppost.tgz b/wppost.tgz index 50e9234c628c5420149913152f874806d1fbb167..12f96d3b0c569d433447d2fb11310e8ef953834f 100755 GIT binary patch literal 2280 zcmVeWy0|OTK^3Ckrc7|L^=S?`S5|Ku3|LH7w{snP$r z{Tsg%ravTsJ@v_Ke1~r-{Bo6FlZ9KA*WEIA4b$sfF^V-?N{^v$?@r#j{l!Q!*jHGqhY;x z(SR55XN;o({0(F0GA2m^m*^DmCJX}N&@g5zej$kydlB`*U?8SxSlG}EW3YoYU3kG9 zh@TKxEj(ud7^DfXD4dfR{{H^m$ICbH`tnaL2KiSKCmgQV>9Xh7DP4r|0N#5y1l}vN zz;HonG_b79P#q^+T2UO%JfB!gTs+3zR--XX1Bb~6!l@@-fF}0+W(y-1kYY0T5=!F9 zA`EYuCST)+j_sRm$jP)_Hw>&=eBdHe0vC3+UTuO7Lh8*tdPnd5H(oshu22lUsF zP69$P!QCVUiMIfiJCl2W9c5?aPAM8N*-2ozWm{~nJqEBnw%CFUFxys*oCZ}hr@{9P z{U{^XfH#?vP^lv(G>rqq zV-E+bh%2(df!Gq|pSoIn!7 zihyGWu(a`B<|`#vWDwp!;5mffzg(I2;h1gvVlL>?Ul7|hzY6vGUT}lF{gII~GC-=7 zk~?Z)6KcRBCbN;jb%;>RQKoi6(wOCU)QPnzTyP`XU>dL_u4j)7ybhSI*`RS9Uk65h z+PCa@cs3`EV-iq2wT)ROobiJRmqdHT9Zt$(q%!GrY=kvnRFGpnRXTmd=f#!c(nW9CNS3psp0tpRx-=gf?6Fs>Z}~ zRXS09`6{-fh{QEUqNT2{=i>%DMmCe>D<#?mUs^5qFZm6nFiH+yavf)EY%U)Y-t+w)ujqwpLmB9Z*?iYHowd@<852Wf`DUS^k`)( zYipI|ugA*jV&fZBg&i_{{`hV;O>wNvjwPll+TnThDKwM4_S;@PD9jVDoQT5jk z(=}vQ-cCBpu$wDMkgpo2DWzEDZF3Ka9ht77T&s#% zqj+XDRLs!X;AZra@1Oxb@ll~_=05VI*|8ofRe6I@Y*HHgSghVP4A zV#R*4W!2SI?EpvnqGrFgSoN?iO0j~f1Lh8~18lJvYSY+T76G%Fo$#`JTEoj`cEaO@ zQVolba-7EgH*VRgVe=lmY*p;yuNGdyTL*OTDb^fom}2FEQ~nX6L0B z25}Uky4i0w39dJr5niRUgosT$pB4^tF#Te(jVK$QFzad9RJHSg-+qJAx#8Ie*#6Yx zDyr^hQ&H^QVq<{K3vT8EHWQ@6t<*OI7Nyczw(b$K;#yR1qBK{4&z}Pei;ow7`FxQ_ zhFr=b;~X;Ql#9Mp7JY4D4c~34gXPQY$eSeC@;K~>$Y?jgODzUhVCf9KSA`}tpUGO# zlKyZ}LSvrfUa7&IVgSBjH8N3yE74xOTv2*k;D~S2<#))d#i~eNXu81U%Z}Za)J0W3zu^!JYw*ua$^>UOZY?Vq4#)>&7zN&84`zO z*#r4`eXb-LFEWxI!3>ckL;t)Sblry1Z2g|F|-PEY$^Jdy-dd3o5aI- z$S?cx5FHj7vD;k^SYrOitQ{9^JhbHCj{B8QJZgW$^|8Z7Op@c?&|?2KESEn~mrBXP z9t|`mx3927Q+oXXT$|bhQAwhu+wktg+qV}VC%?SDdMzA61_F;EmTgQ*ShBzw^cD0J z@c|_EvsG;d#Jx=MVoStbyHYO~1xs}MJMQgw;w?|k{^Iwa-^%O$zxCs`CQX_&Y0{)g zlO|1?G-=YLNs}f`nlx$Bq)C$|O`0@m(xgd~CQX_&Y0{)glO|37WArcHv}9TUPyhh_ CT5YBP literal 2269 zcmV<32qO0%iwFQvj7(1e1ML}UZ`;bzU#(v;VU175|~ z$Aed|Ui}Q6ej==e|HZ$alO#_dgZuyFZvP(*4w?T42h9B^%>OSB@gMY`K$jZ)pZmY{ zJK_3$64*1J?EChN_+3z|X+q+_Ue(qkJ4x1I>{i!jez>Tu-MVCMr#=-M@Xyxn+z)L! z1fR_5>(=htbLnyj2mO9@gRd()UU_yZIgQ3`_VS%6>#$X4xbm;{PAbvt% zz4V+VV3H=lvT#9S`1^YdUTx2aE9ZY`>=`AtlDj!WObH) zidTHePCvp%6}HMik4=MmwNo+Be!gdSpYP37I(YN;GY}?X9aFp0X{pi?6Pm^W@?$T1 z>xc`0F)Rp%KRR{pE!suOuGGlvno1QZ!3*fM?Y9+=4vfbzP#P%i*nBk;FrD2_Wyhvu zab5}WG2DoYoZ3avQh<_v3MTNjk+@?+J{Y(*1hd3$2E8$uBiFkI$Hx|OY{<)HA8opi zHZ>+AFNjjS@@^v{Sz#+`0Bb+ThID{vq?v$TLB$@vqkbvk4Ggd*U}l0D^nkX_;&mFa z>(uNpx{-w{O-!Nb_l-_hp&^}~Fq1d(x`o%S>q3~ukkDJ7BuhfLE_6vCvKIuB5Y_}7 zJAjpq_cF(nQc*y71%c-fe*bb~+WQkm_SIa{mA@pmYkm{v^}XNcHx4_3wJ!Qd367|_$kk}Fx0 zb1ErPVEwQ%yDYoZymg-@kg39+G7`pw^H39710ISbn87EkJmgV_NnL5CKW7(&NNtArx+cVPRXI^} z`8u|vh{QEPVx+F)^L2wABiqU9l~V1DqgLDfbACf9{WzbhP*DX7Li191UuiT76_97P zibR&sRT;eK6)o=g#K!Yy)$l%}WuGm!He2~aN7-;{z}kL)Jq$`}^PUT&&szAf#= zja5uNUgUnP$+9mxTbr!>4XA7~wYR}!c_KG4S;kPBEPv0;mM>MzmQ|Z4FdP5iwYACe z&tqkCvGon6!U-9^e0tx^Qk>W3z!F;(>+m}I6qd<8`)zNY@|VJjjnrmlsQTxJ*)3#O zUL%`jyzeYv(*jPVj1@1{$Com^lCa;r_FMus$WM*4lv3>Swz-D{MP_R#_o`yoD4tm@ z6)SYMxS4w?cF+Nz`KmBA3m{$1;s(e5w4k@i&Y*ugDd(-oepD$D|BL$lsfw7xx z*>!c*IKa7mRlDChtb5p&ORA zD(BPM{mwmGb!T4`L~E`XK7S4@Ek2$7<;z)~84{Ic z#wldMDUrTbkiK=WhwpdP!E!V^@}>!nJPtb|3Tmc!X~f_LES+KSx-f+1JJ|?YvL7NP zH1Sh$h@G*??YL=asN4EA6H|sVV2;8E8m;nw)v}650`LbG#bI#$BWkJl)YbzA4SHO#-P`~G_dL+Q>=)%kka}7t4rf_ z(i*J@U54&kte+E%1Nq8+#F@z7T6zIlvvZ8B!X87#Sh82igh!8fnT+`5J{e(vq9Asg z%LPm9{}|j!(Z?f8E;giBG4Uw+h})w9Ar{5SU}Uj>8_?w=+EN)=_@jl+Coph1HM4H`6P(4axX|2X^$zz~Fu08jt`Zjp93 diff --git a/wppost/wppost.php b/wppost/wppost.php index f07861667..264a342c0 100755 --- a/wppost/wppost.php +++ b/wppost/wppost.php @@ -161,8 +161,8 @@ function wppost_send(&$a,&$b) { return; - $wp_username = get_pconfig($b['uid'],'wppost','wp_username'); - $wp_password = get_pconfig($b['uid'],'wppost','wp_password'); + $wp_username = xmlify(get_pconfig($b['uid'],'wppost','wp_username')); + $wp_password = xmlify(get_pconfig($b['uid'],'wppost','wp_password')); $wp_blog = get_pconfig($b['uid'],'wppost','wp_blog'); if($wp_username && $wp_password && $wp_blog) { From 76b284de032ff7dd65f209dd64f392fee3b71897 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Thu, 1 Mar 2012 19:06:46 -0500 Subject: [PATCH 25/41] working on adding support for other moveabletype sites. added entry for siteurl (lj_url) --- ljpost/ljpost.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index dfd51469e..3084b8bd3 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -61,6 +61,7 @@ function ljpost_settings(&$a,&$s) { $lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); $lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); + $lj_url = get_pconfig(local_user(), 'ljpost', 'lj_url'); /* Add some HTML to the existing form */ @@ -107,6 +108,7 @@ function ljpost_settings_post(&$a,&$b) { set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); + set_pconfig(local_user(),'ljpost','lj_url',trim($_POST['lj_url'])); } @@ -187,8 +189,7 @@ function ljpost_send(&$a,&$b) { $min = intval(substr($date,14,2)); $xml = <<< EOT - - + LJ.XMLRPC.postevent @@ -201,7 +202,7 @@ function ljpost_send(&$a,&$b) { event$post username$lj_username password$lj_password -subjectxpost from friendica +subject$title lineendingsunix ver1 props From 1b8ad8864de5e09c309542da7c88c3ac06aed837 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Thu, 1 Mar 2012 22:33:55 -0500 Subject: [PATCH 26/41] added dreamwidth connector --- dwpost/dwpost.css | 15 ++++ dwpost/dwpost.php | 220 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 235 insertions(+) create mode 100644 dwpost/dwpost.css create mode 100644 dwpost/dwpost.php diff --git a/dwpost/dwpost.css b/dwpost/dwpost.css new file mode 100644 index 000000000..8edab3d99 --- /dev/null +++ b/dwpost/dwpost.css @@ -0,0 +1,15 @@ + +#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label { +float: left; +width: 200px; +margin-top: 10px; +} + +#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-bydefault { +float: left; +margin-top: 10px; +} + +#ljpost-submit { +margin-top: 15px; +} \ No newline at end of file diff --git a/dwpost/dwpost.php b/dwpost/dwpost.php new file mode 100644 index 000000000..0bf420e5e --- /dev/null +++ b/dwpost/dwpost.php @@ -0,0 +1,220 @@ + + * Author: Michael Johnston + */ + +function dwpost_install() { + register_hook('post_local', 'addon/dwpost/dwpost.php', 'dwpost_post_local'); + register_hook('notifier_normal', 'addon/dwpost/dwpost.php', 'dwpost_send'); + register_hook('jot_networks', 'addon/dwpost/dwpost.php', 'dwpost_jot_nets'); + register_hook('connector_settings', 'addon/dwpost/dwpost.php', 'dwpost_settings'); + register_hook('connector_settings_post', 'addon/dwpost/dwpost.php', 'dwpost_settings_post'); + +} +function dwpost_uninstall() { + unregister_hook('post_local', 'addon/dwpost/dwpost.php', 'dwpost_post_local'); + unregister_hook('notifier_normal', 'addon/dwpost/dwpost.php', 'dwpost_send'); + unregister_hook('jot_networks', 'addon/dwpost/dwpost.php', 'dwpost_jot_nets'); + unregister_hook('connector_settings', 'addon/dwpost/dwpost.php', 'dwpost_settings'); + unregister_hook('connector_settings_post', 'addon/dwpost/dwpost.php', 'dwpost_settings_post'); + +} + + +function dwpost_jot_nets(&$a,&$b) { + if(! local_user()) + return; + + $dw_post = get_pconfig(local_user(),'dwpost','post'); + if(intval($dw_post) == 1) { + $dw_defpost = get_pconfig(local_user(),'dwpost','post_by_default'); + $selected = ((intval($dw_defpost) == 1) ? ' checked="checked" ' : ''); + $b .= '
' + . t('Post to Dreamwidth') . '
'; + } +} + + +function dwpost_settings(&$a,&$s) { + + if(! local_user()) + return; + + /* Add our stylesheet to the page so we can make our settings look nice */ + + $a->page['htmlhead'] .= '' . "\r\n"; + + /* Get the current state of our config variables */ + + $enabled = get_pconfig(local_user(),'dwpost','post'); + + $checked = (($enabled) ? ' checked="checked" ' : ''); + + $def_enabled = get_pconfig(local_user(),'dwpost','post_by_default'); + + $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); + + $dw_username = get_pconfig(local_user(), 'dwpost', 'dw_username'); + $dw_password = get_pconfig(local_user(), 'dwpost', 'dw_password'); + + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('Dreamwidth Post Settings') . '

'; + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + /* provide a submit button */ + + $s .= '
'; + +} + + +function dwpost_settings_post(&$a,&$b) { + + if(x($_POST,'dwpost-submit')) { + + set_pconfig(local_user(),'dwpost','post',intval($_POST['dwpost'])); + set_pconfig(local_user(),'dwpost','post_by_default',intval($_POST['dw_bydefault'])); + set_pconfig(local_user(),'dwpost','dw_username',trim($_POST['dw_username'])); + set_pconfig(local_user(),'dwpost','dw_password',trim($_POST['dw_password'])); + + } + +} + +function dwpost_post_local(&$a,&$b) { + + // This can probably be changed to allow editing by pointing to a different API endpoint + + if($b['edit']) + return; + + if((! local_user()) || (local_user() != $b['uid'])) + return; + + if($b['private'] || $b['parent']) + return; + + $dw_post = intval(get_pconfig(local_user(),'dwpost','post')); + + $dw_enable = (($dw_post && x($_REQUEST,'dwpost_enable')) ? intval($_REQUEST['dwpost_enable']) : 0); + + if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'dwpost','post_by_default'))) + $dw_enable = 1; + + if(! $dw_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'dwpost'; +} + + + + +function dwpost_send(&$a,&$b) { + + if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) + return; + + if(! strstr($b['postopts'],'dwpost')) + return; + + if($b['parent'] != $b['id']) + return; + + // dreamwidth post in the LJ user's timezone. + // Hopefully the person's Friendica account + // will be set to the same thing. + + $tz = 'UTC'; + + $x = q("select timezone from user where uid = %d limit 1", + intval($b['uid']) + ); + if($x && strlen($x[0]['timezone'])) + $tz = $x[0]['timezone']; + + $dw_username = get_pconfig($b['uid'],'dwpost','dw_username'); + $dw_password = get_pconfig($b['uid'],'dwpost','dw_password'); + $dw_blog = 'http://www.dreamwidth.org/interface/xmlrpc'; + + if($dw_username && $dw_password && $dw_blog) { + + require_once('include/bbcode.php'); + require_once('include/datetime.php'); + + $title = $b['title']; + $post = bbcode($b['body']); + $post = xmlify($post); + + $date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s'); + $year = intval(substr($date,0,4)); + $mon = intval(substr($date,5,2)); + $day = intval(substr($date,8,2)); + $hour = intval(substr($date,11,2)); + $min = intval(substr($date,14,2)); + + $xml = <<< EOT + +LJ.XMLRPC.postevent + + +year$year +mon$mon +day$day +hour$hour +min$min +usejournal$dw_username +event$post +username$dw_username +password$dw_password +subject$title +lineendingsunix +ver1 +props + +useragentFriendica +taglistfriendica + + + + + +EOT; + + logger('dwpost: data: ' . $xml, LOGGER_DATA); + + if($dw_blog !== 'test') + $x = post_url($dw_blog,$xml); + logger('posted to dreamwidth: ' . ($x) ? $x : '', LOGGER_DEBUG); + + } +} + From 0398585d6cb80a455ea79ce9a155e9f8c7895dbd Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Thu, 1 Mar 2012 22:39:14 -0500 Subject: [PATCH 27/41] minor adjustment to dwpost --- dwpost.tar.gz | Bin 0 -> 2522 bytes dwpost/dwpost.php | 1 - 2 files changed, 1 deletion(-) create mode 100644 dwpost.tar.gz diff --git a/dwpost.tar.gz b/dwpost.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d22d966e8eff1030c8c798fe03e798702df31dcf GIT binary patch literal 2522 zcmV<02_^O)iwFqJKTuBq17vq_Z*z1mbYXG;?OJVb+sF~lSL;`7ST~ddNt7HrKG>3s zT;fX_IE|Y)MGIdbP~=kDm?CxL(z5O@|GhK&LQ*1SQ)%2oaU2+sxI6pI?7ZzPWp^n?-VP!6DhJ@zRI=;T!Fz%%HV0AJ4_){vN~V5AP= zO;eu`*_mSQ;ljQJIt@*!>eo`Q>)23UkJ08^x!r;@!*xlRL?q@*pT<*4g))3f$=se$ z5{G0#iDL(3W?xgusicB{@R|h7q2hQE*0kG0Ty|wn`OKeE+ciH+`}!=n2HF0=$OIWg z*_6{;ZaHymkZDA{fgy|tP#7s=JElp5PS8=ji9a z$aec0w+DN3k|?49hh5tocIAnU$(RI(MGT!8XWNqAb+^k7xm1Ooh*phrZ*;1hq~2(2 z$!lqoA+0EqgT7yx9ZWA2h7o_4CL~n_zoknML}1Jzzo2yAxtlc%y+kOIkJ&f`UEW;2 zJJ;b#Z=vQwToMmXo6L1_A-{F}w#Oj&+R!PcIj7G=W}J%%Q&$S=kX+($Z-RvoR|nPAPel~TnEKbf#VD=2{0rOINKlbThu zyDFTKD`X-+bv$8OuFDXmD{phhr#2WMt!Z~zO@~c&yQM2iET`vE%jHa#1?V>RN)dC_ zE3?%on^p!B*2-s)s8!$BW;#u(+bmsCVlzEgX0t3Ix3O7@sBD%!r*_MR*6fy6jR&yX zc&Tb-b;D&#N-UR7rlu=i0Lges(h9we5i{_OnL5hxtmSL|4EXk(h3X6a(G7Dcu}Pea zXN;3^!r_uxspQHPsj)H`1RnS(My07Se$-CWZQa#biH0`c zR5x~@x4LcajxOGRywpdp5^U~Cj-9w-lhD%bt3bQbv!D0yz^sarKk$oySwL(7n?Ji- zJYusvU^=rEURpK^cQ*lYg(BMt&U;>d2 znFsA)xFFCPitYfCZyth~@H9B82M!C#@^~Pl2&0g?d4&rbd#Z#m|FFYrTN&?aVx^M zxB@dS-wt35u|Ra-=Wj(vWyXZF8T~a3Xom>?H{qOmi4U16?v*r(!vMH`(r+?}?Koiq zNr%h}=KGkzads1pv1{T}NZAfXGXE9aZ+^ObX^OzUg{NPdhP-sAqKOxUGocSzOd-Ds zvHxy6XpL34Z6{d{F=Y?aSak;2@`&fQn0RM>`! zd(UlY!}9z^Ni2uk%>?bF-Xbp+i%#aZP8dxr*gTCq+o9I&%#Y@dsWUjQI~ZX_8TE|l z>a>gKFA0n2C=49hG+E&IiA$~V*a=-KUS^47qMXZxFh|R2K4DeHMS|l-#dk0%j;q&4 z5?GjF9J)*JMSd1`!n|cuJSset0W(_E2<&)6BWMgTf?D9j)=J8?%zw9MZI`?`X2-GA zeRm0+P*!;1v=?cHh^=nxK%RrUGf4jpOoy#~#pK${O-w(eOjCRtQO?xsrCc+%QC{yr zav>X71i1SBJ~?}T+326*^Nsxd0h+^3*MKt*EDFgrFcR*ye=tsmjsA@CY3RO$vva7v z<1Zh>^S7OUy*vMK@v?&krZ-SA`c`hf(T6f(&*Gu{glEx<4f~*5;&1^x8`Egm$KV>G zUHg{!su^KB!(BO!U;CCCx75Nl1TcCTfEcc_9{f?ZUJO@RkFF{MkmHqhz{+>PD((O> z^$Q3KY<~>~Ob$*R=CiqPslod|m1j%w(DRjnGRfafH(iQ0LuMQmAt8Cbz~Qk0Q52!d zSUw9V9&2!WD91|zc3T+@GPNW+deuS$8sfQD;+{-IFW8ffPEU{O%8GM);21nb25ZgAG9Vt~HZ>_T#75 z>M{iVO5{_IpEOi)*zb1dw4_022O3Gg z{VVEH)S^WGy5u`$sW*MUt#Ta-u0PsAHPuv8O*Pe2Q%yD1R8vhg)l^eWHPuv8O*Pe2 kQ%yD1R8vhg)l^eWHPuv8O*Pe2Q%!61A2yPday$day
hour$hour min$min -usejournal$dw_username event$post username$dw_username password$dw_password From c406d4d01d2e0470cb8e46cf85497740eedbc65b Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Fri, 2 Mar 2012 11:33:07 +0100 Subject: [PATCH 28/41] blockem: fix to work with changed 'display_item' hook --- blockem.tgz | Bin 1893 -> 1841 bytes blockem/blockem.php | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/blockem.tgz b/blockem.tgz index 129a00652b979469e08b86f9fdb187bcb24c817a..ec7119f832cece136f5a921df77962c2c4a3f473 100755 GIT binary patch literal 1841 zcmV-12hR8(iwFRPp-@i%1MOK`Z`(!|_N(|S&a!GqrIIMccC)Z06`O3(hfOv`llH|i zgb_Isry@B7XXp!B|M#A`P!dHsR z=cfbxeRy)BKkYgi4xc|e89q}dM}y(;1j*s_OA1x3Qbp$@sHBcLVOK@zV4b? z|J%=g9_NqF7U=&N4p9Mi$ z?es&Q26@5fETKV)#1nNJe*?#vmszN|RYFWzh8{{1zXQKJt%5F?khGY_oG*PZFKA8* zI-T+8*6V^tqKId~j+j=56=3aB=ez+LF_93O}bCoLWP*q zVsrl=fOI68s@~yuI!+72UY13Mh=41=iWx<~%L0VFO{j<|l^{9Dm_kk#6apaslLRPRFjK zH!=u?a3L<}eC&GA*H8;8r!yjGS*Wb(gBR?!A6`{gJQq?LF*0^B&0Gj3YSaBte8^nX z*J-t{c@YU1gTl?xi*vT{H|^7{T;O#*O{@K?&1mi_1Fld!&swo9jE)hzf-oUMppw=` zJq_qikaUwWKGw2H-*aCWjxM}gC52LD6eybW20n|%t`)L(U64GdMFTw{Gn&*W^^Oa3 zUToY}YPgjgFL|00bS;(>B54G+H^MJJzka6zLfa5 zYIEw=)T;LCx>UQn@m;tgNl8t3qsiatU1L)ftyYnh)az8edob~Jp|jaP+b8?gaeMmH z+js9Tyt??_rEX9yv3HVmWx>)0nmN1ds1$0kY|ee9^o!STU;gLSn^m-fAXhZ%Yb(5Z z`&tp-?bLU()qRqpt9;GMBr)k+Bi71(W@)%HcC=Bdfk;sx486${9#J2uyY|?S(?n2B zSP6)mDC3-$S%mlI1ka6-A#O=u;aM3mdnpNHy#+*=l4OpI4TLNbn)${X`q18NwNN88 zcd4LTnxnp=iZXVyR2kN9&n|Sw@-8ntqQ~f-I`=NS7Ry4dWR-=*Yt2xwrG?hN)-IaT z+zSF4#vI%c`f=i(Uy))Om1&M#JLj-uNs>}uM@qZU;04Jdo?>?`FiQM?nxmQNE7()+ zD~CPZIuwLXDw~LNY+Xth7kCyXEL@IxPP3N@7u5f-3fRr7AJDy~CW#y+kaH8fnlgfK z1@z#h0#c<>VFjTA^E$>>U@O+DFl~ximr!@Zv1=!;Gst*G&%xHi4TV>D-Z_BHk!F%? z4sM%CqP&5o#2@WuUP>%)%F%joyzF{SJL)W|6U(?vXWIC?nzI|Q6kERtB048!B73%l z^hDbKEnm3z%*D-N>hrSulY4qSYkQN3NV2M4TFZNr_`We`G#X(Md+#_S^T;}BsH-E$ zH|eEWxBDo#U$Ol`e~vx)&X9DW0`Qf1Mp&ht+Unyt#YyC=Jk)~eM~`iezhtuqc$V4! z&UF-28arr!ds^1kT-)&Twxi*XKcH5Y1Wo3uqtqi{X0vi#J=;bP6{zk7J-_~9CAX{&714+NJNsv23(+IJpaM_0w) z$Q3cJINJ&UJ5?LYsM^yx$00#$OT(X#8EJDVGJDyku^ zW`?E^HVt=(QJq}wF=DjZ8ND_HCbG5GJLie!Kygz=s4@O#C>v#NI^9jJ)`A&hthit3 zCULVF&TEgcbVG1M-?4MhC(N8{l~=Q+rCC3qmU*NeW~$*56!m)6xO4vMSD%M<)O`Ps z5A%=Cmzc5FERyjV z91jM$swgQb7A)&Yo}a-`Z(-$FVVEM*z-V5oU{5S;OxYsF3m5_0nC7`yf!1J7E!|&j fz{5JM!#b?PI;_Jwtiw92ztQ>=aM=4r04M+eDcFri literal 1893 zcmV-r2b%aFiwFSjJPuC)1MOICbK1%k_E-27Ta`v41q3!Y85_tnX{H~VG@T~5UyO%Y zqy_e(x6!WrGQIxqJ!f|Xk|nN5>g3LyvSSahd(Ly-&mL(J#NLL5?#XvteORwvjZRKS z!&j%L!;}8#{PcV{Q2S<`3ISHw^;^_^K z_RuA((fQ!@>(@U*rysZ$CjRELm#mX#mw^F3KOgRi|KRj&FetG=uiKf5M1 z>;F9d<2MlTX0z$OeAy%~$v*Mdg zWO5y+7vv+~F!C{XC>gJ%OfFn^>*Aglhi;O_OCB&c1mY=j!@t{XF0;r(X}J<}9zleH zz-g2JG#e>faUoecU&ryrv6GY~G-dNe?BClRVpHFbBey1}@h}H0F|{u%pgtE#K=0>V zvhZNg5>pLm5@ahL%>|Q^M=NnKt|Hp8J&in1Vj;f~Uh~$-@Z#tOVofnHb1ay{CDgFi z2tc>ZlXWcPdB~#dVD!g)0R7OcNun$&rBN1rmqe<-K2IuDwSB&1dJ6k_(y1cl`4g%l z;u%v)vV;1MS-S_U8K3J z;B$Xs86~^7DNPcVR?q{wU_pse?O0?Prv+{_!^-t|7l$E*&_X+*lKI5kjpV0)efW$C zp}4eaWb7)u$6_&x(2QtVMcnU(LAZOM1*@hx&ggN*6)2A6+UyV|Fi zt;Ue8*1J-Dc(U+SqchdNIHdaVxHbRhr_W!m?6UgywYs1h;@~3b$drc_G<|m6#u94q zXc;?b^xF@g-u?ak$8EL~L2sDfQ(k!g=>rl!)Y@CT>b}a*ZM{ZW5a@C)5i4WAu{Ats zKbkC6Kr~GOhTSDW>@x?bJLXuEvp_IKm@5dIpyM*mA|Lpc6wbAh9&AYm@r;g8y^MNm zwMD4VElD3~9|)NSEOK--)S=;QG{7QocZSdnB~h_pQ-<3tM8`U<#g)3T?CUF=sxi8Y z=k|5SU>T^bt}-=vjRh#SG0^JY_(f3~zod#MrI8aFF44wJOoA9w_eQV&ACGiB0~jNjfA4a8Nz1ELw+KJ($j7>N{B0N-^c)#}a>v7Ej2` zqW@j$*v&0&f&=#4fRD!HN}L}Dn*8z$DRnu)f+b#1IN7O#)P!cr`_^r^Bxe+cot^9U2ciMx9+l-f8@FOE$E5Gf>YL*H_pCO=Qh06uYgO z@z3;z>QG!fN&r*l+A~pVS-|jdy0#PWh^yNFj&-kK zRmA5Tc0Xr#@bo84B|weO|Mvb%o4j~I)Hf69e7w?~8}Dn=3s9k451dpx=+4518L~=9 z+YzLygek)sHS&||116S6D`K~rKxekHx^_IN&L?+yhHB>*Q&}5x*X|Up+9{@;v6X&> z8PmEert>ahJS-@#>Dy+k`ic>DXYzJbH8i{D-7N9(*(je?2~ux(5QGff^6*=~Nd29z znuqykm+|ZG|NH&3zIp#Y7>-7xzJCATKfeF}5v%#f(pw5_8A})moX4s4XbJ-lnEJUGK}#?rL-$)d f@VJiaxQ^?%j_bIN>$r~VceMTs*y?&?04M+e(8#zV diff --git a/blockem/blockem.php b/blockem/blockem.php index 43f34554e..9134bd0b6 100755 --- a/blockem/blockem.php +++ b/blockem/blockem.php @@ -101,15 +101,15 @@ function blockem_prepare_body(&$a,&$b) { } } if($found) { - $rnd = random_string(8); + $rnd = random_string(8); $b['html'] = ''; } } function blockem_display_item(&$a,&$b) { - if(strstr($b['output'],'id="blockem-wrap-')) - $b['output'] = preg_replace('/\/','get_baseurl() . "/images/default-profile-sm.jpg" . '" class="wall-item-photo$3>',$b['output']); + if(strstr($b['output']['body'],'id="blockem-wrap-')) + $b['output']['thumb'] = $a->get_baseurl() . "/images/default-profile-sm.jpg"; } @@ -193,4 +193,4 @@ function blockem_init(&$a) { set_pconfig(local_user(),'blockem','words',$words); info( t('blockem settings updated') . EOL ); killme(); -} \ No newline at end of file +} From 90039f5522cbb443d96994c88ee1e14d674d3c1a Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 11:16:21 -0500 Subject: [PATCH 29/41] added a mibbit/irc chatroom plugin --- mibbit/mibbit.php | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 mibbit/mibbit.php diff --git a/mibbit/mibbit.php b/mibbit/mibbit.php new file mode 100755 index 000000000..df3494a42 --- /dev/null +++ b/mibbit/mibbit.php @@ -0,0 +1,62 @@ +' . t('Mibbit IRC Chatroom') . '
'; +} + + +function mibbit_module() { + return; +} + + + + + +function mibbit_content(&$a) { + +// this stuff is supposed to go in the page header + +$a->page['htmlhead'] .= 'session_start(); + $nick = empty($_SESSION[\'user_name\']) ? \'Wdg\' : $_SESSION[\'user_name\']; + $server = \"irc.mibbit.net\"; // default: + $room = \"friendica\"; // w/o # or %23 ! + + $uri = \"https://widget.mibbit.com/\" . + \"?nick=$nick_%3F%3F\" . // each %3F(=?) will be replaced by a random digit + \"&customprompt=Welcome%20to%20$server/$room\" . + \"&customloading=maybe%20you%20need%20to%20close%20other%20Mibbit%20windows%20first...\" . + \"&settings=c76462e5055bace06e32d325963b39f2\"; // etc. + if (!empty($room)) {$uri .= \'&channel=%23\' . $room;} + if (!empty($server )) {$uri .= \'&server=\' . $server;}' + + // add the chatroom frame and some html + + $s .= '

chat

'; + $s .= '
'; + $s .= ''; + $s .= '
(no spaces, interpunctuation or leading ciphers in your /nick name)'; + $s .= '

type /help to learn about special commands

'; + $s .= '

' + +} From 275d79ff9ab313f5a3dfc297baa5cb614d0b2faa Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 11:29:19 -0500 Subject: [PATCH 30/41] minor alterations to mibbit.php --- mibbit.tar.gz | Bin 0 -> 10240 bytes mibbit/mibbit.php | 16 +++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 mibbit.tar.gz diff --git a/mibbit.tar.gz b/mibbit.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6b0a386b4d67bcc995c723b573320affa65ddad7 GIT binary patch literal 10240 zcmeH}U2oeq6ozv<{fbl1jqDdHYk=!~GC9I+cs?22y}K!Q9Sw))qtoH} za5x+t4Ti(P+2n{OkD1hA?b=wTiH@w2yTjPm?*BCZHJ|^$SlQOUy+u`CJwnc|z<*Q! z@nn3z{^J2;LW4)h<-wBw^ZL&&QS%^v_AH=h^p2JMg5EZgpjSDwbXC+FA>G^$+@xAm zRw#KvEX#<|UOPgkl)_jmRXWRGxi*c}FdDe`m$l86z982@l&~V(3Q50HZf$iD$8K~# z7?m9MaS#OSTBa`2KEz5$bZJra`t&*YPV4%YCf9#%>E`-|<`m8{@rlxc88h#| z=eZTO;GM;cQLg!V-f8#NS%egk?S*gK0>1g>RZ~P)m#~kia2B)0EXHDsa7r$r2cS!p z)dfFrwzZZGCRjc&O_j7<+TL-Oxx|AwCYuXG#@6dKxre%{l;If)Pa8!jy3ILNY{Mz% zEaN%|y6pMF4P1x0Eekgq-cW=c8*ZG2R_<`Nz5bLapsp0@MWo380?&|%I@87@q z`Q7z0tPS)aA>UXiQH6XI*R2EbByWpz^KAHryT}q^gXU9f|@3 zzI3~qH+x$>9sh(sH{+snmga=_-u$vpTTv90aMHXgSPH1g4jrhO%#c1bdTKKA>Ko4p+3?>!2|G9fqflI;@buv0ZYCFj|}J1tO5yeL#r z{I1Dd^TkDPC%jCO_2k?krenEZ&88;Y*^8A-mSL_;b_z7-8YEVKCK;^rQ+xW#iH zTA~*{smN52kU7Dk09(1Qikdaw7T9xvGX#pGR8)|uae=WLO>uL0xD%p(FIIlKu)B&= zob#e`yTuY3=_aZM)QYEq6`)s^sJ}shPw!_H?<+jZQRSxeI9eb4&hP`CfG6Mycmke) uC*TQq0-k^;;0bsFo`5Id33vjYfG6Mycmke)C*TQq0-k^;;0Zi3fjpage['htmlhead'] .= 'session_start(); @@ -48,15 +50,15 @@ $a->page['htmlhead'] .= 'session_start(); // add the chatroom frame and some html - $s .= '

chat

'; - $s .= '
'; - $s .= ''; - $s .= '
(no spaces, interpunctuation or leading ciphers in your /nick name)'; - $s .= '

type /help to learn about special commands

'; - $s .= '

' + $o .= ''; + $o .= '
(no spaces, interpunctuation or leading ciphers in your /nick name)'; + $o .= '

type /help to learn about special commands

'; + $o .= '
' } From dcddf61cce914bed74a52b1d1b6221ca5bb79697 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 11:35:06 -0500 Subject: [PATCH 31/41] again, just minor adjustment to mibbit --- mibbit/mibbit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mibbit/mibbit.php b/mibbit/mibbit.php index 443c8881b..41568c11f 100755 --- a/mibbit/mibbit.php +++ b/mibbit/mibbit.php @@ -3,7 +3,7 @@ * Name: Mibbit Chat Plugin * Description: add a mibbit/irc chatroom * Version: 1.0 - * Author: tony baldwin | http://tonybaldwin.me + * Author: tony baldwin */ From 020f3f6e2ba230666816c6ea36ae617864b33cfe Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 13:55:29 -0500 Subject: [PATCH 32/41] another minor alteration to mibbit --- mibbit/mibbit.php | 1 + 1 file changed, 1 insertion(+) diff --git a/mibbit/mibbit.php b/mibbit/mibbit.php index 41568c11f..90f322c39 100755 --- a/mibbit/mibbit.php +++ b/mibbit/mibbit.php @@ -31,6 +31,7 @@ function mibbit_module() { function mibbit_content(&$a) { + $baseurl = $a->get_baseurl() . '/addon/mibbit'; $o = ''; // this stuff is supposed to go in the page header From 47e812e199eb1d7d1a66fa25d2f84b65bfc805c4 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 18:12:34 -0500 Subject: [PATCH 33/41] removed mibbit, added simpler irc chat --- irc/irc.php | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 irc/irc.php diff --git a/irc/irc.php b/irc/irc.php new file mode 100644 index 000000000..fa90029b6 --- /dev/null +++ b/irc/irc.php @@ -0,0 +1,41 @@ + +*/ + + +function irc_install() { +register_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu'); +} + +function irc_uninstall() { +unregister_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu'); + +} + +function irc_app_menu($a,&$b) { +$b['app_menu'][] = ''; +} + + +function irc_module() { +return; +} + + +function irc_content(&$a) { + +$baseurl = $a->get_baseurl() . '/addon/irc'; +$o = ''; + + + // add the chatroom frame and some html + $o .= '

IRC chat

'; + $o .= '' + +} + + From 2ab37d3dbf8bca2ee458355d4272a63b527525c8 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 18:13:12 -0500 Subject: [PATCH 34/41] tarred up irc --- irc.tar.gz | Bin 0 -> 10240 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 irc.tar.gz diff --git a/irc.tar.gz b/irc.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..82fcb9b33c72a7aaa08f966bb4bb93c3e10ee170 GIT binary patch literal 10240 zcmeH{O>5gg5QcTuuNZ`gY?J82$aZmMg_2%!DJ6$ql3>=-+FB~_iq)zil>GP3%696e zB|Q{FptE44o!$9*=9PsmBIm>_#x`{`A(--qkrn89y z@yRMW3jCkXKfA=qyU}Rmj^Gp9@;O}JT)|bv41BJ;jgV;n$lF4T#t0?nz{(PsgllQI zmfXM%ui4|yp+GOK)D~U7aNYLTlQ72Zht5<=&%u5~uwr%jAS7g!G0i-RtZ{D(w>)=8 zk?XqaP8K#Hpg5O8;zwH7gCTr(HQ$I9b1y5Uz77J`G|MfQU2qNomZqdt^Fh(pX#Jlr z4d1&@FJgD{IC>}lHU4i24#@{TJ3sSRwg-Q8`?K)-+k03*kd@*a6g6wxg@-N|Mwps= zdB&j9e7*3n4=)cO1T(Nb^~5dgV2HLLi&&mT7$Oh)7JucpRb^N6JwDTE`G-4&!ih>V zIP;k;5o=^E?{tl|`RpR!aI@T7Fb-yno@rx7U)dJ$#dRTydX1Qh!$A?2`ih|vF@E}T4q2n};aaVD%sSIx4*)2lb1>Y5g-CYfCvx)B0vO)01 Date: Fri, 2 Mar 2012 18:21:37 -0500 Subject: [PATCH 35/41] fixed irc chat...IT WORKS! --- irc/irc.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/irc/irc.php b/irc/irc.php index fa90029b6..139c5e61c 100644 --- a/irc/irc.php +++ b/irc/irc.php @@ -33,8 +33,12 @@ $o = ''; // add the chatroom frame and some html - $o .= '

IRC chat

'; - $o .= '' + $o .= <<< EOT +

IRC chat

+ +EOT; + +return $o; } From 2b876524a5b472c4cad88fc3e51f8cb8c33a0d41 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 18:25:34 -0500 Subject: [PATCH 36/41] for aesthetic reasons, reduced size of IRC chat window --- irc/irc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/irc/irc.php b/irc/irc.php index 139c5e61c..397844e05 100644 --- a/irc/irc.php +++ b/irc/irc.php @@ -35,7 +35,7 @@ $o = ''; // add the chatroom frame and some html $o .= <<< EOT

IRC chat

- + EOT; return $o; From e57eb5d1986efce574a2c9d88e24fc05262cc8c5 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 18:54:24 -0500 Subject: [PATCH 37/41] returned ljpost to same as in friendica/friendica-addons rather than make it offer other sites, I am writing separate plugins for separate sites. I already have a dreamwidth one written, as can be seen in my repo. Can/maybe will write up insanejournal, deadjournal, blurty, etc. eventually, too --- ljpost/ljpost.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index 3084b8bd3..8431b134d 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -61,7 +61,6 @@ function ljpost_settings(&$a,&$s) { $lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); $lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); - $lj_url = get_pconfig(local_user(), 'ljpost', 'lj_url'); /* Add some HTML to the existing form */ @@ -83,11 +82,6 @@ function ljpost_settings(&$a,&$s) { $s .= ''; $s .= '
'; - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - $s .= '
'; $s .= ''; $s .= ''; @@ -108,7 +102,6 @@ function ljpost_settings_post(&$a,&$b) { set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); - set_pconfig(local_user(),'ljpost','lj_url',trim($_POST['lj_url'])); } @@ -170,7 +163,7 @@ function ljpost_send(&$a,&$b) { $lj_username = get_pconfig($b['uid'],'ljpost','lj_username'); $lj_password = get_pconfig($b['uid'],'ljpost','lj_password'); - $lj_blog = '$lj_url/interface/xmlrpc'; + $lj_blog = 'http://www.livejournal.com/interface/xmlrpc'; if($lj_username && $lj_password && $lj_blog) { From 99d9fddb6af9e872266666038447771e42ce13b4 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Fri, 2 Mar 2012 19:00:42 -0500 Subject: [PATCH 38/41] realized I had tarred up the irc, then made changes without updating the tarball, so, just now I updated the tarball. --- irc.tar.gz | Bin 10240 -> 10240 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/irc.tar.gz b/irc.tar.gz index 82fcb9b33c72a7aaa08f966bb4bb93c3e10ee170..82c3baab84852e742798ec4e00baec3eca413486 100644 GIT binary patch delta 171 zcmZn&Xb70l&u46GV#Z)#XkcPs#-Lz2*^n`1Gb3XwqqrG^p`p2viIFK(fuWhXIfH@$ zL;-U(vyMu>f}X8{jg5_htA7ZWO@@)3XOOc(az{0hiI`=-^|1QMS+Qd0RZl(E2RJc From 6995cf87de0a8ba32b9f10f738b6b9b1483228e0 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 2 Mar 2012 16:46:56 -0800 Subject: [PATCH 39/41] please use make to build packages --- dwpost.tar.gz | Bin 2522 -> 0 bytes irc.tar.gz | Bin 10240 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 dwpost.tar.gz delete mode 100644 irc.tar.gz diff --git a/dwpost.tar.gz b/dwpost.tar.gz deleted file mode 100644 index d22d966e8eff1030c8c798fe03e798702df31dcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2522 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 E1Lc1r0RR91 From 49f2d04a152b651b8e47699fb28fffcc50abf1b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 5 Mar 2012 11:43:38 +0000 Subject: [PATCH 40/41] Bugfix --- facebook/facebook.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index 0e30b62b2..35338fa16 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -289,7 +289,7 @@ function fb_get_friends_sync_full($uid, $access_token, $person) { intval($r[0]['id']) ); } - continue; + return; } else { @@ -322,7 +322,7 @@ function fb_get_friends_sync_full($uid, $access_token, $person) { ); if(! count($r)) { - continue; + return; } $contact = $r[0]; From f68ba9b87d4b6b60dc3ee52787a1baaaec345110 Mon Sep 17 00:00:00 2001 From: Cat Gray Date: Thu, 8 Mar 2012 21:57:57 +0200 Subject: [PATCH 41/41] Added tags support to LJ and DW connectors. (Friendica tags are converted to LJ/DW tags.) --- dwpost.tgz | Bin 0 -> 2630 bytes dwpost/dwpost.php | 10 +++++++++- ljpost.tgz | Bin 2655 -> 2784 bytes ljpost/ljpost.php | 12 ++++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 dwpost.tgz diff --git a/dwpost.tgz b/dwpost.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7841e41938f22b4077f7a64c300ceb066f61bf89 GIT binary patch literal 2630 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 literal 0 HcmV?d00001 diff --git a/dwpost/dwpost.php b/dwpost/dwpost.php index c7bfd939f..5f8dcc733 100644 --- a/dwpost/dwpost.php +++ b/dwpost/dwpost.php @@ -6,6 +6,7 @@ * Version: 1.0 * Author: Tony Baldwin * Author: Michael Johnston + * Author: Cat Gray */ function dwpost_install() { @@ -173,6 +174,7 @@ function dwpost_send(&$a,&$b) { $title = $b['title']; $post = bbcode($b['body']); $post = xmlify($post); + $tags = dwpost_get_tags($b['tag']); $date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s'); $year = intval(substr($date,0,4)); @@ -200,7 +202,7 @@ function dwpost_send(&$a,&$b) { props useragentFriendica -taglistfriendica +taglist$tags @@ -217,3 +219,9 @@ EOT; } } +function dwpost_get_tags($post) +{ + preg_match_all("/\]([^\[#]+)\[/",$post,$matches); + $tags = implode(', ',$matches[1]); + return $tags; +} diff --git a/ljpost.tgz b/ljpost.tgz index 0132a7526e110a74659620cfb3fe1589ea418b3c..60c223f489d7291a5c360061f118859727d65c5f 100644 GIT binary patch literal 2784 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 literal 2655 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 N=zqABqfG!%002}4H5~u| diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index 16863f675..e1bd2d630 100755 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -6,6 +6,7 @@ * Version: 1.0 * Author: Tony Baldwin * Author: Michael Johnston + * Author: Cat Gray */ function ljpost_install() { @@ -179,6 +180,7 @@ function ljpost_send(&$a,&$b) { $title = xmlify($b['title']); $post = bbcode($b['body']); $post = xmlify($post); + $tags = ljpost_get_tags($b['tag']); $date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s'); $year = intval(substr($date,0,4)); @@ -213,6 +215,10 @@ function ljpost_send(&$a,&$b) { useragent Friendica + + taglist + $tags + @@ -232,3 +238,9 @@ EOT; } } +function ljpost_get_tags($post) +{ + preg_match_all("/\]([^\[#]+)\[/",$post,$matches); + $tags = implode(', ',$matches[1]); + return $tags; +}