]> git.mxchange.org Git - friendica-addons.git/commitdiff
Merge branch 'master', remote-tracking branch 'remotes/upstream/master'
authorSimon L'nu <simon.lnu@gmail.com>
Wed, 11 Apr 2012 06:00:34 +0000 (02:00 -0400)
committerSimon L'nu <simon.lnu@gmail.com>
Wed, 11 Apr 2012 06:00:34 +0000 (02:00 -0400)
* remotes/upstream/master:
  slight change to get_avatar hook, also provided readable text for gravatar default options - the admin settings part of this plugin needs some work.
  please use make
  Do not meddle in Imperial affairs. This correction is none of your concern.
  minor correction
  added Random Planets, Empirial Version Also, "blogger", but that is still in progress and untested.
  Add Gravatar plugin.

* master:

blogger/blogger.css [new file with mode: 0755]
blogger/blogger.php [new file with mode: 0755]
gravatar/README.md [new file with mode: 0644]
gravatar/admin.tpl [new file with mode: 0644]
gravatar/gravatar.php [new file with mode: 0644]
planets.tgz [new file with mode: 0644]
planets/planets.css [new file with mode: 0755]
planets/planets.php [new file with mode: 0755]

diff --git a/blogger/blogger.css b/blogger/blogger.css
new file mode 100755 (executable)
index 0000000..4e2294e
--- /dev/null
@@ -0,0 +1,16 @@
+
+#blogger-enable-label, #blogger-username-label, #blogger-password-label, #blogger-bydefault-label {
+       float: left;
+       width: 200px;
+       margin-top: 10px;
+}
+
+#blogger-checkbox, #blogger-username, #blogger-password, #blogger-bydefault {
+       float: left;
+       margin-top: 10px;
+}
+
+#blogger-submit {
+       margin-top: 15px;
+}
+
diff --git a/blogger/blogger.php b/blogger/blogger.php
new file mode 100755 (executable)
index 0000000..5c9b439
--- /dev/null
@@ -0,0 +1,200 @@
+<?php
+
+/**
+ * Name: Blogger Post Connector
+ * Description: Post to Blogger (or anything else which uses blogger XMLRPC API)
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ */
+
+function blpost_install() {
+    register_hook('post_local',           'addon/blpost/blpost.php', 'blpost_post_local');
+    register_hook('notifier_normal',      'addon/blpost/blpost.php', 'blpost_send');
+    register_hook('jot_networks',         'addon/blpost/blpost.php', 'blpost_jot_nets');
+    register_hook('connector_settings',      'addon/blpost/blpost.php', 'blpost_settings');
+    register_hook('connector_settings_post', 'addon/blpost/blpost.php', 'blpost_settings_post');
+
+}
+function blpost_uninstall() {
+    unregister_hook('post_local',       'addon/blpost/blpost.php', 'blpost_post_local');
+    unregister_hook('notifier_normal',  'addon/blpost/blpost.php', 'blpost_send');
+    unregister_hook('jot_networks',     'addon/blpost/blpost.php', 'blpost_jot_nets');
+    unregister_hook('connector_settings',      'addon/blpost/blpost.php', 'blpost_settings');
+    unregister_hook('connector_settings_post', 'addon/blpost/blpost.php', 'blpost_settings_post');
+
+       // obsolete - remove
+    unregister_hook('post_local_end',   'addon/blpost/blpost.php', 'blpost_send');
+    unregister_hook('plugin_settings',  'addon/blpost/blpost.php', 'blpost_settings');
+    unregister_hook('plugin_settings_post',  'addon/blpost/blpost.php', 'blpost_settings_post');
+
+}
+
+
+function blpost_jot_nets(&$a,&$b) {
+    if(! local_user())
+        return;
+
+    $bl_post = get_pconfig(local_user(),'blpost','post');
+    if(intval($bl_post) == 1) {
+        $bl_defpost = get_pconfig(local_user(),'blpost','post_by_default');
+        $selected = ((intval($bl_defpost) == 1) ? ' checked="checked" ' : '');
+        $b .= '<div class="profile-jot-net"><input type="checkbox" name="blpost_enable" ' . $selected . ' value="1" /> '
+            . t('Post to blogger') . '</div>';
+    }
+}
+
+
+function blpost_settings(&$a,&$s) {
+
+    if(! local_user())
+        return;
+
+    /* Add our stylesheet to the page so we can make our settings look nice */
+
+    $a->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $a->get_baseurl() . '/addon/blpost/blpost.css' . '" media="all" />' . "\r\n";
+
+    /* Get the current state of our config variables */
+
+    $enabled = get_pconfig(local_user(),'blpost','post');
+
+    $checked = (($enabled) ? ' checked="checked" ' : '');
+
+    $def_enabled = get_pconfig(local_user(),'blpost','post_by_default');
+
+    $def_checked = (($def_enabled) ? ' checked="checked" ' : '');
+
+       $bl_username = get_pconfig(local_user(), 'blpost', 'bl_username');
+       $bl_password = get_pconfig(local_user(), 'blpost', 'bl_password');
+       $bl_blog = get_pconfig(local_user(), 'blpost', 'bl_blog');
+
+
+    /* Add some HTML to the existing form */
+
+    $s .= '<div class="settings-block">';
+    $s .= '<h3>' . t('Blogger Post Settings') . '</h3>';
+    $s .= '<div id="blpost-enable-wrapper">';
+    $s .= '<label id="blpost-enable-label" for="blpost-checkbox">' . t('Enable Blogger Post Plugin') . '</label>';
+    $s .= '<input id="blpost-checkbox" type="checkbox" name="blpost" value="1" ' . $checked . '/>';
+    $s .= '</div><div class="clear"></div>';
+
+    $s .= '<div id="blpost-username-wrapper">';
+    $s .= '<label id="blpost-username-label" for="blpost-username">' . t('Blogger username') . '</label>';
+    $s .= '<input id="blpost-username" type="text" name="bl_username" value="' . $bl_username . '" />';
+    $s .= '</div><div class="clear"></div>';
+
+    $s .= '<div id="blpost-password-wrapper">';
+    $s .= '<label id="blpost-password-label" for="blpost-password">' . t('Blogger password') . '</label>';
+    $s .= '<input id="blpost-password" type="password" name="bl_password" value="' . $bl_password . '" />';
+    $s .= '</div><div class="clear"></div>';
+
+    $s .= '<div id="blpost-blog-wrapper">';
+    $s .= '<label id="blpost-blog-label" for="blpost-blog">' . t('Blogger API URL') . '</label>';
+    $s .= '<input id="blpost-blog" type="text" name="bl_blog" value="' . $bl_blog . '" />';
+    $s .= '</div><div class="clear"></div>';
+
+    $s .= '<div id="blpost-bydefault-wrapper">';
+    $s .= '<label id="blpost-bydefault-label" for="blpost-bydefault">' . t('Post to Blogger by default') . '</label>';
+    $s .= '<input id="blpost-bydefault" type="checkbox" name="bl_bydefault" value="1" ' . $def_checked . '/>';
+    $s .= '</div><div class="clear"></div>';
+
+    /* provide a submit button */
+
+    $s .= '<div class="settings-submit-wrapper" ><input type="submit" id="blpost-submit" name="blpost-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
+
+}
+
+
+function blpost_settings_post(&$a,&$b) {
+
+       if(x($_POST,'blpost-submit')) {
+
+               set_pconfig(local_user(),'blpost','post',intval($_POST['blpost']));
+               set_pconfig(local_user(),'blpost','post_by_default',intval($_POST['bl_bydefault']));
+               set_pconfig(local_user(),'blpost','bl_username',trim($_POST['bl_username']));
+               set_pconfig(local_user(),'blpost','bl_password',trim($_POST['bl_password']));
+               set_pconfig(local_user(),'blpost','bl_blog',trim($_POST['bl_blog']));
+
+       }
+
+}
+
+function blpost_post_local(&$a,&$b) {
+
+       // This can probably be changed to allow editing by pointing to a different API endpoint
+
+       if($b['edit'])
+               return;
+
+       if((! local_user()) || (local_user() != $b['uid']))
+               return;
+
+       if($b['private'] || $b['parent'])
+               return;
+
+    $bl_post   = intval(get_pconfig(local_user(),'blpost','post'));
+
+       $bl_enable = (($bl_post && x($_REQUEST,'blpost_enable')) ? intval($_REQUEST['blpost_enable']) : 0);
+
+       if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'blpost','post_by_default')))
+               $bl_enable = 1;
+
+    if(! $bl_enable)
+       return;
+
+    if(strlen($b['postopts']))
+       $b['postopts'] .= ',';
+     $b['postopts'] .= 'blpost';
+}
+
+
+
+
+function blpost_send(&$a,&$b) {
+
+    if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
+        return;
+
+    if(! strstr($b['postopts'],'blpost'))
+        return;
+
+    if($b['parent'] != $b['id'])
+        return;
+
+
+       $bl_username = xmlify(get_pconfig($b['uid'],'blpost','bl_username'));
+       $bl_password = xmlify(get_pconfig($b['uid'],'blpost','bl_password'));
+       $bl_blog = get_pconfig($b['uid'],'blpost','bl_blog');
+
+       if($bl_username && $bl_password && $bl_blog) {
+
+               require_once('include/bbcode.php');
+
+               $title = '<title>' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . '</title>';
+               $post = $title . bbcode($b['body']);
+               $post = xmlify($post);
+
+               $xml = <<< EOT
+<?xml version=\"1.0\" encoding=\"utf-8\"?>
+<methodCall>
+  <methodName>blogger.newPost</methodName>
+  <params>
+    <param><value><string/></value></param>
+    <param><value><string/></value></param>
+    <param><value><string>$bl_username</string></value></param>
+    <param><value><string>$bl_password</string></value></param>
+    <param><value><string>$post</string></value></param>
+    <param><value><int>1</int></value></param>
+  </params>
+</methodCall>
+
+EOT;
+
+               logger('blpost: data: ' . $xml, LOGGER_DATA);
+
+               if($bl_blog !== 'test')
+                       $x = post_url($bl_blog,$xml);
+               logger('posted to blogger: ' . (($x) ? $x : ''), LOGGER_DEBUG);
+
+       }
+}
+
diff --git a/gravatar/README.md b/gravatar/README.md
new file mode 100644 (file)
index 0000000..ff209b0
--- /dev/null
@@ -0,0 +1,42 @@
+# Gravatar Plugin
+by [Klaus Weidenbach](http://friendica.dszdw.net/profile/klaus)
+
+This addon allows you to look up an avatar image for new users and contacts at [Gravatar](http://www.gravatar.com). This will be used if there have not been found any other avatar images yet for example through OpenID.
+
+Gravatar is a popular, but centralized and proprietary service where people can store an avatar image for their email-addresses. It is widely used on many pages, for example to display an avatar for comment functions, profile pages, etc.
+
+* * *
+
+# Configuration
+## Default Avatar Image
+If no avatar was found for an email Gravatar can create some pseudo-random generated avatars based on an email hash. You can choose between these presets:
+
+* __Gravatar__: default static Gravatar logo
+* __MM__: (mystery-man) a static image
+* __Identicon__: a generated geometric pattern based on email hash
+* __Monsterid__: a generated 'monster' with different colors, faces, etc. based on email hash
+* __Wavatar__: faces with different features and backgrounds based on email hash
+* __Retro__: 8-bit arcade-styled pixelated faces based on email hash
+
+See examples at [Gravatar][1].
+## Avatar Rating
+Gravatar lets users self-rate their images to be used at appropriate audiences. Choose which are appropriate for your friendica site:
+
+* __g__: suitable for display on all wesites with any audience type
+* __pg__: may contain rude gestures, provocatively dressed individuals, the lesser swear words, or mild violence
+* __r__: may contain such things as harsh profanity, intense violence, nudity, or hard drug use
+* __x__: may contain hardcore sexual imagery or extremely disurbing violence
+
+See more information at [Gravatar][1].
+
+## Alternative Configuration
+Open the .htconfig.php file and add "gravatar" to the list of activated addons:
+
+        $a->config['system']['addon'] = "..., gravatar";
+
+You can add two configuration variables for the addon:
+
+        $a->config['gravatar']['default_avatar'] = "identicon";
+        $a->config['gravatar']['rating'] = "g";
+
+[1]: http://www.gravatar.com/site/implement/images/ "See documentation at Gravatar for more information"
diff --git a/gravatar/admin.tpl b/gravatar/admin.tpl
new file mode 100644 (file)
index 0000000..83144e4
--- /dev/null
@@ -0,0 +1,3 @@
+{{ inc field_select.tpl with $field=$default_avatar}}{{ endinc }}
+{{ inc field_select.tpl with $field=$rating }}{{ endinc }}
+<div class="submit"><input type="submit" value="$submit" /></div>
diff --git a/gravatar/gravatar.php b/gravatar/gravatar.php
new file mode 100644 (file)
index 0000000..b9435a3
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Name: Gravatar Support
+ * Description: If there is no avatar image for a new user or contact this plugin will look for one at Gravatar.
+ * Version: 1.0
+ * Author: Klaus Weidenbach <http://friendica.dszdw.net/profile/klaus>
+ */
+
+/**
+ * Installs the plugin hook
+ */
+function gravatar_install() {
+       register_hook('avatar_lookup', 'addon/gravatar/gravatar.php', 'gravatar_lookup');
+
+       logger("installed gravatar");
+}
+
+/**
+ * Removes the plugin hook
+ */
+function gravatar_uninstall() {
+       unregister_hook('avatar_lookup', 'addon/gravatar/gravatar.php', 'gravatar_lookup');
+
+       logger("uninstalled gravatar");
+}
+
+/**
+ * Looks up the avatar at gravatar.com and returns the URL.
+ *
+ * @param $a array
+ * @param &$b array
+ */
+function gravatar_lookup($a, &$b) {
+       $default_avatar = get_config('gravatar', 'default_img');
+       $rating = get_config('gravatar', 'rating');
+
+       // setting default value if nothing configured
+       if(! $default_avatar)
+               $default_avatar = 'identicon'; // default image will be a random pattern
+       if(! $rating)
+               $rating = 'g'; // suitable for display on all websites with any audience type
+
+       $hash = md5(trim(strtolower($b['email'])));
+
+       $url = 'http://www.gravatar.com/avatar/' .$hash .'.jpg';
+       $url .= '?s=' .$b['size'] .'&r=' .$rating;
+       if ($default_avatar != "gravatar")
+               $url .= '&d=' .$default_avatar;
+
+       $b['url'] = $url;       
+       $b['success'] = true;
+}
+
+/**
+ * Display admin settings for this addon
+ */
+function gravatar_plugin_admin (&$a, &$o) {
+       $t = file_get_contents( dirname(__file__)."/admin.tpl");
+
+       $default_avatar = get_config('gravatar', 'default_img');
+       $rating = get_config('gravatar', 'rating');
+
+       // set default values for first configuration
+       if(! $default_avatar)
+               $default_avatar = 'identicon'; // pseudo-random geometric pattern based on email hash
+       if(! $rating)
+               $rating = 'g'; // suitable for display on all websites with any audience type
+
+       // Available options for the select boxes
+       $default_avatars = array(
+               'mm' => t('generic profile image'),
+               'identicon' => t('random geometric pattern'),
+               'monsterid' => t('monster face'),
+               'wavatar' => t('computer generated face'),
+               'retro' => t('retro arcade style face'),
+       );
+       $ratings = array(
+               'g' => 'g',
+               'pg' => 'pg',
+               'r' => 'r',
+               'x' => 'x'
+       );
+
+       $o = '<input type="hidden" name="form_security_token" value="' .get_form_security_token("gravatarsave") .'">';
+       $o .= replace_macros( $t, array(
+               '$submit' => t('Submit'),
+               '$default_avatar' => array('avatar', t('Default avatar image'), $default_avatar, t('Select default avatar image if none was found at Gravatar. See README'), $default_avatars),
+               '$rating' => array('rating', t('Rating of images'), $rating, t('Select the appropriate avatar rating for your site. See README'), $ratings),
+       ));
+}
+
+/**
+ * Save admin settings
+ */
+function gravatar_plugin_admin_post (&$a) {
+       check_form_security_token('gravatarsave');
+
+       $default_avatar = ((x($_POST, 'avatar')) ? notags(trim($_POST['avatar'])) : 'identicon');
+       $rating = ((x($_POST, 'rating')) ? notags(trim($_POST['rating'])) : 'g');
+       set_config('gravatar', 'default_img', $default_avatar);
+       set_config('gravatar', 'rating', $rating);
+       info( t('Gravatar settings updated.') .EOL);
+}
+?>
diff --git a/planets.tgz b/planets.tgz
new file mode 100644 (file)
index 0000000..1be40b9
Binary files /dev/null and b/planets.tgz differ
diff --git a/planets/planets.css b/planets/planets.css
new file mode 100755 (executable)
index 0000000..668b65b
--- /dev/null
@@ -0,0 +1,14 @@
+
+
+
+#planets-enable-label {
+       float: left;
+       width: 200px;
+       margin-bottom: 25px;
+}
+
+#planets-checkbox {
+       float: left;
+}
+
+
diff --git a/planets/planets.php b/planets/planets.php
new file mode 100755 (executable)
index 0000000..1c6ed43
--- /dev/null
@@ -0,0 +1,182 @@
+<?php
+/**
+ * Name: Random Planet, Empirial Version
+ * Description: Sample Friendica plugin/addon. Set a random planet from the Emprire when posting.
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ * Author: Darth Baldwin <darthvader@death.star>
+ * 
+ * 
+ * 
+ *
+ * Addons are registered with the system in the
+ * .htconfig.php file.
+ *
+ * $a->config['system']['addon'] = 'plugin1,plugin2,etc.';
+ *
+ * When registration is detected, the system calls the plugin
+ * name_install() function, located in 'addon/name/name.php',
+ * where 'name' is the name of the addon.
+ * If the addon is removed from the configuration list, the 
+ * system will call the name_uninstall() function.
+ *
+ */
+
+
+function planets_install() {
+
+       /**
+        * 
+        * Our demo plugin will attach in three places.
+        * The first is just prior to storing a local post.
+        *
+        */
+
+       register_hook('post_local', 'addon/planets/planets.php', 'planets_post_hook');
+
+       /**
+        *
+        * Then we'll attach into the plugin settings page, and also the 
+        * settings post hook so that we can create and update
+        * user preferences.
+        *
+        */
+
+       register_hook('plugin_settings', 'addon/planets/planets.php', 'planets_settings');
+       register_hook('plugin_settings_post', 'addon/planets/planets.php', 'planets_settings_post');
+
+       logger("installed planets");
+}
+
+
+function planets_uninstall() {
+
+       /**
+        *
+        * uninstall unregisters any hooks created with register_hook
+        * during install. It may also delete configuration settings
+        * and any other cleanup.
+        *
+        */
+
+       unregister_hook('post_local',    'addon/planets/planets.php', 'planets_post_hook');
+       unregister_hook('plugin_settings', 'addon/planets/planets.php', 'planets_settings');
+       unregister_hook('plugin_settings_post', 'addon/planets/planets.php', 'planets_settings_post');
+
+
+       logger("removed planets");
+}
+
+
+
+function planets_post_hook($a, &$item) {
+
+       /**
+        *
+        * An item was posted on the local system.
+        * We are going to look for specific items:
+        *      - A status post by a profile owner
+        *      - The profile owner must have allowed our plugin
+        *
+        */
+
+       logger('planets invoked');
+
+       if(! local_user())   /* non-zero if this is a logged in user of this system */
+               return;
+
+       if(local_user() != $item['uid'])    /* Does this person own the post? */
+               return;
+
+       if($item['parent'])   /* If the item has a parent, this is a comment or something else, not a status post. */
+               return;
+
+       /* Retrieve our personal config setting */
+
+       $active = get_pconfig(local_user(), 'planets', 'enable');
+
+       if(! $active)
+               return;
+
+       /**
+        *
+        * OK, we're allowed to do our stuff.
+        * Here's what we are going to do:
+        * load the list of timezone names, and use that to generate a list of world planets.
+        * Then we'll pick one of those at random and put it in the "location" field for the post.
+        *
+        */
+
+       $planets = array('Alderaan','Tatooine','Dagoba','Polis Massa','Coruscant','Hoth','Endor','Kamino','Rattatak','Mustafar','Iego','Geonosis','Felucia','Dantooine','Ansion','Artaru','Bespin','Boz Pity','Cato Neimoidia','Christophsis','Kashyyk','Kessel','Malastare','Mygeeto','Nar Shaddaa','Ord Mantell','Saleucami','Subterrel','Death Star','Teth','Tund','Utapau','Yavin');
+#      $zones = timezone_identifiers_list();
+#      foreach($zones as $zone) {
+#              if((strpos($zone,'/')) && (! stristr($zone,'US/')) && (! stristr($zone,'Etc/')))
+#                      $planets[] = str_replace('_', ' ',substr($zone,strpos($zone,'/') + 1));
+#      }
+# 
+#      if(! count($planets))
+#              return;
+       $planet = array_rand($planets,1);
+       $item['location'] = $planets[$planet];
+
+       return;
+}
+
+
+
+
+/**
+ *
+ * Callback from the settings post function.
+ * $post contains the $_POST array.
+ * We will make sure we've got a valid user account
+ * and if so set our configuration setting for this person.
+ *
+ */
+
+function planets_settings_post($a,$post) {
+       if(! local_user())
+               return;
+       if($_POST['planets-submit'])
+               set_pconfig(local_user(),'planets','enable',intval($_POST['planets']));
+}
+
+
+/**
+ *
+ * Called from the Plugin Setting form. 
+ * Add our own settings info to the page.
+ *
+ */
+
+
+
+function planets_settings(&$a,&$s) {
+
+       if(! local_user())
+               return;
+
+       /* Add our stylesheet to the page so we can make our settings look nice */
+
+       $a->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $a->get_baseurl() . '/addon/planets/planets.css' . '" media="all" />' . "\r\n";
+
+       /* Get the current state of our config variable */
+
+       $enabled = get_pconfig(local_user(),'planets','enable');
+
+       $checked = (($enabled) ? ' checked="checked" ' : '');
+
+       /* Add some HTML to the existing form */
+
+       $s .= '<div class="settings-block">';
+       $s .= '<h3>' . t('Planets Settings') . '</h3>';
+       $s .= '<div id="planets-enable-wrapper">';
+       $s .= '<label id="planets-enable-label" for="planets-checkbox">' . t('Enable Planets Plugin') . '</label>';
+       $s .= '<input id="planets-checkbox" type="checkbox" name="planets" value="1" ' . $checked . '/>';
+       $s .= '</div><div class="clear"></div>';
+
+       /* provide a submit button */
+
+       $s .= '<div class="settings-submit-wrapper" ><input type="submit" name="planets-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
+
+}