From d0fa37e8ea7c3ad450d9920ba6224b2e10a5e56a Mon Sep 17 00:00:00 2001 From: Klaus Weidenbach Date: Mon, 9 Apr 2012 00:50:48 +0200 Subject: [PATCH 02/23] Add Gravatar plugin. This plugin provides the default gravatar lookup feature that has been in friendica's core before. In addition it lets you choose the default avatar image type and select the allowed image rating. --- gravatar/README.md | 42 +++++++++++++++++ gravatar/admin.tpl | 3 ++ gravatar/gravatar.php | 104 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 gravatar/README.md create mode 100644 gravatar/admin.tpl create mode 100644 gravatar/gravatar.php diff --git a/gravatar/README.md b/gravatar/README.md new file mode 100644 index 00000000..ff209b0e --- /dev/null +++ b/gravatar/README.md @@ -0,0 +1,42 @@ +# Gravatar Plugin +by [Klaus Weidenbach](http://friendica.dszdw.net/profile/klaus) + +This addon allows you to look up an avatar image for new users and contacts at [Gravatar](http://www.gravatar.com). This will be used if there have not been found any other avatar images yet for example through OpenID. + +Gravatar is a popular, but centralized and proprietary service where people can store an avatar image for their email-addresses. It is widely used on many pages, for example to display an avatar for comment functions, profile pages, etc. + +* * * + +# Configuration +## Default Avatar Image +If no avatar was found for an email Gravatar can create some pseudo-random generated avatars based on an email hash. You can choose between these presets: + +* __Gravatar__: default static Gravatar logo +* __MM__: (mystery-man) a static image +* __Identicon__: a generated geometric pattern based on email hash +* __Monsterid__: a generated 'monster' with different colors, faces, etc. based on email hash +* __Wavatar__: faces with different features and backgrounds based on email hash +* __Retro__: 8-bit arcade-styled pixelated faces based on email hash + +See examples at [Gravatar][1]. +## Avatar Rating +Gravatar lets users self-rate their images to be used at appropriate audiences. Choose which are appropriate for your friendica site: + +* __g__: suitable for display on all wesites with any audience type +* __pg__: may contain rude gestures, provocatively dressed individuals, the lesser swear words, or mild violence +* __r__: may contain such things as harsh profanity, intense violence, nudity, or hard drug use +* __x__: may contain hardcore sexual imagery or extremely disurbing violence + +See more information at [Gravatar][1]. + +## Alternative Configuration +Open the .htconfig.php file and add "gravatar" to the list of activated addons: + + $a->config['system']['addon'] = "..., gravatar"; + +You can add two configuration variables for the addon: + + $a->config['gravatar']['default_avatar'] = "identicon"; + $a->config['gravatar']['rating'] = "g"; + +[1]: http://www.gravatar.com/site/implement/images/ "See documentation at Gravatar for more information" diff --git a/gravatar/admin.tpl b/gravatar/admin.tpl new file mode 100644 index 00000000..83144e43 --- /dev/null +++ b/gravatar/admin.tpl @@ -0,0 +1,3 @@ +{{ inc field_select.tpl with $field=$default_avatar}}{{ endinc }} +{{ inc field_select.tpl with $field=$rating }}{{ endinc }} +
diff --git a/gravatar/gravatar.php b/gravatar/gravatar.php new file mode 100644 index 00000000..4464cd2c --- /dev/null +++ b/gravatar/gravatar.php @@ -0,0 +1,104 @@ + + */ + +/** + * Installs the plugin hook + */ +function gravatar_install() { + register_hook('avatar_lookup', 'addon/gravatar/gravatar.php', 'gravatar_lookup'); + + logger("installed gravatar"); +} + +/** + * Removes the plugin hook + */ +function gravatar_uninstall() { + unregister_hook('avatar_lookup', 'addon/gravatar/gravatar.php', 'gravatar_lookup'); + + logger("uninstalled gravatar"); +} + +/** + * Looks up the avatar at gravatar.com and returns the URL. + * + * @param $a array + * @param &$b array + */ +function gravatar_lookup($a, &$b) { + $default_avatar = get_config('gravatar', 'default_img'); + $rating = get_config('gravatar', 'rating'); + + // setting default value if nothing configured + if(! $default_avatar) + $default_avatar = 'identicon'; // pseudo-random geometric pattern based on email hash + if(! $rating) + $rating = 'g'; // suitable for display on all websites with any audience type + + $hash = md5(trim(strtolower($b['email']))); + + $url = 'http://www.gravatar.com/avatar/' .$hash .'.jpg'; + $url .= '?s=' .$b['size'] .'&r=' .$rating; + if ($default_avatar != "gravatar") + $url .= '&d=' .$default_avatar; + + $b['url'] = $url; +} + +/** + * Display admin settings for this addon + */ +function gravatar_plugin_admin (&$a, &$o) { + $t = file_get_contents( dirname(__file__)."/admin.tpl"); + + $default_avatar = get_config('gravatar', 'default_img'); + $rating = get_config('gravatar', 'rating'); + + // set default values for first configuration + if(! $default_avatar) + $default_avatar = 'identicon'; // pseudo-random geometric pattern based on email hash + if(! $rating) + $rating = 'g'; // suitable for display on all websites with any audience type + + // Available options for the select boxes + $default_avatars = array( + 'gravatar' => 'Gravatar', + 'mm' => 'MM', + 'identicon' => 'Identicon', + 'monsterid' => 'Monsterid', + 'wavatar' => 'Wavatar', + 'retro' => 'Retro' + ); + $ratings = array( + 'g' => 'g', + 'pg' => 'pg', + 'r' => 'r', + 'x' => 'x' + ); + + $o = ''; + $o .= replace_macros( $t, array( + '$submit' => t('Submit'), + '$default_avatar' => array('avatar', t('Default avatar image'), $default_avatar, t('Select default avatar image if none was found at Gravatar. See README'), $default_avatars), + '$rating' => array('rating', t('Rating of images'), $rating, t('Select the appropriate avatar rating for your site. See README'), $ratings), + )); +} + +/** + * Save admin settings + */ +function gravatar_plugin_admin_post (&$a) { + check_form_security_token('gravatarsave'); + + $default_avatar = ((x($_POST, 'avatar')) ? notags(trim($_POST['avatar'])) : 'identicon'); + $rating = ((x($_POST, 'rating')) ? notags(trim($_POST['rating'])) : 'g'); + set_config('gravatar', 'default_img', $default_avatar); + set_config('gravatar', 'rating', $rating); + info( t('Gravatar settings updated.') .EOL); +} +?> From c9ccd91dd96baa61e4c075ab4e099ce436a584ec Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 9 Apr 2012 21:28:11 +0200 Subject: [PATCH 03/23] New addon "convpath": It converts all local links according to the current scheme (http/https) --- convpath/README | 7 ++++++ convpath/convpath.php | 50 +++++++++++++++++++++++++++++++++++++++++++ facebook/facebook.php | 10 +++++---- 3 files changed, 63 insertions(+), 4 deletions(-) create mode 100755 convpath/README create mode 100644 convpath/convpath.php diff --git a/convpath/README b/convpath/README new file mode 100755 index 00000000..9d1c3072 --- /dev/null +++ b/convpath/README @@ -0,0 +1,7 @@ +convpath + +This addon converts all internal paths according to the current scheme. + +That means that if a page is called via https then all internal links are also converted into https. + +Same happens when you call your page with http. diff --git a/convpath/convpath.php b/convpath/convpath.php new file mode 100644 index 00000000..5ad7fbcb --- /dev/null +++ b/convpath/convpath.php @@ -0,0 +1,50 @@ + + * + */ + +function convpath_install() { + register_hook('page_end', 'addon/convpath/convpath.php', 'convpath_page_end'); + register_hook('page_header', 'addon/convpath/convpath.php', 'convpath_page_header'); +} + + +function convpath_uninstall() { + unregister_hook('page_end', 'addon/convpath/convpath.php', 'convpath_page_end'); + unregister_hook('page_header', 'addon/convpath/convpath.php', 'convpath_page_header'); +} + +function convpath_page_header(&$a, &$o){ + $o = convpath_convert($o); +} + +function convpath_page_end(&$a, &$o){ + $o = convpath_convert($o); + $a->page['aside'] = convpath_convert($a->page['aside']); +} + +/* +Converts a given path according to the current scheme +*/ +function convpath_convert($path) { + global $a; + + if ($path == "") + return(""); + + $ssl = (substr($a->get_baseurl(), 0, 8) == "https://"); + + if ($ssl) { + $search = "http://".$a->get_hostname(); + $replace = "https://".$a->get_hostname(); + } else { + $search = "https://".$a->get_hostname(); + $replace = "http://".$a->get_hostname(); + } + $path = str_replace($search, $replace, $path); + return($path); +} diff --git a/facebook/facebook.php b/facebook/facebook.php index 70a353dd..5990a99e 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -1447,11 +1447,13 @@ function fb_consume_stream($uid,$j,$wall = false) { //if(($datarray['body'] != '') and ($uid == 1)) // $datarray['body'] .= "[noparse]".print_r($entry, true)."[/noparse]"; - if ($entry->place->name) - $datarray['coord'] = $entry->place->name; - else if ($entry->place->location->street or $entry->place->location->city or $entry->place->location->Denmark) { + if ($entry->place->name or $entry->place->location->street or + $entry->place->location->city or $entry->place->location->Denmark) { + $datarray['coord'] = ''; + if ($entry->place->name) + $datarray['coord'] .= $entry->place->name; if ($entry->place->location->street) - $datarray['coord'] = $entry->place->location->street; + $datarray['coord'] .= $entry->place->location->street; if ($entry->place->location->city) $datarray['coord'] .= " ".$entry->place->location->city; if ($entry->place->location->country) From acebf88aa5ceb6a613232c4bedbb3822c592f92d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 9 Apr 2012 22:05:22 +0200 Subject: [PATCH 04/23] =?UTF-8?q?New=20addon=20"fromgplus".=20Should=20imp?= =?UTF-8?q?ort=20=C3posts=20from=20Google+.=20Not=20working=20by=20now.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fromgplus/fromgplus.php | 181 ++++++++++++++++++++++++++++++++++++++ fromgplus/tofriendica.php | 128 +++++++++++++++++++++++++++ 2 files changed, 309 insertions(+) create mode 100755 fromgplus/fromgplus.php create mode 100644 fromgplus/tofriendica.php diff --git a/fromgplus/fromgplus.php b/fromgplus/fromgplus.php new file mode 100755 index 00000000..09b6c605 --- /dev/null +++ b/fromgplus/fromgplus.php @@ -0,0 +1,181 @@ + + * + */ + +function fromgplus_install() { + register_hook('plugin_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings'); + register_hook('plugin_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post'); +} + +function fromgplus_uninstall() { + unregister_hook('plugin_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings'); + unregister_hook('plugin_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post'); +} + +function fromgplus_addon_settings(&$a,&$s) { + + if(! local_user()) + return; + + $enable_checked = (intval(get_pconfig(local_user(),'fromgplus','enable')) ? ' checked="checked"' : ''); + $account = get_pconfig(local_user(),'fromgplus','account'); + + $s .= '
'; + $s .= '

' . t('Google+ Import Settings').'

'; + $s .= '
'; + + $s .= ''; + $s .= ''; + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= '
'; + + return; +} + +function fromgplus_addon_settings_post(&$a,&$b) { + + if(! local_user()) + return; + + if($_POST['fromgplus-submit']) { + set_pconfig(local_user(),'fromgplus','account',trim($_POST['fromgplus-account'])); + $enable = ((x($_POST,'fromgplus-enable')) ? intval($_POST['fromgplus-enable']) : 0); + set_pconfig(local_user(),'fromgplus','enable', $enable); + info( t('Google+ Import Settings saved.') . EOL); + } +} +/* +function html2bbcode($html) { + + $bbcode = html_entity_decode($html, ENT_QUOTES, 'UTF-8'); + + $bbcode = str_replace(array("\n"), array(""), $bbcode); + $bbcode = str_replace(array("", ""), array("[b]", "[/b]"), $bbcode); + $bbcode = str_replace(array("", ""), array("[i]", "[/i]"), $bbcode); + $bbcode = str_replace(array("", ""), array("[s]", "[/s]"), $bbcode); + $bbcode = str_replace(array("
"), array("\n"), $bbcode); + + $bbcode = trim(strip_tags($bbcode)); + return($bbcode); +} + +function friendicapost($post) { + global $friendica; + + $api = new Statusnet($friendica["user"], $friendica["pw"], "GooglePlus", $friendica["server"]); + $ret = $api->updateStatus($post); + $api->endSession(); +} + +function handleattachments($item) { + $post = ""; + + foreach ($item->object->attachments as $attachment) { + switch($attachment->objectType) { + case "video": + //$post .= "\n\n[url=".$attachment->url."]". + // "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; + $post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n"; + + //if (strpos($attachment->embed->url, "youtube.com")) + // $post .= "[youtube]".$attachment->url."[/youtube]\n"; + //else + /// $post .= "[url=".$attachment->url."][img]".$attachment->image->url."[/img][/url]\n"; + + ///$post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]"; + break; + + case "article": + //$post .= "\n\n[url=".$attachment->url."]". + // "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; + $post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n"; + $post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]"; + break; + + case "photo": + //$post .= "\n\n[url=".$attachment->fullImage->url."]". + // "[img]".$attachment->fullImage->url."[/img][/url]\n"; + $post .= "\n\n[img]".$attachment->fullImage->url."[/img]\n"; + if ($attachment->displayName != "") + $post .= html2bbcode($attachment->displayName)."\n"; + break; + + case "photo-album": + $post .= "\n\n[url=".$attachment->url."]". + "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; + break; + + default: + print_r($attachment); + die(); + break; + } + } + return($post); +} + +$result = file_get_contents("https://www.googleapis.com/plus/v1/people/".$google["id"]."/activities/public?alt=json&pp=1&key=".$google["key"]."&maxResults=".$google["maxfetch"]); +$activities = json_decode($result); + +$state = array("lastid"=>''); +if (file_exists($statefile)) + $state = unserialize(file_get_contents($statefile)); + +$lastid = ""; + +foreach($activities->items as $item) { + if ($item->id == $state["lastid"]) + break; + + if ($lastid == "") + $lastid = $item->id; + + switch($item->object->objectType) { + case "note": + $post = html2bbcode($item->object->content); + + if (is_array($item->object->attachments)) + $post .= handleattachments($item); + friendicapost($post); + break; + + case "activity": + $post = html2bbcode($item->annotation)."\n"; + //$post .= html2bbcode("♲ "); + $post .= html2bbcode("♻ "); + $post .= "[url=".$item->object->actor->url."]".$item->object->actor->displayName."[/url]"; + $post .= " \n"; + //$post .= "[quote]"; + + $post .= html2bbcode($item->object->content); + + if (is_array($item->object->attachments)) + $post .= "\n".trim(handleattachments($item)); + + //$post .= "[/quote]"; + + friendicapost($post); + break; + + default: + print_r($item); + die(); + break; + } +} + +if ($lastid != "") { + $state['lastid'] = $lastid; + file_put_contents($statefile, serialize($state)); +} +*/ diff --git a/fromgplus/tofriendica.php b/fromgplus/tofriendica.php new file mode 100644 index 00000000..b185ecc1 --- /dev/null +++ b/fromgplus/tofriendica.php @@ -0,0 +1,128 @@ +", ""), array("[b]", "[/b]"), $bbcode); + $bbcode = str_replace(array("", ""), array("[i]", "[/i]"), $bbcode); + $bbcode = str_replace(array("", ""), array("[s]", "[/s]"), $bbcode); + $bbcode = str_replace(array("
"), array("\n"), $bbcode); + + $bbcode = trim(strip_tags($bbcode)); + return($bbcode); +} + +function friendicapost($post) { + global $friendica; + + $api = new Statusnet($friendica["user"], $friendica["pw"], "GooglePlus", $friendica["server"]); + $ret = $api->updateStatus($post); + $api->endSession(); +} + +function handleattachments($item) { + $post = ""; + + foreach ($item->object->attachments as $attachment) { + switch($attachment->objectType) { + case "video": + //$post .= "\n\n[url=".$attachment->url."]". + // "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; + $post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n"; + + //if (strpos($attachment->embed->url, "youtube.com")) + // $post .= "[youtube]".$attachment->url."[/youtube]\n"; + //else + /// $post .= "[url=".$attachment->url."][img]".$attachment->image->url."[/img][/url]\n"; + + ///$post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]"; + break; + + case "article": + //$post .= "\n\n[url=".$attachment->url."]". + // "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; + $post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n"; + $post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]"; + break; + + case "photo": + //$post .= "\n\n[url=".$attachment->fullImage->url."]". + // "[img]".$attachment->fullImage->url."[/img][/url]\n"; + $post .= "\n\n[img]".$attachment->fullImage->url."[/img]\n"; + if ($attachment->displayName != "") + $post .= html2bbcode($attachment->displayName)."\n"; + break; + + case "photo-album": + $post .= "\n\n[url=".$attachment->url."]". + "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; + break; + + default: + print_r($attachment); + die(); + break; + } + } + return($post); +} + +$result = file_get_contents("https://www.googleapis.com/plus/v1/people/".$google["id"]."/activities/public?alt=json&pp=1&key=".$google["key"]."&maxResults=".$google["maxfetch"]); +$activities = json_decode($result); + +$state = array("lastid"=>''); +if (file_exists($statefile)) + $state = unserialize(file_get_contents($statefile)); + +$lastid = ""; + +foreach($activities->items as $item) { + if ($item->id == $state["lastid"]) + break; + + if ($lastid == "") + $lastid = $item->id; + + switch($item->object->objectType) { + case "note": + $post = html2bbcode($item->object->content); + + if (is_array($item->object->attachments)) + $post .= handleattachments($item); + friendicapost($post); + break; + + case "activity": + $post = html2bbcode($item->annotation)."\n"; + //$post .= html2bbcode("♲ "); + $post .= html2bbcode("♻ "); + $post .= "[url=".$item->object->actor->url."]".$item->object->actor->displayName."[/url]"; + $post .= " \n"; + //$post .= "[quote]"; + + $post .= html2bbcode($item->object->content); + + if (is_array($item->object->attachments)) + $post .= "\n".trim(handleattachments($item)); + + //$post .= "[/quote]"; + + friendicapost($post); + break; + + default: + print_r($item); + die(); + break; + } +} + +if ($lastid != "") { + $state['lastid'] = $lastid; + file_put_contents($statefile, serialize($state)); +} +?> From bf09c24e1588ff986ef208d773bc9cddc7002342 Mon Sep 17 00:00:00 2001 From: tony baldwin Date: Tue, 10 Apr 2012 08:44:31 -0400 Subject: [PATCH 05/23] added Random Planets, Empirial Version Also, "blogger", but that is still in progress and untested. --- blogger/blogger.css | 16 ++++ blogger/blogger.php | 200 ++++++++++++++++++++++++++++++++++++++++++++ planets.tar.gz | Bin 0 -> 10240 bytes planets/planets.css | 14 ++++ planets/planets.php | 181 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 411 insertions(+) create mode 100755 blogger/blogger.css create mode 100755 blogger/blogger.php create mode 100644 planets.tar.gz create mode 100755 planets/planets.css create mode 100755 planets/planets.php diff --git a/blogger/blogger.css b/blogger/blogger.css new file mode 100755 index 00000000..4e2294e5 --- /dev/null +++ b/blogger/blogger.css @@ -0,0 +1,16 @@ + +#blogger-enable-label, #blogger-username-label, #blogger-password-label, #blogger-bydefault-label { + float: left; + width: 200px; + margin-top: 10px; +} + +#blogger-checkbox, #blogger-username, #blogger-password, #blogger-bydefault { + float: left; + margin-top: 10px; +} + +#blogger-submit { + margin-top: 15px; +} + diff --git a/blogger/blogger.php b/blogger/blogger.php new file mode 100755 index 00000000..5c9b4399 --- /dev/null +++ b/blogger/blogger.php @@ -0,0 +1,200 @@ + + */ + +function blpost_install() { + register_hook('post_local', 'addon/blpost/blpost.php', 'blpost_post_local'); + register_hook('notifier_normal', 'addon/blpost/blpost.php', 'blpost_send'); + register_hook('jot_networks', 'addon/blpost/blpost.php', 'blpost_jot_nets'); + register_hook('connector_settings', 'addon/blpost/blpost.php', 'blpost_settings'); + register_hook('connector_settings_post', 'addon/blpost/blpost.php', 'blpost_settings_post'); + +} +function blpost_uninstall() { + unregister_hook('post_local', 'addon/blpost/blpost.php', 'blpost_post_local'); + unregister_hook('notifier_normal', 'addon/blpost/blpost.php', 'blpost_send'); + unregister_hook('jot_networks', 'addon/blpost/blpost.php', 'blpost_jot_nets'); + unregister_hook('connector_settings', 'addon/blpost/blpost.php', 'blpost_settings'); + unregister_hook('connector_settings_post', 'addon/blpost/blpost.php', 'blpost_settings_post'); + + // obsolete - remove + unregister_hook('post_local_end', 'addon/blpost/blpost.php', 'blpost_send'); + unregister_hook('plugin_settings', 'addon/blpost/blpost.php', 'blpost_settings'); + unregister_hook('plugin_settings_post', 'addon/blpost/blpost.php', 'blpost_settings_post'); + +} + + +function blpost_jot_nets(&$a,&$b) { + if(! local_user()) + return; + + $bl_post = get_pconfig(local_user(),'blpost','post'); + if(intval($bl_post) == 1) { + $bl_defpost = get_pconfig(local_user(),'blpost','post_by_default'); + $selected = ((intval($bl_defpost) == 1) ? ' checked="checked" ' : ''); + $b .= '
' + . t('Post to blogger') . '
'; + } +} + + +function blpost_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(),'blpost','post'); + + $checked = (($enabled) ? ' checked="checked" ' : ''); + + $def_enabled = get_pconfig(local_user(),'blpost','post_by_default'); + + $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); + + $bl_username = get_pconfig(local_user(), 'blpost', 'bl_username'); + $bl_password = get_pconfig(local_user(), 'blpost', 'bl_password'); + $bl_blog = get_pconfig(local_user(), 'blpost', 'bl_blog'); + + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('Blogger 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 blpost_settings_post(&$a,&$b) { + + if(x($_POST,'blpost-submit')) { + + set_pconfig(local_user(),'blpost','post',intval($_POST['blpost'])); + set_pconfig(local_user(),'blpost','post_by_default',intval($_POST['bl_bydefault'])); + set_pconfig(local_user(),'blpost','bl_username',trim($_POST['bl_username'])); + set_pconfig(local_user(),'blpost','bl_password',trim($_POST['bl_password'])); + set_pconfig(local_user(),'blpost','bl_blog',trim($_POST['bl_blog'])); + + } + +} + +function blpost_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; + + $bl_post = intval(get_pconfig(local_user(),'blpost','post')); + + $bl_enable = (($bl_post && x($_REQUEST,'blpost_enable')) ? intval($_REQUEST['blpost_enable']) : 0); + + if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'blpost','post_by_default'))) + $bl_enable = 1; + + if(! $bl_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'blpost'; +} + + + + +function blpost_send(&$a,&$b) { + + if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) + return; + + if(! strstr($b['postopts'],'blpost')) + return; + + if($b['parent'] != $b['id']) + return; + + + $bl_username = xmlify(get_pconfig($b['uid'],'blpost','bl_username')); + $bl_password = xmlify(get_pconfig($b['uid'],'blpost','bl_password')); + $bl_blog = get_pconfig($b['uid'],'blpost','bl_blog'); + + if($bl_username && $bl_password && $bl_blog) { + + require_once('include/bbcode.php'); + + $title = '' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . ''; + $post = $title . bbcode($b['body']); + $post = xmlify($post); + + $xml = <<< EOT + + + blogger.newPost + + + + $bl_username + $bl_password + $post + 1 + + + +EOT; + + logger('blpost: data: ' . $xml, LOGGER_DATA); + + if($bl_blog !== 'test') + $x = post_url($bl_blog,$xml); + logger('posted to blogger: ' . (($x) ? $x : ''), LOGGER_DEBUG); + + } +} + diff --git a/planets.tar.gz b/planets.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..30f81dece54bf60586b90d7cc3038cbe47c44d0b GIT binary patch literal 10240 zcmeHLYfl?V7Ue7aiaQ=FZL-G3KoW@oA|}a9qD&qNnH{Z|$SQZ2-Mw^owW_KiWR?Fu z=hnm6Jm!(jd|0g!(2uG*b)VZTO6v}U;WH~wtn=h1@)YkbAe^{aa~8a>(@ZSU;u zKEn8Dw6il>qX&PZOmpbgSfPp5v{H8d@|K%F8oy=9|H7*#_&;0+P2PNUvDv|Q`+qcg z_;7D++5fwHqun*y{_2w40{DOK|AWWy_{Q-5{SCTLuSF&I>7A%ERS_a0mHhUpG^s8c zTc~=UPDIs|l77&Itg|8&nAXmUdML6?)dM<_mIUbq1iHv&O^q_PsAmJl`=`{#VT}gc z{CwQnTk9hUMp95n#3<)hs z%UNNp)H0)s!scXiN#+u7Dgr#7c>W-_sj8>Nj3b{Inq}mXuGl*AL#K&fmV7u(oSw-C zI;6yFKI;4HPG8z|kbDPR;E^F{Y6<)QI^KN@IbtG4M&WN8q`#l zy-k|7b;=lhDpe`~zzTR#hCJ2%V+E2vuZG2;e!?ROZ_A4F1F5OI_rBtpFBV?#Of4&Q z4*01?0Pr$zfHtU5!k%7sUL0(BQIsXI67zk=ZGBVrVAkQr#zs_!LyU{hf~No3*jVRa zTnE1U_ome_Tctvr!IRiXSS!-pdr?d2L)8r2g7=VmT4-ZgpMN8}snLbfWEB~!G=dNT z%4RHGP`X9D5Q448h#BWfo%Iq9+OeCO^rN|N;Y%Kjnz$vrI@$d0N|h*BO&2m*lpjK| zmA&K1NXtoLs1Y;SCnOPx()cM3;%WjUBi@GGu&@Az4{A!aM0~iVZIj{Ft!s_cFoT>T zF6vZzOWmck%ja?2>Q8GvUjW5#7;+hN%vSo#z7LHqA!We^_!r}F8a&f;duW;)c@A;8|%^Yk*Kcu{U)`{ z6SCJ8eY)2zK>wR`Jp_(H&s-NS1d1+-fVy}!(^oJ~BqQ+SxjK`Xr=nuo`^IZCW;*C?ZbGslN{yp;93CA#4i&h zGR&13#~rS4U?5OFc3Ve|+g8`ia)5Sb3c&QuAvrsrCT)==A9y3)>8X-jivZK01Au*@ zx~D%_{4uL=4K#o>Fn4V|4q!sfa{kKUFPPFz;KCHeN2gF>4Y5~LB{2YB$C2KJ$<$_BB zz~++jp#-|Hc=NK)Wdk7>y^o;FloQR^b~^Q8`5fGy7}S1W43C^R3?+5gRL8Q>14|ozQA1KmjPUgG_Zz zi@Jl}8AKCx(ofzCtB{Qnw@<}P zO$2VXmbwy>ADeF918wJa)C zWDepMExvCj=zz84_fOFp5`lg*+A>(dY0Qv`wHog3xfykha zB2(4YwinUEZjtNat}zV99NP2A{Sg-LM-r-;-*Su2YF7hy_B_sfIp$&(RRq6H(YA-?9?krfS$@Yby?Zdqy{_@?i3`TNY{G{m ziaQ&7SxS?G85Xx>*M&oY^E+3vxqPl?sf$#`BDQtJXO7b(w^f--fvQad9B~iIqCUf^ zusrNs?b0E#myJB^SozToQ)4=m<7{!*Noe3s&0Gm5!pK(h;dMZX|2i-X93HO&EafFh zhbjp=JnX>c9U30-%g(R**Sf=L0!@Ep)le4F7F33^&ehwM7*;A&<#VA6F0DZ$@9_+Y zdS_j}86SuOi#P4b$>nXA;{>-ueS`3`3JR^BxR&#=-)| zEwaN-F!+{NV(UVS2CdgJcqt~bylu7{Kw(z;3drd_Q6B*TA3>mJuAQMMm(P+Yl|xt( ztf*ZBuprtTF~ro>Gk>v|@7y8eZHwm-+Z!YLH7eMCj@zdv~q@x3`lg|i0+Hqf7=CTL2>fCU3oE=mP zCOz@o<~+;U;03=D|MSKzUopS<)h#*s#aMSO{Qd90+uNgukK*^=-R->*zW?v;ZSSnU z|K4TKulXKD@7rrM;TZvCd5ZIb-KSDcEfVaa$ZWn(JKNjMM?6+Sl?7H7SXp3Yft3YT7FbzeWr39i{)7d716~Na AzyJUM literal 0 HcmV?d00001 diff --git a/planets/planets.css b/planets/planets.css new file mode 100755 index 00000000..668b65bc --- /dev/null +++ b/planets/planets.css @@ -0,0 +1,14 @@ + + + +#planets-enable-label { + float: left; + width: 200px; + margin-bottom: 25px; +} + +#planets-checkbox { + float: left; +} + + diff --git a/planets/planets.php b/planets/planets.php new file mode 100755 index 00000000..62ba675b --- /dev/null +++ b/planets/planets.php @@ -0,0 +1,181 @@ + + * + * + * + * + * Addons are registered with the system in the + * .htconfig.php file. + * + * $a->config['system']['addon'] = 'plugin1,plugin2,etc.'; + * + * When registration is detected, the system calls the plugin + * name_install() function, located in 'addon/name/name.php', + * where 'name' is the name of the addon. + * If the addon is removed from the configuration list, the + * system will call the name_uninstall() function. + * + */ + + +function planets_install() { + + /** + * + * Our demo plugin will attach in three places. + * The first is just prior to storing a local post. + * + */ + + register_hook('post_local', 'addon/planets/planets.php', 'planets_post_hook'); + + /** + * + * Then we'll attach into the plugin settings page, and also the + * settings post hook so that we can create and update + * user preferences. + * + */ + + register_hook('plugin_settings', 'addon/planets/planets.php', 'planets_settings'); + register_hook('plugin_settings_post', 'addon/planets/planets.php', 'planets_settings_post'); + + logger("installed planets"); +} + + +function planets_uninstall() { + + /** + * + * uninstall unregisters any hooks created with register_hook + * during install. It may also delete configuration settings + * and any other cleanup. + * + */ + + unregister_hook('post_local', 'addon/planets/planets.php', 'planets_post_hook'); + unregister_hook('plugin_settings', 'addon/planets/planets.php', 'planets_settings'); + unregister_hook('plugin_settings_post', 'addon/planets/planets.php', 'planets_settings_post'); + + + logger("removed planets"); +} + + + +function planets_post_hook($a, &$item) { + + /** + * + * An item was posted on the local system. + * We are going to look for specific items: + * - A status post by a profile owner + * - The profile owner must have allowed our plugin + * + */ + + logger('planets invoked'); + + if(! local_user()) /* non-zero if this is a logged in user of this system */ + return; + + if(local_user() != $item['uid']) /* Does this person own the post? */ + return; + + if($item['parent']) /* If the item has a parent, this is a comment or something else, not a status post. */ + return; + + /* Retrieve our personal config setting */ + + $active = get_pconfig(local_user(), 'planets', 'enable'); + + if(! $active) + return; + + /** + * + * OK, we're allowed to do our stuff. + * Here's what we are going to do: + * load the list of timezone names, and use that to generate a list of world planets. + * Then we'll pick one of those at random and put it in the "location" field for the post. + * + */ + + $planets = array('Alderaan','Tatooine','Dagoba','Polis Massa','Coruscant','Hoth','Endor','Kamino','Rattatak','Mustafar','Iego','Geonosis','Felucia','Dantooine','Ansion','Artaru','Bespin','Boz Pity','Cato Neimoidia','Christophsis','Kashyyk','Kessel','Malastare','Mygeeto','Nar Shaddaa','Ord Mantell','Saleucami','Subterrel','Death Star','Teth','Tund','Utapau','Yavin'); +# $zones = timezone_identifiers_list(); +# foreach($zones as $zone) { +# if((strpos($zone,'/')) && (! stristr($zone,'US/')) && (! stristr($zone,'Etc/'))) +# $planets[] = str_replace('_', ' ',substr($zone,strpos($zone,'/') + 1)); +# } +# +# if(! count($planets)) +# return; + $planet = array_rand($planets,1); + $item['location'] = $planets[$planet]; + + return; +} + + + + +/** + * + * 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 planets_settings_post($a,$post) { + if(! local_user()) + return; + if($_POST['planets-submit']) + set_pconfig(local_user(),'planets','enable',intval($_POST['planets'])); +} + + +/** + * + * Called from the Plugin Setting form. + * Add our own settings info to the page. + * + */ + + + +function planets_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 */ + + $enabled = get_pconfig(local_user(),'planets','enable'); + + $checked = (($enabled) ? ' checked="checked" ' : ''); + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('Planets Settings') . '

'; + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + /* provide a submit button */ + + $s .= '
'; + +} From 0efaade0cfc382a24ff611da0679c24ce61a299d Mon Sep 17 00:00:00 2001 From: tony baldwin Date: Tue, 10 Apr 2012 08:55:54 -0400 Subject: [PATCH 06/23] minor correction --- planets/planets.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/planets/planets.php b/planets/planets.php index 62ba675b..190b1902 100755 --- a/planets/planets.php +++ b/planets/planets.php @@ -1,9 +1,10 @@ + * Author: Darth Baldwin * * * From 9bcfb4fd6d7b41117160d88b30321850e93530c3 Mon Sep 17 00:00:00 2001 From: tony baldwin Date: Tue, 10 Apr 2012 08:59:12 -0400 Subject: [PATCH 07/23] Do not meddle in Imperial affairs. This correction is none of your concern. --- planets/planets.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/planets/planets.php b/planets/planets.php index 190b1902..1c6ed43b 100755 --- a/planets/planets.php +++ b/planets/planets.php @@ -4,7 +4,7 @@ * Description: Sample Friendica plugin/addon. Set a random planet from the Emprire when posting. * Version: 1.0 * Author: Mike Macgirvin - * Author: Darth Baldwin + * Author: Darth Baldwin * * * From 1043451390deab7e304fa60ff581ac98f5bbc3cf Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 10 Apr 2012 06:16:39 -0700 Subject: [PATCH 08/23] please use make --- planets.tar.gz | Bin 10240 -> 0 bytes planets.tgz | Bin 0 -> 2346 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 planets.tar.gz create mode 100644 planets.tgz diff --git a/planets.tar.gz b/planets.tar.gz deleted file mode 100644 index 30f81dece54bf60586b90d7cc3038cbe47c44d0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 zcmeHLYfl?V7Ue7aiaQ=FZL-G3KoW@oA|}a9qD&qNnH{Z|$SQZ2-Mw^owW_KiWR?Fu z=hnm6Jm!(jd|0g!(2uG*b)VZTO6v}U;WH~wtn=h1@)YkbAe^{aa~8a>(@ZSU;u zKEn8Dw6il>qX&PZOmpbgSfPp5v{H8d@|K%F8oy=9|H7*#_&;0+P2PNUvDv|Q`+qcg z_;7D++5fwHqun*y{_2w40{DOK|AWWy_{Q-5{SCTLuSF&I>7A%ERS_a0mHhUpG^s8c zTc~=UPDIs|l77&Itg|8&nAXmUdML6?)dM<_mIUbq1iHv&O^q_PsAmJl`=`{#VT}gc z{CwQnTk9hUMp95n#3<)hs z%UNNp)H0)s!scXiN#+u7Dgr#7c>W-_sj8>Nj3b{Inq}mXuGl*AL#K&fmV7u(oSw-C zI;6yFKI;4HPG8z|kbDPR;E^F{Y6<)QI^KN@IbtG4M&WN8q`#l zy-k|7b;=lhDpe`~zzTR#hCJ2%V+E2vuZG2;e!?ROZ_A4F1F5OI_rBtpFBV?#Of4&Q z4*01?0Pr$zfHtU5!k%7sUL0(BQIsXI67zk=ZGBVrVAkQr#zs_!LyU{hf~No3*jVRa zTnE1U_ome_Tctvr!IRiXSS!-pdr?d2L)8r2g7=VmT4-ZgpMN8}snLbfWEB~!G=dNT z%4RHGP`X9D5Q448h#BWfo%Iq9+OeCO^rN|N;Y%Kjnz$vrI@$d0N|h*BO&2m*lpjK| zmA&K1NXtoLs1Y;SCnOPx()cM3;%WjUBi@GGu&@Az4{A!aM0~iVZIj{Ft!s_cFoT>T zF6vZzOWmck%ja?2>Q8GvUjW5#7;+hN%vSo#z7LHqA!We^_!r}F8a&f;duW;)c@A;8|%^Yk*Kcu{U)`{ z6SCJ8eY)2zK>wR`Jp_(H&s-NS1d1+-fVy}!(^oJ~BqQ+SxjK`Xr=nuo`^IZCW;*C?ZbGslN{yp;93CA#4i&h zGR&13#~rS4U?5OFc3Ve|+g8`ia)5Sb3c&QuAvrsrCT)==A9y3)>8X-jivZK01Au*@ zx~D%_{4uL=4K#o>Fn4V|4q!sfa{kKUFPPFz;KCHeN2gF>4Y5~LB{2YB$C2KJ$<$_BB zz~++jp#-|Hc=NK)Wdk7>y^o;FloQR^b~^Q8`5fGy7}S1W43C^R3?+5gRL8Q>14|ozQA1KmjPUgG_Zz zi@Jl}8AKCx(ofzCtB{Qnw@<}P zO$2VXmbwy>ADeF918wJa)C zWDepMExvCj=zz84_fOFp5`lg*+A>(dY0Qv`wHog3xfykha zB2(4YwinUEZjtNat}zV99NP2A{Sg-LM-r-;-*Su2YF7hy_B_sfIp$&(RRq6H(YA-?9?krfS$@Yby?Zdqy{_@?i3`TNY{G{m ziaQ&7SxS?G85Xx>*M&oY^E+3vxqPl?sf$#`BDQtJXO7b(w^f--fvQad9B~iIqCUf^ zusrNs?b0E#myJB^SozToQ)4=m<7{!*Noe3s&0Gm5!pK(h;dMZX|2i-X93HO&EafFh zhbjp=JnX>c9U30-%g(R**Sf=L0!@Ep)le4F7F33^&ehwM7*;A&<#VA6F0DZ$@9_+Y zdS_j}86SuOi#P4b$>nXA;{>-ueS`3`3JR^BxR&#=-)| zEwaN-F!+{NV(UVS2CdgJcqt~bylu7{Kw(z;3drd_Q6B*TA3>mJuAQMMm(P+Yl|xt( ztf*ZBuprtTF~ro>Gk>v|@7y8eZHwm-+Z!YLH7eMCj@zdv~q@x3`lg|i0+Hqf7=CTL2>fCU3oE=mP zCOz@o<~+;U;03=D|MSKzUopS<)h#*s#aMSO{Qd90+uNgukK*^=-R->*zW?v;ZSSnU z|K4TKulXKD@7rrM;TZvCd5ZIb-KSDcEfVaa$ZWn(JKNjMM?6+Sl?7H7SXp3Yft3YT7FbzeWr39i{)7d716~Na AzyJUM diff --git a/planets.tgz b/planets.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1be40b9d8be114549222bf0cbb2a0273a76cd9bd GIT binary patch literal 2346 zcmV+_3Dx!=iwFQ_GK5b61MOJ*ZxcBl@2~A&@!f32q+FUbg#v16IbORU4yb7NR;MnC zoEazab!I%WJuLJCASqzkl!kHUHne*WX>Eo$oHmlJ$S?|Ba1}AEWQL zWhsWa+|I>N=JaV}eUxkA_9>Smcd)U3sWLa&r`?^M>H}U2VaBT59%|=wf$crs{X9o4 zoyhcjs6X7G1fY%ow%V%|*Y*6bCe?T6@%8-g@8a)9{_pfx`Ts|(hmYX#jo$6s8+4oA zh(hkuJ5gr3pkp5q9eQ3=$|#Z3U!}21mkjt!+SI7Z;dP%*L{a6EelkjynMws!d5zN0 z6IrIqE}ck6f=nP9!i+`+&u$`_xKT#Z>5mCIfM;G=o$XTrD%JrQ|!$;cVMUWiPZKW9?7Nta{6 zBh3AKd{)JhfTTu_m37j{j4l<3u@?3UI|YFx-Wa|+aj7mxYRvgWEK4_1+7#PI;pi+0 zXvzDt#G5L4PluEQ166;)|rP+G+Qyo?3|{bHa6Bd z#MjxQ{PDInFk7LcaRN8toJc3Zi$=2HL@I69Bb-8rkuuh?K7U8eAjGXU=5#hL~a9!Couy68)7!(kA(wa_@JcJAUmW-t*Z==98}u#Gm2MPxxUkDk>&s3MIny>wKFtKhjz=1BQ#S=1=xvAvVQO2f&9(p-wN zt`__=6KYvlV*MMDxrFHVaQnBY{-=(gdA=!B*Zh9d@l&gQ{j z2)PBy+P8>UDMG0W1?E@jyUSR!*O9)TsSK&}P8p zpuM#PZauUbU2cDrMw8-RfSQRvE|4JQ+l;RrI-bRn4{qzoaaWr%lAb3_KOB;`^I1}> zEP2n2nA0;YZ6H%2!C+r#7s?-u@@NUsNThjhp-pHs2J8Hvk^eSh_(KKo-m~ zi)aq+aC4h;NhGj!O@vu&zJ1lFagN8=eAO5UK7J|3 zeE74}rM3z#On#Diohsp(l~cx#OCEyx!C*42@$f|2O7YGU{gIB9yJ9&YDZP=Z&?@sJ zo=yzxs;fz${Yu!$)fJ2IN?I#(mPO=(hh1j!`f4ntV|m`-CUi1E85K156r zCnA@13bpvT9-Pw5#C&UE6uUZ>Jq;j}I@eEs4?C0OXc2~6f3oj=n0CPxNayor*5 z%8*njaY%>($3r^+!fO)qOgkbVC;bzbS)6j1w=o67rvajq^b%B`Tek?|j{_c&o0DHo zzI^uFrF^*MiB2QpjAwB`4UF_-U^^Lbo>9`V^>BuLLjd{{^|yljpYg%pJ|9zEm#*DV zkKCHfY`8XIIN;Ep0(bh{1Y^}|LfhXJrozUD_XmFP3PgS5iWfVctDhpzhXQ#tox&IA zzWIq7lz9tf#|caz9(r?d{PyHD2QGoCe?7Z?kbmdg32(@l3f=s1>Wx-vXRfvETu|i)5Nxq80RdR zxFVlOfv!zmTyY=fsyxTcn;*7jTv|l#s*;B-CqKAeYHf>f3mYA_66*R}Gk3zFu(CEh zZg(l^EuZ&*$|y;T3W;)f*n-Vl)H~wM)^FywvK2M`nN{Q4Xl=OD`|j;q%q%Vu#zwJ| zqej8w+1L8=&G_(LdDH(K>QUS6hRzl}LQRP$hpqU~!rne5&0WuXgy#)(=LC^?vcP40M;xOQ?JyWq)m>Sp^r>@mc_B3%VB zul-znX+(uIT_hfULtX;y4_Yks?5O#rxYY>s+{02MSICk^Do;NbL0JH?GaR2}S literal 0 HcmV?d00001 From 6f27beb728c444c908fdfbea818c612b2ae01a74 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 10 Apr 2012 23:09:06 +0200 Subject: [PATCH 09/23] Facebook: Don't add "story". Convpath now converts only pictures --- convpath/convpath.php | 7 ++++++- facebook/facebook.php | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/convpath/convpath.php b/convpath/convpath.php index 5ad7fbcb..e5dc0b36 100644 --- a/convpath/convpath.php +++ b/convpath/convpath.php @@ -45,6 +45,11 @@ function convpath_convert($path) { $search = "https://".$a->get_hostname(); $replace = "http://".$a->get_hostname(); } - $path = str_replace($search, $replace, $path); + $searcharr = array("src='".$search, 'src="'.$search); + $replacearr = array("src='".$replace, 'src="'.$replace); + $path = str_replace($searcharr, $replacearr, $path); + + //$path = str_replace($search, $replace, $path); + return($path); } diff --git a/facebook/facebook.php b/facebook/facebook.php index 5990a99e..1e961fda 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -1423,10 +1423,19 @@ function fb_consume_stream($uid,$j,$wall = false) { } } + if (($datarray['app'] == "Events") and $entry->actions) + foreach ($entry->actions as $action) + if ($action->name == "View") + $datarray['body'] .= " [url=".$action->link."]".$entry->story."[/url]"; + // Just as a test - to see if these are the missing entries //if(trim($datarray['body']) == '') // $datarray['body'] = $entry->story; + // Adding the "story" text to see if there are useful data in it (testing) + //if (($datarray['app'] != "Events") and $entry->story) + // $datarray['body'] .= "\n".$entry->story; + if(trim($datarray['body']) == '') { logger('facebook: empty body '.$entry->id.' '.print_r($entry, true)); continue; From 9295f179b1da34ef6a00019a1fe8870373aefa49 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 10 Apr 2012 16:03:22 -0700 Subject: [PATCH 10/23] slight change to get_avatar hook, also provided readable text for gravatar default options - the admin settings part of this plugin needs some work. --- gravatar/gravatar.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gravatar/gravatar.php b/gravatar/gravatar.php index 4464cd2c..b9435a31 100644 --- a/gravatar/gravatar.php +++ b/gravatar/gravatar.php @@ -36,7 +36,7 @@ function gravatar_lookup($a, &$b) { // setting default value if nothing configured if(! $default_avatar) - $default_avatar = 'identicon'; // pseudo-random geometric pattern based on email hash + $default_avatar = 'identicon'; // default image will be a random pattern if(! $rating) $rating = 'g'; // suitable for display on all websites with any audience type @@ -47,7 +47,8 @@ function gravatar_lookup($a, &$b) { if ($default_avatar != "gravatar") $url .= '&d=' .$default_avatar; - $b['url'] = $url; + $b['url'] = $url; + $b['success'] = true; } /** @@ -67,12 +68,11 @@ function gravatar_plugin_admin (&$a, &$o) { // Available options for the select boxes $default_avatars = array( - 'gravatar' => 'Gravatar', - 'mm' => 'MM', - 'identicon' => 'Identicon', - 'monsterid' => 'Monsterid', - 'wavatar' => 'Wavatar', - 'retro' => 'Retro' + 'mm' => t('generic profile image'), + 'identicon' => t('random geometric pattern'), + 'monsterid' => t('monster face'), + 'wavatar' => t('computer generated face'), + 'retro' => t('retro arcade style face'), ); $ratings = array( 'g' => 'g', From 4d12c1abe6d6b43e204d9a387ba9d7cf1316a815 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Wed, 11 Apr 2012 02:04:31 -0400 Subject: [PATCH 11/23] re-do piwik css a bit Signed-off-by: Simon L'nu --- piwik/piwik.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/piwik/piwik.css b/piwik/piwik.css index e5e95bbe..066413de 100755 --- a/piwik/piwik.css +++ b/piwik/piwik.css @@ -1,9 +1,9 @@ #piwik-optout-link { - padding: 100px 50px; + padding: 50px 0 0 0; text-align: justify; font-size: 0.85em; - margin-top:10px; - clear: both; + margin-top:10px; + clear: both; } #piwik-code-block { display: none; From d679a38e9efabb2213c294e8537e020d987cc3fe Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 11 Apr 2012 05:24:45 -0700 Subject: [PATCH 12/23] first cut at a testdrive addon --- randplace.tgz | Bin 2090 -> 2059 bytes randplace/randplace.php | 6 +-- testdrive.tgz | Bin 0 -> 1879 bytes testdrive/README.md | 23 +++++++++++ testdrive/testdrive.php | 89 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 114 insertions(+), 4 deletions(-) create mode 100644 testdrive.tgz create mode 100644 testdrive/README.md create mode 100644 testdrive/testdrive.php diff --git a/randplace.tgz b/randplace.tgz index 931781d060a9feb147a03a43f7a5659fd8e874e2..7ab5f0db9d1769808dd0747f587395e7a32f6b15 100755 GIT binary patch literal 2059 zcmV+m2=w@$|{~_+)ZCn(U0m$J6m-2PS`7s*nY zD^=V>S1uGJ*XDYqEjb&cr!HB-UtlUbQQ+TB=CA_M`0MA#>m8ZjD z6PQ7w^I>W9LS=H8Bk?)i?))<|(!+u<5{z6b>!gt>Tr0N%w~}CQa3{w{qpPLg5^1gq zx>|}tW`n@zN7CAJFoH}6Wg(SLCQhdPF0VvnndJ@d3c6jOBWJ2WXk}UN5EfOD5RX1& zIuXbK(7u>mHY8I1ptOtobQ?W}>c_MhlUU+SUqCN{#^h_F{I0V>lt$+I3fV7=&iN$K z#X>EsU_yr0c-`r8(EnOx85_~anN`JI-GgI>dwYBJ7BnTJW9u(_d%FauU5W{Pysiv7 zF4w_5UY>AHBr9?QhC)gY6+7SyZ&8hfGS-nr|Hu4<(kN}fX|PTkgb_lF9GNk!_!9l2 zYP)sJXDh8Qdoi8Qm^AL!4!@`35kYGYUnCy!;j`ADT0JyE#$78=wH5$ir6aIgMATCD z0hxlxtS4a>Edh!F5(9iJ95TjO6p$E+IN_^Rnc^egtE@EW47osj6t%zZGo5vr)uMi* z{mnHr|1+G~SHF|JzsoMp^l~XpFA7LP5I5uz5`5f@yDn0HxfQ7944-Nfurd@k>~R}> z9E!u5jeI?=7;1sX0KRjOiyI%wRAyKTZe>?(6yN5cqbQ9*H;`mf6jiwvuU4r|V8!*j z@w$Qa!-3&*ydMS*EgtHUb_Wfc;Ly0Cw=eo|u&=Pd-37)=td(5(gwH_at_#jiUsZfz z^u_2$$-QK$2@9C!871oitC1~bq82J)R`!&Mc^$z^tW&~OA-(5_83=6)^mQRkmzIj% z+9Bjr@mAsr1!tMQCgre#hThV_PjFD{Muh5>zLcrYC$;E(}u8)ap2Rt&TH@WeSw%m!ZTP(H!D5KnmfA4CYZ}Y%rn^u zN?>t#ONkbrufOk8gE1`v5O}F(<*cg~3lGh2u?xf&rv=|O)?k`ykH}1m)FT^Hmcy!Y z`Liy3qqn{}q29jv;Kijx407vfu3T%ArI0A6Ivu)hfu%|=f%q|GG;%^dVg4iDWrc0r z`9?1x;`s-2Ho^`skt=0V4T-htxbNkmpM^2vrbne`pA@I9+K8D-G3uCw7_k|t%Vfw? zVq5M7a)b;&Q61Q&2=s8ILwWwZ9}i_l+#)qW%#~LAtt_s%+Y!ACYVOck|S7zksnyx=)ANd@r z{T!1{wSIi}{WG2wJUgzVVfv?$@E-`cxxk1v1LXRs(j5k2pSLgroWLf@)cdm^USGWR z$}tU=PoDR3fwR4>5TXd1D*`HI<(0@(>MM>&*yz2`IOa`i*@yV5ccB?SQ(W zF|2hMY7VSCL*j0s?E0I^5*zid&FUkJXRfG1A*H>q40NkNT?G0#Dx%SMSt75{*4Bg3 zo#lV<)8$2Lem;Qk&ckk^`r5=x6$=gZT#9pOXMX>bgL(((oP&MqyXGf-!?ymEQAk^)-^49*~ao~hyz2ej-gYNbQ~ z?xvJyk&_?XFtIiQe34k3MKKJ3SW$VN3o9!_v*7^Z;r#;%UZ-nu1i4I=IE&Ep5e(01 zGy2K=R7Anrf023gT2&cpLEKij^tC8OP#Zf)_>H+rRzIINwRX&9O{6NgNu?XP29&kmsc&{DBPwDQ?u;n{2)#OFgt#>^ zLv+M>*U$7)fY$qiIK&NS!7J=)G_r7!fqCT|X6k2y<;feT!g;XE>+etRXn$1iZ|2q* z7hHSc>)xTym0?i5HQ?jkpZ#;zcKyb6PdR*08K3_BcQhJLAJgx@Q<+4JQ|fB@M|s%*43lA#sZb&_JnpnuJNnO p<{e%%>HOKIZ`XEh*LH2!c5T;oZP#{f*LMA-)~~Sd`osVz001)=2q*vm literal 2090 zcmV+_2-Wu=iwFR^uU=081MOJrbK5o&_gDL`*zz={oRjr(WM%BwnM@zo&Rv>LoV$K- zGa875B-A9q0YN)%C;$8HF2ILuIhl6c^h1R4g8~+def;p-rHshpJQ0x`?EGb8h+{gL z?2IQ*r{nR{o#EtoeEf98^M34%M$_@}Wb*XrXtFaLji=+u4ova{L9Pp{vSpw2{ZE>Lb&dK%`uwuAD{W5TmAaDfs!9VqUs;=< z3}U86&LDK2k9zL^xF>DY4^RE>pUG=yfe{os zPzA)&%E-#N*R~}RNmB5HQ$)KnOvFrO2+btv9>Ai^BGS==L`MP@kOR(?0g3V-av|S^Lu-O0jZF15s$UpPAFa3ml-`8|y>YhFW^ezEN)mRW zK4(^D_iguK9qjGxRZ~z?PRrNd_x5%Pj=Pjo`t!Op7`RmX@VN7YwIW)%JQ^t-)QUcD zc#CE%lqoEE^ef(P$c@qltcJpBgD^yhQXmtCC2yi%G;O!S%xtCgRX3#d8H|BWdw@zoB!v@U6^#HM19S}VvaqNa zbCE%0B;tg(mU)biyss>z!C=S*;v=i#^^ogq%d9%;5BgtkL-#+SnPc@Q)w{hM;zTc( z(sTolBm{9S9-zR7&A4kL_4hl8s@L$TasinoyXA-%KE|G0)_mmcami5gI{NT~g;d}!QBVOOXNysKH+X4YS&y)JgYcjbY%3i9&vQd%C zNG(*vs)`d9=5Yuwk*9<${q>$BX26#{&^MVhZCN6_wM9sY@mAs*4^9$&L&hP4`r6XM zj}K52Muh6MzLK%KPioQq%K0-R+UOn};CTZqO*%XLO&Se~Y6mhb{t%s_GA>KZG1{;B z5`pLKA`95kWL|Y!F?@9f9O=ujRB`x@4x*F3(Xw!Aa=dsLVf4?@B!=b12Bls}jsefC z(=(`R9A|7L$XF-PYnhLoMT%2EdC{rF1$M0`7nC&IVZFC2FOcR6$~m z9XswkjI%IC+;)k2I%GIaRZh%Qj9JH9h#8xaxh#e{C6?u`7e~nO6Y;<FE4ey>{j@5RGw-`a>4DT$S>m(*3F$jnGiem9&^{vqrY<-FN??{xSl zj1I`~4;4ZpU1qlH)gH8g!e`x9QJGPoE4ki?W905o6=&{rEBkowyHoBJoI2)F|MoyF z;nxVbxxkFp4di;O(ryN!!&7(ztiU44(w*5)uP@#@<5&jill#3?;JZOlB1923*926$ zmDeIsv11$&vD16LbRs!nnZ?5y^c(A}$4*TzO@q3jFsxM=Dh_NsL*hPBw&P8-#7ifi??NB+$cF5uLuT5_S2qww{c3FaMM4E-xDQ(?0ljCJqzvYn?BZ zEi_bpDfXeQ{{3SC>h5E3_B(~Enjeh~GiP;nVQ&*ztfaKAqh$oJWMv_j(oA9D z^2~a8PJ1rHl}(eC6j(~2kMC*E6O~9Wre34k31tIkL z)sN_TE(%#1>J9r44jyhua64@a14w18#94rm4`6Uklff_Mmn`t!{)^nB*Q(M`3F5NC z)YqUCL2VQz+k53QAAhW1Y(ff`i%ztX(G_p*b}LN>@B&H2ubc(`A;7s42&>l>&I^@7 z`2Ovy|5PcF?^RJ_$JoUUtDXlQeNoFj)fM&x*P*AGa<+l%b~T)z)0!@gx{XzX+Mrm~K; ztR1N`E>iJEtsZ5~XR4bm$$&_##F-Ig0HIfL z8nrA;GB7W##hd!cWI6FVsBrH6a`wB`d)6OT^P9ER&iT+@INm#OcV*yBZyflr_ji9C z_Qj0{=2^!p6UDFd;V^%XA5&qF7Z2we2`0tq3C(_3(^t{nJzdnP{N1i^$98PTc5KIXY{zzN U$98PTc6?Fe|C!$Z?EokM0AEBV7XSbN diff --git a/randplace/randplace.php b/randplace/randplace.php index df713766..b70c02d9 100755 --- a/randplace/randplace.php +++ b/randplace/randplace.php @@ -8,10 +8,8 @@ * * * - * Addons are registered with the system in the - * .htconfig.php file. - * - * $a->config['system']['addon'] = 'plugin1,plugin2,etc.'; + * Addons are registered with the system through the admin + * panel. * * When registration is detected, the system calls the plugin * name_install() function, located in 'addon/name/name.php', diff --git a/testdrive.tgz b/testdrive.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7d314ea28fedfdfdd21653a06b8e1cd1e00457bd GIT binary patch literal 1879 zcmV-d2dMZTiwFSfcZE*?1MOICZ`(!^_E+;)%n42?rH~xwIn``S174u3l(aX|K4{cfe^N*w%75^UUkc*vi7jM%~KR&R<4t(D89^ zr`tO`?sgA%+P$Oh(P77(&uORAIX>)kj}MLyaNap+x4S#k`|BXBs4T27L_4X7Cd%BZ z>+wJA9(8u8{ne3d zp#Ssu4-o%zj(>2rpdbhai>x43kf7H_$t+fppgbujDxC#YhYW>U2e45i(C6cTrktF&KY7g4bG$V)Kdo7nnX&Ca4 z8O3re%EVHptH?Y9W5;uq!K?tfB2h?Z+}zFV{K%?XXE$7-VmKRGXY8V2FqOsy2%>eK zYh%ky*%>2~pDY5#4xF2}bYxkmY~qdcN}6=Bf`wC{5lNH22MjZ3DHb7{ham9bkKpc! zq_H+sNK{TFp)g+PW-}@VBhZP4W*6|0NJJJn?5R*Ni9OJy!3q^W%1a}YnUn7n19%`P zQK@2glL<1&l*Jv@S}SQTQFuu-p@LjZF0| z%!xD?69a=Sgnsl$wCexMzc|Ogs*XSC|GndGZ_)p|z0Lvpf3J7Y-S+>-pqGC~w1c4a z>{&q1=&eZQ2`w{$kIrQg8I^NtpU{=yEPZevv_u@EVycyjDzEgz)eG(hxKnoeyH`e& zHUBJ4;k0&|ZT{Xb?Npl+x>O$}T`s~!FQ?Y#C#}{pfKAj=3zg1ox|M?Y72a+IOp792 znK(o-b4#r^=(ix)HFBa*&Sp5(`eQv@ew{-M_bGI?w!Tm|%&?OE;PuAo0~L|c*`E~a zUV*63n=QgEaL=YPdjzWV5$qy7wltX&V<6+#dhMql&ijK4zHs=Wvx{^cdNIWiAkQd# zQiK?b_(t|np2YsDqE2leV&f6&sLlh4RjFiHx6;^p_|xE9Ao4#mOcURP)bwERJ0uUX z!4hy!-ioBomI9}96Tolu6gzU|9hmfM38VlT$$F@=C@Evvl9{$@Jab`aRP8NfA|s1} z8ylT^v%O&(41Y<0J{-Kcyto?lFMmMBeM4{F4laKDx&Ke<(Ru$J-;_Y_-x)fc=mQLR z=q_fsjxT}d?nCYNiTi|9bC?jDd8|#t*|N)5wTPxT;8|kN7=OH5m0TCbh*_PFcSHCq zq_bDddhNd4?E43HmP_~K?e~K>uip)?-dznYF6R&Ztv+1xRMOO&63!Vh$xKQy0TGsOb;_OSI@PA1LwNq3Y!~Z?o0DW3!VZKX(Sioz=JgE$EnIt9cZ80gpK>0iON2D zPM(6fDn=MIOM?b+pD~|mtHX_qoQ*AvP7_(QFuWEzd;X%`{E$z)9~v%NySqrAGIwM5 zvRr;I@_$e?Uo4x(9QdLpmZ5DpFsA|G_vZkgKb_VLqvOWAe=FUeucv!$-cr`mc5@AW zt1(WcdSJ&@v#t{-LDSzD|q?!6*mM`%VmSK>SGpqwxOOD@R;~*3<{~sTwco_ zAc@7 z_TOjkGpFF5ShlH)$LnS#vM6{D&sLjHlYWsj)w$#?mt^)q&t&YE!^-f+wcxfbK3`ij zu`R~D!ApZ>h>Ln<>zy3AVUMRmw?xALIWcaREp((r!b?vIQNAevO&`?{wb@zRRi; zDt1}7`byr$3+Wfb%E)UpM|f%93eY_;%^GrNt)}L801BpdjVwN^@m-ItbosA|noqFW z&2config['testdrive']['expiredays'] = 30; + +Set this in your .htconfig.php file to allow a 30 day test drive period. By default no expiration period is defined +in case the plugin is activated accidentally. + + +There is no opportunity to extend an expired account using this plugin. Expiration is final. Other plugins may be created +which charge for service and extend the expiration as long as a balance is maintained. This plugin is purely for creating +a limited use test site. + +An email warning will be sent out approximately five days before the expiration occurs. Once it occurs logins and many +system functions are disabled. Five days later the account is removed completely. + \ No newline at end of file diff --git a/testdrive/testdrive.php b/testdrive/testdrive.php new file mode 100644 index 00000000..b7c021a1 --- /dev/null +++ b/testdrive/testdrive.php @@ -0,0 +1,89 @@ + + */ + + + + +function testdrive_install() { + + register_hook('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account'); + register_hook('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron'); +} + + +function testdrive_uninstall() { + + unregister_hook('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account'); + unregister_hook('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron'); + +} + +function testdrive_register_account($a,$b) { + + $uid = $b; + + $days = get_config('testdrive','expiredays'); + if(! $days) + return; + + $r = q("UPDATE user set account_expires_on = '%s' where uid = %d limit 1", + dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')), + intval($uid) + ); + +}; + + +function testdrive_cron($a,$b) { + require_once('include/enotify.php'); + + $r = q("select * from user where account_expires_on < UTC_TIMESTAMP() + INTERVAL 5 DAY and + expire_notification_sent = '0000-00-00 00:00:00' "); + + if(count($r)) { + foreach($r as $rr) { + notification(array( + 'uid' => $rr['uid'], + 'type' => NOTIFY_SYSTEM, + 'system_type' => 'testdrive_expire', + 'language' => $rr['language'], + 'to_name' => $rr['username'], + 'to_email' => $rr['email'], + 'source_name' => t('Administrator'), + 'source_link' => $a->get_baseurl(), + 'source_photo' => $a->get_baseurl() . '/images/person-80.jpg', + )); + + q("update user set expire_notification_sent = '%s' where uid = %d limit 1", + dbesc(datetime_convert()), + intval($rr['uid']) + ); + + } + } + + $r = q("select * from user where account_expired = 1 and account_expires_on < UTC_TIMESTAMP() - INTERVAL 5 DAY "); + if(count($r)) { + require_once('include/Contact.php'); + foreach($r as $rr) + user_remove($rr['uid']); + + } + +} + +function testdrive_enotify(&$a, &$b) { + if (x($b, 'params') && $b['params']['type'] == NOTIFY_SYSTEM + && x($b['params'], 'system_type') && $b['params']['system_type'] === 'testdrive_expire') { + $b['itemlink'] = $a->get_baseurl(); + $b['epreamble'] = $b['preamble'] = sprintf( t('Your account on %s will expire in a few days.'), get_config('system','sitename')); + $b['subject'] = t('Your Friendica test account is about to expire.'); + $b['body'] = sprintf( t("Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."), $b['params']['to_name'], "[url=" . $app->config["system"]["url"] . "]" . $app->config["sitename"] . "[/url]"); + } +} From cc5beb31be66da56066596dd1b71168d54b33b21 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 11 Apr 2012 05:26:12 -0700 Subject: [PATCH 13/23] package update --- blogger.tgz | Bin 0 -> 2247 bytes gravatar.tgz | Bin 0 -> 2349 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 blogger.tgz create mode 100644 gravatar.tgz diff --git a/blogger.tgz b/blogger.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f30042f97a37e1807a5f8d1c3e57b9d0c1a006a7 GIT binary patch literal 2247 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 Vh71`pWaytve*^U9{<{EB001weUt0hG literal 0 HcmV?d00001 diff --git a/gravatar.tgz b/gravatar.tgz new file mode 100644 index 0000000000000000000000000000000000000000..38e942f897d238f7ff9d23874002b019aba309e9 GIT binary patch literal 2349 zcmV+|3DWi-iwFQHyo65x1ML}WZyUMMU#(v;rwCc;V6QAkwgV@28eD?HXwn?wYY&AH z2-GgMV!gXukX*^SApgBHe5@X^5~EGh0u}v1SaLY;C!HxaV}_~z-uGKaxX#W__Kr`6 zXUE6Gy`z)U1| z$?4$f)2BazrysboVE^~8U%q<#Ixf<0PlF76dOF-@|KR{_?(P3%I5L9C|lzN-25eHwT9ohNO?JC$@D{aYD{(B?@yHAWhxRDr}~d{ z9+%woD--bM^Y3l<1mp5Nm{6cSk)mKgjna1$78n3&J!aq!zXkwq^COLH#r9LAjRq#!0>rd)BDvKfa`8a&}8 z(y9?ZD;FT?c#RQclpD(pzhgy}bHt!zolW6g#mlQ#ajVrRi$sJk1)yLvk#Lw>jw&t*d4hV-M&ibO3PJ7!GEy*+AEGi9*P81Xt_)a7 zQ=TuJps418Lq(WCYTda^E090Cm?82lj6C-4a_q-JY8g3F4_h-PrR_hV` zBFl-$YQ+e;_2?12;uBWq23|U(SHySgYJ!RmbmmNZZ4*VLZ)I7!8;PGN&I|`F3nZ+0 zoytRnx|0QDyyQrYbZNmgjG33VK{aK18pA)(xh$@!l$xWJ&72I4`opgZ^~Q}pCs9VD zKzlSghtvyz;crB;WGk1Mw7_rQ5?HrbXv5Xw5Ov%`lY4M$Cku9kA%Z)yBxtt6cg9gF zqY$`a22qqt36|_TN@xHC5a}k0sBk9{8r)3LmXitk585q}xm09qmIPyM#s2$JW(&TF zYl0@IQBBrqG1zZ2MOM>W5xz&MB%ynHI2Hz&N?6JdwOQl{UWq%NTjm|H`;fG*IS)R% z5#l$44>7rycdPfP>@r(MU5>W&X+raSa!6|Ok>Vp5T|Q(0M9eA|g#^ax6mwTXLG+7r zmHAX8Q{gAnm`4Ui02k1XAvJZlM_P5>21I zMq!7Di;#(s@Yn7u8(8jMMvS6b&tXe_?UP6M1%)eBjlK)DKD5bNsZ46xZA{e!E6KEJ z%XaI(-SF(z+G_g$#^4w#-64B5?*u2nUH|_h*7Fx=?^gfkpIg}K{goB` zd>O#kbyZ1a=;RgGi4qls@Ht$C)*3s}WxuyfGv9+&wCa5hN(S>g0K}ejsiVnaPg#NveMaKjE3l?v&!*U7W$STg-0a<_2gh!=!wv}4>Y}q=La`8L+>BhU>@I613LOAN zk&(dr9alWRaKl$utDSxyn;>H^gpp&$@|x3tic=}|U`k=6bFDd-#o- zf*(BtBoolPKn%k$13yvuDI`#EJX*|+JW=K_eYw9Kf3d+u{ZNyS*oyR|i}O#>)kYZ{ zSmx*?o$*a%CxPfguV?kssZ~y-xAh+06C;Qn-Z+Z?Ss|bPW{g)~=nFbV)EcL6Y--}@ zv9eoEvS%bSbT>8l)5S^`XcZ9U*$h5|LxeoANzIZ zzV0H64-rbT+jCJOht>cW?WssnCvBi;xM+PPGE&lOi|u*+J$$*uNVKy#dX|Gx*h_8j}jUg6a5SnBSjhURBC z9a=;VV3j*t_*Wlg9G5=ynx_{Et;e0ijt*6*Elp(Kf zLm38ohtg$h{eZ0gnYq7ou`zf^n^akGxbKpMo3WuOadnkamWU&ao7eB&Sew1L+`Rz& zFRiB4Z+e7pPva}||IzW;+2;TMhDXEQ{Qo1?$B!V&1RFA*rz6*ukQ2DJren7+HZsJg zPk4!DZM^sCQ|mz(d{W!E`aBggNOGq2McWn2_T^d)_nV Date: Wed, 11 Apr 2012 06:17:53 -0700 Subject: [PATCH 14/23] require security.php in facebook connector --- facebook.tgz | Bin 17957 -> 17977 bytes facebook/facebook.php | 3 +++ piwik.tgz | Bin 3363 -> 3366 bytes 3 files changed, 3 insertions(+) diff --git a/facebook.tgz b/facebook.tgz index 563d39cc8f4965b8f54a60abcc1f2d9504958979..2b643e70c057f8053eb7e0dcb4798211e7ac3a6f 100644 GIT binary patch delta 17675 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

o(XFb$@V?h;G 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'; $o .= '

' . t('Facebook API Key') . '

'; diff --git a/piwik.tgz b/piwik.tgz index 230c1f50d7798a3ead7a3d67bfc9936a7508b482..a1fc2ecd22ca28e2fbd9e0bcaaee44c4ab9e3e37 100755 GIT binary patch literal 3366 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 literal 3363 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 From 40ce1054b77fc4df2c9840ffdf04bb32b35996c0 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 12 Apr 2012 16:39:36 +0200 Subject: [PATCH 15/23] Facebook: Images weren't posted in some cases --- facebook/facebook.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index b6e40654..6b9ee736 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -558,6 +558,9 @@ function facebook_content(&$a) { function facebook_cron($a,$b) { +//del_config('facebook', 'realtime_active'); +//del_config('facebook', 'realtime_err_mailsent'); +//del_config('facebook', 'cb_verify_token'); $last = get_config('facebook','last_poll'); @@ -896,7 +899,7 @@ function facebook_post_hook(&$a,&$b) { if(preg_match("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/is",$b['body'],$matches)) $image = $matches[3]; - if ($image != '') + if ($image == '') if(preg_match("/\[img\](.*?)\[\/img\]/is",$b['body'],$matches)) $image = $matches[1]; @@ -1436,8 +1439,8 @@ function fb_consume_stream($uid,$j,$wall = false) { // $datarray['body'] = $entry->story; // Adding the "story" text to see if there are useful data in it (testing) - //if (($datarray['app'] != "Events") and $entry->story) - // $datarray['body'] .= "\n".$entry->story; + if (($datarray['app'] != "Events") and $entry->story) + $datarray['body'] .= "\n".$entry->story; if(trim($datarray['body']) == '') { logger('facebook: empty body '.$entry->id.' '.print_r($entry, true)); From 219447cc53d20f69dd6c2c4eedfb0eef22adb89a Mon Sep 17 00:00:00 2001 From: tony baldwin Date: Thu, 12 Apr 2012 23:33:26 -0400 Subject: [PATCH 16/23] added admin interface for irc to set popular chans, auto connect chans --- irc/irc.css | 15 +++++++++ irc/irc.php | 74 +++++++++++++++++++++++++++++++++++++-------- planets/planets.php | 9 +----- 3 files changed, 77 insertions(+), 21 deletions(-) create mode 100644 irc/irc.css diff --git a/irc/irc.css b/irc/irc.css new file mode 100644 index 00000000..76aa2159 --- /dev/null +++ b/irc/irc.css @@ -0,0 +1,15 @@ +/* irc css */ +#irc-chans, { + float: left; + width: 200px; + margin-top: 10px; +} + +#irc-checkbox { + float: left; + margin-top: 10px; +} + +#irc-submit { + margin-top: 15px; +} diff --git a/irc/irc.php b/irc/irc.php index 065e4808..1ce4ee14 100644 --- a/irc/irc.php +++ b/irc/irc.php @@ -10,17 +10,66 @@ * you will then have "irc chatroom" listed at yoursite/apps * and the app will run at yoursite/irc * documentation at http://tonybaldwin.me/hax/doku.php?id=friendica:irc + * admin can set popular chans, auto connect chans in settings->plugin settings */ function irc_install() { -register_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu'); + register_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu'); + register_hook('plugin_settings', 'addon/irc/irc.php', 'irc_addon_settings'); + register_hook('plugin_settings_post', 'addon/irc/irc.php', 'irc_addon_settings_post'); } function irc_uninstall() { -unregister_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu'); + unregister_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu'); + unregister_hook('plugin_settings', 'addon/irc/irc.php', 'irc_addon_settings'); } + +function irc_addon_settings(&$a,&$s) { + + + if(! is_site_admin()) + return; + + /* Add our stylesheet to the page so we can make our settings look nice */ + + $a->page['htmlhead'] .= '' . "\r\n"; + + /* setting popular channels, auto connect channels */ + $sitechats = get_config('irc','sitechats'); /* popular channels */ + $autochans = get_config('irc','autochans'); /* auto connect chans */ + + $s .= '
'; + $s .= '

' . t('IRC Settings') . '

'; + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + + return; + +} + +function irc_addon_settings_post(&$a,&$b) { + if(! is_site_admin()) + return; + + if($_POST['irc-submit']) { + set_config('irc','autochans',trim($_POST['autochans'])); + set_config('irc','sitechats',trim($_POST['sitechats'])); + /* stupid pop-up thing */ + info( t('IRC settings saved.') . EOL); + } +} + function irc_app_menu($a,&$b) { $b['app_menu'][] = ''; } @@ -36,11 +85,12 @@ function irc_content(&$a) { $baseurl = $a->get_baseurl() . '/addon/irc'; $o = ''; - $sitechats = get_config('irc','channels'); + /* set the list of popular channels */ + $sitechats = get_config('irc','sitechats'); if($sitechats) $chats = explode(',',$sitechats); else - $chats = array('friendica','chat','chatback','hottub','ircbar','dateroom','teentalk'); + $chats = array('friendica','chat','chatback','hottub','ircbar','dateroom','debian'); $a->page['aside'] .= '

' . t('Popular Channels') . '

    '; @@ -49,16 +99,14 @@ function irc_content(&$a) { } $a->page['aside'] .= '
'; + /* setting the channel(s) to auto connect */ + $autochans = get_config('irc','autochans'); + if($autochans) + $channels = $autochans; + else + $channels = ((x($_GET,'channels')) ? $_GET['channels'] : 'friendica'); - - - -$channels = ((x($_GET,'channels')) ? $_GET['channels'] : 'friendica'); - -/* add the chatroom frame and some html - * by altering the "channels=friendica" part of the URL, you can add/remove channels. - * At free-haven.org, I have "?channels=friendica,free-haven", for instance, to open #friendica and #free-haven - */ +/* add the chatroom frame and some html */ $o .= <<< EOT

IRC chat

A beginner's guide to using IRC. [en]

diff --git a/planets/planets.php b/planets/planets.php index 1c6ed43b..d1b59eeb 100755 --- a/planets/planets.php +++ b/planets/planets.php @@ -108,14 +108,7 @@ function planets_post_hook($a, &$item) { */ $planets = array('Alderaan','Tatooine','Dagoba','Polis Massa','Coruscant','Hoth','Endor','Kamino','Rattatak','Mustafar','Iego','Geonosis','Felucia','Dantooine','Ansion','Artaru','Bespin','Boz Pity','Cato Neimoidia','Christophsis','Kashyyk','Kessel','Malastare','Mygeeto','Nar Shaddaa','Ord Mantell','Saleucami','Subterrel','Death Star','Teth','Tund','Utapau','Yavin'); -# $zones = timezone_identifiers_list(); -# foreach($zones as $zone) { -# if((strpos($zone,'/')) && (! stristr($zone,'US/')) && (! stristr($zone,'Etc/'))) -# $planets[] = str_replace('_', ' ',substr($zone,strpos($zone,'/') + 1)); -# } -# -# if(! count($planets)) -# return; + $planet = array_rand($planets,1); $item['location'] = $planets[$planet]; From e816b3bb18057855747bd70c0edafb60b5fdc73a Mon Sep 17 00:00:00 2001 From: tony baldwin Date: Thu, 12 Apr 2012 23:35:27 -0400 Subject: [PATCH 17/23] clean up clean up everybody everywhere... --- planets/planets.php | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/planets/planets.php b/planets/planets.php index d1b59eeb..0df91d7c 100755 --- a/planets/planets.php +++ b/planets/planets.php @@ -4,22 +4,7 @@ * Description: Sample Friendica plugin/addon. Set a random planet from the Emprire when posting. * Version: 1.0 * Author: Mike Macgirvin - * Author: Darth Baldwin - * - * - * - * - * Addons are registered with the system in the - * .htconfig.php file. - * - * $a->config['system']['addon'] = 'plugin1,plugin2,etc.'; - * - * When registration is detected, the system calls the plugin - * name_install() function, located in 'addon/name/name.php', - * where 'name' is the name of the addon. - * If the addon is removed from the configuration list, the - * system will call the name_uninstall() function. - * + * Author: Tony Baldwin */ From 27134d4b5751d1d0b5c3a11737d9abdd763e622a Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 12 Apr 2012 21:19:09 -0700 Subject: [PATCH 18/23] package update --- irc.tgz | Bin 1117 -> 1697 bytes planets.tgz | Bin 2346 -> 2090 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/irc.tgz b/irc.tgz index cb86460599f429d1304f82ec46525225d70f591f..a07e38ee95da2f3cdafbd0180ba32b798bb023da 100644 GIT binary patch literal 1697 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 From 977ac72f66fbbb23699767228e67c6051bc5f11e Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 13 Apr 2012 08:32:17 +0200 Subject: [PATCH 19/23] Facebook: Messages without images and links but with a subject and a text larger than 500 characters will be posted as notes. --- facebook/facebook.php | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index 6b9ee736..a90445db 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -1009,10 +1009,14 @@ function facebook_post_hook(&$a,&$b) { 'access_token' => $fb_token, 'message' => $msg ); - if(isset($image)) + if(isset($image)) { $postvars['picture'] = $image; - if(isset($link)) + //$postvars['type'] = "photo"; + } + if(isset($link)) { $postvars['link'] = $link; + //$postvars['type'] = "link"; + } if(isset($linkname)) $postvars['name'] = $linkname; } @@ -1029,11 +1033,18 @@ function facebook_post_hook(&$a,&$b) { if($reply) { $url = 'https://graph.facebook.com/' . $reply . '/' . (($likes) ? 'likes' : 'comments'); - } - else { + } else if (($link != "") or ($image != "") or ($b['title'] == '') or (strlen($msg) < 500)) { $url = 'https://graph.facebook.com/me/feed'; if($b['plink']) $postvars['actions'] = '{"name": "' . t('View on Friendica') . '", "link": "' . $b['plink'] . '"}'; + } else { + // if its only a message and a subject and the message is larger than 500 characters then post it as note + $postvars = array( + 'access_token' => $fb_token, + 'message' => bbcode($b['body']), + 'subject' => $b['title'], + ); + $url = 'https://graph.facebook.com/me/notes'; } logger('facebook: post to ' . $url); From 5938e5185a25e17803b81180c7665a4eb9c6d3a6 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 15 Apr 2012 16:46:55 +0200 Subject: [PATCH 20/23] Facebook: Deactivated the test output of messages without content. --- facebook/facebook.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index a90445db..397c104e 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -1450,8 +1450,8 @@ function fb_consume_stream($uid,$j,$wall = false) { // $datarray['body'] = $entry->story; // Adding the "story" text to see if there are useful data in it (testing) - if (($datarray['app'] != "Events") and $entry->story) - $datarray['body'] .= "\n".$entry->story; + //if (($datarray['app'] != "Events") and $entry->story) + // $datarray['body'] .= "\n".$entry->story; if(trim($datarray['body']) == '') { logger('facebook: empty body '.$entry->id.' '.print_r($entry, true)); From 14716f3b126b045a77f68559724d80c2f9b454ef Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 15 Apr 2012 22:25:23 +0200 Subject: [PATCH 21/23] MathJax: added the MathJax addon to the repository --- mathjax/README | 31 +++++++++++++++++++ mathjax/admin.tpl | 2 ++ mathjax/mathjax.php | 74 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 mathjax/README create mode 100644 mathjax/admin.tpl create mode 100644 mathjax/mathjax.php diff --git a/mathjax/README b/mathjax/README new file mode 100644 index 00000000..023e1c89 --- /dev/null +++ b/mathjax/README @@ -0,0 +1,31 @@ +Addon for Friendika to include MathJax (LaTeX math syntax) + +This addon lets your users use LaTeX to type mathematical formulas +within their posts. MathJax takes care about the best method for the +browser to display the formula and provides compatibility to 99% +of the modern browsers. + +You can either use the MathJax CDN online, thus loading the required javascript +libraries from the MathJax cloud, or use a local installation of MathJax. +Please see the plugin settings in the admin panel for configuration possibles. +If you don't set up a local MathJax instance, leave the configuration untouched +it will fall back to the MathJax cloud as default value. + +If you don't use the admin panel add mathjax to the list of active addons + +$a->config['system']['addon'] = [..., mathjax, ...] + +To select the source of the included javascript libraries add a line + +$a->config['mathjax']['baseurl'] = 'the URL to your MathJax installation'; + +to your .htconfig.php file. If this line is not there, the addon assumes that +you want to use the MathJax cloud (CDN). + +Please note that your usage of the CDN is governed by the "MathJax CDN Terms of +Service" see http://www.mathjax.org/download/mathjax-cdn-terms-of-service/ + +Author: Tobias Diekershoff + http://diekershoff.homeunix.net/friendika/profile/tobias + email: tobias.diekershoff@gmx.net + diff --git a/mathjax/admin.tpl b/mathjax/admin.tpl new file mode 100644 index 00000000..1c723cdd --- /dev/null +++ b/mathjax/admin.tpl @@ -0,0 +1,2 @@ +{{ inc field_input.tpl with $field=$baseurl }}{{endinc }} +
diff --git a/mathjax/mathjax.php b/mathjax/mathjax.php new file mode 100644 index 00000000..69df4225 --- /dev/null +++ b/mathjax/mathjax.php @@ -0,0 +1,74 @@ + + * License: 3-clause BSD license + */ + +function mathjax_install() { + register_hook('page_header', 'addon/mathjax/mathjax.php', 'mathjax_page_header'); + register_hook('plugin_settings', 'addon/mathjax/mathjax.php', 'mathjax_settings'); + register_hook('plugin_settings_post', 'addon/mathjax/mathjax.php', 'mathjax_settings_post'); + logger('installed js_math plugin'); +} +function mathjax_uninstall() { + unregister_hook('page_header', 'addon/mathjax/mathjax.php', 'mathjax_page_header'); + unregister_hook('plugin_settings', 'addon/mathjax/mathjax.php', 'mathjax_settings'); + unregister_hook('plugin_settings_post', 'addon/mathjax/mathjax.php', 'mathjax_settings_post'); +} +function mathjax_settings_post ($a, $post) { + if (! local_user()) + return; + // don't check statusnet settings if statusnet submit button is not clicked + if (!x($_POST,'mathjax-submit')) + return; + set_pconfig(local_user(),'mathjax','use',intval($_POST['mathjax_use'])); +} +function mathjax_settings (&$a, &$s) { + if (! local_user()) + return; + $use = get_pconfig(local_user(),'mathjax','use'); + $usetext = (($use) ? ' checked="checked" ' : ''); + $s .= '
'; + $s .= '

MathJax '.t('Settings').'

'; + $s .= '

'.t('The MathJax addon renders mathematical formulae written using the LaTeX syntax surrounded by the usual $$ or an eqnarray block in the postings of your wall,network tab and private mail.').'

'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= '
'; +} +/* we need to add one JavaScript include command to the html output + * note that you have to check the jsmath/easy/load.js too. + */ +function mathjax_page_header($a, &$b) { + // if the visitor of the page is not a local_user, use MathJax + // otherwise check the users settings. + $url = get_config ('mathjax','baseurl','http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'); + if (! local_user()) { + $b .= ''; + } else { + $use = get_pconfig(local_user(),'mathjax','use'); + if ($use) { + $b .= ''; + } + } +} +function mathjax_plugin_admin_post (&$a) { + $baseurl = ((x($_POST, 'baseurl')) ? trim($_POST['baseurl']) : 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'); + set_config('mathjax','baseurl',$baseurl); + info( t('Settings updated.'). EOL); +} +function mathjax_plugin_admin (&$a, &$o) { + $t = file_get_contents( dirname(__file__)."/admin.tpl"); + if (get_config('mathjax','baseurl','') == '') { + set_config('mathjax','baseurl','http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'); + } + $o = replace_macros( $t, array( + '$baseurl' => array('baseurl', t('MathJax Base URL'), get_config('mathjax','baseurl' ), t('The URL for the javascript file that should be included to use MathJax. Can be either the MathJax CDN or another installation of MathJax.')), + )); +} From 54d98689fab14505149d4dab770ba034990a0920 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 16 Apr 2012 22:57:34 -0700 Subject: [PATCH 22/23] small fix to mathjax. --- convpath.tgz | Bin 0 -> 814 bytes facebook.tgz | Bin 17977 -> 18227 bytes fromgplus/fromgplus.php | 181 -------------------------------------- fromgplus/tofriendica.php | 128 --------------------------- mathjax.tgz | Bin 0 -> 2169 bytes mathjax/mathjax.php | 4 +- 6 files changed, 3 insertions(+), 310 deletions(-) create mode 100644 convpath.tgz delete mode 100755 fromgplus/fromgplus.php delete mode 100644 fromgplus/tofriendica.php create mode 100644 mathjax.tgz diff --git a/convpath.tgz b/convpath.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2c43d3d380e73b78e1021da199148676ab1a91ba GIT binary patch literal 814 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 literal 17977 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 - * - */ - -function fromgplus_install() { - register_hook('plugin_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings'); - register_hook('plugin_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post'); -} - -function fromgplus_uninstall() { - unregister_hook('plugin_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings'); - unregister_hook('plugin_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post'); -} - -function fromgplus_addon_settings(&$a,&$s) { - - if(! local_user()) - return; - - $enable_checked = (intval(get_pconfig(local_user(),'fromgplus','enable')) ? ' checked="checked"' : ''); - $account = get_pconfig(local_user(),'fromgplus','account'); - - $s .= '
'; - $s .= '

' . t('Google+ Import Settings').'

'; - $s .= '
'; - - $s .= ''; - $s .= ''; - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - $s .= '
'; - $s .= '
'; - - return; -} - -function fromgplus_addon_settings_post(&$a,&$b) { - - if(! local_user()) - return; - - if($_POST['fromgplus-submit']) { - set_pconfig(local_user(),'fromgplus','account',trim($_POST['fromgplus-account'])); - $enable = ((x($_POST,'fromgplus-enable')) ? intval($_POST['fromgplus-enable']) : 0); - set_pconfig(local_user(),'fromgplus','enable', $enable); - info( t('Google+ Import Settings saved.') . EOL); - } -} -/* -function html2bbcode($html) { - - $bbcode = html_entity_decode($html, ENT_QUOTES, 'UTF-8'); - - $bbcode = str_replace(array("\n"), array(""), $bbcode); - $bbcode = str_replace(array("", ""), array("[b]", "[/b]"), $bbcode); - $bbcode = str_replace(array("", ""), array("[i]", "[/i]"), $bbcode); - $bbcode = str_replace(array("", ""), array("[s]", "[/s]"), $bbcode); - $bbcode = str_replace(array("
"), array("\n"), $bbcode); - - $bbcode = trim(strip_tags($bbcode)); - return($bbcode); -} - -function friendicapost($post) { - global $friendica; - - $api = new Statusnet($friendica["user"], $friendica["pw"], "GooglePlus", $friendica["server"]); - $ret = $api->updateStatus($post); - $api->endSession(); -} - -function handleattachments($item) { - $post = ""; - - foreach ($item->object->attachments as $attachment) { - switch($attachment->objectType) { - case "video": - //$post .= "\n\n[url=".$attachment->url."]". - // "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; - $post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n"; - - //if (strpos($attachment->embed->url, "youtube.com")) - // $post .= "[youtube]".$attachment->url."[/youtube]\n"; - //else - /// $post .= "[url=".$attachment->url."][img]".$attachment->image->url."[/img][/url]\n"; - - ///$post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]"; - break; - - case "article": - //$post .= "\n\n[url=".$attachment->url."]". - // "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; - $post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n"; - $post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]"; - break; - - case "photo": - //$post .= "\n\n[url=".$attachment->fullImage->url."]". - // "[img]".$attachment->fullImage->url."[/img][/url]\n"; - $post .= "\n\n[img]".$attachment->fullImage->url."[/img]\n"; - if ($attachment->displayName != "") - $post .= html2bbcode($attachment->displayName)."\n"; - break; - - case "photo-album": - $post .= "\n\n[url=".$attachment->url."]". - "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; - break; - - default: - print_r($attachment); - die(); - break; - } - } - return($post); -} - -$result = file_get_contents("https://www.googleapis.com/plus/v1/people/".$google["id"]."/activities/public?alt=json&pp=1&key=".$google["key"]."&maxResults=".$google["maxfetch"]); -$activities = json_decode($result); - -$state = array("lastid"=>''); -if (file_exists($statefile)) - $state = unserialize(file_get_contents($statefile)); - -$lastid = ""; - -foreach($activities->items as $item) { - if ($item->id == $state["lastid"]) - break; - - if ($lastid == "") - $lastid = $item->id; - - switch($item->object->objectType) { - case "note": - $post = html2bbcode($item->object->content); - - if (is_array($item->object->attachments)) - $post .= handleattachments($item); - friendicapost($post); - break; - - case "activity": - $post = html2bbcode($item->annotation)."\n"; - //$post .= html2bbcode("♲ "); - $post .= html2bbcode("♻ "); - $post .= "[url=".$item->object->actor->url."]".$item->object->actor->displayName."[/url]"; - $post .= " \n"; - //$post .= "[quote]"; - - $post .= html2bbcode($item->object->content); - - if (is_array($item->object->attachments)) - $post .= "\n".trim(handleattachments($item)); - - //$post .= "[/quote]"; - - friendicapost($post); - break; - - default: - print_r($item); - die(); - break; - } -} - -if ($lastid != "") { - $state['lastid'] = $lastid; - file_put_contents($statefile, serialize($state)); -} -*/ diff --git a/fromgplus/tofriendica.php b/fromgplus/tofriendica.php deleted file mode 100644 index b185ecc1..00000000 --- a/fromgplus/tofriendica.php +++ /dev/null @@ -1,128 +0,0 @@ -", "
"), array("[b]", "[/b]"), $bbcode); - $bbcode = str_replace(array("", ""), array("[i]", "[/i]"), $bbcode); - $bbcode = str_replace(array("", ""), array("[s]", "[/s]"), $bbcode); - $bbcode = str_replace(array("
"), array("\n"), $bbcode); - - $bbcode = trim(strip_tags($bbcode)); - return($bbcode); -} - -function friendicapost($post) { - global $friendica; - - $api = new Statusnet($friendica["user"], $friendica["pw"], "GooglePlus", $friendica["server"]); - $ret = $api->updateStatus($post); - $api->endSession(); -} - -function handleattachments($item) { - $post = ""; - - foreach ($item->object->attachments as $attachment) { - switch($attachment->objectType) { - case "video": - //$post .= "\n\n[url=".$attachment->url."]". - // "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; - $post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n"; - - //if (strpos($attachment->embed->url, "youtube.com")) - // $post .= "[youtube]".$attachment->url."[/youtube]\n"; - //else - /// $post .= "[url=".$attachment->url."][img]".$attachment->image->url."[/img][/url]\n"; - - ///$post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]"; - break; - - case "article": - //$post .= "\n\n[url=".$attachment->url."]". - // "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; - $post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n"; - $post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]"; - break; - - case "photo": - //$post .= "\n\n[url=".$attachment->fullImage->url."]". - // "[img]".$attachment->fullImage->url."[/img][/url]\n"; - $post .= "\n\n[img]".$attachment->fullImage->url."[/img]\n"; - if ($attachment->displayName != "") - $post .= html2bbcode($attachment->displayName)."\n"; - break; - - case "photo-album": - $post .= "\n\n[url=".$attachment->url."]". - "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n"; - break; - - default: - print_r($attachment); - die(); - break; - } - } - return($post); -} - -$result = file_get_contents("https://www.googleapis.com/plus/v1/people/".$google["id"]."/activities/public?alt=json&pp=1&key=".$google["key"]."&maxResults=".$google["maxfetch"]); -$activities = json_decode($result); - -$state = array("lastid"=>''); -if (file_exists($statefile)) - $state = unserialize(file_get_contents($statefile)); - -$lastid = ""; - -foreach($activities->items as $item) { - if ($item->id == $state["lastid"]) - break; - - if ($lastid == "") - $lastid = $item->id; - - switch($item->object->objectType) { - case "note": - $post = html2bbcode($item->object->content); - - if (is_array($item->object->attachments)) - $post .= handleattachments($item); - friendicapost($post); - break; - - case "activity": - $post = html2bbcode($item->annotation)."\n"; - //$post .= html2bbcode("♲ "); - $post .= html2bbcode("♻ "); - $post .= "[url=".$item->object->actor->url."]".$item->object->actor->displayName."[/url]"; - $post .= " \n"; - //$post .= "[quote]"; - - $post .= html2bbcode($item->object->content); - - if (is_array($item->object->attachments)) - $post .= "\n".trim(handleattachments($item)); - - //$post .= "[/quote]"; - - friendicapost($post); - break; - - default: - print_r($item); - die(); - break; - } -} - -if ($lastid != "") { - $state['lastid'] = $lastid; - file_put_contents($statefile, serialize($state)); -} -?> diff --git a/mathjax.tgz b/mathjax.tgz new file mode 100644 index 0000000000000000000000000000000000000000..bb591e1d30794854f624f4c3649685ddebb711ea GIT binary patch literal 2169 zcmV-<2!{6`iwFQQ1&vPt1MOICZyPrf_SfvMm=kneDUeo{EZM0WJ58G$u0`AywR^Zj zUA`Tk(oAML^DA(ir@(1t01y#C0vCa2pKt|x8>^4 zM=!Fzr~S=VscA72*;sR9L^jhOExFpz{sulm?l_m){9)m4SE+a^XEUx^Vd*BGz#Bcb z0d{B6y1Tc%it)PV*CKlu&%Q19Q~CBolK-N2w|H%14YZo915NtV`%p}w^*0Pj%+fJt zw`#T9cHU)zDOBcs((3_g6dH)*ZbpU*Ek-lVSE7rsLYJZqfCGMkE7tFCgjKkS4!6Lv&qmMkr$zpflc-!9wl zcNDa~A}4*-)PK}PO+tqgn0=&@?e#9huMO^OwdhA1oNc=6`ohQ8HG=K`1RiU{M0VHn6I(eCMBAj z;a$bGqDUEsl@iAA3<{0H0at(naEINP7fQ(j1tc)Jv7ZZF;QnS4kO^1@ z{P&D0#cse_fplOOQO4Tf$SK^&Lct1gpo59FlIjW!o8Z<2awV3`aMVnsk+UnmZ&u1C zJOzP{^?|oD4YFW8hhbU%g+Ysmz6p0IfXq~Pt#lwp>)&Xyr^lJT>7|k-(Ho5m zWMrxREs&^@Ma!YY#G?cPBq0UKTna4=rn7WEX_JRQR>P4F5MWgGQ7J>>7PS)iWvwKw z))mr5C2pv+L>mV-(5eBmZwHSamD|FyD2kIT^6VnjtYVxL?~yjW zQaN`g@2V{+ya!PbF9J>7i3ohmgzlb+Zl7 zD#o0NNX;muw00kSrrZHf(KR)xe+qQHwhnJ^p_=?;idtoz%G=ncZcSPEO0|wT=`F z&tl)eU(p45T&y9C;HBb5QT-u7!2HmjRpL*ft?d#fTvV&@*5Eh^VQE`slo;_*8d zgmN3i`u&TaTnS(S5XxGg+3Y|d^%5}mI~$R4<=p?e^W6;^KHYzP`TWJ%%ZEAR1MfeB z(SF~){|pXC!~P+?{~R3b4|nfBpJV)mH=W>OjwO=oFj8)`EAw69LkQxwP?3jpytVhx z!3t5uH4H-8mO)3=nTB0)4KY(3*hEsfi`X+kP=*CJbD4N#3noggG+~oOX3>bYu1zTq zDfuxJbZg9T_zEsg`f;$CNA0WeEN z#u0Jng$61|eG{el?}bqGR8j$Nkcx?7=w}U6B^MjA;#3w%hwzk6DT~f`VruXU_7J#E zbElCb;aX?!nlMMoIm@{9IXKcNl#_@4)?$)!wDbqtq?PXlC||*;Zs(m#`PZP@(oSA!|QfXV^N}(7n%x8 z3iJ-c%4Er1O6nkJvhJx<@O7wfwBd{J^0j-X2``bEUq?~Y@v=IAzb-MUCEB0z*rl7s zl#aP?3o4GRap^jwq!{`PvtjdS&(N2(nvd#vQxY^9VQw0FCYN||)(-@Y`USb*YC*36!8u2Gjj?B@q%Etj)oQg-eI;_0(IxU_SQpE)t|19s zIqhmEp%(=H@p#MY@w(Lbv#-c&37p;~j=@bwH9_Cb7FI^^rI#_D|Eu!*0nYdU|L+g_ zqkH^692|^x{Qo(|?Jc1iq6trvv3*sdBmm-NXxiD6s@N%%=*o&=@'; } else { From 314ee186258dba100bc75492c65aaf00eb1b0730 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 17 Apr 2012 00:05:34 -0700 Subject: [PATCH 23/23] extra arg to facebook_plugin_admin_post() --- facebook.tgz | Bin 18227 -> 18227 bytes facebook/facebook.php | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/facebook.tgz b/facebook.tgz index 6660aa8d369913595861cc74defeed24f2efe65b..e3709ec48955c9965509593e6f21238148693d4e 100644 GIT binary patch delta 18142 zcmV(pK=8k_jsdfd0e>Hh2mm$~jZXjr>^$3Y+eVgt6~3awRSeR_yDm29DwfRq%=N!4yRva0KhHXymw($^-Og4U$2;Af?(Q?T z^9^xIKS>l@A!E;`mOXaETi0JPZ#Lf9?fme=4}Szsf8b}N_^-Y+?I?QUJ&6A=SM$HS z+d=+!y6v5potIm{|DASs=NW51F&?F#|L6QS{zWmq!F_A!@y0x~W-}hL|1>tHRycP3 zMjXucShqd9+kZE{7}^5IjUKsT7DREw;Ug>Y;>IWlr_A+dNnE~C4TbJ_5~tw)Y=ZqC z`=t7R**kjkw)ai;xJUnY+S|hZx3}7z?e-4n|JHV=^Oyer5uZ~Z&hL4yKW6cSvy;%} zzT?_f>qH6$vjgAfb{vF;(P^>|Zsf*n634S>uhnw+Er0g{(EX^H`Hx`Q0(%g#IA9?k zyHO0L!SWf5H4O$ItHzE!*S=wuHE3^8huX6Mr0qi|O<;7-i(C#uGPU(IiMbhe?Bu zgoeoqSz3cEvnK(Z0f;fP!Wg(O_T@lvg8%OT^Gz_dTpvY85si?cQ8scpY=Xy{0Ea?g zMCc0`Bf`CM#XX=bn*{R=K`FHno4fHOBWxt5R(|C}kYipUu-Q2k?xV!>*!#;fJQ9J_ zxPL7aMhYV8%`g4_yDI`@u{g9`Ql`kWqDj**x=n=FBiAZ4OrbLK67X(pxL`JF11^%X zhMWhLxFd?Xu^CDFi>G3p#1sWGV~jH;D*N0c`hX${YDvx%_NLYF_wwpGoo3|HF%>%+ zr*Gt@`0z+mwkr76wSOmJWGmH=tXobaAbuyV4+LG*S0S6iMRWyf zmL0pdXgWZvy+-U#QIi}Ph=Al9Zj+q~Yk}f!`3syD0ivLvBjj|zk_gQX(0SyJlTaK3 z&dZ6t+;WhnWK%MtM0I9t;PH>t<{3ATiXaPG;&5zfnxfP6vJb*twZz5)7o<)FwI3b=`6mYP_cOZg_rCb4y zGxA(cLc6D~2Sm$It`?-4`>1OZ*9NqrJ@)pr4}5}A*rPg1LgJu{JAWH0S{nm#lOY9Y zX$YZx8+yU8HMKBaYn`1Q_s*|+HRI2YPyhOS+fT9n1K#S1_gI_%bzW}0?CSNuwy6K? z{+0jz5ucx40l$sbix&oa!OkJf+$-^s`0N9iD2S5wSf|;+-$!6EgAnYF3-;`-A|Cq* zjSbkEl$>O4W?_KQRex&=lMivV`t*aL3pV+efBw%u|JxIbmn_w>6$kxaTDYoZC`2EV zwK7@(sjHrhq93{eKY$J@v-K3Pra5gcr4>k9&8JFDUpyo?U6p5AUKC`>=8GrGHd9!b zbUrrO9IZ??&qT6`u!rJMN$9EMamY0WV9F&!faOd|p{CIT4}TE_qj*j<(MXI~QP6`f zKIFe8E>2+YFc`2G>|Fpe7c2z{X!dzHjWCqF;vlp(q!}RH$#^1glR2LN4wE1>n_^M2 znb8m_EO*M7s~kLt|1E?L1r+Mif6qbmT%=?e_^wT%BZ7c$S1Tg?G;7Oc8I;24>hC2RREZRT3UePT~!Oq#kXmg4kS|2Lg|Zo&^TNQ=qn;qkz1kU zQaON`t5X(}W^eu32y8bWlQE4$%a0kD)u|hyBT;F-+<$i|jY_kqV)jHUAcMM?;rT2u zBr%`usf>S)yT}AT-T#uqv_4h|-is;$tAYW=qT>`|ceGyG>2WwsEXcArXfpq+gOvbl zBuhmig`n&yW-U1fPIdCSR%hb?a|!`6We7;DI3#@?>9m>26av_k78elbhK_TkF-+oE zTIt>96MvYcif z7c6C|ux4P{Hefr5gB$M47_9}y^gpO9IkoQGX@4>$dNYsvW8jI3cO0A;an5AKIG@k+ zO@zpvgnZT_*0#Fstsi&se_Pu>{?O^*TF8Z6pI6P3qvPJ|i;KSv-X8tiyNj#-S?}De zv+ZuXwr{MTv%A%8@0QKF>Rnx(UYrklmzRU{i~i}!>G4q?2TsrXy~__rXRx@t^JBLS zdw(!MWecdbh>CFD^iGc6pY;dtF3!&MwYzd1`ad5T49rPD$4l@%Juj@@0hA3HYzzY5 zhWRq~Y=PBJLKG*6227kb0*w&WO-b5;3}&h|?7FI$crbxSRTF7F@B-WNU>jLlqN-%8 zG*5&{X=pIe*22cikU=}#kqbY4)NKO)IDg0prVQ}sARhQUo(JJgB$0kFV7WFbgPSH0 z0~NMB4rfxHY;D;N5bdR8ek8GJZ3#?HbYAFS9}H8iEdl#m!V^9KHw9J$L^i~A_kkS_ z#45$OFGiU(CVoyH6aU*uWC8Zm$z%calSyR(@;8vn;vP>SnFXj%C7T7nPa&Pg27j32 z31xB+2{~&e5wLNdQdpLG@|FBVMQgnP_h@@oC>ks2^l9KE7*Huai~^CRrW;Udj=qIQ zDiHFh^@@QVdiSCV3z(?CxHEcYh{Yj!w8HW2b?2kV(;=_D!2(BJ#5FVqr1XXsq#C(K zAqy~cN^xjPfSZHM-oL)@UG=Xk*njlHp5MS8RtP+tel=V?e<7I02(sKcx^eaSrbWic z*np6>dRI-iuCv_UHTL{DTl1KJY(P3R=3%vx+hZ@EoCw@fyzvWnDs^^t@$=8UO9&%g zzyBFU2T&@(X_5>FAoidiA`DYIqev^NAQfnis*$9d%_rFRR3eEb287sXowI zApvPHeuw=OND55WWckgT%&b$ZnjWo1gV5g)Eo%DyMNy=jA@&5B=#P2Ija5fD@}s#R z{IOcISB6jq@na?#NBtv-8h^JZ!I~vvlH-D+rs#hW5>*~bLaH*2R2)h3G;y*Z>$c(~ zlG1_AW0~oJNMIFeAmsvwqG|=eK!{J5{VD_wiRMNFKbgYO?W$T0w0b0<&Ce0c{2T@T z04!eM@C?>|rhSmO`SBpE!t6SxiM&=Mp~UJtHv)TtGaHA&@H2=`jeq^)A58m=GFwR^ z9#-&yJ|A`s7mD92*nLc8Ps|o)Ru~m+6D43~iSBE{CmFYCjYcHe1H=aDV1=Qz09(Vs ze6WK<`5O*f5#`xPA62IYedm@vVcHomv)vS@5r^3v4RH_HLJT(!6W1ZEveohd2pveA zGoX7r5kaD_N)2=(=YJ1yEhc_UHD(nJ-}^UyFjrTDDx@spJ7{!8+M10G6a+}DxcK=c z-5ngJAb~tpovlVB4}<=*iDdY#TDj_-^^W`O6Hww4JGs1g%RbG7Dg4BK{iS!=W1qm- ze!?ngY8lzl`5X4>h6W?6J!h9DTq0h@m37UKoBCW+#~=qqVxgHwu~js8W0H-W z1Z>#Y?+{YDCq`Cr`s8)vJ<6S6v5-OFF>5hgU8*K(Z;9vH)A_+*4kpsfBo4?Ut331s z$OD$+*7B-r;eY5$%vy@a#wIG|hyx7<5Li{sw80fxvq`?(G36~h(kq>;2XyQlp;ORs zxXnmI8!X|nA&j!w(%=e9)i^{Oqn~*t{qaD;8)YW6zQTaY55(5ksRGMBh+?n}Q$a3R zSIv>O#$G|-<$)yZ36q?`_`*1jKNLOm;C>(~SGid79)HZwFD~C6o$31;OJBa^1ZoJU zx!KQ&u(YbbUy22QdjuIsisC0H3wjFLr8A>-;wctFIKXZAiD6we6;l0B@_NZVr%~27 zi?hk}V%Vr1u$;cJ zlt1_S7)ryaiP}N~*W&j_&>E8r@+J>MAbkc}TS||>9z=HNQolrpQ+${LH3Ye7M$K3$ z2|au+gHKu==u$pjE*FkbGK}*DcD8jm<3=@?(%;A0Hox* zgMR~QVPpWPq6Jtp2t{kRy0i-T0e?2{06yEuZ9o(1=JOn2VG2^X$q;6%sqK1ksW2gH z4P7o;sc&j7bL}!L(7<1vG)rCY?ICKwz7lrGYV06?p0)dE3+o-Rmo)7d3)1}DXx`vw zPEvERSUQ#K$XJrK%-33%cR+@IT?|+r0Dor2_)$^M10o(R)>#$htfjk(wCgC4Kz+zE zAqW!0{({t6CYB`pAX@nLz~^(xfgED+6W@FZd_hp^G=i&;?X27><^3njreC3P!83}r zhy~s0UUEw>q)U=L$n_oJ0fWS@|OB18M6|*@wfC=h$C>Swy%m?skZ_#W`FHm z!OF~&Voz_3gRf6~N7@zyT3)IuBPRA=*HiOBJh>kXG3DWcxWp5*&W{z$S-E7cq9 zT?$ZV<*~IWzF6MeT10fULDo$~dm95UGzVC~^X-KpkZBx#jYNtaPe*hY!xGm9u%Vs3 zbKr(iEbgqOWmb%z=z5z>@(Bx?IDeptSV*QZHIYo_@~ngW9EA%7uXxE|j$LaAS{=N9 zcProHK&do}(cM?7Q9+NCA}R8U&<_K3;ZU>aPlP)e;#6h_)CJ0rSW=5!-Xoy08aCR8 z97rsp>o@?n;(B98<5b?p%60)J}s63SBH zuksFIp+HoG#9<~(_+bt_odqEnSRpk78oytikV-<8S~J(i3k(<@2&EM`Vf35sCRz9X z9Y}po_U4*}U`8QsNp}#%Xis%7# z0`c1{@NkNevX>r13{4M7UT{FPVexCo2_%@?053^=5)}9}55+wre1A6d0{ccFf+i;L zJ+T$uIrYb%n4ryvqqFzDE5QGI5M?1UU-MstqW-kS|5=SmK`NM_`#8F6qV!SG>2@Pd zai}&aHw#k0H9w_V=clCoLrw9EtH|c-qjFfL+LW8>1CWkFz!nEyFy~=)$x$rf{5yaW&ZL}U@;WULw4?T{WUst;;*P8E5mLjy&j9i0NZsvn2tuLzQTY6Yn zx^KMBa9lpT=dN@pCO7TA@Q7rO&S+2(yHX4vL(JL7A!p&>V zz2fU3cmrNWb71MznKXw%H_^058G0(_TXwLSf4!$PqS7Z7m)?_=6r$)f5H6HQ3KfX- z>d~=4DZ6~6+3}Dpco=H;9x#XzPGcs$)-q4| z*^tq#d{fETc+y(FjLoq|SY>h5Okdy;7p|P9i4COQ1@%?GfX!Au4}v)1LQV=k0$-~s zGw$-fRA%4Fq3YIM&;v7XU=yPAE_;v5;l8_skHm$U=Duj&>aE*D)}fxDc0&|fD5l_` zDSx(dxR)xUj!3aPU;>K$O815=yfH4;`JVih;q@Ov>;D(E#@0tiOF4u zS$!3z^cu`E8<4B{`v=IYhjy;hkR1mKntzjfhYepr2eU$|AozMKKg)=fb>BPs{G=GY+ z1m(E5%ykaZyVFbmMrB2SNvB)#kV>Qquap7uka~#DzuxR;xlVt+kuUr459!}qqHA$& zs`?dj2mnTQ0KAwb^va*S6jjIaqWb>7?Ol0u+eVh(f2B_WV;O^-P?Y6lrZT!bjxEn< z*0#KooL!fs;qZVY#3aE1NFB-eyMJ%Lt1mQ2D)#QwR#{bvC7{vA>+aXD-|>4&1W=Qh zaxh&i^s7YR8W1Fk>jO_*x&n8Ew!MAAa$=IGA>ZuVY}ljrB4T^^o^{lgp)a5g^LAWA zGB`ixRFBP!MECydk}y=;a3V|3eRQkdrZ*`ATWI=Ddu4eGdVhIUm|b)` z7t2=7BEna|Tw}Kq#CPqXtYN;2`6jy;!{>3tpLn;oRZp+Vg_3laU~of5t|WD@2*~S6 z#3lA({v}q=#GOj_pP*@pjbgceeix&~lR9tJ8WSwTUc5!SL3#k|0cS3Wc>dl&B&>ZU z@83td_r(2|Tv%&~;pvn-I)B(QuOb1CH$;b(N#Nh5R;K}kg5yQUU7##s5d;CMEK3Yk zVGK?{8X&|6Aynk-^l9bPaVud9xyFmzO~?DJm_|3!-A(lX8^_nw8!SaT65n?m`pAHe z-2SzL1B<8{*nX%*g&2K~Ee8OMV8y2n^oJJYhv^LD?+HT?GNyP1PcbxyuJb;c(&r{KuI)dp)}PqE+{89sNZ2 z^My&r)vivpmpKNk@P&6(nl0I8&GlsAIBg@x-Yb#@gg6Od#dNtUV(@j z7QPZfJ7-suydYMbM7x_f)umwiqU*CYvdGb8`7v0`9xi! z+l@Ym*npEg3VJW=a8U%bO=134D4Z5WcihWH0ROf4lRywAcq;bFdY9@1-gd#YA|W@y z2K=t>3~Es;T7S70|G?)?X}a^%HP3m`BB9T%crk2-c$P!|_~L>X$$JqE=v%J|whU3B z{fL7eBF8)gvsv+`mI!u=34aB^TnIk%V?c#+eC?(;i zi7KWh0DxiATY}mFV^M*aWvYW1k*7WexYRoDg9pW`p`ytSRNG3TqvMwc$I*`;qGR=3 z-F{-8Y){KuRo#-7#`m%Y)h&iY)JnCa^L0Yq8ohpaNiwW5YPirw-0Q8BDyHl z2KLqJcz>cbN5A|gLo{Mub;(O$KYD-qqI-Jy=HTS?`I~o&FdLC9V))?Y^ABDuiSfY_ z68O$py}meQu@=i1v407M0Df}44?$f3W_yvbLEo+xkD>(<5%;_uB;*^(!gJ$<6&Z?F zYNK68`_*qI(Dt{{4}bXn$rD{)^|ReQy`O&#*neB?{@S5s z58l)_(MG*Nk*f>G*w1HBnbM>s-m7czU$RH%lk>?bV0R?w#Z8qMM8^7h$X|KTn=lMo znU8Kj3Y^dKaSwD)>Ky7sZ+iCtk!HjCsegaw=`(2e9RXfLG&!aM+0dx{fKoS!V%CrG zpkw0L@x@s@FGew_$>L2U#3tkBY1JByN-fiL14!iF&49$n-#Wrw*OFI7KHiqg%ySzG zjYPda5!}Lw;?W1kX9@k=ef#{)0jlfb^GVEAslx1Hu>n%$c7zJ{>8O`Yb|Mr~(|_6C z`_oq&KP2@ZDuJQAOp6T+4O3fdJNluoq)sX+ahdf0@no7;$mq0Heo^9Q`M$DgVi$4__7a4H{up6;Yqd^lg;;)0fTw!Khk?mu^O68QZKO@7!U7?s)En!p zQgzNt0te5??V+RgDD2aHxqsAxPm3ziWvdfxPuKj;>m2<9^r-3D3DOOg4oEvC$e~SR zNT;$&#GA}PkLME&C_*5Ryx%}qG)4tWAFh*wya2Nkj6RdoP=47$ZFYLt)cRbvSmSZ?+nxprf`x zxUEMRZ)axS^f#7`ZeoXJnidM3B!Y~wn&2Gk1SZAe`OxNVHG-n$D8wK6TqJPW1b-}TDQ<05i+?Po5_F`C zJsGA_mrt#i`c3G1WT@z%%q-|P0y~HLy-GLhI$4kN?RK#e3muXnjeE8l3(Z(S1ni0v z!_h>YKFy@&az*f%WslU+0T9H*UaE4Lt-Gg?{L{98=_L7pcDh|G68fJ??t#`$NQJDp z$4}_*t3Ppt#D5F3a@|k&_ZD)Nx_-K~w|y=5&U*cQ$_LN3JQ?|L1ce=^dq6=7orZz( zunNhYusS)_r6*Igigspkjb_g+t`mlA*BM;E0&{EM@B*Hv>rQ|U9wX(0{6i$bMpUU> zg{^mkXT$XJp*2@MPbj@4TW_rfxpHZ9xizm3OK09NkKQ-HJ;9z5D^L?v9Ii8v+18Dgf|a9i*Vh5Cmi#OR||EwP)`(p z!Ux{0L(-qM=yy@YcZNJF;N2#g_I5&e5kmgZ2j92MO@C)m^-BCjNuyuv__ z?lgt%qoysroAxF{b*j=-(c6KEHR1BeZ%R|1{%!`pzQV8h^IF+U#s80a+N3|wS%0SK(4g&%(C+raDy(s}?OyAyP_1fqRW%eu zl#Qn&@Y)A4scm)Dw%W=^+HmUyI5A8_O^_4tu*0`eGqPH5RRf-2c_ndchwYbCR*g;u z+%)!B%jiv-`?`oFs~W;P1REm5+h16=TcTAxS>Uxr5Gnn+^w6y?CkGb&Y-&g?3xA1W zs+8gq^2U!fOpki=Nl7-%!GErlVLwM{?;}{`xC>=IPH|Y^iw1+DakG(7HE_!g zY~{ynDtVtc-Xg&!yG|{(tvSW89`!g-60HR z#vu$-IlU-hx1!q&(rhU%HtJ1u*1cOoP*SCC0rb5?lWYg2`SRhQrwD~HJ%9a_W(PcO zl(?R4FfnEREdwS9TWYFiZZwVu{Vv`W*(K$C?&;J}LI_$>R)Rp9SI*x^Ye@}OrUS|E z$eI?|Q+18Ii(l^vb_MYOKKRhPNsB(opwC~N9{zNA`l0*!@IMYnHdO?T)Y|*VhK*$E-<-fpl{Ok|%)D-fd*w$&$On(ffAIv+-`bDp} zcT<-HOUgB@-v?g6<<=M!Y+S-c2s#K{gYjq9!q>BHMVjm?gQS4!GZG}#F99??q${T4 z9${WOh`hle^;0;hfGYx0&k3a@+R zHFO)9x-51eHy5_xVY#NWrx$Ij^R0?ZzP6@uHuX1K3~f&p@_&uZs_;qs_W(K@C1=_A z>LL-jgDMihK~tV9`@~)pLSkMGy(?ZYu;*^_Y{*XQqdA;d4CDt2Gqp`kf?KI%Ac^*9 zrO}b37>QbNqZ|#Ep#Fp0hXVE|D*z#T3fs!Fkz%W?F;)@S3iaxKyBL*>9(M& zk=IwfG7;SLmu`{gfS+WeBGU;>9jkUTxalgHlK=2MBuY-)ku2HusOzHne2YL#7IS*7 zIH6?lF(94T?7GvxB-vRoEql$gCmVmf_+9HxehJT%W`D{n%-44pn!4)n;n&cSmgWYl zE|B_W7p)Tj#{n&=&_{`xidy5I5&~1onn@%=;nY2Gq}#G6;CVZW&!mF53YSexV>-&v zS;(9TfWUK`<0)Tm>w^Pu$xN4|HnK>yIxI?Fd_E43Z1pb|?}CVT!8XcDxQ&_O%p*RrSk7! zI*~w+O^X;Pe`uMyLY1>!J1=D}So6BG?JDY&KG&VJD8j_cHDnjd>H> z!Ucw&)=Uxv50RDdP_O$z-?~hIoPTC21OIqF2s}8Sfpbwj*w-5|XhY}?$ zGqM8+crkQKb*us}FCDQ_>!mP%7Q5Vk6SFy^Yjkfm>kY0+tqKlEKxW0w`D`T32V7D~ zDSwk7XQFQms;$vn(8cXnt6QBt^bn0BRdx(S3nHTGDFbw0jAEf zcxm#_^E2wz`31T;p2xH#Lpw1tp`5CHSynlZyMHZ7 z?`7`hl1Lg!G49>L6>y};GwzjTc9Y^!gUAQ~hQQMJHTWn_I0O22%RbuC&mUS;Ll5MO zHq=yA6*C@t9P@C)m){bKnQYATy}C3iMsyGGH!NsO$+)6R&}Zr;xB#5sAE27Gz7r~A z4(-`|ifJ#)L2rmUF6?1Cp`h{NCVvy+;+ahT_!K>c1sO%2?M7u<{f2P^^J1tdIWM+4 zgI*h_s2yd)&K2NUWs`f=FQ@+-`{*`7-DLp zHTVAbwUVn_niS5wm@dG>rbVt9dsZ0r3x)48&D3%#=YwlfWX7Ei*v+NhSbtZ7A6-JM z%!DBs!S}y60BHt|d+y;Qw^BH&p0q=&E82);3F_t`aO`_MI%cE^bcxLQQqJcguOu(i z2I#M3oDeQCo*EYT$X@d9VcDQsS1F0|_G(3i0q)c=J96t}of0v+^o}W6Q?+FdtyKvv z)dXS48tBs)d}xjFNN##oN`FOHWe7H0<|#XTu_;g-br}g=(XxQJvR(n zV66B8Y7`{Ws$wgQbA4gW)EX~gs~8;nSSCgc;@Dx}R!amF9%_i#msvRr8^N8ls0{-5 zuC~JPInGkDRz6(YJp-_#=(J90i$oONkJTo>#^@CjZ%6Tq_a~=EZ)svHai)5Ba`fha z;lEGf#LPrhKOdM2-4JZzc8rCgQdpbDvX`{2YS0m|+Ky58FK-6Q23s+9G`o@7nm&n= z!VsHv#G0sdoGry+CmlAZL*UP*-h0oY1b;&}DDh?xg)zHoVr&D69gu^Q5G@&hw5(0P zd;kncXHAK9dIx5M6!fL6E?BZM8M9{cQwFiyljxP`gV^=6&3lAP+7bf3|CBgHG5Us# z(zTFVh-UnFU57IWbJzA*Lv0-kqh4`^xA5KsNMeq%lDIJP;|%rLic6szX z9k<7wrdrIDwq0Jh+QdQE%f#V-7*(@|*l@^=r4aczTo6X@VN}cGw%mo~sEbwOGf0)5 z#&9>gp*!W|o(?^fy%fpks5tJY@QmP_wV@e3cy6;YZ7Zo6j1R*cLUGN>TZiYM8@A(4 zAxj=Q?16F;21>dg?7NUPc%E{Wxw4v9juSs|1FBdBgYnKfys!W!iO}bNiG}u0?q>+~ zk6u?AeYOU7Uq^cCbQIvsMcjs)(IqT*E0gTREG9mYocyB%U?DPszS^QbE-kX&NZp*8 zEGH;h(sD(jCNL7cd?_HEu@vB$Cb_;-)tJT*4WfHFv5jcz2b_0jc^BVG05SM=w0#)f zww(($ghq*Tdx;Uzo#;P*p}ryKfminh-xTiWMYT~iiQtqBQi90j!NxvF0l<*sqv!M4 z^}!vut|<-~S4-ke9^7UBXkA0AYqCtqY7fZDoCP2n&e1f~O z`MemUQn@NxjZhC1M`?g+u8*J(d`C%FmV9U1syHXy4^PlgWoooImRUXJ=WG=#Hk_+t z`NrS#+tFKuBhzcD&C#I|;s60L_6~Y)5e@+7DD-z&4J+`}k!uzNa4?90w-dO$Pp1&Z zjflb&$$()L@Heo0B~gtbw38<=9)D<4up>BC0_T;!%^5ILLg}O;=@h)~`y;-KapU$g zwS+%7cx+ZYD44y+5Za23cOpiK@Ni894v{JsF_7zCUaj*r36*eGbF`tVBmPSkeY17m zDBFyX;np>~g-{y|N@n;VgnjzvsrmvXXanEr4F~-J=Oqbpq-+!m8G+rwnSbP>)othl zDmu+03fK@MnRE&Dm2DGKt&X>EzEhnkJUCbz)MG;<>VEURD%y!#?ZDb&zIFk|L@?{e z41Bu~m*XN(O068c-(Z0=a0j@EA5^JcZ1f$~upod4QaX}&wwCieKq)|Sf!JWtv za?s17WHJv8jnqxTz=#0=F;2m*3$!cyVG(i&RNm%8CwjLyx>X96Bz~FQzkbtbfZ@76QR>Gl74k z00V1nYhF?^QpDm|r#pomD42EW$Ri*BhmP6JQbR71_V~9KbCR)fYA!_T#VmB>q=Juhts>$b!-wmN$9s-2@-8Nf#W*<)PvHSQYh;%!}1p?fSBA ztemQkVC1|L1T1w;Jbz2LPaGN+%qe2f&ej76PuSo#Am9lmrk`L8B-)NE-@ZP0bsGKk z=4a2&;=m{2$b9+CwlW@aqyHH`k*!hi1mHWz#GUibmG4C zf2GUr+HyYAAT0E%L$1YV7WnekeO*n(rX5~|MHy{<9Vi$tnSbBz*os9FKX5)VY5|;6 z@^+EfowWvrW~o{Gg#<3~F~YPJMlJKp8EO+Q+VC6p$I6u((69V#;xDS|l`o-PS*l!- zbqp=ETqRu{y-UJzV|~)k5?r!IDFc|dL48O`695&kx70O3Y7Nr@m8L{G+yGuZLJfq) ze?l9CkH9UZ>3`*Od)z3&Qq4?QO?;81C8wXWLuDG1^ftwi<0lw1x{@06Iv=NALX?iv zK1F^4^bDHIA302CkQ3~UqGnOU^{vo4!TBOeV_|ACB=05THO zs^(Y$S~Aa%++=(}A8kcwa8NLL?96hS7c8P=M|y{JH-E;vs3~;ZjpTE&JZb{V3;Qc+ zY9Fk{IAQ#iGh-B%ggpp-ysKUsGDr;$VNBa=CL0y}-dE2*G8-pXfS)nNi;`$I_5t(~ z-hGPL->GTWx-VTuk=2=NegZWuLvf`zBOL{QngJl=?sU{yeV{O?f8qolCKI^ zdidyvt$$k@7Wr8zHkakXTsMmFrHS<<{`t#fHTvI4YGmg$s!eGW%xL7Dac0UWWPTej z6szXfbYM@Z0wRj~q>Ay6-e^jeH@K^gooZ>Hu5t{VLjHhu5u^86*j*dG)8uVZSBXET zGou}X-NO*ryge6AwUoovr|QBfM(0;t*HOu#cz2&tOZb}4hC!i)tP+>w!OR#gRCl_olM!g)Gh)Fquz)~c< z+kft!o0t7;s9pFs6B;}_EAk-VGi3kRw=UumPyzB-L<8Y!{EYChq#D(^6*ya!ncYdp z;0PqQ6`NG(r&~iEit9nyPJc^8f)|EVo13&4H#gTlhvYS9p|`IZe4gl-09bjv+|=c% z$xt7BeOuY$@+GofL)AX6&iKB|`VbOCR)4^FfV-Fr^YFiy0~?@gE`xOP1KGWccNnas zLZ9`8xi=PPu*LOkKk0@X!|l8kdPH5FPq4NrE|&O{D940hKjb?|#arI|2D4yWf_IfY zZ%6preGff4_HL%Fh0rsVdnw-+ywtSy?| z0gAJR2Tu4s{TTk-(MlWj2b4rbwtuW=x*VE@c-wEtK%ksMVOud^1;!~s3t4VfMudKY zF0z2|ca5%4z2Pt&Qe(^H1lO!tMRI#+5_lN5QSYq8>;%(;w~e<)@K0tubVlG42z3T4 zMD^IvJ4MfdpN3*CQxQV?;Ja`AB)NOQq^O{f;c^BcaO7)t304+*OdQyY~X|TL;w$-6PC|SJY;j%Q1CfQ#W-nd;>^4b72NRs zK{1`wJ`WD8GuOh-x0a!VUto9|s1M}<-kSa0#&uIr-}yub&w)zW`mPgSmW3y_?E-+A3 z?>u`fTnvZf4A2bRka&f0o}uT3H$b}oN+*_%#O-YZL!V8!oHa+oRO80-%uCro37KIt z9K|N4X)yyewav3b1(0j=pZ7unYD@>H%4=Cy+Y$M%*l!?)mVYMPJcH0+p;2u0602Xl zqA5%qs>5HP7JjlL0@4vUjd1c!#1~^F$1Mhfy3YJc$^ndzoIlM0c4`=L=pdjE@wbe& zk7a=}w<%+G+0;dMT?nhdVzIT6Gj?Gxu9e=Gz@&>1sNfP)$4k`%w)5GY=Hh2L+0zXWLgt{M8iK+VqLi1MoWo^T7 zrvf@m`%}k6DbrSwEzs5a0D}$Umc#BiGNoqI@LSw5^m|K2z?knMlwk`H$PzCmvEE1W zafNN-@#*a$Md!aFkpW2w0vQxN5iAcwfhbrN;3aSm0Dpd)5@*t`%_Z`H#Ty`UJiSS+rU0$Zvz%_i3=LM-K3@lQxqahUseSg~7^BXqdse#J;;XR~c|JxNB0op8V zB96>n3VyvxBXFB8KBpb3z&05#Y;dIhoy~`?7+)=wPp+_7K!+&P?p@VtTf*S|A7n$X zArD;ot+dY{S9Y#}!QVq$D`r|?aGqxJ{`5uCrvKNt!ML>vg#N0Pkr$NXQ=Xl$HK!92Fa4zHpo`f4CO}~`xw)Wj-<)KPY1^zj@}+50WM(hFVVf% zduzdc1E1KHgbGIM3{oQJvEk#+(*MIhU4PVY8t%(;_oV>%wUSnv4I4Ms#A~Et-l(%< zSk|F!M9xqRL74fgnN92}Y&D=9HA?#fW2w!IL+i4A}xKarqTX3}ggz_0ABl zzp4gL*9m@})a(lD-@; zWvx}sem4A!zs?p7-Lw3$%0>)%@||bMTS`!ChU`~jLp2|U>_e+9F?jIss8WczaQvad!w?s#TB0~kYA9Ruf94kUBD)1^5^I{M zmZ)n3{U``x0GzkVS#LH+2OWc)*q92qV6Y2Qzj0G#r8P739K%yLG{li!Lq|XU6(aQy zs!K8yl$v0&OM-U)=4qpZ)PJVmeAmF7?mRu}7fncj?67o!mHx1#N`LI{LhmpiWTkhM z;0xdHq6o3SwYy2bKzZ7S$!<2>_sK=f5kmQBptsUM)?04+SfLa9gr9dq`f*d#)Pi7Aj16Prp+>>FMn^jfzsTFRFYY%k1 zDxn14i=eVpPNC7kcR>+FUMv(*OrZs?8Fn#SMEOJIZ9qgZFPDlaRy`HZC?QYH;8u}G zsEVN9lol>by(@?%0e>jFFCm=N$Q^F?A1ZtpUy1r5`r-$Xjh?cwBxx`3nTSgU9mtoW zE$0g@#z^~NF{ZwEOT-xSVXYWr)xEMZiKt%HCE2xUWzrX^t!5+IB9=8)U&OLki6v)M zzIeEt<*vWFdLJTec^k4Saaq+Ha}#~Vrre#{Lq|TL3$To=-)RBQ1~B>Y*$(RPqfcO_8J@q;o=#)}I+jU( z%btjr8A9k`d<0o~)83@y%pHi0i+QYIUzC))W6kgxKcga)^OGt%!)pbY4nKJarqi0{ zi>kpc%@Zy&Y+sH}UG;wgkS0c9k{^S{^y28vn}fHf8Wo5$w{o(&Nf!@5F$I8_ba5YxiGZl=QCd|yxKs@4W|!2w-;4`pc5N-vAWhZf z%1#-yTxA8=>s6yTv6+6ujbDP8yLljr6VSv zmzr@Jyf|;oA|EMNDj2?l2|bq_W8&wUHCpSc#pfWu?U4NTiDw>>zN@TMB1`7-DumOE(fV_9IbM z>w0{Yp5DQ|AkO&6K<9xYUl)?Q;XMfab8Y~y5U{?2J@bktew1>MwgBl$v=t){*x>CQ z`~R5SimPWtC5504+K3(0icF+rtS%7II2#nXL4s^3fdWKIz4@Ya-D(KKcZ=YK z>qr%p;-q1FkD7CJ+19qOG1gstjFkye&Y?$_^HE~Ru$)!ZZ3>@NwJ|1z#NrjWRtXHp zmW)?rM}&&(zypYX5X|we|5}DcP#zUXBt~7}F0Qg`+&#buA6$(*A-PwifdX9n+#AV~ z>BYl=s$4WnJAyaTh5i#1gr>TP0bGJj7*xb~%t9lWnoO;AE=jztiH``(dt;xT;ci5B zr(5ALHn&X}>-xI7$GtpweQ=>+7gY5o&OMytK7b%n?pepjEnghkUzn zo%V*tg9uPrlq{VUs?+ccawYvtd;aUquj1fi>!8lWeA!2s+xD+V-O#BvxO2 zq54;myw=yS617C~sj3DvO)uUbzdm|*+WpJH^Opz5Z4IeYTk!bc^!@SM)8prFPhP1H zmX@b1Cj#An8O22Tc;PqiPY#Zs{~6RiQLHmp#0)ak)J|wbH|F!Tm7N~GIXHTMY6#t; zO`sWK13!hAkps>oJDnT`m4vO!sY>_;u)I|@MW%l1Ui2)oo^MBgc+#SN;Sh)EWu~q} z&E)mrpZ{`t`tGF!9mD!GdxqDR1`jZ6jWY!t+)dSg(%2^cZJz;H&!p=WQ#A6bT*DIG z>Abww%_)ZG)N4T@fz3l|SVSEdldL%X0b*7V-x)yGNLRg}XMtpjvZPa~wuzII*WI5E zjt^gbcy|EJz&z->f&8#?qivoJ+-B3_uCCE(k>A}5LWaa3tMbbh9}M)}@zH;OIDP;2 z?ZIn*IrD1EV_C4e7nI2YewmlW!fpZIO9W8D>YMtG;XD_%2Al2Of4!te;Tv9tAerJ> z4qxLrL(sW8nqDzFWJ*!5FHvKlBY?mZ6YjgNlg6k5MShDJNl3;jI|x#u#`Y&{BfU$( zRCmo_DFE3GwnJoq#QQFD;e(1A@Fy3CWTdlyX_o}9$do=y^mB%ep|!?t_}I61iYp_E zv(5ynmwDQ`0$>tFV)XxJRXJr(;6hjhI_@IOGfem9)6N|_LqesO*&T%Pa0X?B*=ssL zN`He-&Nt7tHlAK|zI_&{Uw(gqxJvjxfK~!Z2$bC5dXBCoI;XCBXXz*K&-lDJpTK{A zaqC;k?IyzpPk*cdA2NlVs$}_KDVrnN6yA%zd$NVrd(7Fp{{ewx J4@v+S0RV{J&;bAd delta 18121 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

s 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