forked from friendica/friendica-addons
		
	Merge remote branch 'upstream/master'
This commit is contained in:
		
				commit
				
					
						f6f0578d12
					
				
			
		
					 24 changed files with 681 additions and 7 deletions
				
			
		
							
								
								
									
										
											BIN
										
									
								
								blogger.tgz
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								blogger.tgz
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										16
									
								
								blogger/blogger.css
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								blogger/blogger.css
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										200
									
								
								blogger/blogger.php
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										200
									
								
								blogger/blogger.php
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								facebook.tgz
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								facebook.tgz
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -59,6 +59,7 @@ define('FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL', 259200); // 3 days
 | 
			
		|||
define('FACEBOOK_DEFAULT_POLL_INTERVAL', 60); // given in minutes
 | 
			
		||||
define('FACEBOOK_MIN_POLL_INTERVAL', 5);
 | 
			
		||||
 | 
			
		||||
require_once('include/security.php');
 | 
			
		||||
 | 
			
		||||
function facebook_install() {
 | 
			
		||||
	register_hook('post_local',       'addon/facebook/facebook.php', 'facebook_post_local');
 | 
			
		||||
| 
						 | 
				
			
			@ -648,6 +649,8 @@ function facebook_plugin_settings(&$a,&$b) {
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
function facebook_plugin_admin(&$a, &$o){
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	$o = '<input type="hidden" name="form_security_token" value="' . get_form_security_token("fbsave") . '">';
 | 
			
		||||
	
 | 
			
		||||
	$o .= '<h4>' . t('Facebook API Key') . '</h4>';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								gravatar.tgz
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gravatar.tgz
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										42
									
								
								gravatar/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								gravatar/README.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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"
 | 
			
		||||
							
								
								
									
										3
									
								
								gravatar/admin.tpl
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								gravatar/admin.tpl
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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>
 | 
			
		||||
							
								
								
									
										104
									
								
								gravatar/gravatar.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								gravatar/gravatar.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								impressum.tgz
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								impressum.tgz
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								piwik.tgz
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								piwik.tgz
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -1,9 +1,9 @@
 | 
			
		|||
#piwik-optout-link {
 | 
			
		||||
	padding: 100px 50px;
 | 
			
		||||
	padding: 50px 0 0 0;
 | 
			
		||||
	text-align: justify;
 | 
			
		||||
	font-size: 0.85em;
 | 
			
		||||
        margin-top:10px;
 | 
			
		||||
        clear: both;
 | 
			
		||||
    margin-top:10px;
 | 
			
		||||
    clear: both;
 | 
			
		||||
}
 | 
			
		||||
#piwik-code-block {
 | 
			
		||||
	display: none;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								planets.tgz
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								planets.tgz
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										14
									
								
								planets/planets.css
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								planets/planets.css
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#planets-enable-label {
 | 
			
		||||
	float: left;
 | 
			
		||||
	width: 200px;
 | 
			
		||||
	margin-bottom: 25px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#planets-checkbox {
 | 
			
		||||
	float: left;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										182
									
								
								planets/planets.php
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										182
									
								
								planets/planets.php
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -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>';
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								randplace.tgz
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								randplace.tgz
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -8,10 +8,8 @@
 | 
			
		|||
 * 
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * Addons are registered with the system in the
 | 
			
		||||
 * .htconfig.php file.
 | 
			
		||||
 *
 | 
			
		||||
 * $a->config['system']['addon'] = 'plugin1,plugin2,etc.';
 | 
			
		||||
 * Addons are registered with the system through the admin
 | 
			
		||||
 * panel.
 | 
			
		||||
 *
 | 
			
		||||
 * When registration is detected, the system calls the plugin
 | 
			
		||||
 * name_install() function, located in 'addon/name/name.php',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								showmore.tgz
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								showmore.tgz
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								statusnet.tgz
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								statusnet.tgz
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								testdrive.tgz
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								testdrive.tgz
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										23
									
								
								testdrive/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								testdrive/README.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
TestDrive
 | 
			
		||||
=========
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Testdrive is a Friendica plugin which implements automatic account expiration so that a site may be used as a public
 | 
			
		||||
test bed. 
 | 
			
		||||
 | 
			
		||||
When an account is created on the site, it is given a hard expiration date of 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
$a->config['testdrive']['expiredays'] = 30;
 | 
			
		||||
 | 
			
		||||
Set this in your .htconfig.php file to allow a 30 day test drive period. By default no expiration period is defined 
 | 
			
		||||
in case the plugin is activated accidentally. 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
There is no opportunity to extend an expired account using this plugin. Expiration is final. Other plugins may be created
 | 
			
		||||
which charge for service and extend the expiration as long as a balance is maintained. This plugin is purely for creating
 | 
			
		||||
a limited use test site. 
 | 
			
		||||
 | 
			
		||||
An email warning will be sent out approximately five days before the expiration occurs. Once it occurs logins and many 
 | 
			
		||||
system functions are disabled. Five days later the account is removed completely. 
 | 
			
		||||
   
 | 
			
		||||
							
								
								
									
										89
									
								
								testdrive/testdrive.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								testdrive/testdrive.php
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,89 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Name: testdrive
 | 
			
		||||
 * Description: Sample Friendica plugin/addon for creating a test drive Friendica site with automatic account expiration.
 | 
			
		||||
 * Version: 1.0
 | 
			
		||||
 * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function testdrive_install() {
 | 
			
		||||
 | 
			
		||||
	register_hook('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account');
 | 
			
		||||
	register_hook('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function testdrive_uninstall() {
 | 
			
		||||
 | 
			
		||||
	unregister_hook('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account');
 | 
			
		||||
	unregister_hook('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron');
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function testdrive_register_account($a,$b) {
 | 
			
		||||
 | 
			
		||||
	$uid = $b;
 | 
			
		||||
 | 
			
		||||
	$days = get_config('testdrive','expiredays');
 | 
			
		||||
	if(! $days)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	$r = q("UPDATE user set account_expires_on = '%s' where uid = %d limit 1",
 | 
			
		||||
		dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')),
 | 
			
		||||
		intval($uid)
 | 
			
		||||
	);
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
function testdrive_cron($a,$b) {
 | 
			
		||||
	require_once('include/enotify.php');
 | 
			
		||||
 | 
			
		||||
	$r = q("select * from user where account_expires_on < UTC_TIMESTAMP() + INTERVAL 5 DAY and
 | 
			
		||||
		expire_notification_sent = '0000-00-00 00:00:00' ");
 | 
			
		||||
 | 
			
		||||
	if(count($r)) {
 | 
			
		||||
		foreach($r as $rr) {
 | 
			
		||||
			notification(array(
 | 
			
		||||
				'uid' => $rr['uid'],
 | 
			
		||||
				'type' => NOTIFY_SYSTEM,
 | 
			
		||||
				'system_type' => 'testdrive_expire',
 | 
			
		||||
				'language'     => $rr['language'],
 | 
			
		||||
				'to_name'      => $rr['username'],
 | 
			
		||||
				'to_email'     => $rr['email'],
 | 
			
		||||
				'source_name'  => t('Administrator'),
 | 
			
		||||
				'source_link'  => $a->get_baseurl(),
 | 
			
		||||
				'source_photo' => $a->get_baseurl() . '/images/person-80.jpg',
 | 
			
		||||
			));
 | 
			
		||||
 | 
			
		||||
			q("update user set expire_notification_sent = '%s' where uid = %d limit 1",
 | 
			
		||||
				dbesc(datetime_convert()),
 | 
			
		||||
				intval($rr['uid'])
 | 
			
		||||
			);
 | 
			
		||||
 
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	$r = q("select * from user where account_expired = 1 and account_expires_on < UTC_TIMESTAMP() - INTERVAL 5 DAY ");
 | 
			
		||||
	if(count($r)) {
 | 
			
		||||
		require_once('include/Contact.php');
 | 
			
		||||
		foreach($r as $rr)
 | 
			
		||||
			user_remove($rr['uid']);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}		
 | 
			
		||||
 | 
			
		||||
function testdrive_enotify(&$a, &$b) {
 | 
			
		||||
    if (x($b, 'params') && $b['params']['type'] == NOTIFY_SYSTEM 
 | 
			
		||||
		&& x($b['params'], 'system_type') && $b['params']['system_type'] === 'testdrive_expire') {
 | 
			
		||||
        $b['itemlink'] = $a->get_baseurl();
 | 
			
		||||
        $b['epreamble'] = $b['preamble'] = sprintf( t('Your account on %s will expire in a few days.'), get_config('system','sitename'));
 | 
			
		||||
        $b['subject'] = t('Your Friendica test account is about to expire.');
 | 
			
		||||
        $b['body'] = sprintf( t("Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."), $b['params']['to_name'], "[url=" . $app->config["system"]["url"] . "]" . $app->config["sitename"] . "[/url]");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								twitter.tgz
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								twitter.tgz
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue