From d261a47f76a5176bf62aca797ebaefd4ad160256 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Thu, 14 Jun 2012 06:50:22 -0400 Subject: [PATCH 01/40] new plugin: profilehome redirects from homepage to a selectable profile. --- profilehome/admin.tpl | 2 ++ profilehome/profilehome.php | 50 +++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100755 profilehome/admin.tpl create mode 100755 profilehome/profilehome.php diff --git a/profilehome/admin.tpl b/profilehome/admin.tpl new file mode 100755 index 00000000..cf7bc1a7 --- /dev/null +++ b/profilehome/admin.tpl @@ -0,0 +1,2 @@ +{{ inc field_select.tpl with $field=$user }}{{ endinc }} +
\ No newline at end of file diff --git a/profilehome/profilehome.php b/profilehome/profilehome.php new file mode 100755 index 00000000..ad0421b8 --- /dev/null +++ b/profilehome/profilehome.php @@ -0,0 +1,50 @@ + + */ + + + +function profilehome_install() { + register_hook('home_content', 'addon/profilehome/profilehome.php', 'profilehome_home'); + logger("installed profilehome"); +} + +function profilehome_uninstall() { + unregister_hook('home_content', 'addon/profilehome/profilehome.php', 'profilehome_home'); + logger("removed profilehome"); +} + +function profilehome_home(&$a, &$o){ + $user = get_config("profilehome","user"); + if ($user!==false) goaway($a->get_baseurl()."/profile/".$user); +} + +function profilehome_plugin_admin(&$a, &$o){ + $r = q("SELECT nickname, username FROM user WHERE verified=1 AND account_removed=0 AND account_expired=0"); + $users = array("##no##"=>"No redirect (use default home)"); + foreach ($r as $u) { + $users[$u['nickname']] = $u['username']." (".$u['nickname'].")"; + } + + $user = get_config("profilehome","user"); + + $t = file_get_contents(dirname(__file__)."/admin.tpl"); + $o = ''; + $o .= replace_macros( $t, array( + '$submit' => t('Submit'), + '$user' => array('user', t('Profile to use as home page'), $user, "", $users), + )); +} + +function profilehome_plugin_admin_post(&$a){ + check_form_security_token('profilehomesave'); + + $user = ((x($_POST, 'user')) ? notags(trim($_POST['user'])) : false); + if ($user=='##no##') $user=false; + set_config('profilehome', 'user', $user); + info( t('Profile home settings updated.') .EOL); +} \ No newline at end of file From 9bbadf951c0d290821342b91a1a84a2e23ae43e3 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 11 Jul 2012 03:42:05 -0400 Subject: [PATCH 02/40] move profilehome to friendicablog repo --- profilehome/admin.tpl | 2 -- profilehome/profilehome.php | 50 ------------------------------------- 2 files changed, 52 deletions(-) delete mode 100755 profilehome/admin.tpl delete mode 100755 profilehome/profilehome.php diff --git a/profilehome/admin.tpl b/profilehome/admin.tpl deleted file mode 100755 index cf7bc1a7..00000000 --- a/profilehome/admin.tpl +++ /dev/null @@ -1,2 +0,0 @@ -{{ inc field_select.tpl with $field=$user }}{{ endinc }} -
\ No newline at end of file diff --git a/profilehome/profilehome.php b/profilehome/profilehome.php deleted file mode 100755 index ad0421b8..00000000 --- a/profilehome/profilehome.php +++ /dev/null @@ -1,50 +0,0 @@ - - */ - - - -function profilehome_install() { - register_hook('home_content', 'addon/profilehome/profilehome.php', 'profilehome_home'); - logger("installed profilehome"); -} - -function profilehome_uninstall() { - unregister_hook('home_content', 'addon/profilehome/profilehome.php', 'profilehome_home'); - logger("removed profilehome"); -} - -function profilehome_home(&$a, &$o){ - $user = get_config("profilehome","user"); - if ($user!==false) goaway($a->get_baseurl()."/profile/".$user); -} - -function profilehome_plugin_admin(&$a, &$o){ - $r = q("SELECT nickname, username FROM user WHERE verified=1 AND account_removed=0 AND account_expired=0"); - $users = array("##no##"=>"No redirect (use default home)"); - foreach ($r as $u) { - $users[$u['nickname']] = $u['username']." (".$u['nickname'].")"; - } - - $user = get_config("profilehome","user"); - - $t = file_get_contents(dirname(__file__)."/admin.tpl"); - $o = ''; - $o .= replace_macros( $t, array( - '$submit' => t('Submit'), - '$user' => array('user', t('Profile to use as home page'), $user, "", $users), - )); -} - -function profilehome_plugin_admin_post(&$a){ - check_form_security_token('profilehomesave'); - - $user = ((x($_POST, 'user')) ? notags(trim($_POST['user'])) : false); - if ($user=='##no##') $user=false; - set_config('profilehome', 'user', $user); - info( t('Profile home settings updated.') .EOL); -} \ No newline at end of file From fcc9b06bdbda4e251594e6c13cc3c481ef68d4a9 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 19 Dec 2012 23:17:31 +0100 Subject: [PATCH 03/40] Improved README that explains how to get the API key. --- fromgplus/README | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fromgplus/README b/fromgplus/README index db5bb38e..82a29f66 100644 --- a/fromgplus/README +++ b/fromgplus/README @@ -7,4 +7,9 @@ $a->config['fromgplus']['poll_interval'] = 10; You need an API key for "Simple API Access". -You get it via https://code.google.com/apis/console/ and then "API Access". +- You go to https://code.google.com/apis/console/ +- Then you go to "Services" and activate "Google+ API". +- After that you go to "API Access". +- At the bottom of the page you see "Simple API Access". + +The value after "API key:" is the key that you need. From 804bf0d980ca1f149bc74999418bf0c6b64605fc Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 21 Dec 2012 00:11:06 +0100 Subject: [PATCH 04/40] fromgplus: Option for enabling and disabling the new "share" element in postings. --- fromgplus/fromgplus.php | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/fromgplus/fromgplus.php b/fromgplus/fromgplus.php index a6760ca5..400dd92a 100644 --- a/fromgplus/fromgplus.php +++ b/fromgplus/fromgplus.php @@ -327,22 +327,27 @@ function fromgplus_fetch($a, $uid) { case "activity": $post = fromgplus_html2bbcode($item->annotation)."\n"; - $post .= fromgplus_html2bbcode("♲"); - //$post .= html2bbcode("♻"); - //$post .= fromgplus_html2bbcode("◌"); - $post .= " [url=".$item->object->actor->url."]".$item->object->actor->displayName."[/url] \n"; - /*$post .= "[share author='".$item->object->actor->displayName. - "' profile='".$item->object->actor->url. - "' avatar='".$item->object->actor->image->url. - "' link='".$item->object->url."']\n";*/ + if (intval(get_config('system','new_share'))) { + $post .= "[share author='".$item->object->actor->displayName. + "' profile='".$item->object->actor->url. + "' avatar='".$item->object->actor->image->url. + "' link='".$item->object->url."']"; - $post .= fromgplus_html2bbcode($item->object->content); + $post .= fromgplus_html2bbcode($item->object->content); - if (is_array($item->object->attachments)) - $post .= "\n".trim(fromgplus_handleattachments($item)); + if (is_array($item->object->attachments)) + $post .= "\n".trim(fromgplus_handleattachments($item)); - //$post .= "[/share]"; + $post .= "[/share]"; + } else { + $post .= fromgplus_html2bbcode("♲"); + $post .= " [url=".$item->object->actor->url."]".$item->object->actor->displayName."[/url] \n"; + $post .= fromgplus_html2bbcode($item->object->content); + + if (is_array($item->object->attachments)) + $post .= "\n".trim(fromgplus_handleattachments($item)); + } if (isset($item->address)) $location = $item->address; From 168f675f273be26ca264f0f090eabe2918207b47 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 21 Dec 2012 02:11:49 +0100 Subject: [PATCH 05/40] The attribut value for the "share" attribut "author" is now escaped. --- fromgplus/fromgplus.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fromgplus/fromgplus.php b/fromgplus/fromgplus.php index 400dd92a..f7841300 100644 --- a/fromgplus/fromgplus.php +++ b/fromgplus/fromgplus.php @@ -329,7 +329,7 @@ function fromgplus_fetch($a, $uid) { $post = fromgplus_html2bbcode($item->annotation)."\n"; if (intval(get_config('system','new_share'))) { - $post .= "[share author='".$item->object->actor->displayName. + $post .= "[share author='".str_replace("'", "'",$item->object->actor->displayName). "' profile='".$item->object->actor->url. "' avatar='".$item->object->actor->image->url. "' link='".$item->object->url."']"; From e58decc5f2dc39ca20b5831779d3ac483c038deb Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 21 Dec 2012 14:57:45 +0100 Subject: [PATCH 06/40] privacy_image_cache: If the cached file would be too long then don't cache it. --- privacy_image_cache/privacy_image_cache.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/privacy_image_cache/privacy_image_cache.php b/privacy_image_cache/privacy_image_cache.php index a47f0e1a..3be42620 100644 --- a/privacy_image_cache/privacy_image_cache.php +++ b/privacy_image_cache/privacy_image_cache.php @@ -226,13 +226,21 @@ function privacy_image_cache_cachename($url, $writemode = false) { * @return boolean */ function privacy_image_cache_is_local_image($url) { - if ($url[0] == '/') return true; + if ($url[0] == '/') return true; + if (strtolower(substr($url, 0, 5)) == "data:") return true; + // Check if the cached path would be longer than 255 characters - apache doesn't like it + if (is_dir($_SERVER["DOCUMENT_ROOT"]."/privacy_image_cache")) { + $cachedurl = get_app()->get_baseurl()."/privacy_image_cache/". privacy_image_cache_cachename($url); + if (strlen($url) > 255) + return true; + } + // links normalised - bug #431 - $baseurl = normalise_link(get_app()->get_baseurl()); + $baseurl = normalise_link(get_app()->get_baseurl()); $url = normalise_link($url); - return (substr($url, 0, strlen($baseurl)) == $baseurl); + return (substr($url, 0, strlen($baseurl)) == $baseurl); } /** From 3da6f1471cc8482e626fa3ad4530ee7cd858f813 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Sat, 22 Dec 2012 13:36:35 -0700 Subject: [PATCH 07/40] update addons to support Smarty3 --- altpager/altpager.php | 11 +- altpager/view/admin.tpl | 3 + altpager/{admin.tpl => view/admin.tpl.old} | 0 altpager/view/smarty3/admin.tpl | 3 + blackout/blackout.php | 10 +- blackout/{ => view}/admin.tpl | 6 +- blackout/view/smarty3/admin.tpl | 11 + communityhome/communityhome.php | 9 +- communityhome/{ => view}/communityhome.tpl | 0 communityhome/{ => view}/directory_item.tpl | 0 communityhome/view/smarty3/communityhome.tpl | 70 ++ communityhome/view/smarty3/directory_item.tpl | 10 + forumdirectory/forumdirectory.php | 3 +- .../{ => view}/forumdirectory_item.tpl | 0 .../view/smarty3/forumdirectory_item.tpl | 42 + gravatar/admin.tpl | 3 - gravatar/gravatar.php | 10 +- gravatar/view/admin.tpl | 3 + gravatar/view/smarty3/admin.tpl | 3 + impressum/admin.tpl | 7 - impressum/impressum.php | 11 +- impressum/view/admin.tpl | 7 + impressum/view/smarty3/admin.tpl | 7 + libravatar/libravatar.php | 10 +- libravatar/{ => view}/admin.tpl | 2 +- libravatar/view/smarty3/admin.tpl | 2 + mathjax/mathjax.php | 18 +- mathjax/{ => view}/admin.tpl | 2 +- mathjax/view/smarty3/admin.tpl | 2 + openstreetmap/admin.tpl | 3 - openstreetmap/openstreetmap.php | 10 +- openstreetmap/view/admin.tpl | 3 + openstreetmap/view/smarty3/admin.tpl | 3 + piwik/admin.tpl | 5 - piwik/piwik.php | 12 +- piwik/view/admin.tpl | 5 + piwik/view/smarty3/admin.tpl | 5 + remote_permissions/admin.tpl | 3 - remote_permissions/remote_permissions.php | 14 +- remote_permissions/view/admin.tpl | 3 + remote_permissions/{ => view}/settings.tpl | 0 remote_permissions/view/smarty3/admin.tpl | 3 + remote_permissions/view/smarty3/settings.tpl | 8 + statusnet/admin.tpl | 16 - statusnet/statusnet.php | 11 +- statusnet/view/admin.tpl | 16 + statusnet/view/smarty3/admin.tpl | 16 + tumblr/tumblr.php | 759 +++++++++--------- twitter/admin.tpl | 3 - twitter/twitter.php | 10 +- twitter/view/admin.tpl | 3 + twitter/view/smarty3/admin.tpl | 3 + uhremotestorage/settings.tpl | 9 - uhremotestorage/uhremotestorage.php | 12 +- uhremotestorage/view/settings.tpl | 9 + uhremotestorage/view/smarty3/settings.tpl | 9 + widgets/{ => view}/settings.tpl | 0 widgets/view/smarty3/settings.tpl | 19 + widgets/view/smarty3/widget_like.tpl | 3 + widgets/{ => view}/widget_like.tpl | 0 widgets/widget_like.php | 3 +- widgets/widgets.php | 3 +- 62 files changed, 778 insertions(+), 468 deletions(-) create mode 100755 altpager/view/admin.tpl rename altpager/{admin.tpl => view/admin.tpl.old} (100%) create mode 100644 altpager/view/smarty3/admin.tpl rename blackout/{ => view}/admin.tpl (70%) create mode 100644 blackout/view/smarty3/admin.tpl rename communityhome/{ => view}/communityhome.tpl (100%) rename communityhome/{ => view}/directory_item.tpl (100%) create mode 100644 communityhome/view/smarty3/communityhome.tpl create mode 100644 communityhome/view/smarty3/directory_item.tpl rename forumdirectory/{ => view}/forumdirectory_item.tpl (100%) create mode 100644 forumdirectory/view/smarty3/forumdirectory_item.tpl delete mode 100644 gravatar/admin.tpl create mode 100644 gravatar/view/admin.tpl create mode 100644 gravatar/view/smarty3/admin.tpl delete mode 100755 impressum/admin.tpl create mode 100755 impressum/view/admin.tpl create mode 100644 impressum/view/smarty3/admin.tpl rename libravatar/{ => view}/admin.tpl (50%) create mode 100644 libravatar/view/smarty3/admin.tpl rename mathjax/{ => view}/admin.tpl (58%) create mode 100644 mathjax/view/smarty3/admin.tpl delete mode 100644 openstreetmap/admin.tpl create mode 100644 openstreetmap/view/admin.tpl create mode 100644 openstreetmap/view/smarty3/admin.tpl delete mode 100755 piwik/admin.tpl create mode 100755 piwik/view/admin.tpl create mode 100644 piwik/view/smarty3/admin.tpl delete mode 100644 remote_permissions/admin.tpl create mode 100644 remote_permissions/view/admin.tpl rename remote_permissions/{ => view}/settings.tpl (100%) create mode 100644 remote_permissions/view/smarty3/admin.tpl create mode 100644 remote_permissions/view/smarty3/settings.tpl delete mode 100755 statusnet/admin.tpl create mode 100755 statusnet/view/admin.tpl create mode 100644 statusnet/view/smarty3/admin.tpl delete mode 100755 twitter/admin.tpl create mode 100755 twitter/view/admin.tpl create mode 100644 twitter/view/smarty3/admin.tpl delete mode 100755 uhremotestorage/settings.tpl create mode 100755 uhremotestorage/view/settings.tpl create mode 100644 uhremotestorage/view/smarty3/settings.tpl rename widgets/{ => view}/settings.tpl (100%) create mode 100644 widgets/view/smarty3/settings.tpl create mode 100644 widgets/view/smarty3/widget_like.tpl rename widgets/{ => view}/widget_like.tpl (100%) diff --git a/altpager/altpager.php b/altpager/altpager.php index 20517d2f..ddb6d352 100755 --- a/altpager/altpager.php +++ b/altpager/altpager.php @@ -93,8 +93,14 @@ function altpager_settings(&$a,&$s) { } function altpager_plugin_admin(&$a, &$o){ - $t = file_get_contents( "addon/altpager/admin.tpl" ); - $o = replace_macros($t, array( + $t = get_markup_template( "admin.tpl", "addon/altpager/" ); + + $includes = array( + '$field_radio' => 'field_radio.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros($t, $includes + array( '$submit' => t('Submit'), '$global' => array('altpagerchoice', t('Global'), 1, t('Force global use of the alternate pager'), get_config('alt_pager', 'global') == 1), '$individual' => array('altpagerchoice', t('Individual'), 2, t('Each user chooses whether to use the alternate pager'), get_config('alt_pager', 'global') == 0) @@ -106,3 +112,4 @@ function altpager_plugin_admin_post(&$a){ set_config('alt_pager','global',($choice == 1 ? 1 : 0)); info( t('Settings updated.'). EOL ); } + diff --git a/altpager/view/admin.tpl b/altpager/view/admin.tpl new file mode 100755 index 00000000..1176db41 --- /dev/null +++ b/altpager/view/admin.tpl @@ -0,0 +1,3 @@ +{{ inc $field_radio with $field=$global }}{{ endinc }} +{{ inc $field_radio with $field=$individual }}{{ endinc }} +
diff --git a/altpager/admin.tpl b/altpager/view/admin.tpl.old similarity index 100% rename from altpager/admin.tpl rename to altpager/view/admin.tpl.old diff --git a/altpager/view/smarty3/admin.tpl b/altpager/view/smarty3/admin.tpl new file mode 100644 index 00000000..50780231 --- /dev/null +++ b/altpager/view/smarty3/admin.tpl @@ -0,0 +1,3 @@ +{{include file="file:{{$field_radio}}" field=$global}} +{{include file="file:{{$field_radio}}" field=$individual}} +
diff --git a/blackout/blackout.php b/blackout/blackout.php index 2cb7c041..4c2a74b6 100644 --- a/blackout/blackout.php +++ b/blackout/blackout.php @@ -93,8 +93,14 @@ function blackout_plugin_admin(&$a, &$o) { if (! is_string($myend)) { $myend = "YYYY-MM-DD:hhmm"; } $myurl = get_config('blackout','url'); if (! is_string($myurl)) { $myurl = "http://www.example.com"; } - $t = file_get_contents( dirname(__file__)."/admin.tpl" ); - $o = replace_macros($t, array( + $t = get_markup_template( "admin.tpl", "addon/blackout/" ); + + $includes = array( + '$field_input' => 'field_input.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros($t, $includes + array( '$submit' => t('Submit'), '$rurl' => array("rurl", "Redirect URL", $myurl, "all your visitors from the web will be redirected to this URL"), '$startdate' => array("startdate", "Begin of the Blackout
(YYYY-MM-DD hh:mm)", $mystart, "format is YYYY year, MM month, DD day, hh hour and mm minute"), diff --git a/blackout/admin.tpl b/blackout/view/admin.tpl similarity index 70% rename from blackout/admin.tpl rename to blackout/view/admin.tpl index 25922193..e19bd246 100644 --- a/blackout/admin.tpl +++ b/blackout/view/admin.tpl @@ -1,6 +1,6 @@ -{{ inc field_input.tpl with $field=$startdate }}{{ endinc }} -{{ inc field_input.tpl with $field=$enddate }}{{ endinc }} -{{ inc field_input.tpl with $field=$rurl }}{{ endinc }} +{{ inc $field_input with $field=$startdate }}{{ endinc }} +{{ inc $field_input with $field=$enddate }}{{ endinc }} +{{ inc $field_input with $field=$rurl }}{{ endinc }}
Note: The redirect will be active from the moment you diff --git a/blackout/view/smarty3/admin.tpl b/blackout/view/smarty3/admin.tpl new file mode 100644 index 00000000..f77a5948 --- /dev/null +++ b/blackout/view/smarty3/admin.tpl @@ -0,0 +1,11 @@ +{{include file="file:{{$field_input}}" field=$startdate}} +{{include file="file:{{$field_input}}" field=$enddate}} +{{include file="file:{{$field_input}}" field=$rurl}} + +
Note: The redirect will be active from the moment you +press the submit button. Users currently logged in will not be +thrown out but can't login again after logging out should the blackout is +still in place.
+ +
diff --git a/communityhome/communityhome.php b/communityhome/communityhome.php index 484842cc..8b831888 100755 --- a/communityhome/communityhome.php +++ b/communityhome/communityhome.php @@ -47,7 +47,8 @@ function communityhome_home(&$a, &$o){ 0, 12 ); - $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); +# $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + $tpl = get_markup_template( 'directory_item.tpl', 'addon/communityhome/' ); if(count($r)) { $photo = 'thumb'; foreach($r as $rr) { @@ -114,7 +115,8 @@ function communityhome_home(&$a, &$o){ if(count($r)) { - $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); +# $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + $tpl = get_markup_template( 'directory_item.tpl', 'addon/communityhome/' ); foreach($r as $rr) { $photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id']; $photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg'; @@ -174,7 +176,8 @@ function communityhome_home(&$a, &$o){ } - $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); +# $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $tpl = get_markup_template('communityhome.tpl', 'addon/communityhome/'); $a->page['aside'] = replace_macros($tpl, $aside); $o = '

' . ((x($a->config,'sitename')) ? sprintf( t("Welcome to %s") ,$a->config['sitename']) : "" ) . '

'; diff --git a/communityhome/communityhome.tpl b/communityhome/view/communityhome.tpl similarity index 100% rename from communityhome/communityhome.tpl rename to communityhome/view/communityhome.tpl diff --git a/communityhome/directory_item.tpl b/communityhome/view/directory_item.tpl similarity index 100% rename from communityhome/directory_item.tpl rename to communityhome/view/directory_item.tpl diff --git a/communityhome/view/smarty3/communityhome.tpl b/communityhome/view/smarty3/communityhome.tpl new file mode 100644 index 00000000..b8f80381 --- /dev/null +++ b/communityhome/view/smarty3/communityhome.tpl @@ -0,0 +1,70 @@ + +{{if $noOid}} +

{{$login_title}}

+{{else}} + +{{/if}} +{{$login_form}} + + +{{if $lastusers_title}} +

{{$lastusers_title}}

+
+{{foreach $lastusers_items as $i}} + {{$i}} +{{/foreach}} +
+{{/if}} + + +{{if $activeusers_title}} +

{{$activeusers_title}}

+
+{{foreach $activeusers_items as $i}} + {{$i}} +{{/foreach}} +
+{{/if}} + +{{if $photos_title}} +

{{$photos_title}}

+
+{{foreach $photos_items as $i}} + {{$i}} +{{/foreach}} +
+{{/if}} + + +{{if $like_title}} +

{{$like_title}}

+
    +{{foreach $like_items as $i}} +
  • {{$i}}
  • +{{/foreach}} +
+{{/if}} diff --git a/communityhome/view/smarty3/directory_item.tpl b/communityhome/view/smarty3/directory_item.tpl new file mode 100644 index 00000000..5fb11986 --- /dev/null +++ b/communityhome/view/smarty3/directory_item.tpl @@ -0,0 +1,10 @@ + +
+
+
+ + {{$alt}}-text + +
+
+
diff --git a/forumdirectory/forumdirectory.php b/forumdirectory/forumdirectory.php index 83f19d01..0d7fbee8 100644 --- a/forumdirectory/forumdirectory.php +++ b/forumdirectory/forumdirectory.php @@ -163,7 +163,8 @@ function forumdirectory_content(&$a) { $about = ((x($profile,'about') == 1) ? t('About:') : False); - $tpl = file_get_contents( dirname(__file__).'/forumdirectory_item.tpl'); +# $tpl = file_get_contents( dirname(__file__).'/forumdirectory_item.tpl'); + $tpl = get_markup_template( 'forumdirectory_item.tpl', 'addon/forumdirectory/' ); $entry = replace_macros($tpl,array( '$id' => $rr['id'], diff --git a/forumdirectory/forumdirectory_item.tpl b/forumdirectory/view/forumdirectory_item.tpl similarity index 100% rename from forumdirectory/forumdirectory_item.tpl rename to forumdirectory/view/forumdirectory_item.tpl diff --git a/forumdirectory/view/smarty3/forumdirectory_item.tpl b/forumdirectory/view/smarty3/forumdirectory_item.tpl new file mode 100644 index 00000000..540a5aea --- /dev/null +++ b/forumdirectory/view/smarty3/forumdirectory_item.tpl @@ -0,0 +1,42 @@ + +
+
+
+ + {{$alt}}-text + +
+
+
+
{{$name}}
+
{{$page}}-type
+ {{if $pdesc}}
{{$profile.pdesc}}
{{/if}} +
+
+ {{if $location}} +
{{$location}}
+
+ {{if $profile.address}}
{{$profile.address}}
{{/if}} + + {{$profile.locality}}{{if $profile.locality}}, {{/if}} + {{$profile.region}} + {{$profile.postal-code}} + + {{if $profile.country-name}}{{$profile.country-name}}{{/if}} +
+
+ {{/if}} + + {{if $gender}}
{{$gender}}
{{$profile.gender}}
{{/if}} +
+
+ {{if $marital}}
{{$marital}}
{{$profile.marital}}
{{/if}} + + {{if $homepage}}
{{$homepage}}
{{$profile.homepage}}
{{/if}} +
+
+
+ {{if $about}}
{{$about}}
{{$profile.about}}
{{/if}} +
+
+
diff --git a/gravatar/admin.tpl b/gravatar/admin.tpl deleted file mode 100644 index 83144e43..00000000 --- a/gravatar/admin.tpl +++ /dev/null @@ -1,3 +0,0 @@ -{{ 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 index fc5358eb..a0b5a02b 100644 --- a/gravatar/gravatar.php +++ b/gravatar/gravatar.php @@ -55,7 +55,7 @@ function gravatar_lookup($a, &$b) { * Display admin settings for this addon */ function gravatar_plugin_admin (&$a, &$o) { - $t = file_get_contents( dirname(__file__)."/admin.tpl"); + $t = get_markup_template( "admin.tpl", "addon/gravatar/" ); $default_avatar = get_config('gravatar', 'default_img'); $rating = get_config('gravatar', 'rating'); @@ -91,7 +91,13 @@ function gravatar_plugin_admin (&$a, &$o) { // output Gravatar settings $o .= ''; - $o .= replace_macros( $t, array( + + $includes = array( + '$field_select' => 'field_select.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o .= replace_macros( $t, $includes + 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), diff --git a/gravatar/view/admin.tpl b/gravatar/view/admin.tpl new file mode 100644 index 00000000..b187e1ea --- /dev/null +++ b/gravatar/view/admin.tpl @@ -0,0 +1,3 @@ +{{ inc $field_select with $field=$default_avatar}}{{ endinc }} +{{ inc $field_select with $field=$rating }}{{ endinc }} +
diff --git a/gravatar/view/smarty3/admin.tpl b/gravatar/view/smarty3/admin.tpl new file mode 100644 index 00000000..30d760af --- /dev/null +++ b/gravatar/view/smarty3/admin.tpl @@ -0,0 +1,3 @@ +{{include file="file:{{$field_select}}" field=$default_avatar}} +{{include file="file:{{$field_select}}" field=$rating}} +
diff --git a/impressum/admin.tpl b/impressum/admin.tpl deleted file mode 100755 index 901df73f..00000000 --- a/impressum/admin.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{ inc field_input.tpl with $field=$owner }}{{ endinc }} -{{ inc field_input.tpl with $field=$ownerprofile }}{{ endinc }} -{{ inc field_textarea.tpl with $field=$postal }}{{ endinc }} -{{ inc field_textarea.tpl with $field=$notes }}{{ endinc }} -{{ inc field_input.tpl with $field=$email }}{{ endinc }} -{{ inc field_textarea.tpl with $field=$footer_text }}{{ endinc }} -
diff --git a/impressum/impressum.php b/impressum/impressum.php index 9d038178..305dd9a9 100755 --- a/impressum/impressum.php +++ b/impressum/impressum.php @@ -78,8 +78,15 @@ function impressum_plugin_admin_post (&$a) { info( t('Settings updated.'). EOL ); } function impressum_plugin_admin (&$a, &$o) { - $t = file_get_contents( dirname(__file__). "/admin.tpl" ); - $o = replace_macros($t, array( + $t = get_markup_template( "admin.tpl", "addon/impressum/" ); + + $includes = array( + '$field_input' => 'field_input.tpl', + '$field_textarea' => 'field_textarea.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros($t, $includes + array( '$submit' => t('Submit'), '$owner' => array('owner', t('Site Owner'), get_config('impressum','owner'), t('The page operators name.')), '$ownerprofile' => array('ownerprofile', t('Site Owners Profile'), get_config('impressum','ownerprofile'), t('Profile address of the operator.')), diff --git a/impressum/view/admin.tpl b/impressum/view/admin.tpl new file mode 100755 index 00000000..e3651137 --- /dev/null +++ b/impressum/view/admin.tpl @@ -0,0 +1,7 @@ +{{ inc $field_input with $field=$owner }}{{ endinc }} +{{ inc $field_input with $field=$ownerprofile }}{{ endinc }} +{{ inc $field_textarea with $field=$postal }}{{ endinc }} +{{ inc $field_textarea with $field=$notes }}{{ endinc }} +{{ inc $field_input with $field=$email }}{{ endinc }} +{{ inc $field_textarea with $field=$footer_text }}{{ endinc }} +
diff --git a/impressum/view/smarty3/admin.tpl b/impressum/view/smarty3/admin.tpl new file mode 100644 index 00000000..a3b0ef27 --- /dev/null +++ b/impressum/view/smarty3/admin.tpl @@ -0,0 +1,7 @@ +{{include file="file:{{$field_input}}" field=$owner}} +{{include file="file:{{$field_input}}" field=$ownerprofile}} +{{include file="file:{{$field_textarea}}" field=$postal}} +{{include file="file:{{$field_textarea}}" field=$notes}} +{{include file="file:{{$field_input}}" field=$email}} +{{include file="file:{{$field_textarea}}" field=$footer_text}} +
diff --git a/libravatar/libravatar.php b/libravatar/libravatar.php index 08ed6d00..c966052f 100644 --- a/libravatar/libravatar.php +++ b/libravatar/libravatar.php @@ -60,7 +60,7 @@ function libravatar_lookup($a, &$b) { * Display admin settings for this addon */ function libravatar_plugin_admin (&$a, &$o) { - $t = file_get_contents( dirname(__file__)."/admin.tpl"); + $t = get_markup_template( "admin.tpl", "addon/libravatar" ); $default_avatar = get_config('libravatar', 'default_img'); @@ -95,7 +95,13 @@ function libravatar_plugin_admin (&$a, &$o) { // output Libravatar settings $o .= ''; - $o .= replace_macros( $t, array( + + $includes = array( + '$field_input' => 'field_input.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o .= replace_macros( $t, $includes + array( '$submit' => t('Submit'), '$default_avatar' => array('avatar', t('Default avatar image'), $default_avatar, t('Select default avatar image if none was found. See README'), $default_avatars), )); diff --git a/libravatar/admin.tpl b/libravatar/view/admin.tpl similarity index 50% rename from libravatar/admin.tpl rename to libravatar/view/admin.tpl index 814f4a44..01b113c4 100644 --- a/libravatar/admin.tpl +++ b/libravatar/view/admin.tpl @@ -1,2 +1,2 @@ -{{ inc field_select.tpl with $field=$default_avatar}}{{ endinc }} +{{ inc $field_select with $field=$default_avatar}}{{ endinc }}
diff --git a/libravatar/view/smarty3/admin.tpl b/libravatar/view/smarty3/admin.tpl new file mode 100644 index 00000000..4e930a74 --- /dev/null +++ b/libravatar/view/smarty3/admin.tpl @@ -0,0 +1,2 @@ +{{include file="file:{{$field_select}}" field=$default_avatar}} +
diff --git a/mathjax/mathjax.php b/mathjax/mathjax.php index 7105772b..33cdd439 100644 --- a/mathjax/mathjax.php +++ b/mathjax/mathjax.php @@ -66,11 +66,17 @@ function mathjax_plugin_admin_post (&$a) { 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( + $t = get_markup_template( "admin.tpl", "addon/mathjax/" ); + if (get_config('mathjax','baseurl','') == '') { + set_config('mathjax','baseurl','http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'); + } + + $includes = array( + '$field_input' => 'field_input.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros( $t, $includes + 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.')), - )); + )); } diff --git a/mathjax/admin.tpl b/mathjax/view/admin.tpl similarity index 58% rename from mathjax/admin.tpl rename to mathjax/view/admin.tpl index 1c723cdd..ed60d734 100644 --- a/mathjax/admin.tpl +++ b/mathjax/view/admin.tpl @@ -1,2 +1,2 @@ -{{ inc field_input.tpl with $field=$baseurl }}{{endinc }} +{{ inc $field_input with $field=$baseurl }}{{endinc }}
diff --git a/mathjax/view/smarty3/admin.tpl b/mathjax/view/smarty3/admin.tpl new file mode 100644 index 00000000..8d0388ca --- /dev/null +++ b/mathjax/view/smarty3/admin.tpl @@ -0,0 +1,2 @@ +{{include file="file:{{$field_input}}" field=$baseurl}} +
diff --git a/openstreetmap/admin.tpl b/openstreetmap/admin.tpl deleted file mode 100644 index 75db9cd7..00000000 --- a/openstreetmap/admin.tpl +++ /dev/null @@ -1,3 +0,0 @@ -{{ inc field_input.tpl with $field=$tmsserver }}{{ endinc }} -{{ inc field_input.tpl with $field=$zoom }}{{ endinc }} -
diff --git a/openstreetmap/openstreetmap.php b/openstreetmap/openstreetmap.php index fda29905..bf663253 100755 --- a/openstreetmap/openstreetmap.php +++ b/openstreetmap/openstreetmap.php @@ -58,7 +58,8 @@ function openstreetmap_location($a, &$item) { function openstreetmap_plugin_admin (&$a, &$o) { - $t = file_get_contents( dirname(__file__)."/admin.tpl"); +# $t = file_get_contents( dirname(__file__)."/admin.tpl"); + $t = get_markup_template( "admin.tpl", "addon/openstreetmap/" ); $tmsserver = get_config('openstreetmap','tmsserver'); if(! $tmsserver) $tmsserver = 'http://openstreetmap.org'; @@ -66,7 +67,12 @@ function openstreetmap_plugin_admin (&$a, &$o) { if(! $zoom) $zoom = 17; - $o = replace_macros( $t, array( + $includes = array( + '$field_input' => 'field_input.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros( $t, $includes + array( '$submit' => t('Submit'), '$tmsserver' => array('tmsserver', t('Tile Server URL'), $tmsserver, t('A list of public tile servers')), '$zoom' => array('zoom', t('Default zoom'), $zoom, t('The default zoom level. (1:world, 18:highest)')), diff --git a/openstreetmap/view/admin.tpl b/openstreetmap/view/admin.tpl new file mode 100644 index 00000000..f733a917 --- /dev/null +++ b/openstreetmap/view/admin.tpl @@ -0,0 +1,3 @@ +{{ inc $field_input with $field=$tmsserver }}{{ endinc }} +{{ inc $field_input with $field=$zoom }}{{ endinc }} +
diff --git a/openstreetmap/view/smarty3/admin.tpl b/openstreetmap/view/smarty3/admin.tpl new file mode 100644 index 00000000..90baf1be --- /dev/null +++ b/openstreetmap/view/smarty3/admin.tpl @@ -0,0 +1,3 @@ +{{include file="file:{{$field_input}}" field=$tmsserver}} +{{include file="file:{{$field_input}}" field=$zoom}} +
diff --git a/piwik/admin.tpl b/piwik/admin.tpl deleted file mode 100755 index e57758a9..00000000 --- a/piwik/admin.tpl +++ /dev/null @@ -1,5 +0,0 @@ -{{ inc field_input.tpl with $field=$baseurl }}{{ endinc }} -{{ inc field_input.tpl with $field=$siteid }}{{ endinc }} -{{ inc field_checkbox.tpl with $field=$optout }}{{ endinc }} -{{ inc field_checkbox.tpl with $field=$async }}{{ endinc }} -
diff --git a/piwik/piwik.php b/piwik/piwik.php index 9ba15db6..a0dd1c25 100755 --- a/piwik/piwik.php +++ b/piwik/piwik.php @@ -84,8 +84,16 @@ function piwik_analytics($a,&$b) { } } function piwik_plugin_admin (&$a, &$o) { - $t = file_get_contents( dirname(__file__)."/admin.tpl"); - $o = replace_macros( $t, array( +# $t = file_get_contents( dirname(__file__)."/admin.tpl"); + $t = get_markup_template( "admin.tpl", "addon/piwik/" ); + + $includes = array( + '$field_input' => 'field_input.tpl', + '$field_checkbox' => 'field_select.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros( $t, $includes + array( '$submit' => t('Submit'), '$baseurl' => array('baseurl', t('Piwik Base URL'), get_config('piwik','baseurl' ), t('Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)')), '$siteid' => array('siteid', t('Site ID'), get_config('piwik','siteid' ), ''), diff --git a/piwik/view/admin.tpl b/piwik/view/admin.tpl new file mode 100755 index 00000000..21a6ea87 --- /dev/null +++ b/piwik/view/admin.tpl @@ -0,0 +1,5 @@ +{{ inc $field_input with $field=$baseurl }}{{ endinc }} +{{ inc $field_input with $field=$siteid }}{{ endinc }} +{{ inc $field_checkbox with $field=$optout }}{{ endinc }} +{{ inc $field_checkbox with $field=$async }}{{ endinc }} +
diff --git a/piwik/view/smarty3/admin.tpl b/piwik/view/smarty3/admin.tpl new file mode 100644 index 00000000..3fd39737 --- /dev/null +++ b/piwik/view/smarty3/admin.tpl @@ -0,0 +1,5 @@ +{{include file="file:{{$field_input}}" field=$baseurl}} +{{include file="file:{{$field_input}}" field=$siteid}} +{{include file="file:{{$field_checkbox}}" field=$optout}} +{{include file="file:{{$field_checkbox}}" field=$async}} +
diff --git a/remote_permissions/admin.tpl b/remote_permissions/admin.tpl deleted file mode 100644 index 60558808..00000000 --- a/remote_permissions/admin.tpl +++ /dev/null @@ -1,3 +0,0 @@ -{{ inc field_radio.tpl with $field=$global }}{{ endinc }} -{{ inc field_radio.tpl with $field=$individual }}{{ endinc }} -
diff --git a/remote_permissions/remote_permissions.php b/remote_permissions/remote_permissions.php index 95e74ee1..3c99f008 100644 --- a/remote_permissions/remote_permissions.php +++ b/remote_permissions/remote_permissions.php @@ -39,7 +39,8 @@ function remote_permissions_settings(&$a,&$o) { /* Add some HTML to the existing form */ - $t = file_get_contents("addon/remote_permissions/settings.tpl" ); +// $t = file_get_contents("addon/remote_permissions/settings.tpl" ); + $t = get_markup_template("settings.tpl", "addon/remote_permissions/" ); $o .= replace_macros($t, array( '$remote_perms_title' => t('Remote Permissions Settings'), '$remote_perms_label' => t('Allow recipients of your private posts to see the other recipients of the posts'), @@ -190,8 +191,15 @@ function remote_permissions_content($a, $item_copy) { } function remote_permissions_plugin_admin(&$a, &$o){ - $t = file_get_contents( "addon/remote_permissions/admin.tpl" ); - $o = replace_macros($t, array( +// $t = file_get_contents( "addon/remote_permissions/admin.tpl" ); + $t = get_markup_template( "admin.tpl", "addon/remote_permissions/" ); + + $includes = array( + '$field_radio' => 'field_radio.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros($t, $includes + array( '$submit' => t('Submit'), '$global' => array('remotepermschoice', t('Global'), 1, t('The posts of every user on this server show the post recipients'), get_config('remote_perms', 'global') == 1), '$individual' => array('remotepermschoice', t('Individual'), 2, t('Each user chooses whether his/her posts show the post recipients'), get_config('remote_perms', 'global') == 0) diff --git a/remote_permissions/view/admin.tpl b/remote_permissions/view/admin.tpl new file mode 100644 index 00000000..1176db41 --- /dev/null +++ b/remote_permissions/view/admin.tpl @@ -0,0 +1,3 @@ +{{ inc $field_radio with $field=$global }}{{ endinc }} +{{ inc $field_radio with $field=$individual }}{{ endinc }} +
diff --git a/remote_permissions/settings.tpl b/remote_permissions/view/settings.tpl similarity index 100% rename from remote_permissions/settings.tpl rename to remote_permissions/view/settings.tpl diff --git a/remote_permissions/view/smarty3/admin.tpl b/remote_permissions/view/smarty3/admin.tpl new file mode 100644 index 00000000..e67afd73 --- /dev/null +++ b/remote_permissions/view/smarty3/admin.tpl @@ -0,0 +1,3 @@ +{{include file="field_radio.tpl" field=$global}} +{{include file="field_radio.tpl" field=$individual}} +
diff --git a/remote_permissions/view/smarty3/settings.tpl b/remote_permissions/view/smarty3/settings.tpl new file mode 100644 index 00000000..df89a32e --- /dev/null +++ b/remote_permissions/view/smarty3/settings.tpl @@ -0,0 +1,8 @@ +
+

{{$remote_perms_title}}

+
+ + +
+
+ diff --git a/statusnet/admin.tpl b/statusnet/admin.tpl deleted file mode 100755 index b40adf35..00000000 --- a/statusnet/admin.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{{ for $sites as $s }} - {{ inc field_input.tpl with $field=$s.sitename }}{{ endinc }} - {{ inc field_input.tpl with $field=$s.apiurl }}{{ endinc }} - {{ inc field_input.tpl with $field=$s.secret }}{{ endinc }} - {{ inc field_input.tpl with $field=$s.key }}{{ endinc }} - {{ if $s.delete }} - {{ inc field_checkbox.tpl with $field=$s.delete }}{{ endinc }} -
- {{ else }} -

Fill this form to add a new site

- {{ endif }} - -{{ endfor }} - - -
diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index d7d490fd..d7af352e 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -698,8 +698,15 @@ function statusnet_plugin_admin(&$a, &$o){ ); - $t = file_get_contents( dirname(__file__). "/admin.tpl" ); - $o = replace_macros($t, array( + $t = get_markup_template( "admin.tpl", "addon/statusnet/" ); + + $includes = array( + '$field_input' => 'field_input.tpl', + '$field_checkbox' => 'field_checkbox.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros($t, $includes + array( '$submit' => t('Submit'), '$sites' => $sitesform, diff --git a/statusnet/view/admin.tpl b/statusnet/view/admin.tpl new file mode 100755 index 00000000..02eacf73 --- /dev/null +++ b/statusnet/view/admin.tpl @@ -0,0 +1,16 @@ +{{ for $sites as $s }} + {{ inc $field_input with $field=$s.sitename }}{{ endinc }} + {{ inc $field_input with $field=$s.apiurl }}{{ endinc }} + {{ inc $field_input with $field=$s.secret }}{{ endinc }} + {{ inc $field_input with $field=$s.key }}{{ endinc }} + {{ if $s.delete }} + {{ inc $field_checkbox with $field=$s.delete }}{{ endinc }} +
+ {{ else }} +

Fill this form to add a new site

+ {{ endif }} + +{{ endfor }} + + +
diff --git a/statusnet/view/smarty3/admin.tpl b/statusnet/view/smarty3/admin.tpl new file mode 100644 index 00000000..5a77b2cf --- /dev/null +++ b/statusnet/view/smarty3/admin.tpl @@ -0,0 +1,16 @@ +{{foreach $sites as $s}} + {{include file="file:{{$field_input}}" field=$s.sitename}} + {{include file="file:{{$field_input}}" field=$s.apiurl}} + {{include file="file:{{$field_input}}" field=$s.secret}} + {{include file="file:{{$field_input}}" field=$s.key}} + {{if $s.delete}} + {{include file="file:{{$field_checkbox}}" field=$s.delete}} +
+ {{else}} +

Fill this form to add a new site

+ {{/if}} + +{{/foreach}} + + +
diff --git a/tumblr/tumblr.php b/tumblr/tumblr.php index 01ba04bb..4bbae8e6 100755 --- a/tumblr/tumblr.php +++ b/tumblr/tumblr.php @@ -1,379 +1,380 @@ - - */ - -require_once('library/OAuth1.php'); -require_once('addon/tumblr/tumblroauth/tumblroauth.php'); - -function tumblr_install() { - register_hook('post_local', 'addon/tumblr/tumblr.php', 'tumblr_post_local'); - register_hook('notifier_normal', 'addon/tumblr/tumblr.php', 'tumblr_send'); - register_hook('jot_networks', 'addon/tumblr/tumblr.php', 'tumblr_jot_nets'); - register_hook('connector_settings', 'addon/tumblr/tumblr.php', 'tumblr_settings'); - register_hook('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post'); - -} -function tumblr_uninstall() { - unregister_hook('post_local', 'addon/tumblr/tumblr.php', 'tumblr_post_local'); - unregister_hook('notifier_normal', 'addon/tumblr/tumblr.php', 'tumblr_send'); - unregister_hook('jot_networks', 'addon/tumblr/tumblr.php', 'tumblr_jot_nets'); - unregister_hook('connector_settings', 'addon/tumblr/tumblr.php', 'tumblr_settings'); - unregister_hook('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post'); -} - -function tumblr_module() {} - -function tumblr_content(&$a) { - - if(! local_user()) { - notice( t('Permission denied.') . EOL); - return ''; - } - - if (isset($a->argv[1])) - switch ($a->argv[1]) { - case "connect": - $o = tumblr_connect($a); - break; - case "callback": - $o = tumblr_callback($a); - break; - default: - $o = print_r($a->argv, true); - break; - } - else - $o = tumblr_connect($a); - - return $o; -} - -function tumblr_connect($a) { - // Start a session. This is necessary to hold on to a few keys the callback script will also need - session_start(); - - // Include the TumblrOAuth library - //require_once('addon/tumblr/tumblroauth/tumblroauth.php'); - - // Define the needed keys - $consumer_key = get_config('tumblr','consumer_key'); - $consumer_secret = get_config('tumblr','consumer_secret'); - - // The callback URL is the script that gets called after the user authenticates with tumblr - // In this example, it would be the included callback.php - $callback_url = $a->get_baseurl()."/tumblr/callback"; - - // Let's begin. First we need a Request Token. The request token is required to send the user - // to Tumblr's login page. - - // Create a new instance of the TumblrOAuth library. For this step, all we need to give the library is our - // Consumer Key and Consumer Secret - $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret); - - // Ask Tumblr for a Request Token. Specify the Callback URL here too (although this should be optional) - $request_token = $tum_oauth->getRequestToken($callback_url); - - // Store the request token and Request Token Secret as out callback.php script will need this - $_SESSION['request_token'] = $token = $request_token['oauth_token']; - $_SESSION['request_token_secret'] = $request_token['oauth_token_secret']; - - // Check the HTTP Code. It should be a 200 (OK), if it's anything else then something didn't work. - switch ($tum_oauth->http_code) { - case 200: - // Ask Tumblr to give us a special address to their login page - $url = $tum_oauth->getAuthorizeURL($token); - - // Redirect the user to the login URL given to us by Tumblr - header('Location: ' . $url); - - // That's it for our side. The user is sent to a Tumblr Login page and - // asked to authroize our app. After that, Tumblr sends the user back to - // our Callback URL (callback.php) along with some information we need to get - // an access token. - - break; - default: - // Give an error message - $o = 'Could not connect to Tumblr. Refresh the page or try again later.'; - } - return($o); -} - -function tumblr_callback($a) { - - // Start a session, load the library - session_start(); - //require_once('addon/tumblr/tumblroauth/tumblroauth.php'); - - // Define the needed keys - $consumer_key = get_config('tumblr','consumer_key'); - $consumer_secret = get_config('tumblr','consumer_secret'); - - // Once the user approves your app at Tumblr, they are sent back to this script. - // This script is passed two parameters in the URL, oauth_token (our Request Token) - // and oauth_verifier (Key that we need to get Access Token). - // We'll also need out Request Token Secret, which we stored in a session. - - // Create instance of TumblrOAuth. - // It'll need our Consumer Key and Secret as well as our Request Token and Secret - $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $_SESSION['request_token'], $_SESSION['request_token_secret']); - - // Ok, let's get an Access Token. We'll need to pass along our oauth_verifier which was given to us in the URL. - $access_token = $tum_oauth->getAccessToken($_REQUEST['oauth_verifier']); - - // We're done with the Request Token and Secret so let's remove those. - unset($_SESSION['request_token']); - unset($_SESSION['request_token_secret']); - - // Make sure nothing went wrong. - if (200 == $tum_oauth->http_code) { - // good to go - } else { - return('Unable to authenticate'); - } - - // What's next? Now that we have an Access Token and Secret, we can make an API call. - set_pconfig(local_user(), "tumblr", "oauth_token", $access_token['oauth_token']); - set_pconfig(local_user(), "tumblr", "oauth_token_secret", $access_token['oauth_token_secret']); - - $o = t("You are now authenticated to tumblr."); - $o .= '
'.t("return to the connector page").''; - return($o); -} - -function tumblr_jot_nets(&$a,&$b) { - if(! local_user()) - return; - - $tmbl_post = get_pconfig(local_user(),'tumblr','post'); - if(intval($tmbl_post) == 1) { - $tmbl_defpost = get_pconfig(local_user(),'tumblr','post_by_default'); - $selected = ((intval($tmbl_defpost) == 1) ? ' checked="checked" ' : ''); - $b .= '
' - . t('Post to Tumblr') . '
'; - } -} - - -function tumblr_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(),'tumblr','post'); - - $checked = (($enabled) ? ' checked="checked" ' : ''); - - $def_enabled = get_pconfig(local_user(),'tumblr','post_by_default'); - - $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); - - /* Add some HTML to the existing form */ - - $s .= '
'; - $s .= '

' . t('Tumblr Post Settings') . '

'; - - $s .= '
'; - - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - $oauth_token = get_pconfig(local_user(), "tumblr", "oauth_token"); - $oauth_token_secret = get_pconfig(local_user(), "tumblr", "oauth_token_secret"); - - $s .= '
'; - if (($oauth_token != "") and ($oauth_token_secret != "")) { - - $page = get_pconfig(local_user(),'tumblr','page'); - $consumer_key = get_config('tumblr','consumer_key'); - $consumer_secret = get_config('tumblr','consumer_secret'); - - $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret); - - $userinfo = $tum_oauth->get('user/info'); - - $blogs = array(); - - $s .= t("Post to page:").""; - } else - $s .= t("You are not authenticated to tumblr"); - $s .= '
'; - - /* provide a submit button */ - - $s .= '
'; - -} - - -function tumblr_settings_post(&$a,&$b) { - - if(x($_POST,'tumblr-submit')) { - - set_pconfig(local_user(),'tumblr','post',intval($_POST['tumblr'])); - set_pconfig(local_user(),'tumblr','page',$_POST['tumblr_page']); - set_pconfig(local_user(),'tumblr','post_by_default',intval($_POST['tumblr_bydefault'])); - - } - -} - -function tumblr_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; - - $tmbl_post = intval(get_pconfig(local_user(),'tumblr','post')); - - $tmbl_enable = (($tmbl_post && x($_REQUEST,'tumblr_enable')) ? intval($_REQUEST['tumblr_enable']) : 0); - - if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'tumblr','post_by_default'))) - $tmbl_enable = 1; - - if(! $tmbl_enable) - return; - - if(strlen($b['postopts'])) - $b['postopts'] .= ','; - $b['postopts'] .= 'tumblr'; -} - - - - -function tumblr_send(&$a,&$b) { - - if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) - return; - - if(! strstr($b['postopts'],'tumblr')) - return; - - if($b['parent'] != $b['id']) - return; - - $oauth_token = get_pconfig($b['uid'], "tumblr", "oauth_token"); - $oauth_token_secret = get_pconfig($b['uid'], "tumblr", "oauth_token_secret"); - $page = get_pconfig($b['uid'], "tumblr", "page"); - $tmbl_blog = 'blog/'.$page.'/post'; - - if($oauth_token && $oauth_token_secret && $tmbl_blog) { - - require_once('include/bbcode.php'); - - $tag_arr = array(); - $tags = ''; - $x = preg_match_all('/\#\[(.*?)\](.*?)\[/',$b['tag'],$matches,PREG_SET_ORDER); - - if($x) { - foreach($matches as $mtch) { - $tag_arr[] = $mtch[2]; - } - } - if(count($tag_arr)) - $tags = implode(',',$tag_arr); - - $link = ""; - $video = false; - $title = trim($b['title']); - - // Checking for a bookmark - if(preg_match("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/is",$b['body'],$matches)) { - $link = $matches[1]; - if ($title == '') - $title = html_entity_decode($matches[2],ENT_QUOTES,'UTF-8'); - - $body = $b['body']; - // splitting the text in two parts: - // before and after the bookmark - $pos = strpos($body, "[bookmark"); - $body1 = substr($body, 0, $pos); - $body2 = substr($body, $pos); - - // Removing the bookmark - $body2 = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",'',$body2); - $body = $body1.$body2; - - $video = ((stristr($link,'youtube')) || (stristr($link,'youtu.be')) || (stristr($mtch[1],'vimeo'))); - } - - $params = array( - 'format' => 'html', - 'tweet' => 'off', - 'tags' => $tags); - - if (($link != '') and $video) { - $params['type'] = "video"; - $params['embed'] = $link; - if ($title != '') - $params['caption'] = '

'.$title. - "

".bbcode($body, false, false)."

"; - else - $params['caption'] = bbcode($body, false, false); - } else if (($link != '') and !$video) { - $params['type'] = "link"; - $params['title'] = $title; - $params['url'] = $link; - $params['description'] = bbcode($b["body"], false, false); - } else { - $params['type'] = "text"; - $params['title'] = $title; - $params['body'] = bbcode($b['body'], false, false); - } - - $consumer_key = get_config('tumblr','consumer_key'); - $consumer_secret = get_config('tumblr','consumer_secret'); - - $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret); - - // Make an API call with the TumblrOAuth instance. - $x = $tum_oauth->post($tmbl_blog,$params); - - $ret_code = $tum_oauth->http_code; - - if($ret_code == 201) - logger('tumblr_send: success'); - elseif($ret_code == 403) - logger('tumblr_send: authentication failure'); - else - logger('tumblr_send: general error: ' . print_r($x,true)); - - } -} + + */ + +require_once('library/OAuth1.php'); +require_once('addon/tumblr/tumblroauth/tumblroauth.php'); + +function tumblr_install() { + register_hook('post_local', 'addon/tumblr/tumblr.php', 'tumblr_post_local'); + register_hook('notifier_normal', 'addon/tumblr/tumblr.php', 'tumblr_send'); + register_hook('jot_networks', 'addon/tumblr/tumblr.php', 'tumblr_jot_nets'); + register_hook('connector_settings', 'addon/tumblr/tumblr.php', 'tumblr_settings'); + register_hook('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post'); + +} +function tumblr_uninstall() { + unregister_hook('post_local', 'addon/tumblr/tumblr.php', 'tumblr_post_local'); + unregister_hook('notifier_normal', 'addon/tumblr/tumblr.php', 'tumblr_send'); + unregister_hook('jot_networks', 'addon/tumblr/tumblr.php', 'tumblr_jot_nets'); + unregister_hook('connector_settings', 'addon/tumblr/tumblr.php', 'tumblr_settings'); + unregister_hook('connector_settings_post', 'addon/tumblr/tumblr.php', 'tumblr_settings_post'); +} + +function tumblr_module() {} + +function tumblr_content(&$a) { + + if(! local_user()) { + notice( t('Permission denied.') . EOL); + return ''; + } + + if (isset($a->argv[1])) + switch ($a->argv[1]) { + case "connect": + $o = tumblr_connect($a); + break; + case "callback": + $o = tumblr_callback($a); + break; + default: + $o = print_r($a->argv, true); + break; + } + else + $o = tumblr_connect($a); + + return $o; +} + +function tumblr_connect($a) { + // Start a session. This is necessary to hold on to a few keys the callback script will also need + session_start(); + + // Include the TumblrOAuth library + //require_once('addon/tumblr/tumblroauth/tumblroauth.php'); + + // Define the needed keys + $consumer_key = get_config('tumblr','consumer_key'); + $consumer_secret = get_config('tumblr','consumer_secret'); + + // The callback URL is the script that gets called after the user authenticates with tumblr + // In this example, it would be the included callback.php + $callback_url = $a->get_baseurl()."/tumblr/callback"; + + // Let's begin. First we need a Request Token. The request token is required to send the user + // to Tumblr's login page. + + // Create a new instance of the TumblrOAuth library. For this step, all we need to give the library is our + // Consumer Key and Consumer Secret + $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret); + + // Ask Tumblr for a Request Token. Specify the Callback URL here too (although this should be optional) + $request_token = $tum_oauth->getRequestToken($callback_url); + + // Store the request token and Request Token Secret as out callback.php script will need this + $_SESSION['request_token'] = $token = $request_token['oauth_token']; + $_SESSION['request_token_secret'] = $request_token['oauth_token_secret']; + + // Check the HTTP Code. It should be a 200 (OK), if it's anything else then something didn't work. + switch ($tum_oauth->http_code) { + case 200: + // Ask Tumblr to give us a special address to their login page + $url = $tum_oauth->getAuthorizeURL($token); + + // Redirect the user to the login URL given to us by Tumblr + header('Location: ' . $url); + + // That's it for our side. The user is sent to a Tumblr Login page and + // asked to authroize our app. After that, Tumblr sends the user back to + // our Callback URL (callback.php) along with some information we need to get + // an access token. + + break; + default: + // Give an error message + $o = 'Could not connect to Tumblr. Refresh the page or try again later.'; + } + return($o); +} + +function tumblr_callback($a) { + + // Start a session, load the library + session_start(); + //require_once('addon/tumblr/tumblroauth/tumblroauth.php'); + + // Define the needed keys + $consumer_key = get_config('tumblr','consumer_key'); + $consumer_secret = get_config('tumblr','consumer_secret'); + + // Once the user approves your app at Tumblr, they are sent back to this script. + // This script is passed two parameters in the URL, oauth_token (our Request Token) + // and oauth_verifier (Key that we need to get Access Token). + // We'll also need out Request Token Secret, which we stored in a session. + + // Create instance of TumblrOAuth. + // It'll need our Consumer Key and Secret as well as our Request Token and Secret + $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $_SESSION['request_token'], $_SESSION['request_token_secret']); + + // Ok, let's get an Access Token. We'll need to pass along our oauth_verifier which was given to us in the URL. + $access_token = $tum_oauth->getAccessToken($_REQUEST['oauth_verifier']); + + // We're done with the Request Token and Secret so let's remove those. + unset($_SESSION['request_token']); + unset($_SESSION['request_token_secret']); + + // Make sure nothing went wrong. + if (200 == $tum_oauth->http_code) { + // good to go + } else { + return('Unable to authenticate'); + } + + // What's next? Now that we have an Access Token and Secret, we can make an API call. + set_pconfig(local_user(), "tumblr", "oauth_token", $access_token['oauth_token']); + set_pconfig(local_user(), "tumblr", "oauth_token_secret", $access_token['oauth_token_secret']); + + $o = t("You are now authenticated to tumblr."); + $o .= '
'.t("return to the connector page").''; + return($o); +} + +function tumblr_jot_nets(&$a,&$b) { + if(! local_user()) + return; + + $tmbl_post = get_pconfig(local_user(),'tumblr','post'); + if(intval($tmbl_post) == 1) { + $tmbl_defpost = get_pconfig(local_user(),'tumblr','post_by_default'); + $selected = ((intval($tmbl_defpost) == 1) ? ' checked="checked" ' : ''); + $b .= '
' + . t('Post to Tumblr') . '
'; + } +} + + +function tumblr_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(),'tumblr','post'); + + $checked = (($enabled) ? ' checked="checked" ' : ''); + + $def_enabled = get_pconfig(local_user(),'tumblr','post_by_default'); + + $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('Tumblr Post Settings') . '

'; + + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $oauth_token = get_pconfig(local_user(), "tumblr", "oauth_token"); + $oauth_token_secret = get_pconfig(local_user(), "tumblr", "oauth_token_secret"); + + $s .= '
'; + if (($oauth_token != "") and ($oauth_token_secret != "")) { + + $page = get_pconfig(local_user(),'tumblr','page'); + $consumer_key = get_config('tumblr','consumer_key'); + $consumer_secret = get_config('tumblr','consumer_secret'); + + $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret); + + $userinfo = $tum_oauth->get('user/info'); + + $blogs = array(); + + $s .= t("Post to page:").""; + } else + $s .= t("You are not authenticated to tumblr"); + $s .= '
'; + + /* provide a submit button */ + + $s .= '
'; + +} + + +function tumblr_settings_post(&$a,&$b) { + + if(x($_POST,'tumblr-submit')) { + + set_pconfig(local_user(),'tumblr','post',intval($_POST['tumblr'])); + set_pconfig(local_user(),'tumblr','page',$_POST['tumblr_page']); + set_pconfig(local_user(),'tumblr','post_by_default',intval($_POST['tumblr_bydefault'])); + + } + +} + +function tumblr_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; + + $tmbl_post = intval(get_pconfig(local_user(),'tumblr','post')); + + $tmbl_enable = (($tmbl_post && x($_REQUEST,'tumblr_enable')) ? intval($_REQUEST['tumblr_enable']) : 0); + + if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'tumblr','post_by_default'))) + $tmbl_enable = 1; + + if(! $tmbl_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'tumblr'; +} + + + + +function tumblr_send(&$a,&$b) { + + if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) + return; + + if(! strstr($b['postopts'],'tumblr')) + return; + + if($b['parent'] != $b['id']) + return; + + $oauth_token = get_pconfig($b['uid'], "tumblr", "oauth_token"); + $oauth_token_secret = get_pconfig($b['uid'], "tumblr", "oauth_token_secret"); + $page = get_pconfig($b['uid'], "tumblr", "page"); + $tmbl_blog = 'blog/'.$page.'/post'; + + if($oauth_token && $oauth_token_secret && $tmbl_blog) { + + require_once('include/bbcode.php'); + + $tag_arr = array(); + $tags = ''; + $x = preg_match_all('/\#\[(.*?)\](.*?)\[/',$b['tag'],$matches,PREG_SET_ORDER); + + if($x) { + foreach($matches as $mtch) { + $tag_arr[] = $mtch[2]; + } + } + if(count($tag_arr)) + $tags = implode(',',$tag_arr); + + $link = ""; + $video = false; + $title = trim($b['title']); + + // Checking for a bookmark + if(preg_match("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/is",$b['body'],$matches)) { + $link = $matches[1]; + if ($title == '') + $title = html_entity_decode($matches[2],ENT_QUOTES,'UTF-8'); + + $body = $b['body']; + // splitting the text in two parts: + // before and after the bookmark + $pos = strpos($body, "[bookmark"); + $body1 = substr($body, 0, $pos); + $body2 = substr($body, $pos); + + // Removing the bookmark + $body2 = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",'',$body2); + $body = $body1.$body2; + + $video = ((stristr($link,'youtube')) || (stristr($link,'youtu.be')) || (stristr($mtch[1],'vimeo'))); + } + + $params = array( + 'format' => 'html', + 'tweet' => 'off', + 'tags' => $tags); + + if (($link != '') and $video) { + $params['type'] = "video"; + $params['embed'] = $link; + if ($title != '') + $params['caption'] = '

'.$title. + "

".bbcode($body, false, false)."

"; + else + $params['caption'] = bbcode($body, false, false); + } else if (($link != '') and !$video) { + $params['type'] = "link"; + $params['title'] = $title; + $params['url'] = $link; + $params['description'] = bbcode($b["body"], false, false); + } else { + $params['type'] = "text"; + $params['title'] = $title; + $params['body'] = bbcode($b['body'], false, false); + } + + $consumer_key = get_config('tumblr','consumer_key'); + $consumer_secret = get_config('tumblr','consumer_secret'); + + $tum_oauth = new TumblrOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret); + + // Make an API call with the TumblrOAuth instance. + $x = $tum_oauth->post($tmbl_blog,$params); + + $ret_code = $tum_oauth->http_code; + + if($ret_code == 201) + logger('tumblr_send: success'); + elseif($ret_code == 403) + logger('tumblr_send: authentication failure'); + else + logger('tumblr_send: general error: ' . print_r($x,true)); + + } +} + diff --git a/twitter/admin.tpl b/twitter/admin.tpl deleted file mode 100755 index a83eb07a..00000000 --- a/twitter/admin.tpl +++ /dev/null @@ -1,3 +0,0 @@ -{{ inc field_input.tpl with $field=$consumerkey }}{{ endinc }} -{{ inc field_input.tpl with $field=$consumersecret }}{{ endinc }} -
diff --git a/twitter/twitter.php b/twitter/twitter.php index ee3bd0fb..6cb2d9cd 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -504,8 +504,14 @@ function twitter_plugin_admin_post(&$a){ info( t('Settings updated.'). EOL ); } function twitter_plugin_admin(&$a, &$o){ - $t = file_get_contents( dirname(__file__). "/admin.tpl" ); - $o = replace_macros($t, array( + $t = get_markup_template( "admin.tpl", "addon/twitter/" ); + + $includes = array( + '$field_input' => 'field_input.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $o = replace_macros($t, $includes + array( '$submit' => t('Submit'), // name, label, value, help, [extra values] '$consumerkey' => array('consumerkey', t('Consumer key'), get_config('twitter', 'consumerkey' ), ''), diff --git a/twitter/view/admin.tpl b/twitter/view/admin.tpl new file mode 100755 index 00000000..d3649fce --- /dev/null +++ b/twitter/view/admin.tpl @@ -0,0 +1,3 @@ +{{ inc $field_input with $field=$consumerkey }}{{ endinc }} +{{ inc $field_input with $field=$consumersecret }}{{ endinc }} +
diff --git a/twitter/view/smarty3/admin.tpl b/twitter/view/smarty3/admin.tpl new file mode 100644 index 00000000..ad1e07e9 --- /dev/null +++ b/twitter/view/smarty3/admin.tpl @@ -0,0 +1,3 @@ +{{include file="file:{{$field_input}}" field=$consumerkey}} +{{include file="file:{{$field_input}}" field=$consumersecret}} +
diff --git a/uhremotestorage/settings.tpl b/uhremotestorage/settings.tpl deleted file mode 100755 index 22d7d608..00000000 --- a/uhremotestorage/settings.tpl +++ /dev/null @@ -1,9 +0,0 @@ -
-

$title

-

$desc

- {{ inc field_input.tpl with $field=$url }}{{ endinc }} - {{ inc field_input.tpl with $field=$auth }}{{ endinc }} - {{ inc field_select.tpl with $field=$api }}{{ endinc }} -
- -
diff --git a/uhremotestorage/uhremotestorage.php b/uhremotestorage/uhremotestorage.php index a2a8cc3d..d7d03692 100755 --- a/uhremotestorage/uhremotestorage.php +++ b/uhremotestorage/uhremotestorage.php @@ -78,8 +78,16 @@ function uhremotestorage_settings($a, &$s){ 'Dropbox' => 'Dropbox', ); */ - $tpl = file_get_contents(dirname(__file__)."/settings.tpl"); - $s .= replace_macros($tpl, array( +// $tpl = file_get_contents(dirname(__file__)."/settings.tpl"); + $tpl = get_markup_template("settings.tpl", "addon/uhremotestorage/"); + + $includes = array( + '$field_input' => 'field_input.tpl', + '$field_select' => 'field_select.tpl', + ); + $includes = set_template_includes($a->theme['template_engine'], $includes); + + $s .= replace_macros($tpl, $includes + array( '$title' => 'Unhosted remote storage', '$desc' => sprintf( t('Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See RemoteStorage WebFinger'), $uid ), '$url' => array( 'unhoestedurl', t('Template URL (with {category})'), $url, 'If your are using ownCloud, your unhosted url will be like http://HOST/apps/remoteStorage/WebDAV.php/USER/remoteStorage/{category}'), diff --git a/uhremotestorage/view/settings.tpl b/uhremotestorage/view/settings.tpl new file mode 100755 index 00000000..51650c85 --- /dev/null +++ b/uhremotestorage/view/settings.tpl @@ -0,0 +1,9 @@ +
+

$title

+

$desc

+ {{ inc $field_input with $field=$url }}{{ endinc }} + {{ inc $field_input with $field=$auth }}{{ endinc }} + {{ inc $field_select with $field=$api }}{{ endinc }} +
+ +
diff --git a/uhremotestorage/view/smarty3/settings.tpl b/uhremotestorage/view/smarty3/settings.tpl new file mode 100644 index 00000000..217f069a --- /dev/null +++ b/uhremotestorage/view/smarty3/settings.tpl @@ -0,0 +1,9 @@ +
+

{{$title}}

+

{{$desc}}

+ {{include file="file:{{$field_input}}" field=$url}} + {{include file="file:{{$field_input}}" field=$auth}} + {{include file="file:{{$field_select}}" field=$api}} +
+ +
diff --git a/widgets/settings.tpl b/widgets/view/settings.tpl similarity index 100% rename from widgets/settings.tpl rename to widgets/view/settings.tpl diff --git a/widgets/view/smarty3/settings.tpl b/widgets/view/smarty3/settings.tpl new file mode 100644 index 00000000..017fa120 --- /dev/null +++ b/widgets/view/smarty3/settings.tpl @@ -0,0 +1,19 @@ +
+

{{$title}}

+
+ + {{$key}} +
+ +
+ +
+ +

{{$widgets_h}}

+
    + {{foreach $widgets as $w}} +
  • {{$w.1}}
  • + {{/foreach}} +
+ +
diff --git a/widgets/view/smarty3/widget_like.tpl b/widgets/view/smarty3/widget_like.tpl new file mode 100644 index 00000000..ad529575 --- /dev/null +++ b/widgets/view/smarty3/widget_like.tpl @@ -0,0 +1,3 @@ + +{{$like}} like +{{$dislike}} dislike diff --git a/widgets/widget_like.tpl b/widgets/view/widget_like.tpl similarity index 100% rename from widgets/widget_like.tpl rename to widgets/view/widget_like.tpl diff --git a/widgets/widget_like.php b/widgets/widget_like.php index 649d4a76..8f356da9 100755 --- a/widgets/widget_like.php +++ b/widgets/widget_like.php @@ -52,7 +52,8 @@ function like_widget_content(&$a, $conf){ $o = ""; - $t = file_get_contents( dirname(__file__). "/widget_like.tpl" ); +# $t = file_get_contents( dirname(__file__). "/widget_like.tpl" ); + $t = get_markup_template("widget_like.tpl", "addon/widgets/"); $o .= replace_macros($t, array( '$like' => $likes, '$strlike' => sprintf( tt("%d person likes this", "%d people like this", $likes), $likes), diff --git a/widgets/widgets.php b/widgets/widgets.php index 47a6e48a..72534ce3 100755 --- a/widgets/widgets.php +++ b/widgets/widgets.php @@ -51,7 +51,8 @@ function widgets_settings(&$a,&$o) { - $t = file_get_contents( dirname(__file__). "/settings.tpl" ); +# $t = file_get_contents( dirname(__file__). "/settings.tpl" ); + $t = get_markup_template("settings.tpl", "addon/widgets/"); $o .= replace_macros($t, array( '$submit' => t('Generate new key'), '$baseurl' => $a->get_baseurl(), From ec95e5a2dacc4e9f04e75c22a968f781a5a09239 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 23 Dec 2012 03:24:55 +0100 Subject: [PATCH 08/40] forumlist: added a "div" for styling reasons privacy_image_cache: If a picture comes from another picture cache (like facebook) take the original picture --- forumlist/forumlist.php | 2 +- privacy_image_cache/privacy_image_cache.php | 28 +++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/forumlist/forumlist.php b/forumlist/forumlist.php index 37752462..95ae9890 100644 --- a/forumlist/forumlist.php +++ b/forumlist/forumlist.php @@ -74,7 +74,7 @@ function forumlist_network_mod_init($a,$b) { if(count($contacts)) { foreach($contacts as $contact) { - $forumlist .= '' . $contact['url'] . ' ' . $contact["name"]."
"; + $forumlist .= '"; } } else { diff --git a/privacy_image_cache/privacy_image_cache.php b/privacy_image_cache/privacy_image_cache.php index 3be42620..b9367e49 100644 --- a/privacy_image_cache/privacy_image_cache.php +++ b/privacy_image_cache/privacy_image_cache.php @@ -119,6 +119,15 @@ function privacy_image_cache_init() { // It shouldn't happen but it does - spaces in URL $_REQUEST['url'] = str_replace(" ", "+", $_REQUEST['url']); + // if the picture seems to be from another picture cache then take the original source + $queryvar = privacy_image_cache_parse_query($_REQUEST['url']); + if ($queryvar['url'] != "") + $_REQUEST['url'] = urldecode($queryvar['url']); + + // if fetching facebook pictures don't fetch the thumbnail but the big one + if (strpos($_REQUEST['url'], ".fbcdn.net/") and (substr($_REQUEST['url'], -6) == "_s.jpg")) + $_REQUEST['url'] = substr($_REQUEST['url'], 0, -6)."_n.jpg"; + $img_str = fetch_url($_REQUEST['url'],true); $tempfile = tempnam(get_config("system","temppath"), "cache"); @@ -372,3 +381,22 @@ function privacy_image_cache_plugin_admin_post(&$a = null, &$o = null){ q('DELETE FROM `photo` WHERE `uid` = 0 AND `resource-id` LIKE "pic:%%"'); } } + +function privacy_image_cache_parse_query($var) { + /** + * Use this function to parse out the query array element from + * the output of parse_url(). + */ + $var = parse_url($var, PHP_URL_QUERY); + $var = html_entity_decode($var); + $var = explode('&', $var); + $arr = array(); + + foreach($var as $val) { + $x = explode('=', $val); + $arr[$x[0]] = $x[1]; + } + + unset($val, $x, $var); + return $arr; +} From dc77f3683ed83b8d8ec783805eecac962f341c03 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 25 Dec 2012 12:51:28 +0100 Subject: [PATCH 09/40] privacy_image_cache: Minor code beauty changes --- privacy_image_cache/privacy_image_cache.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/privacy_image_cache/privacy_image_cache.php b/privacy_image_cache/privacy_image_cache.php index b9367e49..d98c6b6d 100644 --- a/privacy_image_cache/privacy_image_cache.php +++ b/privacy_image_cache/privacy_image_cache.php @@ -328,14 +328,12 @@ function privacy_image_cache_cron(&$a = null, &$b = null) { logger("Purging old Cache of the Privacy Image Cache", LOGGER_DEBUG); q('DELETE FROM `photo` WHERE `uid` = 0 AND `resource-id` LIKE "pic:%%" AND `created` < NOW() - INTERVAL %d SECOND', $cachetime); - set_config('pi_cache', 'last_delete', $time); clear_cache($a->get_basepath(), $a->get_basepath()."/privacy_image_cache"); + + set_config('pi_cache', 'last_delete', $time); } - - - /** * @param App $a * @param null|object $o From c12542ef963a841236ebb0b0ff6ab77c53abcb5e Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Tue, 25 Dec 2012 13:25:09 -0700 Subject: [PATCH 10/40] revert addon Smarty3 templates to non-variable-based includes --- altpager.tgz | Bin 1641 -> 1814 bytes altpager/altpager.php | 8 +------- altpager/view/admin.tpl | 4 ++-- altpager/view/smarty3/admin.tpl | 4 ++-- blackout.tgz | Bin 2752 -> 2884 bytes blackout/blackout.php | 7 +------ blackout/view/admin.tpl | 6 +++--- blackout/view/smarty3/admin.tpl | 6 +++--- communityhome.tgz | Bin 4023 -> 4331 bytes forumdirectory.tgz | Bin 3412 -> 3802 bytes fromgplus.tgz | Bin 3426 -> 3576 bytes gravatar.tgz | Bin 2552 -> 2715 bytes gravatar/gravatar.php | 8 +------- gravatar/view/admin.tpl | 4 ++-- gravatar/view/smarty3/admin.tpl | 4 ++-- impressum.tgz | Bin 2376 -> 2474 bytes impressum/impressum.php | 9 +-------- impressum/view/admin.tpl | 12 ++++++------ impressum/view/smarty3/admin.tpl | 12 ++++++------ libravatar.tgz | Bin 7970 -> 8089 bytes libravatar/libravatar.php | 8 +------- libravatar/view/admin.tpl | 2 +- libravatar/view/smarty3/admin.tpl | 2 +- mathjax.tgz | Bin 2138 -> 2301 bytes mathjax/mathjax.php | 7 +------ mathjax/view/admin.tpl | 2 +- mathjax/view/smarty3/admin.tpl | 2 +- openstreetmap.tgz | Bin 1975 -> 2124 bytes openstreetmap/openstreetmap.php | 8 +------- openstreetmap/view/admin.tpl | 4 ++-- openstreetmap/view/smarty3/admin.tpl | 4 ++-- page.tgz | Bin 2489 -> 2464 bytes piwik.tgz | Bin 3349 -> 3453 bytes piwik/piwik.php | 10 +--------- piwik/view/admin.tpl | 8 ++++---- piwik/view/smarty3/admin.tpl | 8 ++++---- privacy_image_cache.tgz | Bin 3693 -> 4269 bytes remote_permissions.tgz | Bin 3144 -> 3322 bytes remote_permissions/remote_permissions.php | 9 +-------- remote_permissions/view/admin.tpl | 4 ++-- statusnet.tgz | Bin 18071 -> 17889 bytes statusnet/statusnet.php | 9 +-------- statusnet/view/admin.tpl | 10 +++++----- statusnet/view/smarty3/admin.tpl | 10 +++++----- tumblr.tgz | Bin 13202 -> 13212 bytes twitter.tgz | Bin 11416 -> 11796 bytes twitter/view/admin.tpl | 4 ++-- twitter/view/smarty3/admin.tpl | 4 ++-- uhremotestorage.tgz | Bin 1599 -> 1700 bytes uhremotestorage/uhremotestorage.php | 10 +--------- uhremotestorage/view/settings.tpl | 6 +++--- uhremotestorage/view/smarty3/settings.tpl | 6 +++--- widgets.tgz | Bin 3944 -> 4149 bytes 53 files changed, 75 insertions(+), 146 deletions(-) mode change 100755 => 100644 altpager/view/admin.tpl mode change 100755 => 100644 impressum/view/admin.tpl mode change 100755 => 100644 piwik/view/admin.tpl mode change 100755 => 100644 statusnet/view/admin.tpl mode change 100755 => 100644 twitter/view/admin.tpl mode change 100755 => 100644 uhremotestorage/view/settings.tpl diff --git a/altpager.tgz b/altpager.tgz index 87bb2f8fc2306b3d89eb6d3572f56e673a388904..fbfd5594954d81a03e5007215e4d0637883ac40e 100644 GIT binary patch literal 1814 zcmV+x2kH19iwFR73))Zs1MOMsZ`(K$&sY1en9~`RTsVHju>+)aiejG!wATXd-G10z z7_>xNL?}@psXR98|NVy4!&c(f-CZY(z2y%HERnkpQGD1{}%^=IAHndza_q$4-2X3Mp}*UM=g-^l9R5ubdJeC-rZOd(!h5n}c)>(! zX1}H?lq@s1=kQfb(iMfQrhugs3FL~UE1)+SXCc#OnnIc<3n~?80g5FVr{JaZno18y z8i6NxWUehKXX&Nt!^fB@xMrM#$|#K>&&p{*BG4?Ms&54PFLJfQjQT@!|2o&PkmvB0 zT~c^U!WENOEQOb`*4g=BkW?f6P$Yv)iY4Q8kRb7eS&jerH)yxp%RCLON>xtGS&C7@ zdC-NscDp6%iYc_wJQm_I@H3vH5$1|&jmj&(2R?}+kq&m|mYuHn)@!;i_OYF3Lh0Yb zyI6=Dv|C)Pa3=6db7LYU%S3C4CGr`2eSE%!X zgqKBN>zG2t5DY`8Ol3o{V~0YKYJ%pn)SdbJcOO0ik&@h6njdHp(+R=wRJp`k>R(Y< z2@M3U2xl1Sib^11DDqUBH6}yY5|l8TgUF@XW64&zERwDi36?_QrkFJu=0qV=5zG%A z+AvGdAw4U*ac+w(gMVO>g@n(IAn5U5e+3-62?}L;wQ-MCzDO8awcBmCFmiP+Qxjpx ze4Z5|2HT8!zPd%%Ccb4cw>vDYKfIN$^K1F@M z3w`+J-J8;TP3NI|YuCNEu>>DB=1TftYep1Vvx@6x1FPOoo$!f6CLg`yhRZKBfw!}B# zb4?*6X%TytveK1fu0hH|YV~V%$nk|)^P?Z@gvXRb{?E{#f&bFfW{{N6yv;5ifWFP> z%+vHn4??9ph$UUlJRkjHSQ+IOMA2ND`q2k}@Tu&@#b%N3K|&)&W@roU!QjFSdOyjZ zQm@qYJEI(G7UojYRHM%3s1nPq?7(D_j4XJqQx!mkwZAw(E7Nb*qxF}BD{4Hj&30&g z8pbrd#ITz|uvyfFSKvcAHS@{~568~Iw_DUMR3f49{l~X&D(}%7EQnRWmddEY9TB^N zkQ1fQAEhsk7pT#tcj3R-ki}zb!6J(u9P3p=*gW!I4h;2+<{m6Et|+tqT9OPaOmhoP z7L+&X?2u=q-VAz`ApcS2L2tDDR4ZVT5He0e>)P!;;#DQA-J~H2OS4=zC9y+Z8Ku_t z3vuH?ik;4uXr}t+I50A9!N{!~X#%#f!vIZkv2FX1Q-Z1$6Mh+@*jrq&h+JWr9%8-_P+4P)$nd+wQi;LKa_>L$hAQ!`9}Wrt`b)s#Ux5tYReov z>xeF%7#&^aR6^usp3O0X&}o_m;926n&bX;%_p;st6Zai~izT&QMh2l2D(L85abyOV zVScAPW?*))Eql+-6$R1G6)WlkB#Z?XG;9WN&36S=w+AD8|E-W1Q)My5+&AH6QjOH< zQRaRRwoCK&u?2p)b+@R-g*Yrl6S64ZFVep@l(@@@9s33!FN)J2DTTuLzm6%&B~6kT zG5?T^L#$Wb;*k8jbBm?`J#3v@2;G{sg5Y5bP-@iewpyC z;;G$2S2Fj4a%*c}te+#SmBVIJ@Zn)EU|Rtw)cmubtNtpeQ}T+@>qmMC^c&v)Oh%It zKL4MbOvmp1&r_i3|GH)$bPxNI=k)ZG{vVIV_xyi4JR7<9KTmPvn0eTk(VKv9JDb<^SpF=*;B*6vRP>;E1fyZwLIK5$?EcXBqV`@iwo82vw)jE1iMKLzgYupsk1qF}y;&AfZ%+=Ip$ zV9WlOE!dR)Lsa{_yRzP|*RJ9p5<6eSA9#;__1`@6Vg3)t=K1ezT73U^`Trznx7+`0 zzP2|X0+(D6eGZ&1^^11vnngN32lP;OgSU7_tXO)y5L$}_hbLxqy~XDN2lH+2&sNmI z!NI}7!NI}7!NI}7!NI}7!NI}7!NI}7!NI}7!NI}7!NI}7!NI}7;r{^t0}5H8bpTKR E0OQ=Q-2eap literal 1641 zcmV-v2A26BiwFRbr^-+O1ML{wZre6Aul84*X+|X%j<0c2q;-O#>$(B$S|Hu_&<+MI z(H0R(6i6yg(B|KFNJ_FDJ58~rDTe7F0VML=?=s;!BMT~fd*2TF2uDZbz2W%aXgECB z>yHnIhX(_DUcla9*gqVOhoceV^#{Z8;n5z9zoAYQu$Pc=fhO>^*+mgvan3 zN$4>==bFltXbSJhg5d)bsk!}$s!+1bydJ}gn4}8|S%m>}DH6yPOBX;dGtNS$%{7HI zPi9mq&;k@oGETuu>5@thNE(4Bcx0X}Drf1r>cab&DOfVjL1mOikY~lUAQ5PmP}MaG z{efJqGJ|g4yg$!%EaWk~VdoUyl<|aTvDVpfuUAF58;YctNik=f_7X%sG1T~vf4ye2 zInUG3npD=rl%<#@oCj_A)ND2+T`+|{n#Mw$2Y$wLbi!0otIQe7nNZ0;RV_}BjLGAY#mc58G>O5rK@Zzw(L(y_Xm;5OJi_yLP7Bz$TV!H9qU40v=IIAc1MbN5v~OBi~! z-EKB8b9F9LlVQkwnmHANbw(XuU14Yw-?Erm9)5?V8qF@4f2f%If3;0Quyig0(1HKF zI9~-I&m!zkQP*!n7hb-7T|{p)co^O)bnk2~!P&}PNf&I-h$8D&u}oL&jbziV45g90 za_5&E8azU0K58jfCtJSUbX04>#f)&6zye)Xc+9JO<8{Du7@l>-Jg5jJFxX_(TUnv> z6{jkum@8}QoAg;y2ubR4&tjIga;!B-SxBvYjTYHIF*G0iSSLKDB=Y})?gad2rZ!T4!w`^W9k*QzB0z4WnnHQO*PtVMwOVaRRmC@j%hc6U`5o1Q}Cg&SoBGuTfzWw6MEqNw_% zBpG&?O%a^TDBr}hN1oAob?B9f{H}^YZ>+p+6);5z87H9)?fM>ZS}JRWY-qyLEZ3Ww z*dwpVQtSJfxbz^!O=nFt(|vP17?`kN=9Ymp3A-Vohb}o;_kGAILDSrYU!*AR78fj{ z*wtN|gjudNdi%}*I`qoTa8j7$)OWWxmESLqcQdPOE4+VJG;UXGy+ZSq{@1%&TrrAC zl(5vcIe63(ZJZb_jmd8IsA#B3_sC|12mEK_8p zDvYA)JFwoA*9R8(h3K~H!%iKRqVrgk->uTGD@>F!v}Z3#7`wTTm_lLZFJp>&NmCw1 z&3~n1A3IgsjmIyC)vW^p*U$&#%>ULfK)ZX(*XlcQ6`G_BUz nR*6uquyu#2p@tf2sG)`$YN(-x8fvJahTGt8Gg 'field_radio.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros($t, $includes + array( + $o = replace_macros($t, array( '$submit' => t('Submit'), '$global' => array('altpagerchoice', t('Global'), 1, t('Force global use of the alternate pager'), get_config('alt_pager', 'global') == 1), '$individual' => array('altpagerchoice', t('Individual'), 2, t('Each user chooses whether to use the alternate pager'), get_config('alt_pager', 'global') == 0) diff --git a/altpager/view/admin.tpl b/altpager/view/admin.tpl old mode 100755 new mode 100644 index 1176db41..60558808 --- a/altpager/view/admin.tpl +++ b/altpager/view/admin.tpl @@ -1,3 +1,3 @@ -{{ inc $field_radio with $field=$global }}{{ endinc }} -{{ inc $field_radio with $field=$individual }}{{ endinc }} +{{ inc field_radio.tpl with $field=$global }}{{ endinc }} +{{ inc field_radio.tpl with $field=$individual }}{{ endinc }}
diff --git a/altpager/view/smarty3/admin.tpl b/altpager/view/smarty3/admin.tpl index 50780231..e67afd73 100644 --- a/altpager/view/smarty3/admin.tpl +++ b/altpager/view/smarty3/admin.tpl @@ -1,3 +1,3 @@ -{{include file="file:{{$field_radio}}" field=$global}} -{{include file="file:{{$field_radio}}" field=$individual}} +{{include file="field_radio.tpl" field=$global}} +{{include file="field_radio.tpl" field=$individual}}
diff --git a/blackout.tgz b/blackout.tgz index 4b5a5d312d391537ef64ea909cf8ecdcffe15f0c..6d081dc4a55b5fdc050e9cb87f99d9a47af05ac8 100644 GIT binary patch literal 2884 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 GPyhhu!%p4+ diff --git a/blackout/blackout.php b/blackout/blackout.php index 4c2a74b6..83495611 100644 --- a/blackout/blackout.php +++ b/blackout/blackout.php @@ -95,12 +95,7 @@ function blackout_plugin_admin(&$a, &$o) { if (! is_string($myurl)) { $myurl = "http://www.example.com"; } $t = get_markup_template( "admin.tpl", "addon/blackout/" ); - $includes = array( - '$field_input' => 'field_input.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros($t, $includes + array( + $o = replace_macros($t, array( '$submit' => t('Submit'), '$rurl' => array("rurl", "Redirect URL", $myurl, "all your visitors from the web will be redirected to this URL"), '$startdate' => array("startdate", "Begin of the Blackout
(YYYY-MM-DD hh:mm)", $mystart, "format is YYYY year, MM month, DD day, hh hour and mm minute"), diff --git a/blackout/view/admin.tpl b/blackout/view/admin.tpl index e19bd246..25922193 100644 --- a/blackout/view/admin.tpl +++ b/blackout/view/admin.tpl @@ -1,6 +1,6 @@ -{{ inc $field_input with $field=$startdate }}{{ endinc }} -{{ inc $field_input with $field=$enddate }}{{ endinc }} -{{ inc $field_input with $field=$rurl }}{{ endinc }} +{{ inc field_input.tpl with $field=$startdate }}{{ endinc }} +{{ inc field_input.tpl with $field=$enddate }}{{ endinc }} +{{ inc field_input.tpl with $field=$rurl }}{{ endinc }}
Note: The redirect will be active from the moment you diff --git a/blackout/view/smarty3/admin.tpl b/blackout/view/smarty3/admin.tpl index f77a5948..11a4d914 100644 --- a/blackout/view/smarty3/admin.tpl +++ b/blackout/view/smarty3/admin.tpl @@ -1,6 +1,6 @@ -{{include file="file:{{$field_input}}" field=$startdate}} -{{include file="file:{{$field_input}}" field=$enddate}} -{{include file="file:{{$field_input}}" field=$rurl}} +{{include file="field_input.tpl" field=$startdate}} +{{include file="field_input.tpl" field=$enddate}} +{{include file="field_input.tpl" field=$rurl}}
Note: The redirect will be active from the moment you diff --git a/communityhome.tgz b/communityhome.tgz index 20f7b9642c0e676d43f9143eb52e1df174bde2ff..71f1f8e30f3e38731dbf8efd496e65f82623ba94 100755 GIT binary patch literal 4331 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 ZQ<=(CrZSbOOlA7g^k3O2d({AV008SYo=^Y) literal 4023 zcmV;o4@mGIiwFScn9ooE1MOUUbK5o&_rKPs*yG8el+oL-j$^r#i`~X|iQRGB_HI(2 zOo@=hny>I-N0Z5Szug5$krWjtt>fI>aqG$=u-F%X9~K~-iRU=6YekE>=ZNmcSD_x# z{{HU9V0UMKFxc7X?d}cscKTedXrn*q?QQS(ceb~;H+uc;y}iK(?0y|{@)U=W5ddsB z#$;v%x0btx&!6q?^}qY>yT`EU5owa^|J+k2^6dxFaZmpbcKQSA|Lwg2vh}dOzrWq< zZ$R%swBJMj=ly>eP6Er1j%u6r#x!;(k>$CK=7-uQK5KuCjPa-shSuy%Y-@6}y9Iu=tSwj(7!5K$bsFg5H@P{BtoPDOr}U#Z=tUS+&4@oR9uU;T&h zYcut&#=j4{NvD4J0M-=hu6J&k@bP19^Kia>RF}3#R%DCAE*21*Kv~3b7~3!*Q-&Ja z7iu^#4s8o8lb_MvOf8J#DDqrTHXj`tFb~9ZsQpztsx$Xt*El-t+EzizphQYZ^TD$D zVK=s=ovw)a`QRwSITeHR$MF9Mx4 zq2#PU<^Usvy2X*KTgn{bBRyRdmp3srO9rUSu$7w6H!a)rj~J(H^XFdV70t>Pe!fMj z)t`x!ZQY1s-=#&$5*(p8kaQ{!vt31eMcp{+j_Q^iLj@y>1L|8N@wcH*t^fYqe-Is? zUjO^MJG+BI{)g-Tpj!VQgATvPUaobYKCQu1I5Qk^056h305l4y{8-2Z1y{%ec!LWe z5H3PGTI32qUo4j!`NoVJ{(|7djryG)JwK15xfdM3560N?ND(%N!+8|>2i@+C70d!J z_B$xI>j&P{vPE}lj05Zad*=w7cM&H7@h-LkG4kArXy}e-F2^j5R~?tXS}j@5Avc~! zmWzFD+l?mRA|HsE6-FW$%{}j?p)K-Le-7ZXUPI(SY!VtmVXdlsN zc&pDN$DRwr)UTj31Rasty@5d3LoJLJwg~4!L>fd3Utn4w-bY<*uc?ec?~t6Ch(=>0 z6mfuo>FC}2-DVMvFfC)KVK_DD9_i>WnH6Hb2177{z*saeb<$WPwpX<)kR_5V4w#;jI{w6INQ2}z0qgd_YX2L}fy{4@E zhl}&q%eL_9l5bt|%fYzrH-VIDu;`Y@2cuAbm`u#qKLHW80hD z2o}|YOoUY^UY))^y@V|jTJ)jO0PfL8e;|iu9XI^gl>JgYKnN2yz_bE#t1%jJ<%nh< zmWfH^1q<$9IxOJ+x2BDW7rRlT9yA%fHf3Ijg7s(~J7b!Fn>c)hF_|M1Cu>0)8 zmC<1cE7Kl2pr?z2j!%t77zMU)QB?3&PdY%qYSIuXl;L>cl1%3zquh|8qrn0-2EwgD^+Nt$~Ti$Z`-Y z*%!%r)l6C%cGM12@9zu*nUgxfQ~@SYWsifAt9Nyx<0KWe5>+!CBzAgIl@qhpQ6{!5K$tBJsMV z3fRo+)}Nku05t6=77eBG#re-?myK&=Z_-%Hs0Jxj&Qn!<4Qj%L!k%6ad+_7M`OiNw zcEl`#Y(U=Y)~9r&-eeR|St^|$Fbs3Uoza9ng5&3xCylf7UvY@H;q(lV`j_XgaH79H zKf8R{l+#?bx=Z(94Hu_BzPyCa3(MfI}5 zFx!~a{Cswb9M509f_s!MWn`5yHhzIl9`fuhjh+og;&}#vD3Bsiq9QuLfM$?A2g?NeoGhX7-8ZPltYh{5NWC&D0 ze4l+d(0iC6Du$$a!n1s4wq_aNmvr=c$WL-Sd0>;t*|O(8g$z$tj7he>JgHc6dCq7MtnazzeMzghW|{#8j?Cn=0e2WkOoae3hI8OE*{YT3+>ry_HHjcu!VDS-ZsHL@Mq8BU)w? z08SAYXMrY7G{-o`8qrF}HJgR{LI=v}Ncl5^X-WF~5Lxvn@R-aP(H46>8ndMg#znlP zYEC(qwV6KFubyRepukV7U>PMsh@+j#=W#)Wdgph4rmHpR>)?ADn-X+Som!t@C!nHV zbu`**cDR(lD3f;QU^tJ6_aSf(=+N2(X3uV&(0(7b!2b_ClWEyUc0YW5jGi7#%0yorA=4A}bZ2l8N83q^%FFBLT;-EC({47nj zNyboyCo46RU=~A%`|N+55Ug))>8L%Gl#4-zr;tpd^n5az>$tKUvL%OLVP3XYN@@vC zDKLQ|n$)F`|N zc5iW~Y{rf+^CcQ5I3f8vDnhy+*rJjViIOv4*2-)TX^ib})Pp(@TGuj+j3^G1rXOqh z=DEh!RC$ua?ZlI!Uo@uid>Ge><%i6uZ-tO z+D`^-_3NPoW!M_j!{2oLyugea~l7p4&Ich0Lj@a2| z4q@3M3eqQe(p%^K-r>A|B=>0VGbhL`Jw%6j?(rrq4 zkZ=8_?(0zg?a9T-^W)bi9mjl79rxY;+u!dM?tks}clN9IzmGx7m%T6PWp6u2wb~_} z_4;;9ud6&{63@L^*0%j`4*o&iVAtE|~f30@vf@4@NC@cYti}Dw}SiTA81>WgE zHgKjVLOLg}%{>=aS6I-;vI)oT)(Wk$WwQvE7D9>3V*R2-wQCJQPFo+(iX1SDwkAJ#cz5`%ENfLYk54?_`ZI=tX;QE4d^<5X)}p_ z3g3(EbCpUEouht2RJn-625g!f@Z=8vwGwH$>VnWrT}JliA))vh7qJTW5W$2rOG6Di z!iVG?f(CqipDXD~le-4}R+r$D-|E-n_kVu=M|YSG;Hoe;oCo|{z|Z{qzs&r{Z@ud8 z{~m+Z_y5EFEdXQu-p;!I-yiJk=lg#^1E9kH$Dr!|e|7)Ay8mC@|F7=WY7L#lO1ZUtRJ4!Ylsrzi)H3NM0<`<(Oyr;ytEZq1?4}Xcxf#)nHTI z(^)kz%Sw4^^=9I$(facrc^Bv*blh|P)7#lyIsfnN?N;YMk3oD-1%C{EKu2aD`3FV;shY-TBtNRZ&G1Ra8+$6;)JGMHN+4QAHJ1R8d70Ra8+$6;)JGMHN+4 dQAHJ1R8d70Ra8+$6;-sc@gEqYyaxby008GZ;J^R? diff --git a/forumdirectory.tgz b/forumdirectory.tgz index 09fcb4ce9db4189b230611884834b684a24cae94..249cd22645f56aa842c15b68551b885e89cfbc55 100644 GIT binary patch literal 3802 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 Q_D^m91=AT~H~>%p0OQtj8~^|S literal 3412 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 E0Lr4McK`qY diff --git a/gravatar.tgz b/gravatar.tgz index 25106f2658a5c407d184214ee68f1aa089ad7ae5..561c4aaecc00a7c3a8518f328814358b2e513f88 100644 GIT binary patch literal 2715 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 VHPlc;4K=L5zW{)dR?+}a004JIJ1hVI literal 2552 zcmVG$n*p!vnapBlbgTzgZCQV?cJrqWu ztjLwP7m~~FE+s30|9fXwV`N?No`@jB2 zRHo&3=7A1=y1RRm|M&a5k5~M^y8}OL=R3=>_WYmw|L{5ZyVZO2sKp+!zwulgu-85k z*m+f!N?ZK$N|;#7(n?hvu+tHR3UxiFWG30T|4pVE( zgI;f>r6>{^^C&T2l4(>3+bgvi$xQUfx5q%H*Q!-LEx_+tW>Aw_suTnwpix!Cs4Ak2< zX<;i}INkq#_6EZT(f?F(&2!e_jBCwj3$Gq_hRwTm=5Z2*9lnL2WTH+YM!d@Gz{_#O z#=;IDv`2CrHu|G2YCxHf(GHs(&8;lPw_rE`XS80A8DR;*6JisdRgh{UNHs_y_~2+% zV9wU29EHEI72&$A%{B4{m@!rYa`21+o0_~!TS~|wn3-uXDHyio7Ccte9Gr|qxzQ&W zJ4&XKmJc(R`-wDV#%GYz4C0GT#n4C#fjN~n1#it5uM$YqSTH*)1!&w!xk-Uqp6rEI z%RDqzTa~FP#7<{;5r~}2Ecn>%l6^Xr&XBcF`ss8UEyhF72WY?|M>h(h-%60vV@81b z+#KO&AZ_Fq5qt!ghnikF&7PsoEL^qVFGs9hvucweYJv|F!d`|aVSxt#0gEGs(9bsA zJ5$B6Foxb+U5Uk@f937RlN?gS$ATf#QURq*ydiE~;tw2Z_|V0#a`9_{7uLdok3tK< zU_x-0E}-a#g8_XUbfb2U@FQDhZD;bI8v4s&?-UQL6VTPp(1tbWLL4nCIwoxRA$p~MEd8?+1Age~(mh=UM30R9 zG8OS>tg3J1u(^{A69qaTp?k%oYRaZu!(}-}A%OkA!uI*eo0FFxAXEQ*_U}prT@C13(18VH3Dogt5n3^X9D6I1C&DT8cJPg zUN60l4u|^qL%If@ZjKQKIkaP+fyW$k;m(?JjOGd~0yp@aM&y+!kC8t9ho$<;xkyzO zB4|#oE`}|%3Krf&Ss(yr&`~>;2?TYUp$m@MXr+M>aiyi54XpZ%pQxl9wZT?ckJf;M zO@%jnBHAchn^^(<__L`jw!Ol)zyn1`GhPd$(`_jB1seeP<&s_CW zBgfGYAqTK19d&LcRG?BzC;_#UzII}Ho2d#s3$^i@SU%~g2rTu5=ir-_`|%DJ;-FM; ziQuhBnH6LHuZ@9VF$RJguD~$73_FAO@6JD9ckHvc%bsJv^RaQAj03o+ze5kh4i;~t z%pAS^)3rs&yv{zRInj9wu_a;*1+})ONRL`*`V6 z_b=<4yHh{+jt_f)dtY3B_i6Iq-Mmqre19I_$p78`)BbAy@9g#O^Z#d@2lM{=J#|a1 z;f!6ZZdpHucipmfTdfbxo&slIH8t4e;b1@u->QVc==#pM-WVGioBYn$VBdOC3)l#; zy7lQsjCj^dtP1CMSud$mY!{)2f-j<|+hLf%6@Fe41Oye9q!E`qFJU^esaDlEW$#K+ zoW6=$t=9{)B4?#4s|@?`Ayljw+B(fM`NfZquIm*5JcAxdPb3WcQ*H2V)hy zSZ5HBPHMM;*al;2VT>>lJGG27O++?xih`MQ)TcxZwwA?L%_3sXVnjRnJO^=E-7*7S zy(aKvgpEPnN6>CRYPBA)mrKi+2M<_1s=RPSPf_mH>1g5a0rTO5{w7ebQyL4R`mq)` z78sR_YipT$Yfx`FnzamH+{{GmpAcL`D^&^x+o7;ibTrrxo=UKru;u_&84POPgTX;F zI6?YDH$E3DQ)5NIZ{H$Vn9p$0G1~?kcfsWzocu&!r*%7z(0oDeyDgT8Q@veTB~hLf@ip{L2`fG z9!l%?HruqffvA_4B5Sri>xr~*((^I8lHwQrj}eBK4=Xoj&a*B9U-~iuoyKSz&Ezx1 zXE20(T>*gb((LIsZjeMTU8qb`8K)rs@{HO{rA@7)`P7Hd7!|*L)pzTr4{4M{BnKR- zb1=v1DiPp!Lyn+aoTwOdpJ0}|+=q$=!c1gR@eDw4vd-{53}91%>85l7??IqkW(k`} zl_6JRs8{)!3KXZ!4A|d*SF}l~0`LL`;VocgMFAG7scf+Vw7@SwAD|Nusv4u2iT>p( zeFTZIvKes+@;c{09i-Z1wa7^?X(~O$wy+VFA|ppcIbU?Gi4Y2r43mnCv{Ih1T9bjI z)VjGA|4>EiZwhiKrwhA$3>mVfG!_>caPP>8t2}szVeMf4bolnMBX|)QtP6SY@xuLa zjF$QBD2le4^+Wqvt5p{#WND{rd5H~eEri@K6Z1_k(Yk?SGnxa>m3'; - - $includes = array( - '$field_select' => 'field_select.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o .= replace_macros( $t, $includes + array( + $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), diff --git a/gravatar/view/admin.tpl b/gravatar/view/admin.tpl index b187e1ea..83144e43 100644 --- a/gravatar/view/admin.tpl +++ b/gravatar/view/admin.tpl @@ -1,3 +1,3 @@ -{{ inc $field_select with $field=$default_avatar}}{{ endinc }} -{{ inc $field_select with $field=$rating }}{{ endinc }} +{{ inc field_select.tpl with $field=$default_avatar}}{{ endinc }} +{{ inc field_select.tpl with $field=$rating }}{{ endinc }}
diff --git a/gravatar/view/smarty3/admin.tpl b/gravatar/view/smarty3/admin.tpl index 30d760af..5dfd4488 100644 --- a/gravatar/view/smarty3/admin.tpl +++ b/gravatar/view/smarty3/admin.tpl @@ -1,3 +1,3 @@ -{{include file="file:{{$field_select}}" field=$default_avatar}} -{{include file="file:{{$field_select}}" field=$rating}} +{{include file="field_select.tpl" field=$default_avatar}} +{{include file="field_select.tpl" field=$rating}}
diff --git a/impressum.tgz b/impressum.tgz index 8c36df6f2b4afa2bdd1a5c080103f3375cb73389..b47b625cf743a9c32a4caa45007446970cc45c63 100755 GIT binary patch literal 2474 zcmV;b303wViwFR83))Zs1MOOEZ`(K$&S(FMSzoY{3)e5P9Usy-yY05c7U*t+Yp}qf zC=6PnEupfgm8iUIkpF%&Bqd97?8Mn5y~Alxps_?ge18G7wN_0;#A7B! z+!Yrgj}hAiPh1e7BSOg>30ERT3~(3{6mx8G1%IYIQFxsOB7O)JTqq<@6hI`<@dB9p zJV3hC-$Bl#;IC)DeFVuCiL!;}CH-)LIKPN+?l00<5j{fK&$xbrD?|wb8lQ$Rh~}4B z-#*Sl!WB%Sbu#buoFS!{GsHvgNCj1Nm)Ia;ArCqYXnatQ6(3R!+a>~E$9#^{fzv>= z8BNBD9dV*j63Lm{&J{!wYTU+L1cA6fK5))rpUncEbMAOjLn#cJy%(_0UY_WOU#vW4 zSzo_c$|TlTScxQGz<&hwJ6kG)(BGeo74Ly(996?+c*tHvq#BwnUm?I8N2H-_z;1Hk z@t7-G=xgW5QF&HKbT7!5fgh5`Zs*FE%nwSsv)m)qJ6a3W9PEsFYiFXwX2!wwlPF+U z+=V3Y7oJ3~6SH}mI81VPS5S;3q^iwii(fKyVQ#xZwj8m%!`gb)6jjD}kp`|-n-+hz zurkfnMDNNk^H$Uwecka;YbMK+xP_!znL00+Sxz8`2<|AN-{C{-N z8&m!_>L1kk|8q#i{%YUv$S8QsG04D&!{J8zkJs!!931rO{Qo)R`WiP6M<-FpP{~U7s6I#2`eet3J zFI2VcXjMg^M{jxJ#J;L~9Azb9DX5^4SDFeHjjYD1>!+&DXs_z6Edu<5$B6>#cMj1D@M8y+{BhQx9W_OUeP)YpF;07)JN4k*J7jYx$1d!bE>}v?ENIu zd_RE+Br=}HJPH{3&d*lcqH3nq##XO3H0n?zs&f`v#ayOwh>c5QSJklhSsQ-bpXCJ9 z*Tn?1tJ(`Lr@F>x7ixU%Qi-qC1{tT^4C~Lq{vm^zfMsRK3Z1)fF(pfK&Np;cK8#T~J7cD6GBd(Qzhqj)CR?#8X-eyx&YNZ#(G6FIUTX|urN5@j; zSI@{+tmrv6zysVTZiUoc3TCX0?G6cY;9LCgtY1tSZRB@7b?H|b`M zcq>T78e;{owCArgE1mk4QIl<(jn&3gn0j1@tgSfB#34J?k?m7Rw| z%TzBcn4Bmz^siRC&_eqSHPD?iM}o>8)83xus8mBo+tOtmeT4w$Ykknn>8fMr&RC|9 zz-bm@?%)!w+R>I}f>w6bz=YY1V3nHjkWE1sBD%5`E?!Cz9YKE-UF!5;j^XfS;{U~upx5~)U)F)6mRf45rIuQ1sil@$ oYN@4`T574KmRf45rIuQ1sil@$YN@4`TK)^$zy05s3+_y7O^ literal 2376 zcmV-O3AgqiiwFSIxlvF61MON{ZyUD~_OpHkt7CLmfuoBh*@11jO`8M_kT$_dP~ad4 z1ZtO(2(OmgCD)D{_`jbSl6%!9w(GbL;XDM^?##!T;qc>-8@@_XCS|tj?R_)pgB*{? zdxzuE@!{cUuRlIIJQ@x3b1Qp;!~WrDI2;`hj`sS4AsFnD@waoSluRm`60*0V!Gfok zJl>+0EXGHJXV0EJhEIXL z!NPu>7Xm(d!DNu~L~#+HkatnG;4x8x06UNXxPS(V@OUoL6-5<%rIw7)naC7y$bu2S zH%~c>Lmto$0{+QTslf)_L;U?bQ%jMakPl+UsU$Bry8w-)n9s@CQmN#m*9*&M-KAKu zEasoPF;hA61??rNnDdDBltwv6;5R&Av4nVrPlJeNl96BDzaWu$3JSeeD`kIWJY`c6 z2h8_)97I{jdb3#|LWZlr>zuY)^DGW@Y$a3j7>Xu}{Ej8dlr6Xf?wl@#xbQt4z5d%f zAReSj#Jw%+3>8XT2=NNX+<=L>oI{%94m;?fmQ=cs^Af z?*Oz;wN|84v0!KW{2f-;{TAtOo->@$QqqKJ;$tn^potwd5}7m?jlVSl{TiySQjf4!A{P5537u*|uD#7uRMRpGW0eq`8d_Fi&7$k+ z>DSM2u4uJ#ZU~EDpV$a#Oe(q?z0+Z>du8h-IX?qM5id;HyyuFMx26El7yIsncwI9p zJe;Ml4r*2}b*i6-A?9+;(0G6kldng1f43Uw8*^dG?6%2xXR3EoTqX%Px-IcrI-o0c z$M}#ft+EAfEoW6r@c08XI^`asiH*dJg%Z1<86&3bvy_EDm(%& zrqsEvuCpHeMJ{Q|=?vCCz+8(gwLnCdFL@8q5l?E8=Q^(T0Lf;&!?^GeEF2P}AQCvL9QgfCdJ2AoqMLe|0TnZ zMH3?@$r^?w!fmmc*G;6##@@uM?fL7TRbMwy<*v=fJAhTild1MFr|4VQ<3@ttHwlkAgv$IUH+pe10nswzxj)7+;pCH*XrFguMBuhfrHbY#V zfwfEDT|sND<|39!KQ1r zjw?>(l}$G6e%n2%G;hB5o47*0&rjmj@yR8pM8?QCx+5U}6B!9;O!P_kmtUdBBe09C zrO;G=#Z9{$aJWD6)^D40WpC(v5DUlJg|G~HswM1tG-XhX5-RK(j$ktuGpd%_@eS7r zw|3er^@`JW?UVI>X}j~5iEouy(`6C=iboOd^<_v!2OM@9PFDG$;%bdHaO_v+9u||f z%iZST4i*V+2ar7Nu6ccn40by168HO+@+58=#&0pk?)%^VaB$T8{xdu}?z{Wn$B^Rc zBEQ^4{&ZwPjddM=D#*dqeYul7i(9X$cq_ppAW zYwY+U9A6W^LA1Z@`sR=YnYWrcCi~vxOya&w0S|oFM^4jTCNySIw?$g7^<(W1h6cJ4 zn$n~=aH89^IPjWJ0lGQD+g3)ygCan1LXX>;izpIT;7{coYklf2RprQw*?XezB+bK* zm0j>taj2{u@D}d)~RTqiY?GjQC=ypz6w2=dPgC zwC{Lh&OTEpVW#iJ1F`zbZ0D!*5(@Yti|ofJT>SaM$|Ki_zN>$Ewa)NTg$7HeZ)|Ew z+~K4>{a52Hd*Le6n3mW?a90;=Q(_lRgYkBIS-T0)kh*`=F0D^Gy>o@5Lo=b2Smg^4 zc?a0=-`?_^RHW?xirat(ALA?iU;h~Y{}=Rs_FBbESulY*mPU>aNKO3_Zzf& zH`_p{e!Vm|XzlYe?SlP=Y9H#&anjabz9m3v)Cr+F=apJ^@6DLlbIC0{{i4!MIoH%jf#EFydRQ?YM$47hsPyhfT!mg44 diff --git a/impressum/impressum.php b/impressum/impressum.php index 305dd9a9..3c1106c9 100755 --- a/impressum/impressum.php +++ b/impressum/impressum.php @@ -79,14 +79,7 @@ function impressum_plugin_admin_post (&$a) { } function impressum_plugin_admin (&$a, &$o) { $t = get_markup_template( "admin.tpl", "addon/impressum/" ); - - $includes = array( - '$field_input' => 'field_input.tpl', - '$field_textarea' => 'field_textarea.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros($t, $includes + array( + $o = replace_macros($t, array( '$submit' => t('Submit'), '$owner' => array('owner', t('Site Owner'), get_config('impressum','owner'), t('The page operators name.')), '$ownerprofile' => array('ownerprofile', t('Site Owners Profile'), get_config('impressum','ownerprofile'), t('Profile address of the operator.')), diff --git a/impressum/view/admin.tpl b/impressum/view/admin.tpl old mode 100755 new mode 100644 index e3651137..901df73f --- a/impressum/view/admin.tpl +++ b/impressum/view/admin.tpl @@ -1,7 +1,7 @@ -{{ inc $field_input with $field=$owner }}{{ endinc }} -{{ inc $field_input with $field=$ownerprofile }}{{ endinc }} -{{ inc $field_textarea with $field=$postal }}{{ endinc }} -{{ inc $field_textarea with $field=$notes }}{{ endinc }} -{{ inc $field_input with $field=$email }}{{ endinc }} -{{ inc $field_textarea with $field=$footer_text }}{{ endinc }} +{{ inc field_input.tpl with $field=$owner }}{{ endinc }} +{{ inc field_input.tpl with $field=$ownerprofile }}{{ endinc }} +{{ inc field_textarea.tpl with $field=$postal }}{{ endinc }} +{{ inc field_textarea.tpl with $field=$notes }}{{ endinc }} +{{ inc field_input.tpl with $field=$email }}{{ endinc }} +{{ inc field_textarea.tpl with $field=$footer_text }}{{ endinc }}
diff --git a/impressum/view/smarty3/admin.tpl b/impressum/view/smarty3/admin.tpl index a3b0ef27..80b67824 100644 --- a/impressum/view/smarty3/admin.tpl +++ b/impressum/view/smarty3/admin.tpl @@ -1,7 +1,7 @@ -{{include file="file:{{$field_input}}" field=$owner}} -{{include file="file:{{$field_input}}" field=$ownerprofile}} -{{include file="file:{{$field_textarea}}" field=$postal}} -{{include file="file:{{$field_textarea}}" field=$notes}} -{{include file="file:{{$field_input}}" field=$email}} -{{include file="file:{{$field_textarea}}" field=$footer_text}} +{{include file="field_input.tpl" field=$owner}} +{{include file="field_input.tpl" field=$ownerprofile}} +{{include file="field_textarea.tpl" field=$postal}} +{{include file="field_textarea.tpl" field=$notes}} +{{include file="field_input.tpl" field=$email}} +{{include file="field_textarea.tpl" field=$footer_text}}
diff --git a/libravatar.tgz b/libravatar.tgz index 0405af9bd532c8ec17112fcbbd3b92d65f07ead8..d61f63bafb394b797b18708f861695ff5cd5af27 100644 GIT binary patch literal 8089 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 literal 7970 zcmV+-AKl;|iwFSN!vRnL1MEC&ciTp;`5OI-iR&$;UYYVUZ5`W*YAdnM%8w(-$>!wb zsuVerxTZ*!Lt4>x{ogNu8InVaa@=j&z2`LCZETVl0E5>6n4vv)99ef(Y(=dnf7G=N z*Y^hp^5^sY!cTQQ+1Z7E_x5)VcK4oa!_D*EC+y%4<4C&_0dr^U$*pH4;z2kb{TclH z$(NVw-*V=zZ^ohbrD>popYQLl)&K7HzS95R-p)SQ$m_;}Od6D#rJku;S1dl*S~fV^3=TZ5jNPFU|k^o%Y#9$DBJ~n#O1R ze}Cuu-Ln7h?LYtO|9{5y4eMnVz^=Vy>iV_ul709)ii5r5uEYJYWzRm=XK@@Jwpx?O zMc=nA(-Hr27N*bRRu}~n*W)dcVWUu2lIx>x-rBp&tqebm>lL# zSUlqqXEW=LGe3yo4flas0u(HN$pU;`U5N^4-0z;5wVEa{ zoF?Gsn{SA5eE^klnt=y0!MSp z^|nB+5f_3BlMQEF@DlroXbMw6QG*CT*!pB#A0#`M%q6}ZyMZs7OzDq>h@r`NY?};p zC#56YSkVIJ_$ODOQkV@WBFh7W;6I*cAtut*s$w3}S(A-noj~hAzAaA#Y!(O*RE!M3 z^N0ltpG3w{gcHzWI^l&Slqxlikp43>i!<>vi&O=yf;HcoH8~y72jGiO|$;Yb7d%y|UO za@$HI6ln#8&rtdZoN@1>N@4P#fLx(4nH&?i+;`bO6 ztSzy1(Ftm6%!E|pOE=P`iGsEx4jKd%gZM(h6DI(b`c5zhXYx5|S0NNI2MjJK^Ay?4 z5;G}q!XMfo{XIY*KbcsKyKP8o$Umv0QIU&ozHz$G9s*nt;B5C$d? z#?ol84*NSP6U0s6Wn2@GY63GSi$&c}BUFW0i?9!~3J~27TVpUBE3z$zZ;5#60eI+s z;vO+CiB%z~4LDE3-OB3mVdo=Q6PQigL!p7RVO=QN6oz^7By$$q^u`Ql5JWLP;v~S^ z*hU`3Hqe+6+=IZ#f(e5~%e|B4f_{k#XX@ItwoW9<4~9U^&y9~C3<5JgvSYSknr4$} zxL@Rf0Lg;)GFxXBQtHUfq78CE$kvd|5hK}RPA}=ZsktF#kkuheBe#3&>Y+P`rY$RU zTWkZR-M;QJC$JM-Rj!T>C!>@A!+4!3E|G&7j{9n^ASo{~H@tOSp`~B^` zQvYZF``xek|DSRly#!s?THk$FgC+J7l7~axa|cNn22qUf&bY86H$>k(#1tad5~!7Y z)ylGY26rl#*HauVPeXW&Y{fMnY7q|69hMS70j`woxH5;4sS)LAkl55!LM2$9XEl)b zw@_6O-#g|G-nWx@7DR`vT;#B$#}+v!fTmST<<^x+u%HmECI~seEdix@wieh&Dr>Gc z*sryxFqir>b|-lpK~@|>N?C^~jNW$ogYMO3lNm4*bK8JlPL7QRje3f~v>w-u(;)F2 zc6l{Sb8%gPBC%ni6qCgBmgdnoI)NgjLP|!1nVqX%;|1VtwLqVN>j2!;rPKjZGn^RB z=;_ml!;0=>HYYg1-`Ad|fFp#c8)}X+KSrKOWv#W520=90sByqc?Wq?`r#z}}q!eIP z^|b0Mt(4Rl;&1~7-e;QW^LcQ`AFr6iFQ_K*|MkN>U!=0 z5=lYb`Bch6xpW$L>#D6 zb*SEDu`VxL(v*xl=#`Z-ffp5Q7+Jn$ykI~oB_ZQz+R3n(DnwMKk1mHkM@~EnptNMh zK(-V_t5>u>n8T)KQpXgQQ{Yh!TyGR1w@zT%1NUFNzBz_m6@D>3R)MJMt6rWjf~Fo7 zc|f-?5X65Id4!r0cft)L;2xkU71c(+kZ)8ZqqlLCaNQ5iToHOusL~Ebsxgt5)zT8y z8MBNFBRRPKtu*RD8g&fRFzSz#$;6;AQHNCtiibI`k4E%z)G#;l?UM~To8RLP((W>Y zpw79R&%}*HT&x1neX4El^Cnj=bstkz5_|2mS;7L!2}D+c$V~(`4nA?QA_f6GP-v+G zd&Ycju;UX3ix`!qNLO{D$OVi>6QOdJ74SN475qG{cvE=wfQm*1vrxiU5V+_j2$Gk_ z8gPU)X+|7xR9(ubF3mwx-3?~J0s>RyV|ajwfD5f!-!Wr~gMbB|^B=GLn*nO_Xm)U7 zFcVmMCn@0~ZXC7X@lkk!u8)A`F%uyy;qe4>h48;G5_JztlGdonGg32$AD;|LTJMOn^VLcjujchy9G6{WD7V zZ^EDj^ka&XRZSdy}?k-#~Ub%k>GX` zx$$xo2ewDFzRz>Xn+#hjaxbm|p`bWZ$N~qr zxlvsD9<|nuLhQ8Tf=7mG&$xYCDQs=EB550I7Pxx-Q+;!EeKi+eC_}J8CTl>V|VWS zkctleDTJgaw#E$p6LAn8??aa5PU3~@#524JCUN%a5LX(t5MjC~WXCY81~gj=qG`JK zo%SH~RP;bS!}R5%JA{!o_XSr^PlIq7xziaeSayT$Ztv_=)v>g>?P4(?G7>zRyCO}! zv1Kq`Vu}c*oYRzh_rZkOGb@_%Cgw$WE+7O1xB)(nEmvlifH|ZdNidN$B}!poMQT$> zh`@HKZYXYqU@;?D9VM|bP$M=PM91NlhX`Gnbf<4=2MyEMhzl%k5KR-$XnBc4DVloi zxiC>lgmQM24X*oYC$>opH`zRJ+zI~VG`}zzd#;!@F^2@~V<>tcjmC#0>?Y2p72ulb z5p#gVg$dB4a~=r{356)!ScwY@8@8CKHcU1jm$;fhZV!azZnOh=dq8ymiHVWgL7N14 zRz!7F9G9xfL(M24yT9W!EolglRp2oSVud=(xu(@CF|%Y3MT!qkgkT$h_T|%=VUHAS z8SKG@A_Z-is@c+vQ)?QYci7*;bvy95dwJTsIqP1&VL!o8?B({l z-~)hncttc7wr*#D_%1sA({s3O|J3buhwqz+>veZ{iI`ts^;w%;xBJ8H=}oWQXV*7< z$hbPd#2H||>|Va^1EJ1E=W=KQVR*(mZ{daw&fC2nQll364NRktjIz_K>-YWcoAV(% zzv`Vq{l|Xl0DtYDdL2m(W_Q|acQ2aktbNgb)1gsUfQTlEkdjR-u<$8TZNvXhhfqo4 zd`_<}hkdwh!gTw?Z1lVCpwndSes_S9!BUN8iqeHaSA++KUUnoRlzdS^0D|{7gHDE% zopsthKnL2oEGsnYjN0JI(;!;1EXJtrsC|n$JF5yk1Yyy}0&cusaPTu>v9rhmyJSam zdH)K2I+3;DV?6$HBB^B-{m8J!UMY74I@-}1Jbomg!iMmQ`?Cs0v|!|xx-n<*++(Hi zis<}XxnHc%gwBC= zrQQuW?x>ZLlOYZ!v!KnKFbESo=O8iDkqYXp#W+J9EIeU9!XZ+*D+1dYbY_D?CMtcjvWN1NCyAKJ89wR5Rk~aNZ@q6S})o|Y5 zu726}z#~Bt^SS|HefQwGQ4Mzv^1xCv;nnZcmNmY^%TNMLLNBl!6HhwKx#Lg1}6fn^OqFfxts-q`Gv4l&!Lf%OiE@SVrOyj8`SN1%?$CJp7tK@J37) zh&<#r;sB{H%ZE$b*WG5m@dGbYRB{hUoj=AE79HPp2xmrK)dt!ck4* zKC$#6q~Y9^hqV17{S?XiOP=;rJVJafk)@_CW1A_PaN#*SdJ1IgXmbq;J)+6#lAlKI z@t>!kjY0itD3n*2pT~fmV7a9he+LyDgm_1+2vMEKPy%aflG9YKj=t)x=Q17{7B7g( z1JQC9qoo?+@G#;sOSplTYQbyJmIb$*qPU^>}36;H@aXNYK zN&saNSP4mcdC=<~a+>vy*J`ORFEn$SfyL9;G?HqQdWSAGb1deAj7)vFEN-l2Q=Zx} z@WTiX?hywax|jQpQtp{m!$n)<8oLdRExdFKKPI{_viJ84)^Gmc02NDo+>!Obq`KKl zT}BNJXHB104@w5AiIfQQbJw{{6$#p2yOK}aB<51EqG9A3`5=|2=)!8_lnP0u;vswVFdrFM6)zQNS90KLRMl*zTd5hgEYp05MFmvF;0nT0 z?puXKXDvfS$zz5^W_Azpq|R2YFjT~&CzmT@3nI!n$;}t5l^j>`c_|cRqHnw?82TG7 zKQD3uSTB4$c(IV*tYH=&&0Svx)j|I)#L8qck!O{-!_^U`T+k9ht~k1XgEA@jTPgNP zW6okuzSIJ)R3J?@w{9VtB-ljf@+MnpB_=zFBJ4OLpR%u^X-<8Xr)e*`BgQ0;P32O$ zyJ8X_*a4OPlEs%yIT-G0<8OvGmrYtFwLn|64XN~J$1;wsn1mdhsvSud&Fj91EH&xR z;>#==QLZ@BeTn;lTneG)G>Y7-V=oeGgPpMLYKl36mj*LQv!ik1dd}#Vgh$H^!@8K8 zCSU3}Yku%EbUA&2#Pd^JIq#}JlPSz(#$l_43}lLjM`_QDo);aZFcY&dm!h@yW$uu& zr`Odi&td6cqc%A`N5z#w6w*DJL17Yj$0K)w>7|8VNP0{8fh~75P%2*Ccui&~QDy5> zJI&4XV|-~Mza}lh)8XZGP+ zHGqnJY%KtZl~n_1tb-MD{2(Kn8x~lbw|t4CHtBp=S$LEwDk&Fd`vC{8N*gb-UTRaX z%eU(*V`v`Tl69*p2ZBBZ2cWkytWi|meU+Nh=%6OOE<#+U>8dDKul3GWxuBHat*`j< z+B&hbby11o;TkDp$UjV(G*o$fW~7|Nl$5`10f zAnO{KtX(dw>8~Qt-vcNNzPjwar)&<2G5n+y&zg2*i(u{?&>lH$xuj??%BqdKb=?k= zy;I*WxKogoA}d*Ze9uC!ydRn~EVOHok;LRxMnxYLt?G-K3GT0WXVDM z62IS#*}wl?tlQV5w6azpBWb1uiuxP@Po8JGHnW`()Hhf-2)>MHTGoSE6%0tvG}|V7 zM8m)jQtm`h4&7MX06Sy)3m|&PEm2FiKdT5nxKvnvVWqg~chQ6X(eJKV8|LmO+?~+I z=T`N7%$V2i<$ZyUrIzCh^M7@#k6r(Cc-Zb+Kv^HsbXay z$7umuTWd-?GO|~u{s_bBB2^LTS5i`xO~KH?xu>JK72BY=SO5Dda-r&Y<(8DUW|^X~ z>Lhz5pWlr$K+%{+OPIH;xh6EBxnw@Sjcm=b6!1$C8F+U453tV#UF; zq6jcU{2)HQe2g55y}ER#zEqs8OSr*+piV4?7o!Cfe`rtup$}LeqKIEEw2XD=pFK8& zfjrhp(=e)&b@0C!b9DGA_^7l~Qs_S*Ak-aDHO*zUqNg^cw-p2NZ|%S^Ry|O@EjDA6 z4%9-98}ZnS5$eGfoQ_c3rlNSuWLD~iGV73Z0sa-RZ@;ZD zhhyb6hW=V&V9$=(58JDFU_xJlqF6(6e}8Wk(~24-I0~--yH1j!70*^BS)2tmmy}{& z>crFwsj6a))@ngMbjR@%Cs<6ZDgE6nOa9@e|7-8+e%rQz_`f0u2ApiRn{^#Fqzj6o zO@RSJJ2+YUkcYsw6i28nyOxwJ5B=YFAN&?6xo)zT@m}J{Bt;&N$0P6V=e#m(Ut9x$ z4H)dXxp{S}uB*aE+W9~Aj`0%Owa&=`R)?~uG^P72PSKF)p+Bws`nM3vQ&|_=$ZVJXmKxI%YO%Q7 z#V!k>H)EGCHakpcAclJuLi~E!5}rNaY@!9U z8@IjnIat;8?tv6_Q!&_|n06~T2NC?xBLsr0I$|~?qj9uE-_Fd7H?0w28lhWRSrLE) zzw5{t-6T;n{Pz9DH7r2K_xZNS*rQcrViHA3yn^HOD{Bgc>kVFpN1L|ejRG*>9KFix zA#=c9&)%yI&De>FVT0v^9KJwbjIfEM_L(G~@?_mqwcH;GZlE%D!lr_1)O~p@B?l}V z*90WOU!tkuvB{l5z1fl%baw|QT4Nik8jLeIu^D*@qsG{jj8J3X)AZe&=fD2;d{_z9 zXvOo62n#j&*=!-jzLoG46(g$3>6B8tz)rC7Wnqp<1wZ8VF?j|MX%?T2%;s|PFt8_& z!|KtiNm`9Nl$?~oIQ|;wABE~9r zQ=MJNnSKq=Kej4z2lE`{y@CN>Vb?g4U=QYE-$;!JeA8Ldlm+4iNPwcU zS5@}1;k2bHg`n%I#qF(AL|YdL~Cc%?9s`H80e@)Vv@Mp#Ww(#?r8>0 z?vR_109P=(kbrYS43mt4RtjJ`)LD|xMWCXf$K*>hTgg;Kd%&`_)FX$$Wp-V%!#iy_{#!R{sYBKk}HZVF5yeg@-6+k!ctiy%}xOGmSw)sH)uaFN8MTb z<0eoG#hTJCMy;1pCY^$=ofu6q#xw41fvWg*mbdD*3}`qg+iZ72Q``9*n$t2MOD1;M zYlscl>x=X0$MfmckoqZ4eeP3zl6%=cli^!J6Zeq=ZwQ-yR@I(6l-od3P|qEWF8$prp&bWz&x7)bWJwjG7^#GK_l= zh&43|V>BCi6=`;z=Q1(S(V>R~c?>^ba25InX{Vuv)eI{hIoFe&2YzR4`$?D#;?ucX z>=AQ8SB3MQ5rmA@OV~mfC570DY$GZ!{c5w^FbusFbRCjYyaswFW8XzzK1>OFQD|nB zz<=6toF6CYi<1{A{6&!hBLe^B%wYly!x5x1gM=dPODncM(B^ubb{Ejt);$eL^thgK z0zs~)6rshX-HZ0Ep5sH8t&Fw9srkmmsv?|We!bVJ6gk;_kE){?kxWk(hh3`mP380f z1*}{$lJM0=%M0A6haeWiQ|H-w-Fl>vqgsU(4xsyuME`T2Gtl3uHN-hsa-a3!#DcWT z44C_8iFuz3gYr8AZQG3#9H@Z<1JqP3ngcKf?{Xa)U%Q6p(ODf)sy=O{fCDLzSq7uf z?~(+Ri^!xD@$MMko*WU*3^jbq=U|nKd2F@Wo$T}e?>}{Zm*fmJ9oj=>U$7U4Ekqvo z?{Fsm)>X)n{aD?*200s`XA!#5;CdB`WCA*X4%#^h1J&&VcFrM9nhsuB;R!_?n@)zE zTcX>auk9Szi~JBvE4kbxpYwdHgLufGuZwxH0&{*udzasydJ5Z2TfR?Yh&hI|l|J5K zfjQ|tU8y!W$6PK{T}8(a(J*1*b2|8fS#xbreQWvHkBJHBe9NRc8%iWDhQq)3q>MT!(DQlv|Jks?Kk Y6e&`qNRc8%iu4rpFSfFU?f{?w01Q=L!vFvP diff --git a/libravatar/libravatar.php b/libravatar/libravatar.php index c966052f..8cbf1e98 100644 --- a/libravatar/libravatar.php +++ b/libravatar/libravatar.php @@ -95,13 +95,7 @@ function libravatar_plugin_admin (&$a, &$o) { // output Libravatar settings $o .= ''; - - $includes = array( - '$field_input' => 'field_input.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o .= replace_macros( $t, $includes + array( + $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. See README'), $default_avatars), )); diff --git a/libravatar/view/admin.tpl b/libravatar/view/admin.tpl index 01b113c4..814f4a44 100644 --- a/libravatar/view/admin.tpl +++ b/libravatar/view/admin.tpl @@ -1,2 +1,2 @@ -{{ inc $field_select with $field=$default_avatar}}{{ endinc }} +{{ inc field_select.tpl with $field=$default_avatar}}{{ endinc }}
diff --git a/libravatar/view/smarty3/admin.tpl b/libravatar/view/smarty3/admin.tpl index 4e930a74..ee958287 100644 --- a/libravatar/view/smarty3/admin.tpl +++ b/libravatar/view/smarty3/admin.tpl @@ -1,2 +1,2 @@ -{{include file="file:{{$field_select}}" field=$default_avatar}} +{{include file="field_select.tpl" field=$default_avatar}}
diff --git a/mathjax.tgz b/mathjax.tgz index 37bfbf616cfff3024c206cfe7fbe8caec319ee62..a340aee4799954fc0fb5c9e128f91dd868b14700 100644 GIT binary patch literal 2301 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 diff --git a/mathjax/mathjax.php b/mathjax/mathjax.php index 33cdd439..e57d69bf 100644 --- a/mathjax/mathjax.php +++ b/mathjax/mathjax.php @@ -71,12 +71,7 @@ function mathjax_plugin_admin (&$a, &$o) { set_config('mathjax','baseurl','http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'); } - $includes = array( - '$field_input' => 'field_input.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros( $t, $includes + array( + $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.')), )); } diff --git a/mathjax/view/admin.tpl b/mathjax/view/admin.tpl index ed60d734..1c723cdd 100644 --- a/mathjax/view/admin.tpl +++ b/mathjax/view/admin.tpl @@ -1,2 +1,2 @@ -{{ inc $field_input with $field=$baseurl }}{{endinc }} +{{ inc field_input.tpl with $field=$baseurl }}{{endinc }}
diff --git a/mathjax/view/smarty3/admin.tpl b/mathjax/view/smarty3/admin.tpl index 8d0388ca..f6ec03e0 100644 --- a/mathjax/view/smarty3/admin.tpl +++ b/mathjax/view/smarty3/admin.tpl @@ -1,2 +1,2 @@ -{{include file="file:{{$field_input}}" field=$baseurl}} +{{include file="field_input.tpl" field=$baseurl}}
diff --git a/openstreetmap.tgz b/openstreetmap.tgz index c195d151cbcb66c49f95f39d2a8c0a13967fe5c5..967b56017b7e109cf26897381ebb1083ecf3b628 100644 GIT binary patch literal 2124 zcmV-S2($MeiwFR83))Zs1MOLDZ`;Tb_E+;)ObH>P43!cs$vP;u0;36vqUR=vofd5n z2y1aA@l0`f%cT^Z&;PwMyOd1ImhBWiUxV8R0UUB?=Y3{pDUtFdQ<8HvXK8EiH$fZG z@Ac?!(C@X&f7jRx4%)`|t;kKa3FY9<$(F zXTcdu;X|BHqeQPbmn%4nt~i{r@idZ)C~*Mb?=j0W_!o~to?N0|9Oq&dWx&EvB*5ZW zEHhY%9F%}O<6GP(LP8j2Y0OqpGKE--nTkY``Hn-XeB?jpk>qopsEkxV-iC`J5vfs) zm?xZvz(7SYhjT6$Tp|fmkV>&Y#WH;2fJu#vs|tinF+g4ue4(}BxOXKIUg+z?#f(SN zaLzPmv`unIgz}vaF=wO=L#Hs*UR(hRReFbeL0dj$Y|7z-h@M=i^KUe8%o32fHdcaICS`>H)gI4;Kut*Ti4^lfhd9aCiKe;KQ8f|# z+eAl!RiFMV*F(=o0xWfU(GN;^vY8KS6W0MStjcCN#w?Mni)wA* z+k)snWc#J~iY^Oa8KDx{3>`)!%b7sMmqNy&mLB{-#YZc%XgcGWa!QV43sj9=#vEOu zvuSrcb!Jg^YF_?K8TI{imYU=tVH7d9lIiZ+pX)+lMLL9z?qAf0u*E@*{ds6Oey(RL zOv8Eo%jdc#segf!Ev`-Qecv_NGGhzfN=UX^imkj}Fd317nJx#D)W~yiS87E730L#X z#9u2=Ul;Roc~33ZUq8-|{BBqUKOnu%!Gn#Ega4!agS!c+`5(~Yf&c9}2lpr4?|mA- zJgW0wHIJ~8o<+tZ^M9`s^ta~!BYbP;zn8%A8;r8kIyi9P0RF+|d{8~{>GfNljb)Tl z`x@v)9NPNQ)tfipht_GgIH#G_I)S zRMV7H{3nh#TD`yz==n5PGa(0Cvnw1IJ#)T(0*v+^!jssBlSxIe*G1yi(?^Vh%1eTvyahIxlCT;z_;HzaP~0?{>se&yz}@jX71b3 zLysLkZEiXHwar0_2kexqk)iRnj^SqMR7bmw6}NjywF;;8sek9h#{+!7rVq7;#py%; zRuVmGA;s39Pw}a3$`d7O&e~bUQ+3_D&)ILFevEfBCQ+3W*Nk0}ius9K2OsWiz;|^Q zW;n?sfq!eTUw`xS3GK)!aAOhj`-IWv;ZDBCEryE&)Lf??n!Oc&N}j^N4DI1x)0hO+ z0ke3E6g@!<#v)IYS8Qp(5CX%b?7Z;o!ij%Zt}nIYvAHPz zRk=e?i#85Ik&WXP5e_N4_VGH$tNe)F4n|czB{rydVcJa1V?Eh!7`}GaCH_!vF&DOx zxte*eOotKL_?jvTYtH0Vo{mrso_LCT;A(PTrLo(jhr9jJ1`j0VS``V)K z7e08wK;K20co7*CH;{&r)X<0B6Vh>{$0o{2la5&Oy7_+fYNHSD&oA)AE#(b$;6x}k z%{(Qec|lXTLLyDk6gQ!+a5Lr+BfJGJSX^af?v92>(AQkD-8lx8P?PSDZYcb1(vgxg znFvqkRq-_i@-(DtyI*hk@b3MO+L6EaIQ`wB+Nc&0Uq1hjK;QEF&tdnFzW;Z69sB#w zOW>aPZ;rF)lJUszKX~Qej(;!c9ohT;OW^t%+xr-AE<6tL{+i~BB5%H~)%4qw(zJ1N zgYOer(8v1k_K(`O|Gxwti2t*l1CRCp!~Wr> z|95*``u^MNcWwWF30z-ePmc4D>yK9_?p7~%VfzfwZU1R|sP#Wbx4*tF`u)v~?f4cJ z78Vv378Vv378Vv378Vv378Vv378Vv378Vv378Vv378Vv378VwNX#5w2ABZOaPyhh9 C@h<5A literal 1975 zcmV;o2T1rIiwFQi+_F#r1MOISZ`-^P&%e>9xEV$z2cB#vu@kt7i(oB=Va-}J>4vQ+ z4BDbCK9NN|BxTp@lkdJeQg$RKZZe=xx?&~@G#2mWcW>k!WyVu&6z68fvew@3vf8*# zPP%)C-Q$zP!{fbnw|Ce(?%40e+Up#)k9vnl*6HoFJ4d~4cMrP151i`CwP6ZiZ^p(` zq2?mpLYGauz0T?B>2qLu#w9E9|M2GG_2rxIt%CyG>m6^4|IsnVyc+-GE^b5ndjolB z{h!AlhPdDzX2F%sf=iac`y`)=)b4nrC0vRd4wozUcmVL%gykCk!9~Q=5gW&zcO452 zEQ(|bEJ@@-!&2s8B;=ZJNS{arkIABtv;3|NK83rh8f*&jzj=W2m@&a!N z*D)8$N!C^}+NL<9(uCgogfl|J&?yYj%NszY#&XoIiRGhaQx5NCBF4*F-;0gO`mNSN z+=#GJZJ|_C`?*DI!<^WLnPv0-i3W~Y3M#k8Dv*n`3xnFGKLWi!tspO995GJNtFmfyt2q^L`-LQa-Vj`j1(+SgY2rCm;0dS(qW_ivmnXZazW#Q|B z=wD>}NPa<=bzmV7gpSc+M6!q_0$)g#L{@v}l!}jbVlj=mHeShbY>v>_DB;Il(ef^3@`4|sOo1 zNYB%VSZ;5@X z2k?iTCe{3Vy)=U~isshKGi0 zjFA>YB8tg}$hEuQv1z!WmZO@c1o7`U-dK2@utUEuauZ9{-yQk5nKLR<*1}G_YsePvmsURZuH*<4jy_cai9JD_|Vu%8>K)nL*>6FXvkzZ^OKj z6x3N0Uexhgm|5^*68r%Iq)RyN(dSS8TI=Tq{Pr7EH^)+{2zMF{Zy%#&a+SWsfp5Qc z;O%1){F%D}cx(G!%-naQhaEdYVs3f+rCakHrrZo2O|a31H%nbT+U=~k<0WVnNvp2^ zUdN9O{Jy(vzpc(T{dbz^r&Ut0c1|ch^>uloMl0DmtN2yj4<2&%EAY=4U>PHn^O_sG zgh}w~_929O4EW8jL5!0;5`=dKhyJTy&xs?az>Q_ZA5uolgROGUS`0V)h}@34rqvS$FHvKeTaGE0(I^>?7Z;oZGPWuJa%yn@5ToGM&*Z zS9EtXJX{R_f(>3^RXYcv%EnoX2nUp1`#jOSDv!i%5mc2^5`(}C(_%AA>}0zZ_|jXI z__xj$_h2)0Pcy*_cfv?(eBGcpD)3=ZU4~vL1HAbZb*aH{Xg7zAuy!{_(NXr3p9B*B zR2(n&F(2Z!sU+H5H%(wlv1Nete$kBka6SMN_*d>%qiOf~9o+tyfA|?QaX>b?HIEVx&Ku z0h`Yi_FW-_pwqW+5KZWu_KTN?hSSurm)sN5aA?~l%0-ukSnBrB{SwrN@84Zr<4s%2 z8#;MYY1mW;Mu}NLQ+YZM`VYw2 JveE!3002nt@R9%k diff --git a/openstreetmap/openstreetmap.php b/openstreetmap/openstreetmap.php index bf663253..cb9abcd7 100755 --- a/openstreetmap/openstreetmap.php +++ b/openstreetmap/openstreetmap.php @@ -58,7 +58,6 @@ function openstreetmap_location($a, &$item) { function openstreetmap_plugin_admin (&$a, &$o) { -# $t = file_get_contents( dirname(__file__)."/admin.tpl"); $t = get_markup_template( "admin.tpl", "addon/openstreetmap/" ); $tmsserver = get_config('openstreetmap','tmsserver'); if(! $tmsserver) @@ -67,12 +66,7 @@ function openstreetmap_plugin_admin (&$a, &$o) { if(! $zoom) $zoom = 17; - $includes = array( - '$field_input' => 'field_input.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros( $t, $includes + array( + $o = replace_macros( $t, array( '$submit' => t('Submit'), '$tmsserver' => array('tmsserver', t('Tile Server URL'), $tmsserver, t('A list of public tile servers')), '$zoom' => array('zoom', t('Default zoom'), $zoom, t('The default zoom level. (1:world, 18:highest)')), diff --git a/openstreetmap/view/admin.tpl b/openstreetmap/view/admin.tpl index f733a917..75db9cd7 100644 --- a/openstreetmap/view/admin.tpl +++ b/openstreetmap/view/admin.tpl @@ -1,3 +1,3 @@ -{{ inc $field_input with $field=$tmsserver }}{{ endinc }} -{{ inc $field_input with $field=$zoom }}{{ endinc }} +{{ inc field_input.tpl with $field=$tmsserver }}{{ endinc }} +{{ inc field_input.tpl with $field=$zoom }}{{ endinc }}
diff --git a/openstreetmap/view/smarty3/admin.tpl b/openstreetmap/view/smarty3/admin.tpl index 90baf1be..6ee07174 100644 --- a/openstreetmap/view/smarty3/admin.tpl +++ b/openstreetmap/view/smarty3/admin.tpl @@ -1,3 +1,3 @@ -{{include file="file:{{$field_input}}" field=$tmsserver}} -{{include file="file:{{$field_input}}" field=$zoom}} +{{include file="field_input.tpl" field=$tmsserver}} +{{include file="field_input.tpl" field=$zoom}}
diff --git a/page.tgz b/page.tgz index 02140ce92def21beac5e562e0db67eefd522ff8a..c9610e28bb66cd2f9578de2e642b5cfc1b7d3bc7 100644 GIT binary patch delta 2457 zcmV;K31;@W6QC1+ABzY8bPL*000Zq>ZFAc;682Z=S8Q2dD5bI_JFzooOKLMsdijtv zog~xyka%Q>gd~hfLPvsr={5iTb^(wgDLHoT;%hs>He-pvVu5{ob_sRG7JRUCzcfU8 za(GCe`%eys)z5-<_78@KhX+Sbj)n(2!~NmoM~`;k@Se|qr76!8O96I%W5M!Me7DX2 zMQKI;r$7DGa&=F8eA@r}N00ZL{y!KV9qz#Jp3YOFuiXEm@6qq=!NZ4bcnCkUm>y(hHHmD8}a>;^Mg<$aq5RGnR1_m;mKM2CFDv zAouLLE-F|u9>K42fqzFNXeCf%o~&4^xafzRWZ}PmLAzZXUkjYliCGkNy72FIE9DE+ zf~V7^l;<5k;p$SR=hIk*$S0KF17BNuP)kl4*0MJEyC)km&H1MpS4t#{>^6~2_S+>+ zS2DZxq+8c)lby=Bi1?I+7c2>Qc&pqdKgw)>Y}!0eYF5va`>^|l)GuK9+hqQ4w%?Tg zC9L0n8Vn%ivAp1zMA0?uft+PB;)-wEk;L%i_MHko+yUL&@b7{v`t0oHBJAxVgj_B~ z81e+hpwgW8c2kywG8P%fkvU=ur#Qf)?$R<1Bx7J{%C0+FgI$@1JjJn2ry{Kj--GYN zF?fhdA(UGT!6R$hMSZ=h+)yt9Gc~&g8pj}iBq^2A1kn~)7JxC}ZXgrI0+pfge|5aK z&tE?O@g1Cr@T>=Cc^c6NEuqg?1gSiOpWeKF1!s2MS-aJ0{qx21H_wsJgzDKC{BWKo zK0N*T8JuYVJwx&P<{9lqPk#$(B`G(HWN?l!NZK`&rNOtCpbHlTmX&$KN(>q8G2!W@l47FSg6jCmrt zSeS~HXFP4Ua4kk4+nZSSZ^mm8U3mQl^d#}V_t7anS_%EuMd#SlS6$?fLU92i9D6jd zmx++iSn5F#u`C;VmmDv0Lov{U|rR$taH|{zpm7H&4@Ek_xmo~|WbK+y$hI0p zY=*5(hW*TW#Bmi%af`9XuMoVk6GP7==N|f$eAjBGPv0927&8ErzDMZ56P1~Ou>o0VF=yvopA^%7BZx$Bj`4-t zy}*S(+I5`|er4qcgkTRQWF6J6fIr0r#imyY_hmTKqjqia6}HOHW_!_v0S5fygR=28hwq!yT1V5Rimj34<5h< z0#+Fu82(wnu-U>j-g+vn9G%Q|u3Irc%Qp<~%eO6)&;=ss2#`sCu}g_W-#{VyPK}!7 zy#a8&D#jigklnynE24_8zHQafdjW@~jHt~Q2?Uslkja?OWOxmi3>^l(XNo|(R@ux5I06v(tRov_JMpA>N`_}(>^?Z{c`KoM#C+g2O4aDG6Oan9;sV;@DQGc_+pr+ z26(e2=Zfx6^&7T6i-b##*_%L&wZU)}$BXE7JQ0}ZbctDk&83Q?C1>>FXq$xO98w-( zH7R%T0H{qsxWNKC2(rv8s<%biTK%R%JZN73;3D5t=oo7|8+$B@s1u+;??d__@vM&j zAf-^FAWu_&EIFtvnw4&ZNgd-$xL~PZv#8Lej3I=C&*=(nQ&?GE>j|r3k2b*Vzv~Gr zGN!?j+gq8JZ&yh+Pv0gQjx|<#m;q64+u#DS%Gs{TGo5aO4J+MHZf-Jd3`WGx#`F*3~mW=umiWiN*hUR52W>tSn zjkGrWz=j2(z0FXaes?uNA^B4_D0v!2Xr}V#m|)Gc9>K&$krx=!z`)dgnB_{LZntK$ zVK1`}UkHq%MlCa2RjS!!csEF_g*{o`wj{-WTV=Ji@@-%ANB<7{M^UZv-qRlREC12s z$2b1}9|uqN>G%KPqsPO;{U=BI_y5BK_xu0 zNly16$+004l5k8CToUx9ZT|bt03bz5a_sEJX?GW6A6o>>nH)j`oLJ!_nw}(Qvc{2luR(rXp7?1K5gL zFc;Z{NN(Uu=cwG{$B(~;PG6Byia-772YG%^Yfyj>5BG13|L&s^#eeT`7t>^Pi1FXs z+r#(|?@6Bq{h!Cb-ERMd!oQPqr9?8%cOo|BQ4h>$#*$FR&9O9-GZAq!2*0&kvq&;^ z1QDO9<96$RQiN)81iQmwdWDZM%jP24nM$Q(jKc>s`mtO!W>-7(A#X0YveeolIRB4! z-2VtI>pxwj_q4{R@qdILSMeX~f6vwb*PxT{Fz)Ta!-s8n2tToyAHmO<4fOPs=Rqb? zC1i30ZxNBto^ zKPl8gW=HT+oO5_t1{Y3ZeEz-)c0Z8ugxIGn=O{1%jYg101)>&AubZNR1w+XDMb7c> z2?*ym65ekO29WVsUT`d;=o)rFPIDP? z#W$@;Vt8`MpmN%I0T z0>li|fL07n0;oXO74G-PsjVC43JN^8j z2Ojyc@j?&K8xc0f@sUQgzw0l2J>q|$6!=JZriv`-==DvmHdD1s zS5zssX2=KhtNdL1!m}~-kRdG4DdcfQ+nsSwBc01=Kob2bnmpR&w@AYyqw_OQjr;`1gHXw7NI zl~A~{k}|UI7JC!FuR7k3lzF*-*X{c!0~|XU;H2ejTE{M-4+A??o8IK4h$jAVd!;m* zrQbBkq?wWk`lnREI(4Z?W6Yfr1c>LZxkPpCpF{$3bsh1sM~dy}&pYZm#a=0q2|up< zVk|!q@f`aSF<+>$w>$JepNP!IJPXF24}Dn6B5yx40c;l!Nze4cFP7EWH zoO>8kid}29eEQzWfMIYWG4YPch4n~$`z;NLS*IDFF&r9yS3x4|KGp-v2n;Y4s#HN# z;yZ*6JW;tx7@Lr#6*G2!&b6jk9zi66bIdPX?m15U!OrWv_iHoXBLsUeA@8V;PrN|d z_+8M3_DKaw*-D2%MiEP~WxPQVn=hfr(}-PHc~a(dtMw5yaF9P}rEW9h^kT$Ujd{ig zMhpFyTueoui(k2%EmOG*6Rc~JhY6wq(Pva$RPkWt!P>hGptah6?+|zy?D~@eMN4nn zr#in-H@gKixzKrU@8a7Y2F zHyL+bv6`b-ygR=2R{9!;cmD-=SI?#{Ja_>{pi4x5&>0|;a+L~+zJXHoofth3>eh7cHcOtaSFXr zG23PR#wB?D5Pa8;r(W;m`zb1QZVnQwXcQN?=cfg^m&i3iguim`1{;0k_$ct%AcOxq&i~R1paIZW& zYWeTXRlxG~2VEPt%3JQS8|9hTcNMl;o*PA$FF%+~T_iKvAq1uSR4DxeMH=cmQ-sq# zJbU$Gl4JEI5aZrp zI7{^+I*um->zpnzYp}UcakSu!4vw}-NX{YS5$-0{Djoo}2?#g1fewN^_sZSdqHJUT zrj2;8di{fwe6vHxxVN*h$D)Wj0UGq)XYUiw+W2>WG72pUiY&t|2W>^S(v2{gV`2#x zEE8-Rm9|tlgplw#U7>9XYttJ&VO{Lu8o2#?Jz-78X|Uk-R%ZQ*$-YBaFdsZ~$z*So zKDjI1DbbBC<(}2hq}-Qo)1yT{HYsVdfah;tz9{pNU*QfzcS?xNu?LQ|lyPv0gQjwM!l zSOHOC+u#zis<&NJXS&=5YhJoxySd3d^)HHl>&`Lbm1ka8l|j)O=vD-%%eb@oR-muptJ$zu)rSWHW2iC9ysaCx+GKb)NNl7M yJ$c@?B;~2H-dg##FZ!duhjo*D2^f=$2?>*n2?-D!IdbIaF7z*-RUzyEPyhfmZ^df> diff --git a/piwik.tgz b/piwik.tgz index 080dd9e32c6bfd1513b54dcd98fa04ace138b5ed..a5bd437aa4c566a3518df99c19aad2141aadd904 100755 GIT binary patch literal 3453 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 literal 3349 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 fEws==3oW$JLJKXl&_W9>{E_e 'field_input.tpl', - '$field_checkbox' => 'field_select.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros( $t, $includes + array( + $o = replace_macros( $t, array( '$submit' => t('Submit'), '$baseurl' => array('baseurl', t('Piwik Base URL'), get_config('piwik','baseurl' ), t('Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)')), '$siteid' => array('siteid', t('Site ID'), get_config('piwik','siteid' ), ''), diff --git a/piwik/view/admin.tpl b/piwik/view/admin.tpl old mode 100755 new mode 100644 index 21a6ea87..e57758a9 --- a/piwik/view/admin.tpl +++ b/piwik/view/admin.tpl @@ -1,5 +1,5 @@ -{{ inc $field_input with $field=$baseurl }}{{ endinc }} -{{ inc $field_input with $field=$siteid }}{{ endinc }} -{{ inc $field_checkbox with $field=$optout }}{{ endinc }} -{{ inc $field_checkbox with $field=$async }}{{ endinc }} +{{ inc field_input.tpl with $field=$baseurl }}{{ endinc }} +{{ inc field_input.tpl with $field=$siteid }}{{ endinc }} +{{ inc field_checkbox.tpl with $field=$optout }}{{ endinc }} +{{ inc field_checkbox.tpl with $field=$async }}{{ endinc }}
diff --git a/piwik/view/smarty3/admin.tpl b/piwik/view/smarty3/admin.tpl index 3fd39737..bfe04aa3 100644 --- a/piwik/view/smarty3/admin.tpl +++ b/piwik/view/smarty3/admin.tpl @@ -1,5 +1,5 @@ -{{include file="file:{{$field_input}}" field=$baseurl}} -{{include file="file:{{$field_input}}" field=$siteid}} -{{include file="file:{{$field_checkbox}}" field=$optout}} -{{include file="file:{{$field_checkbox}}" field=$async}} +{{include file="field_input.tpl" field=$baseurl}} +{{include file="field_input.tpl" field=$siteid}} +{{include file="field_checkbox.tpl" field=$optout}} +{{include file="field_checkbox.tpl" field=$async}}
diff --git a/privacy_image_cache.tgz b/privacy_image_cache.tgz index 13239d9046359957aae6e93d4b4c9cfe275517a0..b0690fc2bcb02d3f208ae0a54901db629b7a4d0c 100644 GIT binary patch literal 4269 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 Pwab42SO7z@08jt`gm58O literal 3693 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 'field_radio.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros($t, $includes + array( + $o = replace_macros($t, array( '$submit' => t('Submit'), '$global' => array('remotepermschoice', t('Global'), 1, t('The posts of every user on this server show the post recipients'), get_config('remote_perms', 'global') == 1), '$individual' => array('remotepermschoice', t('Individual'), 2, t('Each user chooses whether his/her posts show the post recipients'), get_config('remote_perms', 'global') == 0) diff --git a/remote_permissions/view/admin.tpl b/remote_permissions/view/admin.tpl index 1176db41..60558808 100644 --- a/remote_permissions/view/admin.tpl +++ b/remote_permissions/view/admin.tpl @@ -1,3 +1,3 @@ -{{ inc $field_radio with $field=$global }}{{ endinc }} -{{ inc $field_radio with $field=$individual }}{{ endinc }} +{{ inc field_radio.tpl with $field=$global }}{{ endinc }} +{{ inc field_radio.tpl with $field=$individual }}{{ endinc }}
diff --git a/statusnet.tgz b/statusnet.tgz index 92a10317412198a219debe3c33b27ff2f60429fe..9801af556eb6fd101242b0ae00ae0ffd1ec39967 100755 GIT binary patch literal 17889 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 Q_@Bl90ZVML9RTnE0GEgLApigX literal 18071 zcmV(lK=i*KiwFQswaHKb1MED1bK5qu`PcpwsLoT$8Ci;*xb1Udr>^6)p6A+rwtRh^ zTuuW~kc2Zu@(9YduH*0ib{7B%Qlun1PUq&m$LTaO0W21a{e|5HRm#(;3Psv^@ztJJ z@O=OM?u(t>H{b8(@KGuXbO&+I|iHy zs+1>;y_j%+B$Hbi*7S=+m+XvB#2&jMMmQ5GJBq?k_-T}2;|HPqM8>I% z!aa5=0zPB$v>!;H#gR&7I8rQ)7-zm7BnA#3?)%X+OcBgqMWP7AcKcO(7vCIC({YsS zv2N6tT(J*Q+(4gkG#s*b<1~%;I-NoOu04(>Vj9Z(HZtunks=((8{UbNXea~GNeRjU z0Pd_aSQujt9v8uMBttfg682G#^f~lIEZ71(bh~}@3~dLeA4d~HCj)gVeGw|L_j=0@ z_*4n@)71wS=$Bb1pzctPrU@sK+Bv#FLqC~NTh1jb3#VzX$PFhDF}J`b61FrgV`!n$`d z#lB|SEC^*m4wGoY8dv5m+d8m>wXYiOY?Tan<)2fTh=~YOwZ|@gx!7$nf0_jB(^VkD zn;8(MpYUY%*%|X8@~1dJ(}pc$gG3A_G8COVc_VY4(4^~R+uzez5^EsK(`>&9Hs-g2 zcsI}l5|#kx$Px^;P$^*S0Nw?H^)>zPqU44_w=v`4EN3wUDMQdHK|r`O-cKSvXtSTV z0%i+>8SI~@SQNsq3BS>se0XufVh*rwc_MiqX5rz0^%1o=o>^jc$2`2jtz)CU%tRBv7lpoPdWO=SR1b+btPj<_xA}H`U9U4+iC(<8Pl1@KNRdC* zi3_HoPfHvDX(#+X5aB2tH#bc)J{y{|*go4pzS}y0u1)iE3|fP=nU`B2-MRe_1?&q5 zSs;l>r%7mGZ5=3?imihbFbm{Frn=)p5hdVUp;R}z5#jaaDd5EZ$l&DDw>_djNB8cf z*xh?O2Mf9YE5h!jLIYa}%ju1<*gUW(k^fo|5_O$N33pYf)LGvmK&E%y`g%Q}tV)xq z4|~I7iHz7Hax0L*q<14`?w?BdFcrKZ;2J1w@Y(h0Y4N4$Y1&-2h(GV5oGZAVUq{?YMied?7ZY)4? zl1fBrbVbW*Hj-u(&w#WbjOoL>I1Xl@EVY(TqWf8xej-nAQ!p!9X_;ad~g}9;xbX83eXBfS?nYArP;ribuSOku09@LwpjP_`gqwG+}>Y~4?kdk&4b?YeGI7Xd7I0|UR|B`{(5|Q^6~eJ zV;pa=RVwJ+ibM`)u@K2p1ZeV)*JnrFlk+o+#D?~XJm8aG1Ro$vtOlsXJ|3Q4;j*c> z0@3%!tZ9TY=Xjrk3+P>(Uv<5`71$a273irslQq8)lQ;!*b5Soy)e?{&PmWJNTop8h z1OFlW)lUS!d0W8z!|~~H_jncDkFKw}=f7Sa|JU^~F2as{>_Skvf#5d&z#k9q|8ROf zG|EUntS=F;OEgT-Y84)6@))d(uxd}-3m=Erc1L0Q(ID#v?1B0-2Yzz)@tk-X1o6Xh z#b{UE_P~~nM6=x7nuEPr1f(f}=sPUw2N9s};B1Y*T^hc9SO>~vMk8~xdd58^M{TXs zVeC$@P=HZV;8L@36y1O@Sm)Ar4=H5FutlM1Leq681enCNM2sZp)ue}`o1SmajXi5U zJm3X7mvm|Z4%i__F&nn|maPE2hwSmhDfCz%V|kh|N+qyd(hH+x!h=VGN2mm-3N$qa zk^eNPdSC_Ee?(~ydf~|g2@cO=V4Km3AP3QCB$8&s@Cq`A?bv{JV5}<6g7cWmThs9C z^2G}9pNBK%CVEcZm;?S?+%X6E`S^qMMidOJcgVIt15F}0M&r45;hK7&I-Z$cbgKVK zEL8&jEc{fXmo0&t-)`{Mw;O$uA@E4QVVZF07B;~lU0c)I9=BnmNG0R!#>U%q$F*{d z(EGKl4e(`{-twSX0=3EZ_rd)}9Nbw3V)*EZdi@!W<8XYUIRTysbck@DH7n*flUNkq zGmrUW;opeCe#87|z`H%>8F+ox-e=ysfxOkxn*D|e2W|mTw@_&vypv%(O<4+lq5;y6 z?i(!R6ZkuyT7(#WX?U#7axB|08K5|Yp4$!9Ie*gO#ug~ z7$`BImPBgeY~YsNH#fBRnQ!5i9tIw9KC$jCmBL^S4fx~?7)WLGu=ly-*3rTHW#I*e z%ZB7>R6$^NqYz((Q2;*>JSp}s`Y0vnox}z@U!~1&J&k@8(dT?=41o;Vs4&d7!EwW3mCD zOxo-)2ngPQryPzTg7I4}0}3w7kXlAT)aQW_pLP|rBhoB3LVXQKkx<;470_YrN*^4(^20BIG_3t5yxk1p(al(Qi|bRLS-ANQbVGY3%!kl*Uu zS^Itx%<+DCRW^?0Z?XgSY7x5ls5)c5Krgn;>fCpq7oqi(iHxc!&t+ae+jLf=v`Ra+ z2!5r?C_i{o@I{k61u$KTPShy}(?%&chse=~~s9mdKyC2@L4Fyz$Dw%4)#MkhOe&57ru z)oXd9tJQ0V8RrK;-3iKNY87BrmeHwYEm{fbPI#a){esFf*=iFG;oyMinY7~tgdokW zN2bXP9l@cz*LocDdEjlaI~fF(6DC5*QON!|1s^P!F`ngT31}6#w_BU@I@8fMb7Zu9 zU7>oON9C-pYH-ETO)=dGOZB4!bSn@x5NI?MY&lA;EEtiq%su7!~Ypmr= z{be({O3UnB1;mAF3OA*^BXlmXyE5UkzF-p&Q;PQ`;6mV!4trk-uVDIee(HGDD}6q* z_c)VR!;4{b_cVUQ=g;KHr_A@|eEFDJSL025mYPxAER}*1CC=1AY1$*&I|OYvYY>sW z4M(-G9CQ2|!kGpG!|&QC7mWqNrxFi*eSu7Z#TS^t1t;7X;M!&Vxi)ppzFl}`kztJ` zr96OiP9QiJM>q;aj<1UQ)P+_l)*0t>>vsQ zO!)%=)vL#C zcjhO-In0ZFnpI~v+d_2|(d4aZi=y9;k+x_@G~Mi0lQmy8eRwG##Ue#9gLfd zFfbmCN;w&^wxQMA;1MvgOzMWoOj1tM0$QHD+yHI1!mP`Zsu@qfy8Ox*Ln#B7_^D2aH^6p#k|JTa~f62QaEy{Ld=u&BBhTKHi;6O z)d^<#t&V|vJ)sEBB$doXhdi}p-IYRWwT;?TMR3p?>KxFd49=Vs%}oh$9|t_-_CS(p zP4aXi&~$8zMesJclS-69$x#^5g%k{j(yb#rcuTNQvr?+6L~qJuyHtlG$}|Y7PQ4k& zydf(DEc3G^-eHz3%ejcC^q;WjHpP$QDgvtpYOL9?(WL@$%)k{>dz$E|gJUieeV>C$ z@XFC@m8b4#3orG*IQF;uogdJJ?t|lf2Y>uWy8&bXD#VM3fHErwPK8C5O1n!iOpr9HMrWD4 zl@ob(KDWvv;R6}Xm3WkLc@10H;kC=TpSIUH$ljuaA|!gRb2Jr*&&POjZa_-8I*dvg z8V9;k#MX-}BxG6n>Dr8plB`(dqFd+JZ{Jr#%juyd;>y&2XxFV%jc9S%^I~4b;x*h41QYG8YaJGyZK0Q0&RBe_8Y zon&adOwI9h&L;>R_`h}X^-0sZ`BBl$x0B+mg~%LwO*36;XfC&tYBq)hrp-uUMq~Vd zvs6sth;9I8%DrPwsanT_#TZBx<7IkoqYvmr8z_0|AiJxbN9i%b==yI(gt!4=UxDT? z;fPduVk}?ByEY0JODh8Nm(DfSrWZwh6Exk(1{5HaLgH^r8=|jElZPDQ;Q`Yk?n+92 zLbu@BR@-!4|4O7Y#3%3827ovQlcr!N@h~+omppSIdUw#6+Z*KMA!KZ*1qUNN8Y-n* zbQLZ(BmQl6ju*iRyLVvYqi}SfgF){)=1&UfDykyE8{zmDvY%6NTrk!SCAf{&wdXP> z?k!}!8?BGvg$XzpgM#7-^x1FpGKRtO>B)$x#NThsMfl*PCPQRerv^S8HSjt;dDXBN zr_l&clyp2S6iR!jr+5kPiZg=@3vPwexk~wC_iDutE!Hd^S#NIP9;2^Sww2E8Rf-T!3fd+uu1!EM;vSKd$5M*i17`@Wy5xN`BoijCZyp=;nWFULI$c9`oi*n64i z57=QUGW9Pbsa>Qo1#G}X05vIwMFoV;S9+fA31~+k%jp|;s+BoXn)Cyag3GKbT!N-& zOm9cu+V1&o3}A_@V0w)<3v5xbh2L_pS`BTXKpqSNTLP@KqbD8<}({O`o1&~1=^feE`o zE4ls^Ja2uVlOeNVd^p)JcQc4T(90}18su3j75S1^e%7hYeg_|jJ|r}bBBePmLbmMB zn8{JFCR)->j8f;BYn!T8BIcNX!;j;HF0-1*FL*y=tV97TZ9kX+JCn?6qZIC=OZ@d$ z6+U@j;RL3{z0b=^;>)zObUTYukx^}reVCfCR-DLN?mHjxXyX3;l7+ntPcSPRZZP5feG0dCL`e>()hu2pi2qLU*1aadt4>AP`iwv81-T0Rw{`R zB>G5KKfq53VJ4U%=O+_O*R0o=XGaQ5WLg*6t^yB5ePCKFVonq3+syW|-FR3m;hI|? z%vDr#YdLC2=XPmmmyF1VF965C zY(b;G4E5s{u2GeEt2SU%g<};(3kWPFYq7UO+jc1#TS45VuGL}z&i%KA37%E<#Q{~r z(7CT@Z8qHwHQ7uzb-5_qx#}LcuIc}~v3LXe0WUX~Nw;`W+0tr0A(4M5pnMH}qyNbh z1Bqo{g)8vTRH#bOp*{BvUFn0-Q#nAhPmw=*K_)vDrY5?0(fw)H>0Jm~^Xr0#5?nw5 z?^@gMzzfbf1U^#p26@8Hbiv+>f(Fa4iRocp&FXP04dj_h(tuRKq z=HS7>?^FGHOrUOO>i7bRI_uFe)fhj}iCeyqvYrH`=V5S^XhK zMPIV@>3~B%{&vvMVpj6$0fZi&o8&@Dz4~` zVC{5y{fkH1MK~j~g)bfnD{uzkS{L^>e_<&?tFY(gVVYrRSkLFm=L69+UpBMjS}ujI zFSmV;g>25dZXze8S10P{LAjR*>3y11@Ppg1*W_`0)+^AZw3Teoq%7L zZuYZX83wpq_-+$!yJ%7v-vXTWI(=g}7PQQsL~Z$r70yt!1a|S zskP}csUXQuJV-uJm_xnD`^S}>!j^%@n5ha3maKw$n5us{)9SRhwOcuGNs z8SF(o9 zeqF0lW*V)mT6AC$fD{{00EEzoEXBy`J!^OhoPlg#gf0)(fk3M$E_~(62a|mO0!(TX z*x<@xwYgl>X{^*_qz_k?Da+*gpeV8dNRLslss>d`E?6cKP?v=FQ7{zmq>O4L%*;^b z!b5M+oFhY}(WjX;@Td;yZIy(Ff%v;Z%_M%uwNpSDiYb?>7}u+RjwColGMM0sh~cq` zig(AxB@Ryjv&`7Ux5c6O%qdw1L{SD67#YxPknf9B9|*P&UzP+~5>U7-+Z)lCoPGn; z2BQGA0p1O&4$46Qg@Y|Hl@NkNmC+=02;rc&-uj;)j4+NgkwYI4WtPf-MMF@#1qlpd z3=n`n00GQy1Sq?RNP}8M@`nPJ2q~WeguQ7a&VvBL6gn70BK#nqH>;2#20OPyDQ&bkj1jR~nrUcMgLp`~kS|hv0djl5!@-o~lAQtNV>Ew& zfCxnW0CUJ2q-0~jfr85iN$DP=Qj&RKKY&E`%QfniDRxUG2uDgJAXRY*dqshX%Sbns z1$FU#1<;SBai}az<}33}Qi}5;#qR+wkG{pSp)xPoV406hDpSY`W&LFXWIUOt%v&as zdkZn4vCFjRbUF}C{p1V-utMiN;AE5xUbITXBrzs8#4|F$AL!l2gcZ$TcL&e7<=UE> zsO)flnkbW7PD^y;Q|2ZTH+yphlC;>JDyTx*n=hC&RIkLaj{jxq=vDv=FyvVpMuK5P zxs}I57UDs2Ym70PFtKAd3daeYEFT^f00pEj&_fje+yWQ@bH zsDf;e6s$R6#}y#jYtt~+u>FxMCXyIPXk0Ee*I4AIsF~^nFxTkeJDQr%dX%X#Gc&O= zz+a1`mUFy=@bM&Svj7xDEmj0f3`&a+gOIyeNbR8Z%wn#cvN1STP8b1mOZ=>|u{WYr zI;;HjU<0fbOwLp)OJp#mkc`8e46>5^#gDcAB*blz!e((ijnZgBNvyJq{c*f)$W$yC z6$ER1Q0$aT6DUdn$r6#E9W+52lz~MU6jreBAiQ?6ivxr{Tpu4FE}~95Y`a}1YQ?WX zYbn#gr1YZsHr`JN@ZNuOIXhumSZL~_Vh51F)49uQed zWpwofCA3Qg%*mvJhK5t7Sc=_X07{Z#P$_W|Pf}I~C4DeJ*hbjr30nbmkA(<_EsV0t z1Pz600TwL?v@qnd+Ear*wryKyJGWzob$0W%bx&Z&tnR509I&ag3&T-^y7mFEFu(+W z+QQ3=K01irNz~9QbpjI!U@fI&ZFjJwkQG@#|CK`ugw@0FF)4wdW7}5NttNw^fB}5_ z5I6*_La;5iE$2>P|Ao}A=$;qmt{Af($zrp?e>GAQAxC-$9_gwIRm~1WsAAVBq0s=; z@K~M!1gmPWCdgLiQVF?`!EmjNSlO}?sP@HH0jXvKlE^T^8GsC}dM5CE4P9Ab2P?L~ zk$KTBlhR%zD>5aRnBW6Xr5Kbc5P6Lbl%O&imAO7h=nhZGBBe4p*@LYq*!gNSYIp~N zf`ye`13JF#419W$@U#OGO>WlJAuY(5jfYf9Etnv-T0NeVnQciJf%mr5+6}K&Z9HUV zYJLGSwrs3afcr*ivPLO~ zA`E%5#+(d~cqT!SiaZJK9OXz}M@6(nltj{cb4qPUpL-i2lT%V28MT!KD|k}YgI}3_ zEuSYr&N8%mTa^bjMF!!9EQ)%;_`+*J5dp22bXYQ>G^eU{#fC3obUWtK%w*ZVt+Xv_1mjLg^arWnW)Gh<5Rnc|F#88=HVKVAT^9C5kPvGV5E2N& z8%|i6NncN-Wi9FT&4{ePP=rlRKzl#2?+uOFXHqQ!n5Q4jJpmAWSc1(8v~{t`!LwD#@R*zN85qG|o|Ej*5>G<#{GW$=vZPfn2rIUTs~yzXO`E39 z#HUCh3h*2!LWNoAAtM?ngC-ZU=!7PkF>Nv>bp08&zrd?86=mFt)qRlXfpsD_!OH}T zNM-?Pw85Q_jD;4cz*>YeYkGXNQMpmeR^@V-#7X_VorN;x%kiwd< z#qr_8*u7Ipq1n5Y*1kvvPLWIuXEO#w%@1`Wp`rup%)-A~20#w#v$8qq; ztKRk;34Mr>IxQ{OfWd7G-oB#4{=SSLN3Dk|0Hc7?mmm_cP?wNWRh+|qGIlC<6O%Wr z4M{eHgCz%PL@E>^Q57jMvdBmwL`##;r=Pw=VEv^fkA zG&r?GXDqNgUn;+AUl(8WY9|XhcI$BnWa;w(l>{} z{1Bp%I-53Honp{MX>{rKTLs^vrq}5OJXO2(#jU5-vTLlO7Ai0j9`}MBkFR;5dIcpY zaAlD*TN&koh0!K-p8|DddE};b0F)GGh{w;$mA^*69Q? z4oh%xY#Vh1HF!`Mi8ZoHA%!SVyklgv{CE||h+^Ptrcx_liCnn&_Drsb3nQV|WG<8= zoApq_$|Yf-BJ^f<5foGr!5~AG*rrLzld4cIjiuqpT^#u2MsR&-P&hkoX@>xjYAAe8 z60S-hA4kGAFv!EikZ?f;moQLm%Wn_i0Y>F0CMqljek1w)EBzA_L!(i#U+5tq~ z-ez@$78-jZ@*dkTMEiOJU~dY*vv44(8nMmPcoD*wMp=Rs_13Gw}k6O|bTEWF#*cL!MqxS3yOK zFdyEu#6zCJ2-cmwAdp<}F@7l--$Zcrr%nYVPlXAQ_Ky0JVva^fB55mjctl2#ASowE zNdTIhJlTwd=a$JRTVGbPNvd4SG{})TlK?dsg@C7&%LUUu;%>M|b_j;f4gs)OpY(-Q zl#+=mM~GP;xp;srm?Q^n7>U{tg}N|}hK42eB_dp=Ru`r0=yOlhCt<}kxk(6(1;K>G`o*T zKsba36N&wVl0YbuW`kgLB83YIVKBkIYcK?BKlyA(RA-Z5z$Xo3q$<}602&hP+$8z3 z0N@ZB#xV2=-jJIH0)&w6QQ`SM7=_(FA^C@i1j`~f-+=_Wa~Jy(hbDljsc4OiE}(%1 zz@Q*+ZworG>^g@!&Lm)Uoe&@JAuIXR-U4~adv2_AKCP2LPAl(5))4G>4m&UGCyR_| z+X9-zWOL<2q^i-0ae+dCA{9a(g6oS$p^r(g;gU*Jke6J;E3`_m#)a!4YGnX%P) zLHtiaz-;f4Y^kC(tQKgvxd1b3pO&MWCV5mL^d}XNA z=@};aQx8}P*wKX%68KrbhQ}DyLzq;)Ae7Jrp8iy)C^cfGMxCA+MrhTksT!3P1Zx{W zySPb${18;F(g5Z{ak9>2(rICE8>B3ZWS<7lB4=AeQP%p?0tyvq35*JL07vEqOlt%S zEP9M>{rs$LLl(;hM_;$ueyOy7ofps@0G6%NEU>b64*0CahPEk{1+pzLhjX)?@x3^l z$a6B!j+TYbyBE+kBs@nk`CqfL|3A<1Jk^ia3n-)g`QJZ466|L+|Azzz2mgQm|2v*J zV`8JbxV{btZY+D=T6{nd8bw__~~GbkB;J$)%3dxJ~}0jj2^~$0{^Yu z^F=WTanZjs0W281)WQE9q68~*KwxK6%;@2rf9dG#+RMp_Xer@vdiuo-i%iTpb7N($ zX?3;vr>Oz;jeBottCGHcjThm@8NWC%X3oX+^7R|?-W}jkxA2E|VjF%k7gr7{8~bT- zza86Bs$<^Zt82eW`Ej%=W?a9zZT(MgS@NCxaPg9NCNCD;^mbn46f^CoWjm()a<^#5 z1*w~pa6;Cj&R0BE>CXS>?BML1g}zQz>k1x*K1iRsPTYF2*XfcuXF_s3su!0}{oq=| zgBJ6vrS4I)JxhP^j+(vCDXYWdM?-VE6*LE|obc!LSM`@J>{mF;_f;4?i1XgZtC|*7 zPV89ts7G0m;+k8Opfs^t4riywPgzf1U9&sC>ENePt^OIG=G-~l>ws9Cz2S#%!$Ns4 z$4~1k*zK*6wp@NPGi^eh;@1Z)qmMsMn&q~ywEV%p3nm>){KKb*Q{88aN0#IhSDH3I z>c48m?fX|YD<2=8;k+ezU%czF?ZlY6FAEA9VTE&yH3|`+VlMDR!mm&0bMN;Oe~!P2}rG%m#(WJ{O;&F(U@t zy*U2mijf^JOTvDBtN!2NjWxZG9bGv)`aS19+nn9MI3lZweJ~_j_mWFOo9a*AkNqg*m&!?{2S?p~H1_%dL7S593Yt##oxLKQ zlkQdUhxq8MQ4wcOmgNac-Q#C>`?_%o$GP>CBNk_p6UC zZXDm!^opnRlBkuP5++9e-bxUkU2ExKTG^$1V2!mxC#fvJNK)7YuT15J2ncJjTka~R($7=^Hx-JsIC3R{A8Jaw@bvLg}#x+ zUT<~hPu@Lw;*=}%&hEWFX=}*YnlpLD(b-+Qh4A|LUf8!eZt=bJu#Jo*LvxA zhno5GmrPyLeO}YUkj<*xl>TM6n(lancd0tKah$RK;b_ueWwf2ZKhg2z`@z46A& z7x+&af1Tj*WLb|+rS2fDZq1{icSnzMe?R=LUvb&NYtnPm-j{zr^WxcK|m7aFFhP|vVMHe<)+XB+NLW_7dnqy=W=vuG2g9Yx9!LN z7<4S7F2}djy?oWp16?|f8r`t{zP4^uvG<8M=SVlF&>pwC-aeK;bl6Dl{#UAt?mXI) z&uMuW7e3qV;@t1P6@^h!g6(}+9!7uF0s(kp6qw^JKN&g*sladznW(8{!? z+HphQ4qejGX?kOB;jMJfy6VB_o)qu8+GSJuj?mzXC%gT4zwxWrqt1L1q+09#ZSCsI z<%+3YrY+dKc`HAD{@~m-(!7~X4I4yd8&i18#J7&-zd6xu?W8lRwAiuVpW1Z)#}!*A z#8fOhGAuk!}ALA$Ir=6M-P_V&0w?4Xj+MtiWm-r3ZpIv{}B_bv8yN@5_1q%Dr zsJ=42eZI+W;GePkiaXX6Ex5B_{Px9W`O=W!#_31A8VjpV7grAo4~?j4a;pMaJ4ED5 z4u4#kci=<+iot<5ZceDX{H^Zhp*sbda~F>Mwri$$^0uoF2ktAs6uWd&Yed?Xf8LCK zSpRE%S$)Kj$=@4aS`kyy5L8haK0?^Irn(}!=<93OCvbwdZtWKQkFDz)6Gyz8_F#TM z)rFQ5GqP4R6Yp-E9&!KWtKGs@j(gmr_U2=$m!Tkab>x|3;hUPG#yP{ct?k=VHZQGr z%ZgF=J`l{h^6>hN8{+;u*Qvr6d?P6H_cX@#ZkzN^CyA6*wY zW^V0SQ$R!Pntk=n!C&f^cV2p~YR>cy+nY`OXI&`v9{2SYb=Pf67nEKDIIEg>Ra|Zg z_84^NT6*P)(j(Eme7}tE&F|DX^kjY95ci8W7shJjbc$H!V-it zryVw%=U+DN+^aZU!g*BOeah5ZZ_b<+SHE-VI?ad2KI*zIW{&58tMAMN6vVsk$EiQJ zt$X?JhOoWW4f)v{MlOgGDI%M1yXEKQzjFHeZ{}I|Ku;bIJYBQ8dhX|5UX8g~tFEro zC3ox)cqn;ONy6HXu60)J7Rj&tURu~GpwHPV-`f1WMFT7MOkA6@?b~@xDJi|^t1-noy^S zdb?j;t)Jw?;np)=OOL!9?J;#m_c-b3!kpzl%)Pwnent6fnHifF4Vzx>?y3Fm%G6!g z+&vU~XUx^_a6^$;FF@LX%?GaNhST79MQ* zdGWz1g^xOA>XN2SoE&?;d4;~QwZ5U6vvb3q)oT{Nwtdx*$OGGVsS5ih#jQ?FsuT9) z70Ig|28#}XYOr1(cL=l-uM;RhR6v@w3u-w+Q!^w)%5j-mQ1s)@M(ST_11IID47m9;i5S z@ymMwi&*=i_oSimh|ci@F5h2sa`GZPNe2Y$J8l_eC@%ngT6}kh+lI?}-#+>sw;*0p zTfNXsb78XcsT15^CzST3h143xE;_~`Bfi}?+c!|^mvR-32bG`dcFC*Nj*3d2`&Foz z@H#l3W$K!wRBlO8T=7uEbT0`@$}rp`acdmZoOT6tV6EE z(sJ;ja&nm=vx z_AG-AgjFH$h-6W10%hpa!HKbn?fu`B(}dzbFM@Z+Gi)Qz5QHl3x*u4i5gQu{4?x0KSp0*Ug=L??Tz?-fCA z%R`1EGDR!~eyY0u7;IlR2r->Co^6kt@*P_`uv)PU)dY|EAla&OEx;~jtbLg z>S@`Dyb|17n&-c_{bpo#TgjPhhn7I2vHo3meqY4a!oLpLC)WJOg=~w?j4oFXxA2^! zCrc-VjWvDJU+>r}>-}K#6Jo=9KSe`HqB>YyUgCkpzTl{VpXG8qrDUF55e|J_78H5j z#f+=HC@yNR=d)1F4+5TT70cV&YCfD?@V9S=UdgWVi2khZ7I-k3*V040@a9uWz^%e> zJ2hEY`3O&ws`^WXyIWUEP{V?S6Fmoh`|Md<6|Wularm0ZjSo3@dTP19FH*1C**>){ z)*m1Jbx=JfJpSkiiYJYv}o<{fnIL_2m&g-5jb$=`^L9FYR8E~JAytDC&9tiFd z6`lLn+Sw6RZ%iF}b<=nld*(D~{UMDV`Qi|5U!n01;)KqBkyQ(!y!h{YJ zH||bu`FSl;c=f=VXBL}nefCQE)Lyidh@$8fE~^nupYV6T7}u9~J$3Rxgrb39ZdTdJ zAis>x{tj|!$tXKmoucC2H_2Lj??fXN*4o|VUv)FpAZbg7tG;q}`9y6``)iIb-vT<$ z7|7k46erqw2b|~XvK5aebHDMpJ`-OzDp;0C1{%3yv0%@_@ z!pL<$@e9<%{&eW~EhiKEqdL-q(q0=zZAi&VTw+|Y_;d;gYSFP7&LX5c2IWh02%&rw ze`AyOyUCCEzSLgod;Y$DkMy!Dw}~z_S-F9y`NfhRsC)Phy=zmc9o^sjLfv#rRWGl9 z>Y)XNS3Op0oAD-5_mR~5Uya-g?~T&e1xxv~dfz7Q0_C9>f+CmRZ?o;S3e0wVX_(i( zo&9AP8_3@pUh6*h=?SE2NwL~$@fl0n=ybG9ibz6pqpDw#-kG23`Uannwcx>I+ z$q|jpsHe?idc}kq<%xw(n?5bc-~4g)XVr;_YdKpv)YmRra_7GA3Vq(D_K=k!dRK?n zZM%JN#qd}8BJcMP$;E^}Nu9O%L_U0#njwJ#u0IqGtEq ztGCE->K83FKPi}1^jB(Ph|CDJll5^;vImb-U~#7iG+TsF{~XDC)XwlwWm!^c%I(HrzClop_NCnt9+8SG#FUZ-MNc&^4SDyn%Cg8~q`PvL-nlrz zHtM>Q<3XesT4t$UX#)+E$yZNbYPKSYT2&7kKNY_`7E8NwW$OLjb1G8Tne*_Cq&GB{Nnl^Ut1M@ z@)6(h(a#e#e|&5FG#V7MQSaVz-vWw@k&oKGd=2EJ11Hej-SC=ls+rh+pC_0)sx7tBR;^i@toXk@D_nTTX6hIM2=b>kZ+^se65_2RMw!l#*8*wS8tGTPO6B zfVh=Bc(>2d4QPC6^3p)4GjT=m5UtXe<>SfA;t~90|4*5RqDjuYM< zud3b@s^~g&-|uYS=HBNGhtxIHwmr@qZF!pXYm`aE?O#~KyCW?K>&2GHv<9s2oXFp? z=KM`wTgBlHm7w)iJ+^06Lpw*d#E@9rpRrDQkgP;6kd2iVNk%@NQug(cm3`>LRkLA3 zjyt=EE;LbbUS4JG)n=M+w~!U`tl9m)e5sON7MUg9A#JPgyjSgKnWih^7ayDti_q47 z6IQAQSQCXJ58mJe%?xUziO8JPkC(N`oQf*{0ACo zgLPZ=Ls_+RI8~n^;B|tR+H&+mq^XR&+#_{T5I-My3( zsSk2v9`@C^gi3o1MvrV?pX^`OWO&d(lWe=AE@WNwW*eOD_aaFKcKtj&jyo4f~$hP_xCJbE=Qy zma~%5qBG9X9eYk+S|?m_*)8_TtKx*uw&6Jkf;0M7N@@d(Sl>jEh*F9QvywiWIq>ju zn#gTa-ezK#it4pIVlm;6bezh9yhs)GruC1ltGu{YmJ!G;e*W>1*F2A10xu--17Hfl zY!oEl@I7JD!hblHCHnTJ)xoDS2l(taYHRXu^8av@t7%e9@|;PFDss)fkeQy*8j=EZ67jwa@|Iebf3;n|+i9*cdgxd9va zjh}!#@Z>^+CYPhjD@V^n^Ru<6Hc7Zvlo&UuBnHIr9Db*mPi=L1xQ6AosIUxE^^HyY zd5C3v1F}|T98Js5D;`=e3tZuR%7sz6(}6<=?TpJ6c|cm~Owwu_XIYrl>9VZ+AbXn|MLL>y2f5 z*PHJjcRGG88VWs-b2MG+#>26?-0BDo$x|_;iY2>0W61^`gbnVv-;um>;an2YV5}fol96Mro zFZ!qBvX83W(-)d=8;<#)qZsazm7$YP9m~uJ&@tyQEI5AoMYec}apv3iDw}Lx?)+Ms zJQ*E)Cw4)0zeIHD!N6-fzk^;y@8xP4GtJ)~Q>_m=IPhqvt|{bC%OSqqqPHc*xb%_RR5!7N zdn^BWBWiqXskO;+wdcn5WHYLx?7;}ngrDBT4oQ3+ve$g8X;Yg@BrB}ix^fxE5moC$AFr|XXD8ZxiS78l-K!+7 z#K_bq)25`!=h4I$pTs5~Kcgv*`|VLq-=}Pf;_uyyD&NOvlb_hKV|<_~F=ef@?}1WT z;Smydn&IMHw~Nun!`cpI1&1p;#$ApbxEJT8!J4D>`(VuDZ|OeoZwolbM}_OZ{aPot zTWrX*`t{WIzQC~liz&_7;@`%_c3!#`W|#WM3K99?F@s6L*f9FIAyDJ)!Y?U=LWy<@H(U8#no>=K8+Zd;{=%Y7G?~ zlmDm6^zT3VD!Y}nRsJ`g@eh9g5fj}ZHRtyqaVb$r=I=lM4lxHZ<7})h zdX$g=uOb%S1VbkaDw#%5rc&%Et~6UGYioFj0oFpviilWEUnSW(IZ)gksa_;#N!A$m zpdDERM~fG6L-oM6*k7a>Z3W40LN*R)O9bKhmkLma!6KlXMX;pIl0oX=?g&95ttcK8 zdnadDGRmM<#VI(vA=bTxJ;eb(wSlQaQ5>jl45C$d8jOsyZ(*!Tq`z}`dWN9t{-uLO zj9}l~rpN2%G=m1x8>eVMIYLk)y@u0|`F!NXi3n-+Sy z&dUvhM`G0Lz#5S`RX7M*g+nhkoTo>?j8Tdrw7%Jz;7EZy24q)njKz2s)CJIhFp7nM zy*pD};Q>3ynt>G~(t8Z%b(#_bV`~S~MRlap2|z_o^uzCTjdVs)jLesWAchPAPXY}L z!XCsQ>J2flLs|MCxVHk0d*NYo3ITEj!{MSs0{X3-EZw1L%hFvI z!$cJkmvnHpKoIEq`WWB}yo(0i9zg+&26Oo!p#>d|64H)RE!-jNha;F^SIUp`4cr#i zg%Js82_kA!p0-Y4#%Q)^uaUnqAo4tnY>-$2hku=>@|!^tgWyo44m66r2ZUz8SlA#p z9BroYGgzoCfR&)c*l6F}9kJ+y)}E3bp`Fi}POvZ}f{qhVg{~>=3dIiI4Z$~g(AC4J zIOtQ2qtwFMOFB%d)64=0s0XOE1mOZFGI5*s1_at0qtKO%e@6DAI)K(>NLK;p9V_pDo#eU<7=PN_L2A&0` z&eq+6Wa;D}LdFInf@71Sut*5(Cw6@GXIan7Sa(fWT(O8AwZ-qrk8W;cpk|SY{HWk1M`~=KQ1<=n0U z_t^kaojO6hPw)(AZnOK2_YjXN*u;?VoC^y?=sjo|F*8}_QW1t-5G2rJCs!KA@|_32$>5I6qV6J*wXXzkUE zPq&a@;_XULl(4bl7KZPqvlP$bC%1Njc_OUAz%7D-4{QlG3k$NP9RcM$*fu?f5V(+L z=jP;$D}*1S`3+nEu+)%hkIwx@H!}m283r{pknpb%$;dvwUtQ5%n zGYKU|H;O9nbbem7$z$7wX_D~C*cLv@Y-y3^zyj* zG%^~^R>~%4>#Bh2MloTqOU??aSk$M|W))Tyv 'field_input.tpl', - '$field_checkbox' => 'field_checkbox.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros($t, $includes + array( + $o = replace_macros($t, array( '$submit' => t('Submit'), '$sites' => $sitesform, diff --git a/statusnet/view/admin.tpl b/statusnet/view/admin.tpl old mode 100755 new mode 100644 index 02eacf73..b40adf35 --- a/statusnet/view/admin.tpl +++ b/statusnet/view/admin.tpl @@ -1,10 +1,10 @@ {{ for $sites as $s }} - {{ inc $field_input with $field=$s.sitename }}{{ endinc }} - {{ inc $field_input with $field=$s.apiurl }}{{ endinc }} - {{ inc $field_input with $field=$s.secret }}{{ endinc }} - {{ inc $field_input with $field=$s.key }}{{ endinc }} + {{ inc field_input.tpl with $field=$s.sitename }}{{ endinc }} + {{ inc field_input.tpl with $field=$s.apiurl }}{{ endinc }} + {{ inc field_input.tpl with $field=$s.secret }}{{ endinc }} + {{ inc field_input.tpl with $field=$s.key }}{{ endinc }} {{ if $s.delete }} - {{ inc $field_checkbox with $field=$s.delete }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$s.delete }}{{ endinc }}
{{ else }}

Fill this form to add a new site

diff --git a/statusnet/view/smarty3/admin.tpl b/statusnet/view/smarty3/admin.tpl index 5a77b2cf..e2a8408f 100644 --- a/statusnet/view/smarty3/admin.tpl +++ b/statusnet/view/smarty3/admin.tpl @@ -1,10 +1,10 @@ {{foreach $sites as $s}} - {{include file="file:{{$field_input}}" field=$s.sitename}} - {{include file="file:{{$field_input}}" field=$s.apiurl}} - {{include file="file:{{$field_input}}" field=$s.secret}} - {{include file="file:{{$field_input}}" field=$s.key}} + {{include file="field_input.tpl" field=$s.sitename}} + {{include file="field_input.tpl" field=$s.apiurl}} + {{include file="field_input.tpl" field=$s.secret}} + {{include file="field_input.tpl" field=$s.key}} {{if $s.delete}} - {{include file="file:{{$field_checkbox}}" field=$s.delete}} + {{include file="field_checkbox.tpl" field=$s.delete}}
{{else}}

Fill this form to add a new site

diff --git a/tumblr.tgz b/tumblr.tgz index 4c0fecf33741c642d0080022b164b115fee3b842..b4f6ff9b7b098fddef0af87f795d6c6f49082d8b 100755 GIT binary patch literal 13212 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 Ch5*z6 literal 11416 zcmV;JEN9aniwFQswaHKb1LQnwbK5wQ`D*_Pgz-gERu5awV=jJVGD&teRjDMKIJb3Y z=~NH}NnBH;j-c#lW^%v%`T>w2MagpP%w5%~YQ_=)bT_&i{X#S8Rgk7C>D>E)pMCf| zd-mjB_sQdD-R|Ri`%j*BpFTdI=jL$&Vz;eik~F zi4gZ@(w_v$We}~IH=jItdhpXvKm8dr{fVE{$lv^J&!_V{$FW)dPoD0>_oDnCKihwH zPwd}0B^96l=kh;(0TSQsJbJV%9*OsIrk;y4Rt51Yjw0o!ae_mymG+Zho(6IBTzpcY zT#ET(7zVzW$2tw7i56)rr0{u>8f9Rl@5hTMMIisC5={UO+WYOt_~hjxoyG~^jE8~L z;&q@dV9qoikHzscP3O-$ol*X*J&k8-5d~k{kxDz`Bv8>PxR9NB5|4vWby9+I3V=Ji zyRa!CGAcfXi%AfPah!<1@;YC_JfuNvpn}KkhvBy!ihiEVh?or2yTDhGR?iPxekd1O ziC;dy79l^(CIM&1!DNw0VyDG%77JXEP6I9GOztvXh)4l5rTBnE;!3@k!G10j2tWpj zsN=VXLMuN}X~V+8g}#i$M5Q7~#W;y)xj<5Ztku9QCfsC zY}spze@qqaymqNXVyJ+r=~N*u+8S;Pep{dwyphq!@Pyfff~TE0ARH(CYCupoox=$iD?;8LbcztOiK)hZmrZbqmzuz4JFk?SQ$ zV}`h4P8`+x7NAxsT7kBBIYx0J7n{sFU{ON4=o_skjKJHHfv_MlRUxJIKAWeab!rc> zedM(Z`ubmsAW<{WN&Q@W{M*MTP2n$+P@I1bgXm%jhj5t4WZ8GtypH_^F5q)0t}{5G zg&<|sxe6|V-1;!16~#_0f5;VMopwr8wa zqzNEcxrs{Zo>2ufY&^|_(QmsIN(1`ms?8$$Q6k?0@@<8_g5vgKUjcbHf?ol9Ythq* zkHe8QbfN|BZ5D%7@+o7D7Xu zoQMO$Nl-^>d_%y4;SyKLMaVdI_Q2b6uzVuwEqI@B0!k;StLXA#5^TmT_&qd7u z8j3df{^L<_DIo6D`ouFaaSNE%0;YMV$3Zk-fKy-2l>su0zj`8qnE%AHELM>mhRUmn zw#bQV11g|w0rL(#(K&^mfODrU(t7P9vH$`FZIDfVn&LEB%F47cGLtKY(rw`#D@NWn4i2D7n^}WHz z51-F6VYPTwtuxxz{S$pWwt ztb|IkWLP|HjNQ=7nHl6ivt z_C4F8gah$G9QmqVGf}rS{3Iu`{%p5=%yrI3b({3(2rf{B8=% zLHJfu9zKixH3MBxERq0k6vgHsY@LEQm^h-Xz5;|)GnYnu(FBWp1?0;VIW?7+oQ=9W zYzl22&n)*H+qWxrcJ%e`w_s_SkWbUMbACE7nZlD=#rn%W`Y*ITO`H<3SZ0^tYoJivn6H@ylW&9z5=@K%B(#N-pbI zFu;>Jlv+UsUT?H(9eZLrSx!;5Xx3OoF`Yqli`H5hxuY^cAd&B1DwoQz*aJC-Qx;UuI)6!h|30WC9UU}3T^Ut z33J7xtixl+Z-*#Xnl)&!0Fh0q#1%y2xQ@Z0wQyN%wwRC5q_!zceDmQQX}~uK5ZA_s zCf3*J&ocO{@nM++8@buvsFJAB=e21%3#Uqszz|W$jQhZ2aN_B732HS374d`#lT-CI z?f6=IVw$M&3CG1{?Z$|=Q=R6(Qe0B=#7vC>dE$XeVFZm2y z^ca-l8Sy@Yq-~WSlWH)^qJHprAJ1B%DQj))a?p80M~-s;J~zG>8{e}b?b;M#B7_3o zEg@9Ix_f-EM_U8RlFL1l!%^C2!Caf>Wq9GBZ-M%nJ;d2T3v9~bRG zcEw@0GL9F~s4YH1PN}JqoJzEgv)9w1s{blYvS9IYET zeKniMn1fX3)x>-&5NT~AhSdg2o*HB~8F?&@kxCj{n#vSO1HwK6t8N5jNJOsWE^GU| z>4tH>S!2lN5Vaz9|HR`Qyqh)I+`{5gEgGitjWc@EVjK#8@&aBA+Y0-TkDdwtz@P%J45BgoYc535Y7=*Su=E@MEG+Ho(==jR| z$<9rKgoQq0%G z5a7@+RQ@c1EFRySz0w9P?Uf{r?z@BE)R#~1>MUZ2(LIsM1V&H1fxVJAJq~6Qp%Wh> zmqLIO29qh(aifVRWSAlrkmS2~g26f^rCCJ~AfFz0WQjU7(!nUJJYsIxx=OIdka(r3 zp#=7=Os1zEGO_U7GfMReC1Df#g4F0TlvzeFO4wLvC2XD(5SD7DJlwe!3bEP3;c`M5 zl9^&^tspmgfRfn~e0K}@T^GUnQ=O%-8G1LqwscUT*LAp5#YA~?1-Noim4D`Ak!gS^ zmaBQRydC?r8dkndK??ENlyx~C@8l%zxGt|?#xj=|<-S97R{9F8Z?Mb2l!U-JEhYi` z%PHHk82tZ>0rDZ zz$#F=G?1aT6s$Swm>-ga!M3>1<)s7*=K`?_9ZU9La>*Vo#1#A}Q zu?<)x36KQ#)d?D6h!^SfTl-km4C7+guroLhsC(5$a_wZaddI^ANmaALv{Bwph0|aZ z?YEUx%t_0&_i?H+o;??@7mB$$Pl8M7FY~HJ9i{g-z-Pxv8-+a^=n`zLE4X)d{Gl>sy2}6p_&DKi zyJ091Hk=A7x+F8p)od145=>NzB~=>)**#!jJp_dXyugUSx5b(3Wbtj&`DQ)c-kY2G zRSrG7r?jDBh;futsLP`av9&+XFF!Y4h8ns&=kAm0KQ=|hvd<;J93W23YXt^pust^>y+4;>9$4Oki*pq{(m4K#^#Q1*tt<=+O=D%Y+uW}nB2Y{ z>hjndp4ZeUz$=SF(+&(3>W5q^a-U#h46a@TBMbnjl0*;4d8exMP+}N}&lolK@8rZm zaBHqQw(k%!*Pw;28Ln9tAOi{5U-IeA-@m+ZT1?CWY%zHuvTGJI>%2S*$bK&Nslti( zSr7)j{P-3t`#{{NnZ;!$x`W6K41;?^jf~EL%Xu)+5CZrB80ov=)(d51YRsu%!vWB0 zm4_~CN>hsWHJRLJSjRZdh^Y5)>eV+ZPM zpi^D1>1mvR%7O{4Q6EL7()j>HqL7Bz$g?^x)6{otGcrC%+=|TU822UD1wyj-3VRrx zg&K35(!B@|zz*Thfdxn*alWJ+31>qfO0*PfL7MS{TIn{=0+_>bzlxL58UUhZC#;2_ z^|}p-8jP)5S76luvXkW9=X&*2$h{yd71?I+X1=`t%`5FDoR!(eH?M>pIE!$vo9CNf z@IRNzWOW%U3@sb@Qu}hG>Ov-oM7`m4O_xJoJ{|ZH@12}yXGt(CJ$kEu9hGMV(Gtsn zXd?|3>;X(^#3iePHIQ^M$Jz!Hg>6D~I#k4YU~-Aqh2>R{>gDBBn$OvhZEMqN?NXCZ zf-JCQCOK&PvI+2lSrgoNdjf_K?A;O=vONQTEZ^9yITYY_QFp(IZ%0)fk<7lCp43fi zYr(8|CTr{rhkiU#XjVLKP_LSVx7^)%D1*pO+}+um$*%*vxC3G`Wuqg?)N{*tfTBb`0@1*ppQda1(45=nneK9Pntt zJXAD}b_abB_>Z~+N_dFSYl!gT% zpLAfZdX@qMwHm&!6wb$sP~^wMz+)f>yLg$!-+6ZfEUu(WyD{(KgRkAE&$>s#Yl=7T z&jx@0^5N{wXYe&&&i>l^i7&v-9!R4S1&0L=5M)YJ6(`v3TJIb<2^!wJ`U~k;Kl=vS zhC`rjV8LPQfQJA!jtZ1^Mg2_aw6PVzPhP$HUm=(%ewmu14@!Bd60REIbq6XKQVay( zA0U7&P@R@H#aM!aFn=ttGt_(wh~Fe5V?+RP#vYhCfQ0s&P7oVf-*PlbD@p)}S0<(t5mlF8#Gwh1dq8K&|q`I#l4kbjGTJcGWs{s*b1D?uXn%qmtM2~mj)}Ei?bl~>>&jJ z#=`(r)JA~LXb4|sGP!86x{=M8!vBB?piy+i2+3ZYfK01glUB>m2AA_@Gb4+KvEq(>Bi&nJOd0k8 zwfq@nFwi{D`kKOetIbvj;A`giom>+|rTLC?&*Ut?zlEtqAHOAhcA}LCXvhXD^?Zcp z@@>D#V^P~-_gM(G2{(gtR^kAz?(UbC<@snnue3fpY+zc!Ionx9Vpvm*;aCh|sj)Bn z&3u+PY4cw9wa7uS=w>hg=E7qgRm#wll0*e*6j_Ersy~D*V zomqiy1ePaN*f0CXAH@o+P1V1`MEi1zeFcola6xn#UjRACL7XB-S*G*2uI%vMq7AgX z`|#_pZ$1rPzxn0MuUy@{Nq<9e?rL&evn5(Ztoe@q2T}TDMTj_A3b2aQ290hSTcWWO z?W~O@SxC>?evBKXE;x3DRlveHnqYH$j0~h!5qinxfcvYZ52R`V@p2+}SC;QVLaD+q zn80xuIE9xridU4!&c0q$S|GRA<-ykD`qQ?XarAzfo* z&$z%>s5yXJ%(-zB{tM_P4X?`?V$83tVM~cv2NF9KLdkC!M1__($Us0aSJ-3A(>yfB z9`__xg5&#h{;~V66eVu{DU(WoW;JEywhcg|21#(__{qggsvwls za@k&m#Z_u2OFB6*(Or2aX+}Dmb3|dM)BC&6=~^(0Jvr81zufvq_(lHl@uNIiI9f%V zH&9(elEF^=F({mP7!Vy^gQ!||V}W_^$uN|CEWz}L;bMrriRV}n>Yrog+o!6d9asfp zh%6`9HlhCRG^p3NRjQs%#UTSRwJQFa=jFA%F1=7Tn^$cfc1kaEB$rm3K;t=T+qmcUjL6?pL4|8_kyD>-zC6hyhs;A zb+G6%`q6gb2@qPrJ{zV&+jV% zQ8^R;y&z|?d25;5#_X&68vivba>12wvR4b8+t2c}EM>Ip0Aspua%H++<^B%(wMGsP zwk)#M9u!V9ga5gOSvsf`P`f(m+jdJXD#ood9*cqpGc1KjX1-ETT17#Qo5x2S`3D|B*q~u`~y{CZ{ zaT6(0BPsg7N@)1czVZ72CN2YuWNZu-Q_zHQJWd6+t{a3`TakKJ+`&DZ<`FV?o;Zb* zQ?V}^YXi2tZaKi+q6BVPbmgdR51`Q%x~O6>ejwmg(w|~it(hvduzd}cD~hY|!kSiW zoNxJMxwUAVcK5Gc@jvZd30#cn9}i)Bi6tz`_ENf3(@905i%_kS*l0{MQw>uyW~Ng) zY7v{p-BN{G=}Vmw&}D%DC%JFcJZo%#~p7~A?AVn zi2xprID~%^TKT{p1YU!oi$ek*0b1sYJ3eGUe|z$NEd(5J;8BG*0wY%jR+~~uAcpI? z)PTCXK_Vh|bwg@+i4>iG#{7!e#KfJt{)7O@M6iJ%tlsqvjgi`n)LzLYqzXi9w$KW& zI1HS!h{YbB5($(n!kGfu4uDe~gH0#bIz(3TW3-(D7U?yZLzLPB=pun@uVE#0U&tzm z#IQgmM%S492s{KH--7tGn-(?AK#wovKM3|XP{W9~@gGI;KxqO6vbJkt#?ep^B9IXU zBPty#vh z+fO8Vlc=78B9Jh7gl%q&6B*c{I*TPhtl2srs=|0Y##+ost_)9y~0WwQt z%&c42Nhquvg@VI`G}woCdyo%=@qwdDiI28Ax|YE8bVaDup_u2HF@&895!p zY>aVaOKwcqOdBJM6l2^Esbh&}()oy=+${iLN{$%0#wPqx+nnY>e)zwKlL625sBrqa zidP5i^P&-nnAuTM)OC*Zt$;CMZbjTC{l5XqmGqZV2M*nzJdZBoKUj?&X94m5Eyr4b z&n(O#{{L7jYbE~w-$84>@|dEI4Tr;A-EFF~7x;G@_%rmgUf}PhD3J{OqbhZDoAnu> zn9q0#;J2E1>RhRcN}qx7Pq&-*m%axN2g_XM$eiFsFr4LQ2}1ZP)+}>dmYJ>OaS8ZZ zMGJo5Eee!HfYXi2WS$6Yl3fK7J_6LmoxH7jWt1cX<{EC!lV=65sNK0lyrp#5rDc^B z<3{c@Hs`pF+NSD=PsM}rgvo9f5BP9)-NJsmdGonV@CFRCv4}r%#B%rDZwHO{f9-W_ z)-<0mdEYbQ>CT%cW$YA=z0>mYH2cGxf#I9a_tY4^J2vndufq0eY=!s!C#L|Es1=gL`6M z=p>0)@6+?meE2ab-}hRbdum9*^lw@$x7>Eo9uazdd5@Lf4!C^!iveS{P1EE0^*I;R zcv{mnw@S6A>C6`+9@n{L#TGYt7aRF*%a6OdaJ03F`qpVZb8F5|9a~~fk#Yu-;=KK_nuVmsVglPbImTpB%o;tI+$p{lyoFGjFR7 zdwQgCyVa$*eUH>H=hUn?$$RSYpu)QUgX?kM%r@nI<2X6nGN$5|@NRD256;4|nhxyj zJuBaes)Me)>b~Fy|MgC(RVf#nPd3z-jkDRnntL*O`tyPTBgdZ@n0ZbRH^etM=(MUH zt9+y0jX~9Fi(VbuWE-t}&8+u|RV6_-QIAwtE%GWX+BxH(j>T78+bf^U2yZ)cTG>#6=$!GTzrpx$YJi4 zhWry7Rz?ojX6KAd7&p7}&n5m(OKVw+y=!7rmY%OMf9`S1OgekOx}fVB4W~W9W0MK3 zuP^zx?q;2Hj&)Zb;i}Q#<5Tp#?=P+P>6t}-k+>a@T3 zH7Ka5)#=x-Vp~$*ABwYmJI#@mIQ^|@k7Yh;r2&&SUi&a^_>`>HM^U4zs;lcRt%&#| zKfeE)n#&*ZU%q+tI$?XF>n#8Ny^gH%J{k7n{`u8AR+dBsmG#RgDKQ(iF43#NZKjd= zuytC^hvMQ2qsq?)k36_=ksvLtN9wW{lPbO(Kcw=fQf zKK)3_^Ud6$t_L=!d-i+8&a4Wz8m>OB$l!sm=Bg2Ef)(T?@yd&8Vwo0xkG*3&#gp)0yYju=*mqydwEd-FOsUbW38yw{ zv$8d&A6)r#Z>#0j-u>Ujj^5CxyQJGfhjiDv=093fdS>yupEc)B>V9CxDqLmYmhZ}^ zHvc+!hROEorok?oeAc#p-#v24i#aiGkM3OSdSu`8w+o*iK5Veve8lRDlVcm)JjzPV zrSGhEr3}qWFVT<3lV_(+^_c$nrvsY0+u0JGrpw9JU!72$IyL_A<&>{_-RV7MJ>DFX zb>#kp4^7K(@544_H*%jjuVXir+m>g)_sBR{Rm@vA;Z={jQvP96-@{*Kj-MY>%>VYe zruiy7sIe*ZK=3uKTj`Zk^INnt>KpGxSAN)}>YtvVTA(^CBwRmqeUn$lpJiGDlf8@t z5ogV8cb$)o`^_O7PZz0NkerEob4J6)e}4Sc8eV>#_RYIDi&lR~t%`B#QF-Uw8jpk7 z4mqly;r@r6dlX}>o5R`HCYNd~SmL~F&*m_@OuG>g#%Bh{`+LUCdwD%)o@@3+7w?Gr z^M{MHXJL18bCRQPNKF=J{w|qbdZ_T$XxFNQL65Ioa-9+4>b!S-zx4jR?qIHR^Sq(j zoOJce{<$yDx7f~GyggoY{(iQX>A?&7QC?rMt=xOOxq9vDfyUniGxRhL#!&F?Pv)4Erd zR6X9%K|9^R%Zh9F_0~;`qm@)=P`EtNQ2P zG=e=14IcE4xL??NwL|sM!DHs0dJ%dm=Uk6Pxm(@X>JRI&dt(kC_{rFQU$SqS!3^!f zQ$udw8YKDbK=f_90TnIJ0}5Jy)U$M1X`7iD_KluOrbln=;E1iRPX5;-%Tw|MCwhK+ z#og_@6@A8z4=S2JrzkKmaDD!Ubxug^Nwt>5Cj=}GtfeS0Nk zW~v)}x!lWif21t>^QQ}**DMOsTbP{ICw7{Jq1}kxrsMS8tCvoAc;h!-BkO2lQPr_{ zi-8&ip6(BWzW|eU^>WRgyUTO-X{QabEx$SZX3l{-jx#y^+>iX25MYJbE-((cGwJp}J#v>XCK%eZF{|ceZzPX6ev+p1SX$DvPSPzN^bLV_*ABV%x`tOjbGK zxME8E!!-}Rw@=En@=Fmt+j%x5%VlGsq21byt$)57;lJ^5NbSu2J&WJfhO)v(>Bs*0 z*zd-jv&Zh$RwZg)&MGRl3iGR3D;{9G>p}gRDtOf3_v|P z9vCz;YzxaoBJ@ZF0Ro{w7DYiNV?=-^BLY0ch*G;t6)f!dZ7=9s4;jKM;E^GoBm!*BGsDAVZP_9yKrvqe4fhbnI=Zx> ziUL}p4fALgQj3d4f=~v+GbWM>bCGqnrk*_$?6Kj2Xj?j+7Qi$H}AN z7~#pDMkSI3gCT7M_;7frZy~A^pAPp1VNOYN9vSiz777D6+(ppY2)%3z1P2XI39UXX zZX1HBgop?S`+zJg848O;wF2z<5K@zg+XaKzp~5gC=TT2a0b2Jj190n={35O9etlql1*MxgN@&{#PyvNuM;cN~(X58bPD_aq45K#2 z2pLrv!C-1e?MDcdJzq3RKnEh54J3SSgn>re3=|}gLCw4f;ZlJnlgE=ZCgmIygp1yz zc@@YV1~1FWBJyBZH*_^1#SI9HZwl{0K}mEOcshlEELMC8x|3KMX#~1Zc?4k!K#pD(JBW)& z;^Yz`05N8#AOB5`G|IJqUSn6j~HDKAfK5B!rPI&&X6tmxyMA zR%)RPB0|XEYA9b>1k`GZgK43I@QCz6Kxll4fe(feS}{WT3h@`=^>Ak~7#UcR92q7T zbkT{ns-)vCqQa7BFC>sHwGa|TV{9IIWVANfd$K)?!} zLy8(-vDyqL3Mn#T;)*12MhE+CbSK*egn)H0j?wf;$ScAxB>X`}DMtMy@D34N04dfO zjla#@pHkSBa3lny=saYDBersLFO`aok;u;mXp}SUc|>BgZAJbY(B3CNB8rfreNZS* z6v2{l0tk;!d8lYi-XR4(CW{h)EEdsbL!>aw(Rd~UsS?-K6j~;R@W$IFBvd$oVDdUkZL9}3=2lq zsguql@zyEHCnC88h$8t?h=+~VMq+wlk%+li`)S4q?hL3CN=NvH$ODaFM#ome6cF}l z`J-lbx^`_%30mf#dkao&z-U8?zaWn;^gm{n;F-exuceupQvdUJ(2^zar~!sNU&v!4 zgh40-#H6T;p4u}_T=3XfkOG<2al!ww|0FrN8Y*y*13x5i3O@#Q2&WIW6a^M1(F}E| z4=4n~f9_!Y3#fyLMV~y6F2+9?`qql$f1H_xa{T`tgkd`J@axdvGEgYu$n0<-KTtLv zQ;QJrWWjd0m5n$O`~sW%pkNvOQ%r1U?QjeDGq#Oe8yY+0NTsqypQ%AyAh7oknt+pP zP^cXqBH;0ae7W?B*sz_J%fi|W@eJWez)r&?Km;~$A@DI#ppH1U&=4q|a z26AA{T`^;%YmZUP0N|73K|PdbMLq4ZN$4Q7A88Oe*2e$d1AtWrIsJooS4vWnl9Z$* mB`HZsN>Y-Nl%ymjDM?96Qj(ICq$DN%f9PN9

diff --git a/twitter/view/smarty3/admin.tpl b/twitter/view/smarty3/admin.tpl index ad1e07e9..9efcb065 100644 --- a/twitter/view/smarty3/admin.tpl +++ b/twitter/view/smarty3/admin.tpl @@ -1,3 +1,3 @@ -{{include file="file:{{$field_input}}" field=$consumerkey}} -{{include file="file:{{$field_input}}" field=$consumersecret}} +{{include file="field_input.tpl" field=$consumerkey}} +{{include file="field_input.tpl" field=$consumersecret}}
diff --git a/uhremotestorage.tgz b/uhremotestorage.tgz index 4aa58096d8ce8de26c9e0fa783fb64922bdb1ea2..7a758b00d0714884bd790f37e5123e3b2d74e9b4 100755 GIT binary patch literal 1700 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 'Dropbox', ); */ -// $tpl = file_get_contents(dirname(__file__)."/settings.tpl"); $tpl = get_markup_template("settings.tpl", "addon/uhremotestorage/"); - - $includes = array( - '$field_input' => 'field_input.tpl', - '$field_select' => 'field_select.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $s .= replace_macros($tpl, $includes + array( + $s .= replace_macros($tpl, array( '$title' => 'Unhosted remote storage', '$desc' => sprintf( t('Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See
RemoteStorage WebFinger'), $uid ), '$url' => array( 'unhoestedurl', t('Template URL (with {category})'), $url, 'If your are using ownCloud, your unhosted url will be like http://HOST/apps/remoteStorage/WebDAV.php/USER/remoteStorage/{category}'), diff --git a/uhremotestorage/view/settings.tpl b/uhremotestorage/view/settings.tpl old mode 100755 new mode 100644 index 51650c85..22d7d608 --- a/uhremotestorage/view/settings.tpl +++ b/uhremotestorage/view/settings.tpl @@ -1,9 +1,9 @@

$title

$desc

- {{ inc $field_input with $field=$url }}{{ endinc }} - {{ inc $field_input with $field=$auth }}{{ endinc }} - {{ inc $field_select with $field=$api }}{{ endinc }} + {{ inc field_input.tpl with $field=$url }}{{ endinc }} + {{ inc field_input.tpl with $field=$auth }}{{ endinc }} + {{ inc field_select.tpl with $field=$api }}{{ endinc }}
diff --git a/uhremotestorage/view/smarty3/settings.tpl b/uhremotestorage/view/smarty3/settings.tpl index 217f069a..9a0a55f3 100644 --- a/uhremotestorage/view/smarty3/settings.tpl +++ b/uhremotestorage/view/smarty3/settings.tpl @@ -1,9 +1,9 @@

{{$title}}

{{$desc}}

- {{include file="file:{{$field_input}}" field=$url}} - {{include file="file:{{$field_input}}" field=$auth}} - {{include file="file:{{$field_select}}" field=$api}} + {{include file="field_input.tpl" field=$url}} + {{include file="field_input.tpl" field=$auth}} + {{include file="field_select.tpl" field=$api}}
diff --git a/widgets.tgz b/widgets.tgz index f3b1857838ac7c0594cf2b9c5c6c5a45f5296ec1..d89204f59ae1bec973dba92e42bdac79fa7d9d26 100755 GIT binary patch literal 4149 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 literal 3944 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 Date: Fri, 28 Dec 2012 10:53:32 -0500 Subject: [PATCH 11/40] communityhome: load 'home.html', more config settings, remove twillingham folder update README --- communityhome/README.md | 23 ++ communityhome/communityhome.css | 3 +- communityhome/communityhome.php | 263 ++++++++++---------- communityhome/twillingham/README | 3 - communityhome/twillingham/communityhome.php | 107 -------- communityhome/view/directory_item.tpl | 4 +- 6 files changed, 164 insertions(+), 239 deletions(-) delete mode 100644 communityhome/twillingham/README delete mode 100644 communityhome/twillingham/communityhome.php diff --git a/communityhome/README.md b/communityhome/README.md index 3cf610ec..21f2a946 100755 --- a/communityhome/README.md +++ b/communityhome/README.md @@ -9,3 +9,26 @@ choosed to be in site directory), last ten public photos and last ten In main content is shown the community stream. This plugin doesn't honour your community page visibility site setting: the community stream is shown also if you have choose to not show the community page. + +If 'home.html' is found in your friendica root, its content is inserted +before community stream + +Each elements can be show or not. At the moment, there is no admin page +for settings, so this settings must be added to yout .htconfig.php + + + $a->config['communityhome']['showcommunitystream'] = true; + $a->config['communityhome']['showlastlike'] = true; + $a->config['communityhome']['showlastphotos'] = true; + $a->config['communityhome']['showactiveusers'] = true; + $a->config['communityhome']['showlastusers'] = true; + +If you don't want to show something, set it to false. + +Note: +----- + +- Default is "false". With no settings in .htconfig.php, nothing is +shown, except login form and content of 'home.html' + +- Active users query can be heavy for db, and on some system don't work diff --git a/communityhome/communityhome.css b/communityhome/communityhome.css index 2efb6ebd..45a65537 100755 --- a/communityhome/communityhome.css +++ b/communityhome/communityhome.css @@ -39,4 +39,5 @@ aside .directory-photo-img { max-width: 48px; max-height: 48px; } aside #likes { margin: 0px; padding: 0px; list-style: none; } -aside #login-extra-links { overflow: auto; width: 100%; padding-top:120px;} +aside #div_id_remember { overflow: auto; width: 100%; padding-top:120px;} +#login_openid input { width: 160px; } diff --git a/communityhome/communityhome.php b/communityhome/communityhome.php index 8b831888..e2c3deeb 100755 --- a/communityhome/communityhome.php +++ b/communityhome/communityhome.php @@ -35,145 +35,151 @@ function communityhome_home(&$a, &$o){ $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); // last 12 users - $aside['$lastusers_title'] = t('Latest users'); - $aside['$lastusers_items'] = array(); - $sql_extra = ""; - $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); - $order = " ORDER BY `register_date` DESC "; + if (get_config('communityhome','showlastusers')===true){ + $aside['$lastusers_title'] = t('Latest users'); + $aside['$lastusers_items'] = array(); + $sql_extra = ""; + $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); + $order = " ORDER BY `register_date` DESC "; - $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` - FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` - WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", - 0, - 12 - ); -# $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); - $tpl = get_markup_template( 'directory_item.tpl', 'addon/communityhome/' ); - if(count($r)) { - $photo = 'thumb'; - foreach($r as $rr) { - $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); - $entry = replace_macros($tpl,array( - '$id' => $rr['id'], - '$profile-link' => $profile_link, - '$photo' => $a->get_cached_avatar_image($rr[$photo]), - '$alt-text' => $rr['name'], - )); - $aside['$lastusers_items'][] = $entry; + $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` + FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` + WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", + 0, + 12 + ); + # $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + $tpl = get_markup_template( 'directory_item.tpl', 'addon/communityhome/' ); + if(count($r)) { + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile_link' => $profile_link, + '$photo' => $a->get_cached_avatar_image($rr[$photo]), + '$alt_text' => $rr['name'], + )); + $aside['$lastusers_items'][] = $entry; + } } } - // 12 most active users (by posts and contacts) // this query don't work on some mysql versions - $r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM - (SELECT COUNT(`id`) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`, - (SELECT COUNT(`id`) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`, - ( - SELECT `contacts`,`items`,`ite`.`uid` FROM `con` RIGHT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` - UNION ALL - SELECT `contacts`,`items`,`con`.`uid` FROM `con` LEFT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` - ) AS `uni`, `user`, `profile` - WHERE `uni`.`uid`=`user`.`uid` - AND `uni`.`uid`=`profile`.`uid` AND `profile`.`publish`=1 - GROUP BY `uid` - ORDER BY `items` DESC,`contacts` DESC - LIMIT 0,10"); - if($r && count($r)) { - $aside['$activeusers_title'] = t('Most active users'); - $aside['$activeusers_items'] = array(); - - $photo = 'thumb'; - foreach($r as $rr) { - $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); - $entry = replace_macros($tpl,array( - '$id' => $rr['id'], - '$profile-link' => $profile_link, - '$photo' => $rr[$photo], - '$alt-text' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0')) - )); - $aside['$activeusers_items'][] = $entry; + if (get_config('communityhome','showactiveusers')===true){ + $r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM + (SELECT COUNT(`id`) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`, + (SELECT COUNT(`id`) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`, + ( + SELECT `contacts`,`items`,`ite`.`uid` FROM `con` RIGHT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` + UNION ALL + SELECT `contacts`,`items`,`con`.`uid` FROM `con` LEFT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` + ) AS `uni`, `user`, `profile` + WHERE `uni`.`uid`=`user`.`uid` + AND `uni`.`uid`=`profile`.`uid` AND `profile`.`publish`=1 + GROUP BY `uid` + ORDER BY `items` DESC,`contacts` DESC + LIMIT 0,10"); + if($r && count($r)) { + $aside['$activeusers_title'] = t('Most active users'); + $aside['$activeusers_items'] = array(); + + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile_link' => $profile_link, + '$photo' => $rr[$photo], + '$alt_text' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0')) + )); + $aside['$activeusers_items'][] = $entry; + } } } - // last 12 photos - $aside['$photos_title'] = t('Latest photos'); - $aside['$photos_items'] = array(); - $r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM - (SELECT `resource-id`, MAX(`scale`) as maxscale FROM `photo` - WHERE `profile`=0 AND `contact-id`=0 AND `album` NOT IN ('Contact Photos', '%s', 'Profile Photos', '%s') - AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`='' GROUP BY `resource-id`) AS `t1` - INNER JOIN `photo` ON `photo`.`resource-id`=`t1`.`resource-id` AND `photo`.`scale` = `t1`.`maxscale`, - `user` - WHERE `user`.`uid` = `photo`.`uid` - AND `user`.`blockwall`=0 - AND `user`.`hidewall` = 0 - ORDER BY `photo`.`edited` DESC - LIMIT 0, 12", - dbesc(t('Contact Photos')), - dbesc(t('Profile Photos')) - ); + if (get_config('communityhome','showlastphotos')===true){ + $aside['$photos_title'] = t('Latest photos'); + $aside['$photos_items'] = array(); + $r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM + (SELECT `resource-id`, MAX(`scale`) as maxscale FROM `photo` + WHERE `profile`=0 AND `contact-id`=0 AND `album` NOT IN ('Contact Photos', '%s', 'Profile Photos', '%s') + AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`='' GROUP BY `resource-id`) AS `t1` + INNER JOIN `photo` ON `photo`.`resource-id`=`t1`.`resource-id` AND `photo`.`scale` = `t1`.`maxscale`, + `user` + WHERE `user`.`uid` = `photo`.`uid` + AND `user`.`blockwall`=0 + AND `user`.`hidewall` = 0 + ORDER BY `photo`.`edited` DESC + LIMIT 0, 12", + dbesc(t('Contact Photos')), + dbesc(t('Profile Photos')) + ); - - if(count($r)) { -# $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); - $tpl = get_markup_template( 'directory_item.tpl', 'addon/communityhome/' ); - foreach($r as $rr) { - $photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id']; - $photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg'; - - $entry = replace_macros($tpl,array( - '$id' => $rr['id'], - '$profile-link' => $photo_page, - '$photo' => $photo_url, - '$alt-text' => $rr['username']." : ".$rr['desc'], - )); + + if(count($r)) { + # $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + $tpl = get_markup_template( 'directory_item.tpl', 'addon/communityhome/' ); + foreach($r as $rr) { + $photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id']; + $photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg'; + + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile_link' => $photo_page, + '$photo' => $photo_url, + '$alt_text' => $rr['username']." : ".$rr['desc'], + )); - $aside['$photos_items'][] = $entry; + $aside['$photos_items'][] = $entry; + } } } // last 10 liked items - $aside['$like_title'] = t('Latest likes'); - $aside['$like_items'] = array(); - $r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM - (SELECT `parent-uri`, `created`, `author-name` AS `liker`,`author-link` AS `liker-link` - FROM `item` WHERE `verb`='http://activitystrea.ms/schema/1.0/like' GROUP BY `parent-uri` ORDER BY `created` DESC) AS T1 - INNER JOIN `item` ON `item`.`uri`=`T1`.`parent-uri` - WHERE `T1`.`liker-link` LIKE '%s%%' OR `item`.`author-link` LIKE '%s%%' - GROUP BY `uri` - ORDER BY `T1`.`created` DESC - LIMIT 0,10", - $a->get_baseurl(),$a->get_baseurl() - ); + if (get_config('communityhome','showlastlike')===true){ + $aside['$like_title'] = t('Latest likes'); + $aside['$like_items'] = array(); + $r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM + (SELECT `parent-uri`, `created`, `author-name` AS `liker`,`author-link` AS `liker-link` + FROM `item` WHERE `verb`='http://activitystrea.ms/schema/1.0/like' GROUP BY `parent-uri` ORDER BY `created` DESC) AS T1 + INNER JOIN `item` ON `item`.`uri`=`T1`.`parent-uri` + WHERE `T1`.`liker-link` LIKE '%s%%' OR `item`.`author-link` LIKE '%s%%' + GROUP BY `uri` + ORDER BY `T1`.`created` DESC + LIMIT 0,10", + $a->get_baseurl(),$a->get_baseurl() + ); - foreach ($r as $rr) { - $author = '' . $rr['liker'] . ''; - $objauthor = '' . $rr['author-name'] . ''; - - //var_dump($rr['verb'],$rr['object-type']); killme(); - switch($rr['verb']){ - case 'http://activitystrea.ms/schema/1.0/post': - switch ($rr['object-type']){ - case 'http://activitystrea.ms/schema/1.0/event': - $post_type = t('event'); - break; - default: + foreach ($r as $rr) { + $author = '' . $rr['liker'] . ''; + $objauthor = '' . $rr['author-name'] . ''; + + //var_dump($rr['verb'],$rr['object-type']); killme(); + switch($rr['verb']){ + case 'http://activitystrea.ms/schema/1.0/post': + switch ($rr['object-type']){ + case 'http://activitystrea.ms/schema/1.0/event': + $post_type = t('event'); + break; + default: + $post_type = t('status'); + } + break; + default: + if ($rr['resource-id']){ + $post_type = t('photo'); + $m=array(); preg_match("/\[url=([^]]*)\]/", $rr['body'], $m); + $rr['plink'] = $m[1]; + } else { $post_type = t('status'); - } - break; - default: - if ($rr['resource-id']){ - $post_type = t('photo'); - $m=array(); preg_match("/\[url=([^]]*)\]/", $rr['body'], $m); - $rr['plink'] = $m[1]; - } else { - $post_type = t('status'); - } - } - $plink = '' . $post_type . ''; + } + } + $plink = '' . $post_type . ''; - $aside['$like_items'][] = sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink); - + $aside['$like_items'][] = sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink); + + } } # $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); @@ -182,8 +188,13 @@ function communityhome_home(&$a, &$o){ $o = '

' . ((x($a->config,'sitename')) ? sprintf( t("Welcome to %s") ,$a->config['sitename']) : "" ) . '

'; - $oldset = get_config('system','no_community_page'); - set_config('system','no_community_page', false); - $o .= community_content($a,1); - set_config('system','no_community_page', $oldset); + if(file_exists('home.html')) + $o = file_get_contents('home.html'); + + if (get_config('communityhome','showcommunitystream')===true){ + $oldset = get_config('system','no_community_page'); + set_config('system','no_community_page', false); + $o .= community_content($a,1); + set_config('system','no_community_page', $oldset); + } } diff --git a/communityhome/twillingham/README b/communityhome/twillingham/README deleted file mode 100644 index dbbe1419..00000000 --- a/communityhome/twillingham/README +++ /dev/null @@ -1,3 +0,0 @@ -This is a variant of the community home. Instead of displaying the community tab in the front page, we still use home.html, but we also add the latest users to the sidebar. - -Simply replace addon/communityhome/communityhome.php with this version then enable community home in your admin panel as usual. \ No newline at end of file diff --git a/communityhome/twillingham/communityhome.php b/communityhome/twillingham/communityhome.php deleted file mode 100644 index 102732ac..00000000 --- a/communityhome/twillingham/communityhome.php +++ /dev/null @@ -1,107 +0,0 @@ - - */ - - -require_once('mod/community.php'); - - -function communityhome_install() { - register_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home'); - logger("installed communityhome"); -} - -function communityhome_uninstall() { - unregister_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home'); - logger("removed communityhome"); -} - -function communityhome_home(&$a, &$o){ - // custom css - $a->page['htmlhead'] .= ''; - - $aside = array( - '$tab_1' => t('Login'), - '$tab_2' => t('OpenID'), - '$noOid' => get_config('system','no_openid'), - ); - - // login form - $aside['$login_title'] = t('Login'); - $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); - - // last 12 users - $aside['$lastusers_title'] = t('Latest users'); - $aside['$lastusers_items'] = array(); - $sql_extra = ""; - $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); - $order = " ORDER BY `register_date` DESC "; - - $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` - FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` - WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", - 0, - 12 - ); - $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); - if(count($r)) { - $photo = 'thumb'; - foreach($r as $rr) { - $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); - $entry = replace_macros($tpl,array( - '$id' => $rr['id'], - '$profile-link' => $profile_link, - '$photo' => $rr[$photo], - '$alt-text' => $rr['name'], - )); - $aside['$lastusers_items'][] = $entry; - } - } - - // 12 most active users (by posts and contacts) - // this query don't work on some mysql versions - $r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM - (SELECT COUNT(`id`) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`, - (SELECT COUNT(`id`) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`, - ( - SELECT `contacts`,`items`,`ite`.`uid` FROM `con` RIGHT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` - UNION ALL - SELECT `contacts`,`items`,`con`.`uid` FROM `con` LEFT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` - ) AS `uni`, `user`, `profile` - WHERE `uni`.`uid`=`user`.`uid` - AND `uni`.`uid`=`profile`.`uid` AND `profile`.`publish`=1 - GROUP BY `uid` - ORDER BY `items` DESC,`contacts` DESC - LIMIT 0,10"); - if($r && count($r)) { - $aside['$activeusers_title'] = t('Most active users'); - $aside['$activeusers_items'] = array(); - - $photo = 'thumb'; - foreach($r as $rr) { - $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); - $entry = replace_macros($tpl,array( - '$id' => $rr['id'], - '$profile-link' => $profile_link, - '$photo' => $rr[$photo], - '$alt-text' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0')) - )); - $aside['$activeusers_items'][] = $entry; - } - } - - - - - $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); - $a->page['aside'] = replace_macros($tpl, $aside); - $o = ''; - if(file_exists('home.html')) - - $o .= file_get_contents('home.html'); - -} diff --git a/communityhome/view/directory_item.tpl b/communityhome/view/directory_item.tpl index db1936e4..f32f5a4f 100755 --- a/communityhome/view/directory_item.tpl +++ b/communityhome/view/directory_item.tpl @@ -2,8 +2,8 @@
From 0ae7a3f42050b234741a258d1302f18c5ce6c6a2 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Fri, 28 Dec 2012 11:00:07 -0500 Subject: [PATCH 12/40] community home: update version --- communityhome/communityhome.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/communityhome/communityhome.php b/communityhome/communityhome.php index e2c3deeb..ba2af6de 100755 --- a/communityhome/communityhome.php +++ b/communityhome/communityhome.php @@ -2,7 +2,7 @@ /** * Name: Community home * Description: Show last community activity in homepage - * Version: 1.0 + * Version: 2.0 * Author: Fabio Comuni */ From 9c00bd1608cea9aa86fd00691c23d838758607bc Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Fri, 28 Dec 2012 11:01:14 -0500 Subject: [PATCH 13/40] community home: update tgz --- communityhome.tgz | Bin 4331 -> 4471 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/communityhome.tgz b/communityhome.tgz index 71f1f8e30f3e38731dbf8efd496e65f82623ba94..ab251425b711a5e6749dedbf1c4a8f56b036d49a 100755 GIT binary patch literal 4471 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 J8212p001{+!v_EW literal 4331 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 ZQ<=(CrZSbOOlA7g^k3O2d({AV008SYo=^Y) From cb77f46e9f0ab1b13ff74edb01d5de609e28535b Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 30 Dec 2012 22:59:12 +0100 Subject: [PATCH 14/40] privacy_image_cache: When a picture can't be retrieved after 10 seconds then show a blank picture --- privacy_image_cache/privacy_image_cache.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/privacy_image_cache/privacy_image_cache.php b/privacy_image_cache/privacy_image_cache.php index d98c6b6d..0e241e7e 100644 --- a/privacy_image_cache/privacy_image_cache.php +++ b/privacy_image_cache/privacy_image_cache.php @@ -128,7 +128,8 @@ function privacy_image_cache_init() { if (strpos($_REQUEST['url'], ".fbcdn.net/") and (substr($_REQUEST['url'], -6) == "_s.jpg")) $_REQUEST['url'] = substr($_REQUEST['url'], 0, -6)."_n.jpg"; - $img_str = fetch_url($_REQUEST['url'],true); + $redirects = 0; + $img_str = fetch_url($_REQUEST['url'],true, $redirects, 10); $tempfile = tempnam(get_config("system","temppath"), "cache"); file_put_contents($tempfile, $img_str); @@ -141,9 +142,9 @@ function privacy_image_cache_init() { $mime = "image/png"; $cachefile = ""; // Clear the cachefile so that the dummy isn't stored $valid = false; - $img = new Photo($img_str); + $img = new Photo($img_str, "image/png"); if($img->is_valid()) { - $img->scaleImage(1); + $img->scaleImage(10); $img_str = $img->imageString(); } //} else if (substr($img_str, 0, 6) == "GIF89a") { From f6d639122edc65fb93589a9d4afcdb1d16f604c9 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Jan 2013 16:11:07 +0100 Subject: [PATCH 15/40] twitter: It is now possible to mirror own postings from twitter to friendica --- twitter/twitter.php | 150 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 131 insertions(+), 19 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index 6cb2d9cd..ad657799 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -36,6 +36,8 @@ * Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin */ +define('TWITTER_DEFAULT_POLL_INTERVAL', 30); // given in minutes + function twitter_install() { // we need some hooks, for the configuration and for sending tweets register_hook('connector_settings', 'addon/twitter/twitter.php', 'twitter_settings'); @@ -43,6 +45,7 @@ function twitter_install() { register_hook('post_local', 'addon/twitter/twitter.php', 'twitter_post_local'); register_hook('notifier_normal', 'addon/twitter/twitter.php', 'twitter_post_hook'); register_hook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets'); + register_hook('cron', 'addon/twitter/twitter.php', 'twitter_cron'); logger("installed twitter"); } @@ -53,6 +56,7 @@ function twitter_uninstall() { unregister_hook('post_local', 'addon/twitter/twitter.php', 'twitter_post_local'); unregister_hook('notifier_normal', 'addon/twitter/twitter.php', 'twitter_post_hook'); unregister_hook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets'); + unregister_hook('cron', 'addon/twitter/twitter.php', 'twitter_cron'); // old setting - remove only unregister_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook'); @@ -72,8 +76,6 @@ function twitter_jot_nets(&$a,&$b) { $b .= '
' . t('Post to Twitter') . '
'; } - - } function twitter_settings_post ($a,$post) { @@ -87,20 +89,23 @@ function twitter_settings_post ($a,$post) { * if the twitter-disconnect checkbox is set, clear the OAuth key/secret pair * from the user configuration */ - del_pconfig( local_user(), 'twitter', 'consumerkey' ); - del_pconfig( local_user(), 'twitter', 'consumersecret' ); - del_pconfig( local_user(), 'twitter', 'oauthtoken' ); - del_pconfig( local_user(), 'twitter', 'oauthsecret' ); - del_pconfig( local_user(), 'twitter', 'post' ); - del_pconfig( local_user(), 'twitter', 'post_by_default' ); - del_pconfig( local_user(), 'twitter', 'post_taglinks'); + del_pconfig(local_user(), 'twitter', 'consumerkey'); + del_pconfig(local_user(), 'twitter', 'consumersecret'); + del_pconfig(local_user(), 'twitter', 'oauthtoken'); + del_pconfig(local_user(), 'twitter', 'oauthsecret'); + del_pconfig(local_user(), 'twitter', 'post'); + del_pconfig(local_user(), 'twitter', 'post_by_default'); + del_pconfig(local_user(), 'twitter', 'post_taglinks'); + del_pconfig(local_user(), 'twitter', 'lastid'); + del_pconfig(local_user(), 'twitter', 'mirror_posts'); + del_pconfig(local_user(), 'twitter', 'intelligent_shortening'); } else { if (isset($_POST['twitter-pin'])) { // if the user supplied us with a PIN from Twitter, let the magic of OAuth happen logger('got a Twitter PIN'); require_once('library/twitteroauth.php'); - $ckey = get_config('twitter', 'consumerkey' ); - $csecret = get_config('twitter', 'consumersecret' ); + $ckey = get_config('twitter', 'consumerkey'); + $csecret = get_config('twitter', 'consumersecret'); // the token and secret for which the PIN was generated were hidden in the settings // form as token and token2, we need a new connection to Twitter using these token // and secret to request a Access Token with the PIN @@ -119,6 +124,8 @@ function twitter_settings_post ($a,$post) { set_pconfig(local_user(),'twitter','post',intval($_POST['twitter-enable'])); set_pconfig(local_user(),'twitter','post_by_default',intval($_POST['twitter-default'])); set_pconfig(local_user(),'twitter','post_taglinks',intval($_POST['twitter-sendtaglinks'])); + set_pconfig(local_user(), 'twitter', 'mirror_posts', intval($_POST['twitter-mirror'])); + set_pconfig(local_user(), 'twitter', 'intelligent_shortening', intval($_POST['twitter-shortening'])); info( t('Twitter settings updated.') . EOL); }} } @@ -141,6 +148,10 @@ function twitter_settings(&$a,&$s) { $defchecked = (($defenabled) ? ' checked="checked" ' : ''); $linksenabled = get_pconfig(local_user(),'twitter','post_taglinks'); $linkschecked = (($linksenabled) ? ' checked="checked" ' : ''); + $mirrorenabled = get_pconfig(local_user(),'twitter','mirror_posts'); + $mirrorchecked = (($mirrorenabled) ? ' checked="checked" ' : ''); + $shorteningenabled = get_pconfig(local_user(),'twitter','intelligent_shortening'); + $shorteningchecked = (($shorteningenabled) ? ' checked="checked" ' : ''); $s .= '
'; $s .= '

'. t('Twitter Posting Settings') .'

'; @@ -198,6 +209,15 @@ function twitter_settings(&$a,&$s) { $s .= ''; $s .= ''; $s .= '
'; + + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= ''; + $s .= ''; + $s .= '
'; + $s .= ''; $s .= ''; $s .= '
'; @@ -385,15 +405,24 @@ function twitter_post_hook(&$a,&$b) { if($b['parent'] != $b['id']) return; + // if posts comes from twitter don't send it back + if($b['app'] == "twitter.com") + return; + logger('twitter post invoked'); load_pconfig($b['uid'], 'twitter'); - $ckey = get_config('twitter', 'consumerkey' ); - $csecret = get_config('twitter', 'consumersecret' ); - $otoken = get_pconfig($b['uid'], 'twitter', 'oauthtoken' ); - $osecret = get_pconfig($b['uid'], 'twitter', 'oauthsecret' ); + $ckey = get_config('twitter', 'consumerkey'); + $csecret = get_config('twitter', 'consumersecret'); + $otoken = get_pconfig($b['uid'], 'twitter', 'oauthtoken'); + $osecret = get_pconfig($b['uid'], 'twitter', 'oauthsecret'); + $intelligent_shortening = get_pconfig($b['uid'], 'twitter', 'intelligent_shortening'); + + // Global setting overrides this + if (get_config('twitter','intelligent_shortening')) + $intelligent_shortening = get_config('twitter','intelligent_shortening'); if($ckey && $csecret && $otoken && $osecret) { logger('twitter: we have customer key and oauth stuff, going to send.', LOGGER_DEBUG); @@ -403,9 +432,6 @@ function twitter_post_hook(&$a,&$b) { $tweet = new TwitterOAuth($ckey,$csecret,$otoken,$osecret); // in theory max char is 140 but T. uses t.co to make links // longer so we give them 10 characters extra - - $intelligent_shortening = get_config('twitter','intelligent_shortening'); - if (!$intelligent_shortening) { $max_char = 130; // max. length for a tweet // we will only work with up to two times the length of the dent @@ -509,7 +535,7 @@ function twitter_plugin_admin(&$a, &$o){ $includes = array( '$field_input' => 'field_input.tpl', ); - $includes = set_template_includes($a->theme['template_engine'], $includes); + //$includes = set_template_includes($a->theme['template_engine'], $includes); $o = replace_macros($t, $includes + array( '$submit' => t('Submit'), @@ -518,3 +544,89 @@ function twitter_plugin_admin(&$a, &$o){ '$consumersecret' => array('consumersecret', t('Consumer secret'), get_config('twitter', 'consumersecret' ), '') )); } + +function twitter_cron($a,$b) { + $last = get_config('twitter','last_poll'); + + $poll_interval = intval(get_config('twitter','poll_interval')); + if(! $poll_interval) + $poll_interval = TWITTER_DEFAULT_POLL_INTERVAL; + + if($last) { + $next = $last + ($poll_interval * 60); + if($next > time()) { + logger('twitter: poll intervall not reached'); + return; + } + } + logger('twitter: cron_start'); + + $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'twitter' AND `k` = 'mirror_posts' AND `v` = '1' ORDER BY RAND() "); + if(count($r)) { + foreach($r as $rr) { + logger('twitter: fetching for user '.$rr['uid']); + twitter_fetchtimeline($a, $rr['uid']); + } + } + + logger('twitter: cron_end'); + + set_config('twitter','last_poll', time()); +} + +function twitter_fetchtimeline($a, $uid) { + $ckey = get_config('twitter', 'consumerkey'); + $csecret = get_config('twitter', 'consumersecret'); + $otoken = get_pconfig($uid, 'twitter', 'oauthtoken'); + $osecret = get_pconfig($uid, 'twitter', 'oauthsecret'); + $lastid = get_pconfig($uid, 'twitter', 'lastid'); + + require_once('library/twitteroauth.php'); + $connection = new TwitterOAuth($ckey,$csecret,$otoken,$osecret); + + $parameters = array("exclude_replies" => true, "trim_user" => true, "contributor_details" => false, "include_rts" => false); + + if ($lastid <> "") + $parameters["since_id"] = $lastid; + + $items = $connection->get('statuses/user_timeline', $parameters); + $posts = array_reverse($items); + + foreach ($posts as $post) { + if ($post->id_str > $lastid) + $lastid = $post->id_str; + + if (!strpos($post->source, $a->get_hostname())) { + $_SESSION["authenticated"] = true; + $_SESSION["uid"] = $uid; + + $_REQUEST["type"] = "wall"; + $_REQUEST["api_source"] = true; + $_REQUEST["profile_uid"] = $uid; + $_REQUEST["source"] = "twitter.com"; + + //$_REQUEST["date"] = $post->created_at; + + $_REQUEST["body"] = $post->text; + if (is_string($post->place->name)) + $_REQUEST["location"] = $post->place->name; + + if (is_string($post->place->full_name)) + $_REQUEST["location"] = $post->place->full_name; + + if (is_array($post->geo->coordinates)) + $_REQUEST["coord"] = $post->geo->coordinates[0]." ".$post->geo->coordinates[1]; + + if (is_array($post->coordinates->coordinates)) + $_REQUEST["coord"] = $post->coordinates->coordinates[1]." ".$post->coordinates->coordinates[0]; + + //print_r($_REQUEST); + logger('twitter: posting for user '.$uid); + + require_once('mod/item.php'); + item_post($a); + + } + } + set_pconfig($uid, 'twitter', 'lastid', $lastid); +} From 1f5f0541edb211b4a14f7eb46416b71bee75d0d2 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Jan 2013 18:20:56 +0100 Subject: [PATCH 16/40] statusnet: Now you can mirror posts from statusnet to friendica --- statusnet/statusnet.php | 161 ++++++++++++++++++++++++++++++++++------ twitter/twitter.php | 2 +- 2 files changed, 139 insertions(+), 24 deletions(-) diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 4781fcc2..9167425a 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -30,6 +30,8 @@ * Thank you guys for the Twitter compatible API! */ +define('STATUSNET_DEFAULT_POLL_INTERVAL', 30); // given in minutes + require_once('library/twitteroauth.php'); class StatusNetOAuth extends TwitterOAuth { @@ -104,6 +106,7 @@ function statusnet_install() { register_hook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); register_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local'); register_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); + register_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); logger("installed statusnet"); } @@ -114,6 +117,7 @@ function statusnet_uninstall() { unregister_hook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); unregister_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local'); unregister_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets'); + unregister_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron'); // old setting - remove only unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook'); @@ -131,13 +135,10 @@ function statusnet_jot_nets(&$a,&$b) { $statusnet_defpost = get_pconfig(local_user(),'statusnet','post_by_default'); $selected = ((intval($statusnet_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '
' - . t('Post to StatusNet') . '
'; + . t('Post to StatusNet') . '
'; } } - - - function statusnet_settings_post ($a,$post) { if(! local_user()) return; @@ -148,14 +149,17 @@ function statusnet_settings_post ($a,$post) { /*** * if the statusnet-disconnect checkbox is set, clear the statusnet configuration */ - del_pconfig( local_user(), 'statusnet', 'consumerkey' ); - del_pconfig( local_user(), 'statusnet', 'consumersecret' ); - del_pconfig( local_user(), 'statusnet', 'post' ); - del_pconfig( local_user(), 'statusnet', 'post_by_default' ); - del_pconfig( local_user(), 'statusnet', 'oauthtoken' ); - del_pconfig( local_user(), 'statusnet', 'oauthsecret' ); - del_pconfig( local_user(), 'statusnet', 'baseapi' ); - del_pconfig( local_user(), 'statusnet', 'post_taglinks'); + del_pconfig(local_user(), 'statusnet', 'consumerkey'); + del_pconfig(local_user(), 'statusnet', 'consumersecret'); + del_pconfig(local_user(), 'statusnet', 'post'); + del_pconfig(local_user(), 'statusnet', 'post_by_default'); + del_pconfig(local_user(), 'statusnet', 'oauthtoken'); + del_pconfig(local_user(), 'statusnet', 'oauthsecret'); + del_pconfig(local_user(), 'statusnet', 'baseapi'); + del_pconfig(local_user(), 'statusnet', 'post_taglinks'); + del_pconfig(local_user(), 'statusnet', 'lastid'); + del_pconfig(local_user(), 'statusnet', 'mirror_posts'); + del_pconfig(local_user(), 'statusnet', 'intelligent_shortening'); } else { if (isset($_POST['statusnet-preconf-apiurl'])) { /*** @@ -229,6 +233,8 @@ function statusnet_settings_post ($a,$post) { set_pconfig(local_user(),'statusnet','post',intval($_POST['statusnet-enable'])); set_pconfig(local_user(),'statusnet','post_by_default',intval($_POST['statusnet-default'])); set_pconfig(local_user(),'statusnet','post_taglinks',intval($_POST['statusnet-sendtaglinks'])); + set_pconfig(local_user(), 'statusnet', 'mirror_posts', intval($_POST['statusnet-mirror'])); + set_pconfig(local_user(), 'statusnet', 'intelligent_shortening', intval($_POST['statusnet-shortening'])); info( t('StatusNet settings updated.') . EOL); }}}} } @@ -253,6 +259,12 @@ function statusnet_settings(&$a,&$s) { $defchecked = (($defenabled) ? ' checked="checked" ' : ''); $linksenabled = get_pconfig(local_user(),'statusnet','post_taglinks'); $linkschecked = (($linksenabled) ? ' checked="checked" ' : ''); + + $mirrorenabled = get_pconfig(local_user(),'statusnet','mirror_posts'); + $mirrorchecked = (($mirrorenabled) ? ' checked="checked" ' : ''); + $shorteningenabled = get_pconfig(local_user(),'statusnet','intelligent_shortening'); + $shorteningchecked = (($shorteningenabled) ? ' checked="checked" ' : ''); + $s .= '
'; $s .= '

'. t('StatusNet Posting Settings').'

'; @@ -342,6 +354,15 @@ function statusnet_settings(&$a,&$s) { $s .= ''; $s .= ''; $s .= '
'; + + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= ''; + $s .= ''; + $s .= '
'; + $s .= ''; $s .= ''; $s .= '
'; @@ -523,20 +544,31 @@ function statusnet_post_hook(&$a,&$b) { if(! strstr($b['postopts'],'statusnet')) return; + // if posts comes from statusnet don't send it back + if($b['app'] == "StatusNet") + return; + + logger('statusnet post invoked'); + load_pconfig($b['uid'], 'statusnet'); - + $api = get_pconfig($b['uid'], 'statusnet', 'baseapi'); - $ckey = get_pconfig($b['uid'], 'statusnet', 'consumerkey' ); - $csecret = get_pconfig($b['uid'], 'statusnet', 'consumersecret' ); - $otoken = get_pconfig($b['uid'], 'statusnet', 'oauthtoken' ); - $osecret = get_pconfig($b['uid'], 'statusnet', 'oauthsecret' ); + $ckey = get_pconfig($b['uid'], 'statusnet', 'consumerkey'); + $csecret = get_pconfig($b['uid'], 'statusnet', 'consumersecret'); + $otoken = get_pconfig($b['uid'], 'statusnet', 'oauthtoken'); + $osecret = get_pconfig($b['uid'], 'statusnet', 'oauthsecret'); + $intelligent_shortening = get_pconfig($b['uid'], 'statusnet', 'intelligent_shortening'); + + // Global setting overrides this + if (get_config('statusnet','intelligent_shortening')) + $intelligent_shortening = get_config('statusnet','intelligent_shortening'); if($ckey && $csecret && $otoken && $osecret) { require_once('include/bbcode.php'); $dent = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret); $max_char = $dent->get_maxlength(); // max. length for a dent - // we will only work with up to two times the length of the dent + // we will only work with up to two times the length of the dent // we can later send to StatusNet. This way we can "gain" some // information during shortening of potential links but do not // shorten all the links in a 200000 character long essay. @@ -697,14 +729,97 @@ function statusnet_plugin_admin(&$a, &$o){ 'key' => Array("key[$id]", t("Consumer Key"), "", ""), ); - $t = get_markup_template( "admin.tpl", "addon/statusnet/" ); $o = replace_macros($t, array( '$submit' => t('Submit'), - '$sites' => $sitesform, - )); - - } + +function statusnet_cron($a,$b) { + $last = get_config('statusnet','last_poll'); + + $poll_interval = intval(get_config('statusnet','poll_interval')); + if(! $poll_interval) + $poll_interval = STATUSNET_DEFAULT_POLL_INTERVAL; + + if($last) { + $next = $last + ($poll_interval * 60); + if($next > time()) { + logger('statusnet: poll intervall not reached'); + return; + } + } + logger('statusnet: cron_start'); + + $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'statusnet' AND `k` = 'mirror_posts' AND `v` = '1' ORDER BY RAND() "); + if(count($r)) { + foreach($r as $rr) { + logger('statusnet: fetching for user '.$rr['uid']); + statusnet_fetchtimeline($a, $rr['uid']); + } + } + + logger('statusnet: cron_end'); + + set_config('statusnet','last_poll', time()); +} + +function statusnet_fetchtimeline($a, $uid) { + $ckey = get_pconfig($uid, 'statusnet', 'consumerkey'); + $csecret = get_pconfig($uid, 'statusnet', 'consumersecret'); + $api = get_pconfig($uid, 'statusnet', 'baseapi'); + $otoken = get_pconfig($uid, 'statusnet', 'oauthtoken'); + $osecret = get_pconfig($uid, 'statusnet', 'oauthsecret'); + $lastid = get_pconfig($uid, 'statusnet', 'lastid'); + + $connection = new StatusNetOAuth($api, $ckey,$csecret,$otoken,$osecret); + + $parameters = array("exclude_replies" => true, "trim_user" => true, "contributor_details" => false, "include_rts" => false); + + if ($lastid <> "") + $parameters["since_id"] = $lastid; + + $items = $connection->get('statuses/user_timeline', $parameters); + $posts = array_reverse($items); + + foreach ($posts as $post) { + if ($post->id > $lastid) + $lastid = $post->id; + + if (!strpos($post->source, $a->get_hostname())) { + $_SESSION["authenticated"] = true; + $_SESSION["uid"] = $uid; + + $_REQUEST["type"] = "wall"; + $_REQUEST["api_source"] = true; + $_REQUEST["profile_uid"] = $uid; + $_REQUEST["source"] = "StatusNet"; + + //$_REQUEST["date"] = $post->created_at; + + $_REQUEST["body"] = $post->text; + if (is_string($post->place->name)) + $_REQUEST["location"] = $post->place->name; + + if (is_string($post->place->full_name)) + $_REQUEST["location"] = $post->place->full_name; + + if (is_array($post->geo->coordinates)) + $_REQUEST["coord"] = $post->geo->coordinates[0]." ".$post->geo->coordinates[1]; + + if (is_array($post->coordinates->coordinates)) + $_REQUEST["coord"] = $post->coordinates->coordinates[1]." ".$post->coordinates->coordinates[0]; + + //print_r($_REQUEST); + if ($_REQUEST["body"] != "") { + logger('statusnet: posting for user '.$uid); + + require_once('mod/item.php'); + item_post($a); + } + } + } + set_pconfig($uid, 'statusnet', 'lastid', $lastid); +} + diff --git a/twitter/twitter.php b/twitter/twitter.php index ad657799..cde64ae2 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -74,7 +74,7 @@ function twitter_jot_nets(&$a,&$b) { $tw_defpost = get_pconfig(local_user(),'twitter','post_by_default'); $selected = ((intval($tw_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '
' - . t('Post to Twitter') . '
'; + . t('Post to Twitter') . '
'; } } From 285253e15e97484435f09173bf4373a476632ad9 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 1 Jan 2013 18:30:47 +0100 Subject: [PATCH 17/40] statusnet: Retweets shouldn't be mirrored --- statusnet/statusnet.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 9167425a..fa417665 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -787,6 +787,9 @@ function statusnet_fetchtimeline($a, $uid) { if ($post->id > $lastid) $lastid = $post->id; + if (is_object($post->retweeted_status)) + continue; + if (!strpos($post->source, $a->get_hostname())) { $_SESSION["authenticated"] = true; $_SESSION["uid"] = $uid; From f6d9ced311a9d6eb6e6d5b23bcf33820127c1016 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Jan 2013 23:18:15 +0100 Subject: [PATCH 18/40] fbpost: Now you can mirror public facebook posts from your wall to friendica --- fbpost/fbpost.php | 231 ++++++++++++++++++++++++++++++++++++++-- statusnet/statusnet.php | 2 +- twitter/twitter.php | 8 +- 3 files changed, 226 insertions(+), 15 deletions(-) diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index ab49c303..cdb1f05a 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -21,7 +21,8 @@ * authenticate to your site to establish identity. We will address this * in a future release. */ - + +define('FACEBOOK_DEFAULT_POLL_INTERVAL', 5); // given in minutes require_once('include/security.php'); @@ -32,6 +33,7 @@ function fbpost_install() { register_hook('connector_settings', 'addon/fbpost/fbpost.php', 'fbpost_plugin_settings'); register_hook('enotify', 'addon/fbpost/fbpost.php', 'fbpost_enotify'); register_hook('queue_predeliver', 'addon/fbpost/fbpost.php', 'fbpost_queue_hook'); + register_hook('cron', 'addon/fbpost/fbpost.php', 'fbpost_cron'); } @@ -42,8 +44,7 @@ function fbpost_uninstall() { unregister_hook('connector_settings', 'addon/fbpost/fbpost.php', 'fbpost_plugin_settings'); unregister_hook('enotify', 'addon/fbpost/fbpost.php', 'fbpost_enotify'); unregister_hook('queue_predeliver', 'addon/fbpost/fbpost.php', 'fbpost_queue_hook'); - - + unregister_hook('cron', 'addon/fbpost/fbpost.php', 'fbpost_cron'); } @@ -140,6 +141,9 @@ function fbpost_post(&$a) { $value = ((x($_POST,'post_by_default')) ? intval($_POST['post_by_default']) : 0); set_pconfig($uid,'facebook','post_by_default', $value); + $value = ((x($_POST,'mirror_posts')) ? intval($_POST['mirror_posts']) : 0); + set_pconfig($uid,'facebook','mirror_posts', $value); + $value = ((x($_POST,'suppress_view_on_friendica')) ? intval($_POST['suppress_view_on_friendica']) : 0); set_pconfig($uid,'facebook','suppress_view_on_friendica', $value); @@ -234,6 +238,10 @@ function fbpost_content(&$a) { $checked = (($suppress_view_on_friendica) ? ' checked="checked" ' : ''); $o .= '' . ' ' . t('Suppress "View on friendica"') . EOL; + $mirror_posts = get_pconfig(local_user(),'facebook','mirror_posts'); + $checked = (($mirror_posts) ? ' checked="checked" ' : ''); + $o .= '' . ' ' . t('Mirror wall posts from facebook to friendica.') . EOL; + // List all pages $post_to_page = get_pconfig(local_user(),'facebook','post_to_page'); $page_access_token = get_pconfig(local_user(),'facebook','page_access_token'); @@ -386,6 +394,10 @@ function fbpost_post_hook(&$a,&$b) { if($b['deleted'] || ($b['created'] !== $b['edited'])) return; + // if post comes from facebook don't send it back + if($b['app'] == "Facebook") + return; + /** * Post to Facebook stream */ @@ -931,28 +943,28 @@ function fbpost_queue_hook(&$a,&$b) { * @return bool|string */ function fbpost_get_app_access_token() { - + $acc_token = get_config('facebook','app_access_token'); - + if ($acc_token !== false) return $acc_token; - + $appid = get_config('facebook','appid'); $appsecret = get_config('facebook', 'appsecret'); - + if ($appid === false || $appsecret === false) { logger('fb_get_app_access_token: appid and/or appsecret not set', LOGGER_DEBUG); return false; } logger('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . '&grant_type=client_credentials', LOGGER_DATA); $x = fetch_url('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . '&grant_type=client_credentials'); - + if(strpos($x,'access_token=') !== false) { logger('fb_get_app_access_token: returned access token: ' . $x, LOGGER_DATA); - + $token = str_replace('access_token=', '', $x); if(strpos($token,'&') !== false) $token = substr($token,0,strpos($token,'&')); - + if ($token == "") { logger('fb_get_app_access_token: empty token: ' . $x, LOGGER_DEBUG); return false; @@ -965,3 +977,202 @@ function fbpost_get_app_access_token() { } } +function fbpost_cron($a,$b) { + $last = get_config('facebook','last_poll'); + + $poll_interval = intval(get_config('facebook','poll_interval')); + if(! $poll_interval) + $poll_interval = FACEBOOK_DEFAULT_POLL_INTERVAL; + + if($last) { + $next = $last + ($poll_interval * 60); + if($next > time()) { + logger('facebook: poll intervall not reached'); + return; + } + } + logger('facebook: cron_start'); + + $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'facebook' AND `k` = 'mirror_posts' AND `v` = '1' ORDER BY RAND() "); + if(count($r)) { + foreach($r as $rr) { + logger('facebook: fetching for user '.$rr['uid']); + fbpost_fetchwall($a, $rr['uid']); + } + } + + logger('facebook: cron_end'); + + set_config('facebook','last_poll', time()); +} + +function fbpost_fetchwall($a, $uid) { + $access_token = get_pconfig($uid,'facebook','access_token'); + $lastcreated = get_pconfig($uid,'facebook','last_created'); + $lastcreated = ""; + + $url = 'https://graph.facebook.com/me/feed?access_token='.$access_token; + + if ($lastcreated != "") + $url .= "&since=".urlencode($lastcreated); + + $feed = fetch_url($url); + $data = json_decode($feed); + $items = array_reverse($data->data); + + foreach ($items as $item) { + if ($item->created_time > $lastcreated) + $lastcreated = $item->created_time; + + if ($item->application->id == get_config('facebook','appid')) + continue; + + if(isset($item->privacy) && $item->privacy->value !== 'EVERYONE') + continue; + + + $_SESSION["authenticated"] = true; + $_SESSION["uid"] = $uid; + + $_REQUEST["type"] = "wall"; + $_REQUEST["api_source"] = true; + $_REQUEST["profile_uid"] = $uid; + $_REQUEST["source"] = "Facebook"; + + $_REQUEST["body"] = (isset($item->message) ? escape_tags($item->message) : ''); + + if(isset($item->name) and isset($item->link)) + $_REQUEST["body"] .= "\n\n[bookmark=".$item->link."]".$item->name."[/bookmark]"; + elseif (isset($item->name)) + $_REQUEST["body"] .= "\n\n[b]" . $item->name."[/b]"; + + if(isset($item->caption)) { + if(!isset($item->name) and isset($item->link)) + $_REQUEST["body"] .= "\n\n[bookmark=".$item->link."]".$item->caption."[/bookmark]"; + //else + // $_REQUEST["body"] .= "[i]" . $item->caption."[/i]\n"; + } + + if(!isset($item->caption) and !isset($item->name)) { + if (isset($item->link)) + $_REQUEST["body"] .= "\n[url]".$item->link."[/url]\n"; + else + $_REQUEST["body"] .= "\n"; + } + + $quote = ""; + if(isset($item->description)) + $quote = $item->description; + + if (isset($item->properties)) + foreach ($item->properties as $property) + $quote .= "\n".$property->name.": [url=".$property->href."]".$property->text."[/url]"; + + if ($quote) + $_REQUEST["body"] .= "\n[quote]".$quote."[/quote]"; + + // Only import the picture when the message is no video + // oembed display a picture of the video as well + if ($item->type != "video") { + if(isset($item->picture) && isset($item->link)) + $_REQUEST["body"] .= "\n".'[url='.$item->link.'][img]'.fpost_cleanpicture($item->picture).'[/img][/url]'; + else { + if (isset($item->picture)) + $_REQUEST["body"] .= "\n".'[img]'.fpost_cleanpicture($item->picture).'[/img]'; + // if just a link, it may be a wall photo - check + if(isset($item->link)) + $_REQUEST["body"] .= fbpost_get_photo($uid,$item->link); + } + } + + if (($datarray['app'] == "Events") and isset($item->actions)) + foreach ($item->actions as $action) + if ($action->name == "View") + $_REQUEST["body"] .= " [url=".$action->link."]".$item->story."[/url]"; + + if(trim($_REQUEST["body"]) == '') { + logger('facebook: empty body '.$item->id.' '.print_r($item, true)); + continue; + } + + $_REQUEST["body"] = trim($_REQUEST["body"]); + + if (isset($item->place)) { + if ($item->place->name or $item->place->location->street or + $item->place->location->city or $item->place->location->country) { + $_REQUEST["location"] = ''; + if ($item->place->name) + $_REQUEST["location"] .= $item->place->name; + if ($item->place->location->street) + $_REQUEST["location"] .= " ".$item->place->location->street; + if ($item->place->location->city) + $_REQUEST["location"] .= " ".$item->place->location->city; + if ($item->place->location->country) + $_REQUEST["location"] .= " ".$item->place->location->country; + + $_REQUEST["location"] = trim($_REQUEST["location"]); + } + if ($item->place->location->latitude and $item->place->location->longitude) + $_REQUEST["coord"] = substr($item->place->location->latitude, 0, 8) + .' '.substr($item->place->location->longitude, 0, 8); + } + + //print_r($_REQUEST); + logger('facebook: posting for user '.$uid); + + require_once('mod/item.php'); + item_post($a); + } + + set_pconfig($uid,'facebook','last_created', $lastcreated); +} + +function fbpost_get_photo($uid,$link) { + $access_token = get_pconfig($uid,'facebook','access_token'); + if(! $access_token || (! stristr($link,'facebook.com/photo.php'))) + return ""; + + $ret = preg_match('/fbid=([0-9]*)/',$link,$match); + if($ret) + $photo_id = $match[1]; + else + return ""; + + $x = fetch_url('https://graph.facebook.com/'.$photo_id.'?access_token='.$access_token); + $j = json_decode($x); + if($j->picture) + return "\n\n".'[url='.$link.'][img]'.fpost_cleanpicture($j->picture).'[/img][/url]'; + + return ""; +} + +function fpost_cleanpicture($image) { + + if (strpos($image, ".fbcdn.net/") and (substr($image, -6) == "_s.jpg")) + $image = substr($image, 0, -6)."_n.jpg"; + + $queryvar = fbpost_parse_query($image); + if ($queryvar['url'] != "") + $image = urldecode($queryvar['url']); + + return $image; +} + +function fbpost_parse_query($var) { + /** + * Use this function to parse out the query array element from + * the output of parse_url(). + */ + $var = parse_url($var, PHP_URL_QUERY); + $var = html_entity_decode($var); + $var = explode('&', $var); + $arr = array(); + + foreach($var as $val) { + $x = explode('=', $val); + $arr[$x[0]] = $x[1]; + } + + unset($val, $x, $var); + return $arr; +} diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index fa417665..1a42307c 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -30,7 +30,7 @@ * Thank you guys for the Twitter compatible API! */ -define('STATUSNET_DEFAULT_POLL_INTERVAL', 30); // given in minutes +define('STATUSNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes require_once('library/twitteroauth.php'); diff --git a/twitter/twitter.php b/twitter/twitter.php index cde64ae2..3056f57b 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -36,7 +36,7 @@ * Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin */ -define('TWITTER_DEFAULT_POLL_INTERVAL', 30); // given in minutes +define('TWITTER_DEFAULT_POLL_INTERVAL', 5); // given in minutes function twitter_install() { // we need some hooks, for the configuration and for sending tweets @@ -405,8 +405,8 @@ function twitter_post_hook(&$a,&$b) { if($b['parent'] != $b['id']) return; - // if posts comes from twitter don't send it back - if($b['app'] == "twitter.com") + // if post comes from twitter don't send it back + if($b['app'] == "Twitter") return; logger('twitter post invoked'); @@ -603,7 +603,7 @@ function twitter_fetchtimeline($a, $uid) { $_REQUEST["type"] = "wall"; $_REQUEST["api_source"] = true; $_REQUEST["profile_uid"] = $uid; - $_REQUEST["source"] = "twitter.com"; + $_REQUEST["source"] = "Twitter"; //$_REQUEST["date"] = $post->created_at; From 88638d2338e21bd96ad33e0a13eebdfead908925 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Jan 2013 23:38:15 +0100 Subject: [PATCH 19/40] fbpost: Now groups and pages can be mirrored as well --- fbpost/fbpost.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index cdb1f05a..9c2ee0cb 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -1008,10 +1008,13 @@ function fbpost_cron($a,$b) { function fbpost_fetchwall($a, $uid) { $access_token = get_pconfig($uid,'facebook','access_token'); + $post_to_page = get_pconfig($uid,'facebook','post_to_page'); $lastcreated = get_pconfig($uid,'facebook','last_created'); - $lastcreated = ""; - $url = 'https://graph.facebook.com/me/feed?access_token='.$access_token; + if ((int)$post_to_page == 0) + $post_to_page = "me"; + + $url = "https://graph.facebook.com/".$post_to_page."/feed?access_token=".$access_token; if ($lastcreated != "") $url .= "&since=".urlencode($lastcreated); From 3c875dcf6e67d4e196f9c0eb7b19e8b515b5afe4 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Jan 2013 23:57:56 +0100 Subject: [PATCH 20/40] statusnet: Answers were mirrored as well - now there's a check against that. --- statusnet/statusnet.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 1a42307c..d5097c13 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -790,6 +790,9 @@ function statusnet_fetchtimeline($a, $uid) { if (is_object($post->retweeted_status)) continue; + if ($post->in_reply_to_status_id != "") + continue; + if (!strpos($post->source, $a->get_hostname())) { $_SESSION["authenticated"] = true; $_SESSION["uid"] = $uid; From cb36c31f55a02ca1f5d35c42881856557ddc0e28 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 2 Jan 2013 21:05:14 +0100 Subject: [PATCH 21/40] fbpost: Some public posts weren't fetched. --- fbpost/fbpost.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index 9c2ee0cb..890f805b 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -1030,10 +1030,9 @@ function fbpost_fetchwall($a, $uid) { if ($item->application->id == get_config('facebook','appid')) continue; - if(isset($item->privacy) && $item->privacy->value !== 'EVERYONE') + if(isset($item->privacy) && ($item->privacy->value !== 'EVERYONE') && ($item->privacy->value !== '')) continue; - $_SESSION["authenticated"] = true; $_SESSION["uid"] = $uid; @@ -1088,10 +1087,11 @@ function fbpost_fetchwall($a, $uid) { } } - if (($datarray['app'] == "Events") and isset($item->actions)) + /*if (($datarray['app'] == "Events") and isset($item->actions)) foreach ($item->actions as $action) if ($action->name == "View") $_REQUEST["body"] .= " [url=".$action->link."]".$item->story."[/url]"; + */ if(trim($_REQUEST["body"]) == '') { logger('facebook: empty body '.$item->id.' '.print_r($item, true)); From 8c154ddd08a6ac8d6666bb1090107546afed2f24 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 2 Jan 2013 22:48:10 +0100 Subject: [PATCH 22/40] fbpost: New permissions required for reading all wall posts. --- fbpost/fbpost.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index 890f805b..0c7e454a 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -213,7 +213,7 @@ function fbpost_content(&$a) { $o .= '
'; $o .= '' . t('Install Facebook Post connector for this account.') . ''; + . $a->get_baseurl() . '/fbpost/' . $a->user['nickname'] . '&scope=read_stream,publish_stream,manage_pages,photo_upload,user_groups,offline_access">' . t('Install Facebook Post connector for this account.') . ''; $o .= '
'; } @@ -225,7 +225,7 @@ function fbpost_content(&$a) { $o .= '
'; $o .= '' . t('Re-authenticate [This is necessary whenever your Facebook password is changed.]') . ''; + . $a->get_baseurl() . '/fbpost/' . $a->user['nickname'] . '&scope=read_stream,publish_stream,manage_pages,photo_upload,user_groups,offline_access">' . t('Re-authenticate [This is necessary whenever your Facebook password is changed.]') . ''; $o .= '
'; $o .= '
'; From a546a251077f4740df54936703a1084adf354d49 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 3 Jan 2013 22:11:46 +0100 Subject: [PATCH 23/40] fbpost: Beautifying the import to friendica statusnet+twitter: Beautifying the export to statusnet and twitter, solving the problem that posts were sometimes send twice --- fbpost/fbpost.php | 18 +++++++++++------- statusnet/statusnet.php | 11 ++++++++++- twitter/twitter.php | 11 ++++++++++- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index 0c7e454a..51bed7eb 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -1048,7 +1048,7 @@ function fbpost_fetchwall($a, $uid) { elseif (isset($item->name)) $_REQUEST["body"] .= "\n\n[b]" . $item->name."[/b]"; - if(isset($item->caption)) { + /*if(isset($item->caption)) { if(!isset($item->name) and isset($item->link)) $_REQUEST["body"] .= "\n\n[bookmark=".$item->link."]".$item->caption."[/bookmark]"; //else @@ -1060,22 +1060,26 @@ function fbpost_fetchwall($a, $uid) { $_REQUEST["body"] .= "\n[url]".$item->link."[/url]\n"; else $_REQUEST["body"] .= "\n"; - } + }*/ $quote = ""; - if(isset($item->description)) + if(isset($item->description) and ($item->type != "photo")) $quote = $item->description; - if (isset($item->properties)) - foreach ($item->properties as $property) - $quote .= "\n".$property->name.": [url=".$property->href."]".$property->text."[/url]"; + if(isset($item->caption) and ($item->type == "photo")) + $quote = $item->caption; + + //if (isset($item->properties)) + // foreach ($item->properties as $property) + // $quote .= "\n".$property->name.": [url=".$property->href."]".$property->text."[/url]"; if ($quote) $_REQUEST["body"] .= "\n[quote]".$quote."[/quote]"; // Only import the picture when the message is no video // oembed display a picture of the video as well - if ($item->type != "video") { + //if ($item->type != "video") { + if (($item->type != "video") and ($item->type != "photo")) { if(isset($item->picture) && isset($item->link)) $_REQUEST["body"] .= "\n".'[url='.$item->link.'][img]'.fpost_cleanpicture($item->picture).'[/img][/url]'; else { diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index d5097c13..b5d55ed7 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -448,6 +448,10 @@ function statusnet_shortenmsg($b, $max_char) { if ($b["title"] != "") $body = $b["title"]."\n\n".$body; + // Add some newlines so that the message could be cut better + $body = str_replace(array("[quote", "[bookmark", "[/bookmark]", "[/quote]"), + array("\n[quote", "\n[bookmark", "[/bookmark]\n", "[/quote]\n"), $body); + // remove the recycle signs and the names since they aren't helpful on twitter // recycle 1 $recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8'); @@ -773,6 +777,11 @@ function statusnet_fetchtimeline($a, $uid) { $osecret = get_pconfig($uid, 'statusnet', 'oauthsecret'); $lastid = get_pconfig($uid, 'statusnet', 'lastid'); + $application_name = get_config('statusnet', 'application_name'); + + if ($application_name == "") + $application_name = $a->get_hostname(); + $connection = new StatusNetOAuth($api, $ckey,$csecret,$otoken,$osecret); $parameters = array("exclude_replies" => true, "trim_user" => true, "contributor_details" => false, "include_rts" => false); @@ -793,7 +802,7 @@ function statusnet_fetchtimeline($a, $uid) { if ($post->in_reply_to_status_id != "") continue; - if (!strpos($post->source, $a->get_hostname())) { + if (!strpos($post->source, $application_name)) { $_SESSION["authenticated"] = true; $_SESSION["uid"] = $uid; diff --git a/twitter/twitter.php b/twitter/twitter.php index 3056f57b..2be686b3 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -306,6 +306,10 @@ function twitter_shortenmsg($b) { if ($b["title"] != "") $body = $b["title"]."\n\n".$body; + // Add some newlines so that the message could be cut better + $body = str_replace(array("[quote", "[bookmark", "[/bookmark]", "[/quote]"), + array("\n[quote", "\n[bookmark", "[/bookmark]\n", "[/quote]\n"), $body); + // remove the recycle signs and the names since they aren't helpful on twitter // recycle 1 $recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8'); @@ -581,6 +585,11 @@ function twitter_fetchtimeline($a, $uid) { $osecret = get_pconfig($uid, 'twitter', 'oauthsecret'); $lastid = get_pconfig($uid, 'twitter', 'lastid'); + $application_name = get_config('twitter', 'application_name'); + + if ($application_name == "") + $application_name = $a->get_hostname(); + require_once('library/twitteroauth.php'); $connection = new TwitterOAuth($ckey,$csecret,$otoken,$osecret); @@ -596,7 +605,7 @@ function twitter_fetchtimeline($a, $uid) { if ($post->id_str > $lastid) $lastid = $post->id_str; - if (!strpos($post->source, $a->get_hostname())) { + if (!strpos($post->source, $application_name)) { $_SESSION["authenticated"] = true; $_SESSION["uid"] = $uid; From 268c296f8b7c9b293808d5c0e3334dce883c9f3c Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 5 Jan 2013 15:56:04 +0100 Subject: [PATCH 24/40] Twitter connector: fix smarty issue --- twitter/twitter.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index 6cb2d9cd..356d855a 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -506,12 +506,7 @@ function twitter_plugin_admin_post(&$a){ function twitter_plugin_admin(&$a, &$o){ $t = get_markup_template( "admin.tpl", "addon/twitter/" ); - $includes = array( - '$field_input' => 'field_input.tpl', - ); - $includes = set_template_includes($a->theme['template_engine'], $includes); - - $o = replace_macros($t, $includes + array( + $o = replace_macros($t, array( '$submit' => t('Submit'), // name, label, value, help, [extra values] '$consumerkey' => array('consumerkey', t('Consumer key'), get_config('twitter', 'consumerkey' ), ''), From 7d3bf7144f83cbd64c67d4f7b491d4fccbdf1778 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 5 Jan 2013 16:33:39 +0100 Subject: [PATCH 25/40] statusnet/twitter: Don't include the quoted text when sending an update fbpost: Trying to beautify the posts from facebook. --- fbpost/fbpost.php | 4 ++-- statusnet/statusnet.php | 14 ++++++++++++++ twitter/twitter.php | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index 51bed7eb..bef8117e 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -1078,8 +1078,8 @@ function fbpost_fetchwall($a, $uid) { // Only import the picture when the message is no video // oembed display a picture of the video as well - //if ($item->type != "video") { - if (($item->type != "video") and ($item->type != "photo")) { + if ($item->type != "video") { + //if (($item->type != "video") and ($item->type != "photo")) { if(isset($item->picture) && isset($item->link)) $_REQUEST["body"] .= "\n".'[url='.$item->link.'][img]'.fpost_cleanpicture($item->picture).'[/img][/url]'; else { diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index b5d55ed7..6a00d3df 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -448,6 +448,20 @@ function statusnet_shortenmsg($b, $max_char) { if ($b["title"] != "") $body = $b["title"]."\n\n".$body; + if (strpos($body, "[bookmark") !== false) { + // splitting the text in two parts: + // before and after the bookmark + $pos = strpos($body, "[bookmark"); + $body1 = substr($body, 0, $pos); + $body2 = substr($body, $pos); + + // Removing all quotes after the bookmark + // they are mostly only the content after the bookmark. + $body2 = preg_replace("/\[quote\=([^\]]*)\](.*?)\[\/quote\]/ism",'',$body2); + $body2 = preg_replace("/\[quote\](.*?)\[\/quote\]/ism",'',$body2); + $body = $body1.$body2; + } + // Add some newlines so that the message could be cut better $body = str_replace(array("[quote", "[bookmark", "[/bookmark]", "[/quote]"), array("\n[quote", "\n[bookmark", "[/bookmark]\n", "[/quote]\n"), $body); diff --git a/twitter/twitter.php b/twitter/twitter.php index 2be686b3..26c684f1 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -306,6 +306,20 @@ function twitter_shortenmsg($b) { if ($b["title"] != "") $body = $b["title"]."\n\n".$body; + if (strpos($body, "[bookmark") !== false) { + // splitting the text in two parts: + // before and after the bookmark + $pos = strpos($body, "[bookmark"); + $body1 = substr($body, 0, $pos); + $body2 = substr($body, $pos); + + // Removing all quotes after the bookmark + // they are mostly only the content after the bookmark. + $body2 = preg_replace("/\[quote\=([^\]]*)\](.*?)\[\/quote\]/ism",'',$body2); + $body2 = preg_replace("/\[quote\](.*?)\[\/quote\]/ism",'',$body2); + $body = $body1.$body2; + } + // Add some newlines so that the message could be cut better $body = str_replace(array("[quote", "[bookmark", "[/bookmark]", "[/quote]"), array("\n[quote", "\n[bookmark", "[/bookmark]\n", "[/quote]\n"), $body); From 03fc4eb1168643aae372c17db73590a79de32c4f Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 5 Jan 2013 21:50:11 -0800 Subject: [PATCH 26/40] add procrunner - 1/2 of poormancron --- extcron.tgz | Bin 436 -> 437 bytes extcron/extcron.php | 2 +- fbpost.tgz | Bin 9382 -> 9609 bytes procrunner.tgz | Bin 0 -> 845 bytes procrunner/procrunner.php | 53 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 procrunner.tgz create mode 100755 procrunner/procrunner.php diff --git a/extcron.tgz b/extcron.tgz index 0e5b28929a2942f5105b87922f563f5184f6fdeb..dabe1d09db19ebba110adfad1ae1ed77caf438bc 100755 GIT binary patch literal 437 zcmV;m0ZRTKiwFQt5b00=1MSm0Z`&{s0AQ`=uehP8A1EwJkSs$s8U#qkbZgf@l`l47 zid6YX6BPOHB^|pBf&^I{XXt&4Bp!7<=}5eFtcsa{wMYbE? zOR}6-c~(|D;|b65qTmUXZ&}oVx2`b&N!PS%VQz$aVP3y3XW4u{KSfO^g!}&QuhV|h zAAOD2`d{(cll~Vm4E*SoJmWv_|MDz!oH3S8CJZLYargplYeesa zRyBOH_-}?qbAtx7+1-g2!D%pFL9e9@0fTEV8zb*xn(t`rE=4xw@%h}ljW#u0iY>zB zp#iYmIM>@cP5<^}+UhRtjlLEV(=N>Z9ADoRtR31KzC5lcR-q7AHrCQLA$J46@JFcS zr$_7JXk1}r$6<{-?L$!x4<{fbO&PoPs*PU@`_U_*!ak95G=|^z&xE~tWkRP{UgAqp zp@bWK{Lq9j8-(v{ufi`J4MS^&pN2xU(yuUm_@nWJ4#x{N*a|7Tka5B8*?aFILI@#* f5JCtcgb+dqA%qY@2qA0+rtD-9N_4r1T z=XFtWUhePnB+HAk$`aro+0>S|t~CHj-*!u3ZiISe-LT|UKA+D&qo+@VoBTJ|*{~Yk zeUG>DuQUEE|FVktXYbz03;y%`4}XNj8Dr^m%3um7ZI2Cv!+=J$65^4F!$)X4BL*k5 zYT(r3-xU_k4I0p9eJ45ur@?pygO)N(7+iYU8hIDXoT0Jn68S8PzkhnS(x!o9afNWa z4FC>T&J9hPK1DL?be|4JUkZt79~OU)|6cd29ohzd{o77#LLn|}Y^85Q=@xGBBD8Yt z(YiPqHyGPV*yB$7(38XM2M~&;j9q%w#fOE>=($kgm`FLE!2QDu(_X!?pw|m8@wHi@ zgd6Yewqcs>gy-ze!y6orLNcRoBcVF!7nnZ2(D;FlCI@WiN=Vs + * Author: Mike Macgirvin * * Notes: External service needs to make a web request to http(s)://yoursite/extcron */ diff --git a/fbpost.tgz b/fbpost.tgz index ecf933d8e023c0c5ddabf96e975d3e7364682796..cb8f860ab134c0a5130f3da33e0b2ff67363ab22 100644 GIT binary patch literal 9609 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 literal 9382 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 diff --git a/procrunner.tgz b/procrunner.tgz new file mode 100644 index 0000000000000000000000000000000000000000..fec9dfa725cc5c120867e5cb5d23358c85803af7 GIT binary patch literal 845 zcmV-T1G4-diwFQu5b00=1MO8^PunmQ?Q8ohuA+*hsB4mr7E~w*ZQ2`X+QVKDicI1p z7KxoXNhzB6@4I$V8bR4!_;{F)pxD><<6Ph4Qb-ZXnsX}M-dn*#93IYk)7in{bb8S9 zX7lO%z}NN`J%8%qneTZsJoi8QGrtG3H)GU6T~B0@yYz>-h9>r?-e<`i2r>4Cucb8fxEvyfPJ_mIbFba)B*g^ zLQux9vH7Os2CWFkdfOhS<>jm9jaZcJ_@ zTc37=FW4=Gi_H}A#2pOcnum%wY_%OQjuX!^r1g6+=nqL030}ey5?TeJ;4w=aySy(e zn%iSrpW372L7&A=SxNkH>`vSExJ@up>H7UlBnee6kM)3YBwpa1VfS#ys8TuO4k z*L_5iCIM>`gIW6^oeU zs4VB{-yl%441&>UG_l-@s+X9Q>dVJ!!>20TQYYFX>I(N-R4gwt5mCniYYgZ*YGwqE za#}8zP0))&;dtwk{;HXz5uiS*l$Fp-{pm=a%>iguQk_`RgkgvbQXy`e`~eoQ$IuAJ zeev5BrPYySyKD-zY^|07^4oe^BQ1pf;94JoNsvW~@ + * Author: Mike Macgirvin + */ + +function procrunner_install() { + + $addons = get_config('system','addon'); + if(strstr('poormancron',$addons)) { + logger('procrunner incompatible with poormancron. Not installing procrunner.'); + return; + } + + // check for command line php + $a = get_app(); + $ex = Array(); + $ex[0] = ((x($a->config,'php_path')) && (strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php'); + $ex[1] = dirname(dirname(dirname(__file__)))."/testargs.php"; + $ex[2] = "test"; + $out = exec(implode(" ", $ex)); + if ($out==="test") { + logger('procrunner not required on this system. Not installing.'); + return; + } else { + register_hook('proc_run', 'addon/procrunner/procrunner.php','procrunner_procrun'); + logger("installed procrunner"); + } + +} + +function procrunner_uninstall() { + unregister_hook('proc_run', 'addon/procrunner/procrunner.php','procrunner_procrun'); + logger("removed procrunner"); +} + + + +function procrunner_procrun(&$a, &$arr) { + + $argv = $arr['args']; + $arr['run_cmd'] = false; + logger("procrunner procrun ".implode(", ",$argv)); + array_shift($argv); + $argc = count($argv); + logger("procrunner procrun require_once ".basename($argv[0])); + require_once(basename($argv[0])); + $funcname=str_replace(".php", "", basename($argv[0]))."_run"; + $funcname($argv, $argc); +} From f23480686dacc3cb3fc8ad074ceae18796ba1334 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 5 Jan 2013 21:51:21 -0800 Subject: [PATCH 27/40] rebuild packages --- fbpost.tgz | Bin 9609 -> 11410 bytes forumlist.tgz | Bin 2322 -> 2334 bytes privacy_image_cache.tgz | Bin 4269 -> 4630 bytes statusnet.tgz | Bin 17889 -> 19692 bytes twitter.tgz | Bin 11796 -> 13045 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/fbpost.tgz b/fbpost.tgz index cb8f860ab134c0a5130f3da33e0b2ff67363ab22..790a573214bb411a4a4ba3f1a00ca8364d199fb9 100644 GIT binary patch literal 11410 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 literal 9609 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 diff --git a/forumlist.tgz b/forumlist.tgz index 1f303145a19366d9c5b261966f6bbf5473136c16..8356d443d0cb1ade39c865f13e6efcca67e36f79 100644 GIT binary patch literal 2334 zcmV+(3E}o1iwFSH5b00=1MOK^bK6D|)+_lddJ(MwIus9`UP+|al{m?Rk1gAkeUMe; z5EznE0x;OYK*uKj@7q1NLDG^^va(yNvC9VL=uzu^RTB6j*8Qz-HU>D3jt;hV z5B86CclWmj2Zy_d`$IFIjjiGC0M~|tz2U*uV7Nz9aPaL!Dn}A)rU14A<}QS~6yb(_ z(c<86_~ONj$B^j}$GotA@zitU_(6G)fe#P&H`@Pj*Vum#|35k!?xOt<4)*u9VDO+) zY#9IN_HTc;6dvC(#@`|9!*A`DjF>C*%`psmdnfJIT=<%+W9COo=45N5y+P-s{iVHf z{&*=bxvEha_6D1%3 zB3&W5=DuY57<@k0DAtwm^zs;X2ZQJuUjwEVBHWott!04I2Q>SoCSJg zTPM!s z1e*Gh$F35Q7BW1Bk4t$KgFy*7hd7zh+KhYP${!XQ1QKBnz679%et9kB(EA@UOpRhZq>Nx4gg zasI1Z;J>FtC=!Zk9!5-QE_xm(TKKo$ZqJj@rJF(F`x6nOKlr}Wq2N?}fpc6*L%SjQ?w zz6tX#S?F@_zHFMukp&^-8l$1>Rn3-!k6^eJCJ%4A+gLoP@m86A8}qHR--2rjX=ghT zUUxf2l)<9H;~|VdtAuyA)4VETjx%%S$Cysdwn&LfjO~1utlw_8whPL*z?5P)4l!?S zOXXo{G6Kh`FzLWcux&U73y=#GoCjdxDab~4wr36(;+V6LF3oO$=FtU-SYF^*vF3eS&UNp9zGk~ZcUcLLVke;5WXmyhIuO6Ku8_ay^ULe$y5gIn3*NBH6I&bmLl)Ds{m`TGQ9;DODv69763a8GICGaysW%ow{$jwU z;%#T=g}+&-H)}M`cb=K|^DbDVzS@GBpcUcO=JAzgjdH6CwwbZdDQ3SA=ITU+PANoM zPOk~FCW<-Rth+rkA=46b=P!_{3WISHA-B0$IA{mvPm-7`r_(Ki+wR)rnG+f2RP9a& z)tgCUVvX&LNrh+jQV0H$GtWM!=&?_I5nh1e{>X~;jnCsH=h_0$HxVCMnqTWa_Ma9k z6`zkR8+t&bNGMAGs74I19@zcOP=v?nm~BD8J;6p6CI$=oW16%+tIwfz(gX?n)DxE= zypdJuLejd$0@r78JhHG+Kq;&-d6n6o&1<32d$g2(wzk|G+db`ArjClOPR~B=eaM9?*v!O%hHb!8IjGDtgVWZofo*O_8`%5L>Og`TDQX1x}%soxow$c`6ri-+xO zJu_?Ck;Yh0_+i zCi4t5poiRu`?_}yDdDme&lC(_1bFF4fSt;p~0j1Me{F}>p#Z6!g1A?s*tQbYTO*meq z2P+#+HkC5XvWHOiSqiiN1DKfS!nKiY#7{Sz71d!HoNH4ybs0xc(Gyv|HAC?((!g!PZzXE0hIW09 znYfxl*MNQz%`>7^QqKC0wb8n!8!~kfJs3?Hzpdsp`2BalscUC@@{ji)KUH;9e78i5 z3aCx2)kOV%E51{n4A}Lg{Jv;+^AgtZJFB!+ah_HhBAiQyvdB+`x8=5iB=WGk@_ME`dj0-QXEU_doyB=(pgpcs&{fgv z7}tLeuRITAqM$^0EE-J*QpP|m;ff>pgb-lKmu}Am^{HnG1;P}4y87==CV1ta>5h0o zH&Kd*cs)(cx}2MfrRIi9rUaY$`K=zPx~veIxJ#aOldG+JwuT6kK3HkU#*2KvZ;vIy^zo-5|Vai7Bq$E}sCY!ufm=^uXJeqPO{POATo7|cCHS(qI9EAun zqsC>MlL2}Gm8R7TDf2!3NKBIQlslkG((`qO@vXR*K)J6s5CmB$!p7eEUN6AdMi z-c2F9qLU5j^Q(HO{gSq#h@uwDG(kTJR6hFW5ktsyKZWFkZ`DY#v7wS?d_9;#YCj;Z zC?s3mq>wyn@2`-Y@U03dHZ~N}jPd&@q})`_V8o-2FR}jt25E@{vqWpW<*i|!ZZCon z#@UtAyQQluH)|GD)&{c0&2tlEfoB#j- literal 2322 zcmV+t3GMbDiwFR0_rg#B1MOMsQ`<-q&sY1e=+knMoHe$AKKak`qN$q_g zls%TlcnV3Q8;y9}ZT|P`p3&QOfGv{St;;}xHIMF|e*C&yUPzTip-A=c$rl?V9543w z&3_#2|K{_~?&x5&|6*@{ALn;=4n})VVE@aBRE;dvOaVMmQtHp`yKDVVIu@n<%TEJ8 zO&^s98TjD&^NsdD*fsXwKR6iezIc9s_J6*I+hO#mQfwIi=l1V@w-f>2Hpbs3>%)J# z9hop+=-WdW4fc+@orMTBSBET2mdwl7#(SgQQTJ1K<^17NUUAi+vNITMqOvo}$#lOf z{ck(vT8sE1-45BDhkd9mDHaDZTCmsV?mb$+ZY2(}xi9g+{TiMWC05 zusa$hH~1Jabs^&Ixzt)lIK5A^pBmyt>}I=sO4o?DPOx<%tq6mBzPA0>#ecF)9+k)E z<9}y=?_jTm|IhdE-?#Yx3gh@CTDv=Z_N)uf;0=rTA^c2^aEgvVQ$O+4S0d3u#)t5J zDX&v7C?OY+W^-Db^8kDqMOlmi4aSR7kTDcao+3WXnIdApa+MlFJA)m1ewFE^REO|d zTyl8L{0pJ3L=49fKK~FE&jX}Bq3v^)A}=JJunV3-5@r~xFu!e*@|O(b{8xE_e~*b! zA{5g+PMFeM3<6HH@ORklF0$CCn?dROQxT&-grV1?;8gqq=eU|KrM&dq{6^DA2DndX zw+}800vQiCL=kPMNUt16A_2IT{r{>kPDQYN8sQo$VYy5U=Ek!n6qG)=C?re=z>J7HX9?V0!w{x>-16{a-Rfr zW=7l@e%x`Y4PpUa{f=}usErx{4{9Xf?K_wy>dHR!Y7{?_3Va!B=Iaz!|K&OFPfkyM z`~b6jb~c!aVAiicXDVz?&~2JCk?@tA!9vLh@>%G1I-P(1a`Ns3W_k3?#^44E6}#~2 z%}=HD^m&F>Cu#p0&?&OPJe2+=LOmIwWfOW#cpRYfmd{N2OL0YBFd_=MshmDNh*)2- z(0Ep_+c9o19KtDjIB8ffIpmHCA_Z1UWaN-oo=L@-zw|1-u@s6212#2pJ3BA^%|X36 z<4Lje%sij>!6EfE7R&^#h@df#k2GtPTVHU^jC)Qo`-w1DXDaq8A#6FlCdk?-=54Y5 z*4%_lM=ZR*K&~nb#%Y4w7UIG~JFsw?rCfQveihtq-zCqS%DABF_Ijw^TpAN=YMh~(7bYQ9YV(hpu03t;~ zQTj(UVt@_69d3pqJWj`42O=H_Hg+&EI53>hr1MdIjGd!4NVvy=xB?N3omv-S>lO$6 zkfrI^!A1e4a3^*B zs${)jmz>n*VDaOJ!oM6l5`*B!P^R4b=vF5_BE&d=Hzh$j1JIr^)Q||fMsK+k`FiW# zIagzsu@i_i2^scpv5fhVV?;;U>sb6CmnjdTvmCXsXiY9as}q$o7em)Q@3#^`-(&_u z2c6fKS*)ud?b*n@NARwgg5BwO3Y|&~&3YqPt;-p2$d8vHi-+BOJ-4WBMpLXwFGG%} zuLSbK6TqKnc8O2@=W3=b|YmUv=!=26KFUS1d!c(#cdhi=* z-J@tYOfzCDBs|w?hm&Jn-2Np7lu1+ZZ!Q-#4}l4c2(c=hVifQ$L3o`WtZX>iRK>I_ z9s<~>7GeJca9E_lwLxvfw;RsN!qCR$+N_XoF@bKAOF_StCGG;@{L}{2b?QKSXpxqz zUT!90#hamus6jc4#8?X;#`zqUGNhsb`$-@53aO0vTn4vr&0@q2tAmHbyU8xM2w24Lu`~o!(k`A zSBi|-&9r*8==O{1)$lv3byuy8=O)nZ$D>Nao5|Zf47TJc;Ly@_$dXYeWrKxPUm zgvWZ(G#^zAq!O+()R(p1PA!tbLN-Pkj=&jWsKbhc_|4w(r3;LN-JjUy3>eJ=I zT+Esqu9y;R9u~KHq{6aBXzDL{-bk)??fDuajQ!x)zTNHJoeu9G1y-OUV>ZMo65>6C zDPE=iPGPDZ?WiKw6egd%QfIEwD>~VbK0m96 z#+PU-iYRNbTod$dK<#~h5ix{J4^v1%_)d+K8(S)A$Je7Nr19P1ibC?$O$sTZ_TdUC z2;ZrYa$`#&?HGTELaI&G3`RWa_zL?UU|>rem}gq!E$<9-yS)rXnB-TsceAT2H)|JE s&IYpO%?lIcyfO6+nuVC@+aSd1&(_76lXvwV_Z|fWpYVhn zHn&Hj`RtLO7CajpYtNR~RyUTHSD&@k)|b~;+tjX}XYJ({^tD?n?X_pE_UcA^{TW+( zY(lD@G){QL*t0RWhi-J~`g7pI;o5rp&6_trf~Ft%gcbTf>1^*FbQ)vlk>)@JudlDp z)&IuYI_iIA9c%y<-)gTfFSnkt)+5b->+>J3|0CZPjN1uVK_Z+wOGa+YxZ?yqw89(w zV__6r->|+&u7vObLa;Oz5#zqY#C0MfpL>k#heaX|(#RHZW3fA!>I6)YU`YUoSUd`@ z{5td8FEBaG%%hkE5fkISa2(;N0d<-Srn-dLB9TO{xCAuVD5paT@S7LdFpKB

    py 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 M0U$0uW<C0BL;l+yDRo literal 4269 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 Pwab42SO7z@08jt`gm58O diff --git a/statusnet.tgz b/statusnet.tgz index 9801af556eb6fd101242b0ae00ae0ffd1ec39967..ea19ef18e6b4d640896c428ea01bf121671f403d 100755 GIT binary patch literal 19692 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 Q_@Bl90ZVML9RTnE0GEgLApigX diff --git a/twitter.tgz b/twitter.tgz index 0505830c085659c6d51cff518f10849dc12e74f6..d86175b0dad7b7c5065285ecc235a4778f35acae 100755 GIT binary patch literal 13045 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 literal 11796 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 Ch5*z6 From 431c402719256e50fa30916c1e4d4d920fd47859 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 6 Jan 2013 02:21:25 -0800 Subject: [PATCH 28/40] remove dash template vars from forumdirectory --- forumdirectory.tgz | Bin 3802 -> 3801 bytes forumdirectory/forumdirectory.php | 6 +++--- forumdirectory/view/forumdirectory_item.tpl | 6 +++--- .../view/smarty3/forumdirectory_item.tpl | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/forumdirectory.tgz b/forumdirectory.tgz index 249cd22645f56aa842c15b68551b885e89cfbc55..0a84585dd41af97f49d12658c1f3576c295b5c4b 100644 GIT binary patch literal 3801 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 PKh*vM6BE-x08jt`RX1ka literal 3802 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 Q_D^m91=AT~H~>%p0OQtj8~^|S diff --git a/forumdirectory/forumdirectory.php b/forumdirectory/forumdirectory.php index 0d7fbee8..9837b9c1 100644 --- a/forumdirectory/forumdirectory.php +++ b/forumdirectory/forumdirectory.php @@ -168,12 +168,12 @@ function forumdirectory_content(&$a) { $entry = replace_macros($tpl,array( '$id' => $rr['id'], - '$profile-link' => $profile_link, + '$profile_link' => $profile_link, '$photo' => $a->get_cached_avatar_image($rr[$photo]), - '$alt-text' => $rr['name'], + '$alt_text' => $rr['name'], '$name' => $rr['name'], '$details' => $pdesc . $details, - '$page-type' => $page_type, + '$page_type' => $page_type, '$profile' => $profile, '$location' => template_escape($location), '$gender' => $gender, diff --git a/forumdirectory/view/forumdirectory_item.tpl b/forumdirectory/view/forumdirectory_item.tpl index 3b24d25f..e1bbffec 100755 --- a/forumdirectory/view/forumdirectory_item.tpl +++ b/forumdirectory/view/forumdirectory_item.tpl @@ -2,14 +2,14 @@

    $name
    -
    $page-type
    +
    $page_type
    {{ if $pdesc }}
    $profile.pdesc
    {{ endif }}
    diff --git a/forumdirectory/view/smarty3/forumdirectory_item.tpl b/forumdirectory/view/smarty3/forumdirectory_item.tpl index 540a5aea..66410efe 100644 --- a/forumdirectory/view/smarty3/forumdirectory_item.tpl +++ b/forumdirectory/view/smarty3/forumdirectory_item.tpl @@ -2,14 +2,14 @@
    {{$name}}
    -
    {{$page}}-type
    +
    {{$page_type}}
    {{if $pdesc}}
    {{$profile.pdesc}}
    {{/if}}
    From 6256c4e48e156f42b5bd7fdaf8f0b64f0f4265bf Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 6 Jan 2013 14:00:34 -0800 Subject: [PATCH 29/40] invalid foreach --- facebook/facebook.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index f977bef9..4c1c0a14 100644 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -383,10 +383,12 @@ function fb_get_friends_sync_full($uid, $access_token, $persons) { if($s) { $results = json_decode($s); logger('fb_get_friends: info: ' . print_r($results,true), LOGGER_DATA); - foreach ($results as $contact) { - if ($contact->code != 200) logger('fb_get_friends: not found: ' . print_r($contact,true), LOGGER_DEBUG); - else fb_get_friends_sync_parsecontact($uid, json_decode($contact->body)); - } + if(count($results)) { + foreach ($results as $contact) { + if ($contact->code != 200) logger('fb_get_friends: not found: ' . print_r($contact,true), LOGGER_DEBUG); + else fb_get_friends_sync_parsecontact($uid, json_decode($contact->body)); + } + } } } } From 9d9167a79011180dab3328d0a984a5f4984f5a48 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 6 Jan 2013 14:01:25 -0800 Subject: [PATCH 30/40] package --- facebook.tgz | Bin 19201 -> 19226 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/facebook.tgz b/facebook.tgz index 6bf8f7a990c5c31be19c91051e7924d8234cf90b..2dbd4efd0f28329b0616821454299916880db917 100644 GIT binary patch delta 19012 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 From 75f6b10c4edc5c027db472a7801bc52f85fd0971 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 7 Jan 2013 19:19:55 +0100 Subject: [PATCH 31/40] fbpost: Sometimes comments were sent to facebook. --- fbpost/fbpost.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index bef8117e..e33ad626 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -394,6 +394,10 @@ function fbpost_post_hook(&$a,&$b) { if($b['deleted'] || ($b['created'] !== $b['edited'])) return; + // Don't transmit answers (have to be cleaned up in the following code) + if($b['parent'] != $b['id']) + return; + // if post comes from facebook don't send it back if($b['app'] == "Facebook") return; From 52d585863a5234d56b6d2cfe1c5ebeb71f21df51 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 7 Jan 2013 19:30:18 +0100 Subject: [PATCH 32/40] fbpost/statusnet/twitter: When messages are fetched the first time for mirroring, then don't post them --- fbpost/fbpost.php | 5 +++++ statusnet/statusnet.php | 5 +++++ twitter/twitter.php | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/fbpost/fbpost.php b/fbpost/fbpost.php index e33ad626..1486afdb 100644 --- a/fbpost/fbpost.php +++ b/fbpost/fbpost.php @@ -1020,6 +1020,8 @@ function fbpost_fetchwall($a, $uid) { $url = "https://graph.facebook.com/".$post_to_page."/feed?access_token=".$access_token; + $first_time = ($lastcreated == ""); + if ($lastcreated != "") $url .= "&since=".urlencode($lastcreated); @@ -1031,6 +1033,9 @@ function fbpost_fetchwall($a, $uid) { if ($item->created_time > $lastcreated) $lastcreated = $item->created_time; + if ($first_time) + continue; + if ($item->application->id == get_config('facebook','appid')) continue; diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 6a00d3df..d5700710 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -800,6 +800,8 @@ function statusnet_fetchtimeline($a, $uid) { $parameters = array("exclude_replies" => true, "trim_user" => true, "contributor_details" => false, "include_rts" => false); + $first_time = ($lastid == ""); + if ($lastid <> "") $parameters["since_id"] = $lastid; @@ -810,6 +812,9 @@ function statusnet_fetchtimeline($a, $uid) { if ($post->id > $lastid) $lastid = $post->id; + if ($firsttime) + continue; + if (is_object($post->retweeted_status)) continue; diff --git a/twitter/twitter.php b/twitter/twitter.php index aeacb5b2..b9cb3146 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -604,6 +604,8 @@ function twitter_fetchtimeline($a, $uid) { $parameters = array("exclude_replies" => true, "trim_user" => true, "contributor_details" => false, "include_rts" => false); + $first_time = ($lastid == ""); + if ($lastid <> "") $parameters["since_id"] = $lastid; @@ -614,6 +616,9 @@ function twitter_fetchtimeline($a, $uid) { if ($post->id_str > $lastid) $lastid = $post->id_str; + if ($firsttime) + continue; + if (!strpos($post->source, $application_name)) { $_SESSION["authenticated"] = true; $_SESSION["uid"] = $uid; From 7019b1056a1c749803c9b212468b941a58479ba5 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 8 Jan 2013 00:50:59 +0100 Subject: [PATCH 33/40] statusnet/twitter: Post were fetched at the first fetch because of a misspelled variable ... --- statusnet/statusnet.php | 2 +- twitter/twitter.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index d5700710..f3678c80 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -812,7 +812,7 @@ function statusnet_fetchtimeline($a, $uid) { if ($post->id > $lastid) $lastid = $post->id; - if ($firsttime) + if ($first_time) continue; if (is_object($post->retweeted_status)) diff --git a/twitter/twitter.php b/twitter/twitter.php index b9cb3146..88cf3858 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -616,7 +616,7 @@ function twitter_fetchtimeline($a, $uid) { if ($post->id_str > $lastid) $lastid = $post->id_str; - if ($firsttime) + if ($first_time) continue; if (!strpos($post->source, $application_name)) { From d59553b09801ef1e28b9f09d635b7abe07522744 Mon Sep 17 00:00:00 2001 From: pokerazor Date: Wed, 9 Jan 2013 00:41:27 +0100 Subject: [PATCH 34/40] Changes to OpenStreetMap, show map inline, also lookup lat lon from location name --- geonames/geonames.php | 12 +++++------ openstreetmap/openstreetmap.php | 36 +++++++++++++++++++++++++++------ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/geonames/geonames.php b/geonames/geonames.php index 8226fc0b..19725bef 100755 --- a/geonames/geonames.php +++ b/geonames/geonames.php @@ -40,8 +40,8 @@ function geonames_install() { * */ - register_hook('plugin_settings', 'addon/geonames/geonames.php', 'geonames_settings'); - register_hook('plugin_settings_post', 'addon/geonames/geonames.php', 'geonames_settings_post'); + register_hook('plugin_settings', 'addon/geonames/geonames.php', 'geonames_plugin_admin'); + register_hook('plugin_settings_post', 'addon/geonames/geonames.php', 'geonames_plugin_admin_post'); logger("installed geonames"); } @@ -58,8 +58,8 @@ function geonames_uninstall() { */ unregister_hook('post_local', 'addon/geonames/geonames.php', 'geonames_post_hook'); - unregister_hook('plugin_settings', 'addon/geonames/geonames.php', 'geonames_settings'); - unregister_hook('plugin_settings_post', 'addon/geonames/geonames.php', 'geonames_settings_post'); + unregister_hook('plugin_settings', 'addon/geonames/geonames.php', 'geonames_plugin_admin'); + unregister_hook('plugin_settings_post', 'addon/geonames/geonames.php', 'geonames_plugin_admin_post'); logger("removed geonames"); @@ -135,7 +135,7 @@ function geonames_post_hook($a, &$item) { * */ -function geonames_settings_post($a,$post) { +function geonames_plugin_admin_post($a,$post) { if(! local_user() || (! x($_POST,'geonames-submit'))) return; set_pconfig(local_user(),'geonames','enable',intval($_POST['geonames'])); @@ -153,7 +153,7 @@ function geonames_settings_post($a,$post) { -function geonames_settings(&$a,&$s) { +function geonames_plugin_admin(&$a,&$s) { if(! local_user()) return; diff --git a/openstreetmap/openstreetmap.php b/openstreetmap/openstreetmap.php index cb9abcd7..2c5975eb 100755 --- a/openstreetmap/openstreetmap.php +++ b/openstreetmap/openstreetmap.php @@ -10,24 +10,33 @@ function openstreetmap_install() { register_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location'); + register_hook('page_header', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_alterheader'); logger("installed openstreetmap"); } function openstreetmap_uninstall() { unregister_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location'); + unregister_hook('page_header', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_alterheader'); logger("removed openstreetmap"); } +function openstreetmap_alterheader($a, &$navHtml) { + $addScriptTag='' . "\r\n"; + $a->page['htmlhead'] .= $addScriptTag; +} function openstreetmap_location($a, &$item) { + + // + if(! (strlen($item['location']) || strlen($item['coord']))) - return; + return; /* * Get the configuration variables from the .htconfig file. - */ + */ $tmsserver = get_config('openstreetmap','tmsserver'); if(! $tmsserver) $tmsserver = 'http://openstreetmap.org'; @@ -38,12 +47,27 @@ function openstreetmap_location($a, &$item) { $location = ''; $coord = ''; + + if($item['location'] && !$item['coord'] && true){ //if only a location is given, find the lat-lon + $geo_account='demo'; + + $s = fetch_url('http://api.geonames.org/search?maxRows=1&fuzzy=0.8&q=' . $item['location'] . '&username=' . $geo_account); + + if($s){ + $xml = parse_xml_string($s); + + if($xml->geoname->lat && $xml->geoname->lng){ + $item['coord'] = $xml->geoname->lat . ' ' . $xml->geoname->lng; + } + } + } + $location = (($item['location']) ? '' . $item['location'] . '' : ''); if($item['coord']) { $coords = explode(' ', $item['coord']); if(count($coords) > 1) { - $coord = '' . $item['coord'] . '' ; + $coord = ' Map ' ; } } if(strlen($coord)) { @@ -67,9 +91,9 @@ function openstreetmap_plugin_admin (&$a, &$o) { $zoom = 17; $o = replace_macros( $t, array( - '$submit' => t('Submit'), - '$tmsserver' => array('tmsserver', t('Tile Server URL'), $tmsserver, t('A list of public tile servers')), - '$zoom' => array('zoom', t('Default zoom'), $zoom, t('The default zoom level. (1:world, 18:highest)')), + '$submit' => t('Submit'), + '$tmsserver' => array('tmsserver', t('Tile Server URL'), $tmsserver, t('A list of public tile servers')), + '$zoom' => array('zoom', t('Default zoom'), $zoom, t('The default zoom level. (1:world, 18:highest)')), )); } function openstreetmap_plugin_admin_post (&$a) { From 02687a98f25b998b4d9ee7cca14d8aa5e5ea491c Mon Sep 17 00:00:00 2001 From: pokerazor Date: Wed, 9 Jan 2013 00:43:48 +0100 Subject: [PATCH 35/40] Added files# --- openstreetmap/openstreetmap.js | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 openstreetmap/openstreetmap.js diff --git a/openstreetmap/openstreetmap.js b/openstreetmap/openstreetmap.js new file mode 100644 index 00000000..479e769c --- /dev/null +++ b/openstreetmap/openstreetmap.js @@ -0,0 +1,41 @@ +var toolserver = 'http://toolserver.org/~kolossos/openlayers/kml-on-ol.php'; +var startTag = ''; + +jQuery(document).ready(function($) { + + $('.wall-item-content-wrapper').each(function(index) { + var link = $(this).find('.wall-item-location .OSMMapLink'); + link.toggle(addIframe, removeIframe); + }); +}); + +function addIframe(ev) { + var coordinate = $(ev.target).attr('title'); + + var newTag = startTag + convertCoordinateString(coordinate) + endTag; + $(ev.target).parents('.wall-item-content-wrapper').append(newTag); +} + +function removeIframe(ev) { + $(ev.target).parents('.wall-item-content-wrapper').find('iframe').remove(); + +} + +function convertCoordinateString(coordinate) { + var locstring = coordinate.split(' '); + var northSouth; + var westEast; + + if (locstring[0] < 0) { + northSouth = '_S_'; + }else{ + northSouth = '_N_'; + } + if (locstring[1] < 0) { + westEast = '_W'; + }else{ + westEast = '_E'; + } + return Math.abs(locstring[0]) + northSouth + Math.abs(locstring[1]) + westEast; +} \ No newline at end of file From 690b4a175a44519476d08d0b0c8caf8ef66c7b74 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 13 Jan 2013 12:24:17 +0100 Subject: [PATCH 36/40] Twitter: added App name config to admin panel --- twitter/README | 7 ++----- twitter/twitter.php | 5 ++++- twitter/view/admin.tpl | 1 + twitter/view/smarty3/admin.tpl | 1 + 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/twitter/README b/twitter/README index ff08976c..8041f317 100755 --- a/twitter/README +++ b/twitter/README @@ -3,17 +3,14 @@ By Tobias Diekershoff http://diekershoff.homeunix.net/friendika/profile/tobias tobias.diekershoff(at)gmx.net -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! This addon is currently under development. If you have any problem !! -!! with it, please contact the Author. !! -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - With this addon to Friendica you can give your user the possibility to post their *public* messages to Twitter. The messages will be strapped their rich context and shortened to 140 characters length if necessary. If shortening of the message was performed a link will be added to the Tweet pointing to the original message on your server. +The addon can also mirror a users Tweets into the ~friendica wall. + There is a similar addon for forwarding public messages to "StatusNet":http://status.net [[StatusNet Plugin]]. diff --git a/twitter/twitter.php b/twitter/twitter.php index 88cf3858..7bf01eff 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -543,8 +543,10 @@ function twitter_post_hook(&$a,&$b) { function twitter_plugin_admin_post(&$a){ $consumerkey = ((x($_POST,'consumerkey')) ? notags(trim($_POST['consumerkey'])) : ''); $consumersecret = ((x($_POST,'consumersecret')) ? notags(trim($_POST['consumersecret'])): ''); + $applicationname = ((x($_POST, 'application-name')) ? notags(trin($_POST['applicationname'])):''); set_config('twitter','consumerkey',$consumerkey); set_config('twitter','consumersecret',$consumersecret); + set_config('twitter','application_name',$applicationname); info( t('Settings updated.'). EOL ); } function twitter_plugin_admin(&$a, &$o){ @@ -554,7 +556,8 @@ function twitter_plugin_admin(&$a, &$o){ '$submit' => t('Submit'), // name, label, value, help, [extra values] '$consumerkey' => array('consumerkey', t('Consumer key'), get_config('twitter', 'consumerkey' ), ''), - '$consumersecret' => array('consumersecret', t('Consumer secret'), get_config('twitter', 'consumersecret' ), '') + '$consumersecret' => array('consumersecret', t('Consumer secret'), get_config('twitter', 'consumersecret' ), ''), + '$applicationname' => array('applicationname', t('Name of the Twitter Application'), get_config('twitter','applicationname'),t('set this to avoid mirroring postings from ~friendica back to ~friendica')) )); } diff --git a/twitter/view/admin.tpl b/twitter/view/admin.tpl index a83eb07a..b89f51b6 100644 --- a/twitter/view/admin.tpl +++ b/twitter/view/admin.tpl @@ -1,3 +1,4 @@ {{ inc field_input.tpl with $field=$consumerkey }}{{ endinc }} {{ inc field_input.tpl with $field=$consumersecret }}{{ endinc }} +{{ inc field_input.tpl with $field=$applicationname }}{{ endinc }}
    diff --git a/twitter/view/smarty3/admin.tpl b/twitter/view/smarty3/admin.tpl index 9efcb065..554ed5a0 100644 --- a/twitter/view/smarty3/admin.tpl +++ b/twitter/view/smarty3/admin.tpl @@ -1,3 +1,4 @@ {{include file="field_input.tpl" field=$consumerkey}} {{include file="field_input.tpl" field=$consumersecret}} +{{include file="field_input.tpl" field=$applicationname}}
    From 6cef1dac2c2eace16e5107c075c4d3cc5da169d5 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 13 Jan 2013 12:32:31 +0100 Subject: [PATCH 37/40] Twitter: typos --- twitter/twitter.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index 7bf01eff..0452db60 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -543,7 +543,7 @@ function twitter_post_hook(&$a,&$b) { function twitter_plugin_admin_post(&$a){ $consumerkey = ((x($_POST,'consumerkey')) ? notags(trim($_POST['consumerkey'])) : ''); $consumersecret = ((x($_POST,'consumersecret')) ? notags(trim($_POST['consumersecret'])): ''); - $applicationname = ((x($_POST, 'application-name')) ? notags(trin($_POST['applicationname'])):''); + $applicationname = ((x($_POST, 'applicationname')) ? notags(trim($_POST['applicationname'])):''); set_config('twitter','consumerkey',$consumerkey); set_config('twitter','consumersecret',$consumersecret); set_config('twitter','application_name',$applicationname); @@ -557,7 +557,7 @@ function twitter_plugin_admin(&$a, &$o){ // name, label, value, help, [extra values] '$consumerkey' => array('consumerkey', t('Consumer key'), get_config('twitter', 'consumerkey' ), ''), '$consumersecret' => array('consumersecret', t('Consumer secret'), get_config('twitter', 'consumersecret' ), ''), - '$applicationname' => array('applicationname', t('Name of the Twitter Application'), get_config('twitter','applicationname'),t('set this to avoid mirroring postings from ~friendica back to ~friendica')) + '$applicationname' => array('applicationname', t('Name of the Twitter Application'), get_config('twitter','application_name'),t('set this to avoid mirroring postings from ~friendica back to ~friendica')) )); } From 51779f135786e9bae900ca9053b936c1002d1a28 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 13 Jan 2013 12:35:06 +0100 Subject: [PATCH 38/40] Twitter: tar ball --- twitter.tgz | Bin 13045 -> 12943 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/twitter.tgz b/twitter.tgz index d86175b0dad7b7c5065285ecc235a4778f35acae..7558bca9d37cc7448a90ff2173ea8a24561da0e6 100755 GIT binary patch literal 12943 zcmV;AGH}fwiwFR^oAOWq1MFG}SQAJ4M@21Bw2E2}tYbhDP!a;+29ZMq4^R%#s>CJP zBrBV2%x<{j0rjlnUA5j=t4I|^Jn{OfDAW@v;(_3ScvL))qezSY*&K*SJu3D4e@{El z1DlZgOp6e>>X# zwswx6*#1g_px!p_UC;kV+iUhGWr&iBwQFfV_yGI!`F0M_{&o(0n}6;9DO$7kM?^AA z&Y=`|%kZEL?7-*$sr~tH*xw#r4S-F{uz!2|huc3s9+L}kl?Vl53`gCWVhqJa0!*$@ zQM3avfu_UVTu8`Cl?+uzqOoc<<3p)PRH#I$4e5Ve{KxP#re5O6T# zzpelOc6%-UTR86Z?Va&&>)2%d=iAu-8~>lA#m55}k)TN&0_YV|VE$(81GO4bpmGsS zq>1PEC)Xx{zk<*t8#IOZ=+t1YAMnph3;OuiT{%LMY;hj%c>jZ;Z%@a+jg39u))p3i zaQ%m!pE&;iq3?eThMCUv)<_gWt0JCZB*qDZasfChrd%0D(U^#mx&XeDA_m?`QA{GG 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 F003h#i8lZM literal 13045 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 From 41e1527c6d097ce9a041b8a1c83ed85340902fb0 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 13 Jan 2013 13:07:54 +0100 Subject: [PATCH 39/40] Twitter: CSS cleanup for the config form --- twitter/twitter.css | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/twitter/twitter.css b/twitter/twitter.css index 75747979..3ff37cda 100755 --- a/twitter/twitter.css +++ b/twitter/twitter.css @@ -19,29 +19,20 @@ #twitter-disconnect { float: left; } -#twitter-enable-label { - float: left; - width: 250px; - margin-bottom: 5px; -} -#twitter-default-label { - float: left; - width: 250px; -} -#twitter-sendtaglinks-label { +#twitter-default-label, +#twitter-sendtaglinks-label, +#twitter-enable-label, +#twitter-shortening-label, +#twitter-mirror-label, +#twitter-pin-label { float: left; width: 250px; - margin-bottom: 25px; + margin-bottom: 10px; } #twitter-checkbox { float: left; } -#twitter-pin-label { - float: left; - width: 250px; - margin-bottom: 25px; -} #twitter-pin { float: left; From 9f9b42cfe8a3a0a2a8b500cd6affa93abeefbb58 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 13 Jan 2013 13:12:47 +0100 Subject: [PATCH 40/40] StatusNet: CSS cleanup for config form --- statusnet/statusnet.css | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/statusnet/statusnet.css b/statusnet/statusnet.css index a5594cb7..d8b9f1f1 100755 --- a/statusnet/statusnet.css +++ b/statusnet/statusnet.css @@ -15,19 +15,15 @@ width: 250px; margin-bottom: 25px; } -#statusnet-default-label { - float: left; - width: 250px; -} -#statusnet-sendtaglinks-label { - float: left; - width: 250px; - margin-bottom: 25px; -} #statusnet-disconnect { float: left; } +#statusnet-default-label, +#statusnet-sendtaglinks-label, +#statusnet-shortening-label, +#statusnet-mirror-label, +#statusnet-pin-label, #statusnet-enable-label { float: left; width: 250px; @@ -38,11 +34,6 @@ float: left; } -#statusnet-pin-label { - float: left; - width: 250px; - margin-bottom: 25px; -} #statusnet-pin { float: left; }