Merge remote branch 'upstream/master'

This commit is contained in:
Michael Vogel 2012-05-19 14:04:40 +02:00
commit d87e6982f9
8 changed files with 182 additions and 2 deletions

Binary file not shown.

View File

@ -332,6 +332,14 @@ function fb_get_friends_sync_parsecontact($uid, $contact) {
$contact_id = $r[0]['id'];
$g = q("select def_gid from user where uid = %d limit 1",
intval($uid)
);
if($g && intval($g[0]['def_gid'])) {
require_once('include/group.php');
group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
}
require_once("Photo.php");
$photos = import_profile_photo($r[0]['photo'],$uid,$contact_id);

View File

@ -112,7 +112,7 @@ function privacy_image_cache_ping_xmlize_hook(&$a, &$o) {
* @param App $a
* @param null|object $b
*/
function privacy_image_cache_cron(&$a, &$b) {
function privacy_image_cache_cron(&$a = null, &$b = null) {
$cachetime = get_config('privacy_image_cache','cache_time');
if (!$cachetime) $cachetime = PRIVACY_IMAGE_CACHE_DEFAULT_TIME;
@ -161,7 +161,7 @@ function privacy_image_cache_plugin_admin(&$a, &$o){
* @param App $a
* @param null|object $o
*/
function privacy_image_cache_plugin_admin_post(&$a, &$o){
function privacy_image_cache_plugin_admin_post(&$a = null, &$o = null){
check_form_security_token_redirectOnErr('/admin/plugins/privacy_image_cache', 'picsave');
if (isset($_REQUEST['save'])) {

BIN
public_server.tgz Executable file

Binary file not shown.

29
public_server/README.md Normal file
View File

@ -0,0 +1,29 @@
Public Server
=============
Public Server is a Friendica plugin which implements automatic account & post expiration so that a site may be used as a public
test bed with reduced data retention.
This is a modified version of the testdrive plugin, DO NOT ACTIVATE AT THE SAME TIME AS THE TESTDRIVE PLUGIN.
//When an account is created on the site, it is given a hard expiration date of
$a->config['public_server']['expiredays'] = 30;
//Set the default days for posts to expire here
$a->config['public_server']['expireposts'] = 30;
//Remove users who have never logged in after nologin days
$a->config['public_server']['nologin'] = 30;
//Remove users who last logged in over flagusers days ago
$a->config['public_server']['flagusers'] = 146;
//For users who last logged in over flagposts days ago set post expiry days to flagpostsexpire
$a->config['public_server']['flagposts'] = 90;
$a->config['public_server']['flagpostsexpire'] = 146;
Set these in your .htconfig.php file. By default nothing is defined in case the plugin is activated accidentally.
They can be ommitted or set to 0 to disable each option.
The default values are those used by friendica.eu, change these as desired.
The expiration date is updated when the user logs in.
An email warning will be sent out approximately five days before the expiration occurs. Five days later the account is removed completely.

View File

@ -0,0 +1,140 @@
<?php
/**
* Name: public_server
* Description: Friendica plugin/addon with functions suitable for a public server.
* Version: 1.0
* Author: Keith Fernie <http://friendika.me4.it/profile/keith>
*/
function public_server_install() {
register_hook('register_account', 'addon/public_server/public_server.php', 'public_server_register_account');
register_hook('cron', 'addon/public_server/public_server.php', 'public_server_cron');
register_hook('enotify','addon/public_server/public_server.php', 'public_server_enotify');
register_hook('logged_in', 'addon/public_server/public_server.php', 'public_server_login');
}
function public_server_uninstall() {
unregister_hook('register_account', 'addon/public_server/public_server.php', 'public_server_register_account');
unregister_hook('cron', 'addon/public_server/public_server.php', 'public_server_cron');
unregister_hook('enotify','addon/public_server/public_server.php', 'public_server_enotify');
unregister_hook('logged_in', 'addon/public_server/public_server.php', 'public_server_login');
}
function public_server_register_account($a,$b) {
$uid = $b;
$days = get_config('public_server','expiredays');
$days_posts = get_config('public_server','expireposts');
if(! $days)
return;
$r = q("UPDATE user set account_expires_on = '%s', expire = %d where uid = %d limit 1",
dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')),
intval($days_posts),
intval($uid)
);
};
function public_server_cron($a,$b) {
require_once('include/enotify.php');
$r = q("select * from user where account_expires_on < UTC_TIMESTAMP() + INTERVAL 5 DAY and account_expires_on > '0000-00-00 00:00:00' 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' => 'public_server_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 and account_expires_on > '0000-00-00 00:00:00'");
if(count($r)) {
require_once('include/Contact.php');
foreach($r as $rr)
user_remove($rr['uid']);
}
$nologin = get_config('public_server','nologin');
if($nologin) {
$r = q("select uid from user where account_expired = 0 and login_date = '0000-00-00 00:00:00' and register_date < UTC_TIMESTAMP() - INTERVAL %d DAY and account_expires_on = '0000-00-00 00:00:00'",intval($nologin));
if(count($r)) {
foreach($r as $rr)
q("update user set account_expires_on = '%s' where uid = %d limit 1",
dbesc(datetime_convert('UTC','UTC','now +' . '6 days')),
intval($rr['uid'])
);
}
}
$flagusers = get_config('public_server','flagusers');
if($flagusers) {
$r = q("select uid from user where account_expired = 0 and login_date < UTC_TIMESTAMP() - INTERVAL %d DAY and account_expires_on = '0000-00-00 00:00:00' and `page-flags` = 0",intval($flagusers));
if(count($r)) {
foreach($r as $rr)
q("update user set account_expires_on = '%s' where uid = %d limit 1",
dbesc(datetime_convert('UTC','UTC','now +' . '6 days')),
intval($rr['uid'])
);
}
}
$flagposts = get_config('public_server','flagposts');
$flagpostsexpire = get_config('public_server','flagpostsexpire');
if ($flagposts && $flagpostsexpire) {
$r = q("select uid from user where account_expired = 0 and login_date < UTC_TIMESTAMP() - INTERVAL %d DAY and account_expires_on = '0000-00-00 00:00:00' and expire = 0 and 'page-flags' = 0",intval(flagposts));
if(count($r)) {
foreach($r as $rr)
q("update user set expire = %d where uid = %d limit 1",
intval($flagpostsexpire),
intval($rr['uid'])
);
}
}
}
function public_server_enotify(&$a, &$b) {
if (x($b, 'params') && $b['params']['type'] == NOTIFY_SYSTEM
&& x($b['params'], 'system_type') && $b['params']['system_type'] === 'public_server_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 account is about to expire.');
$b['body'] = sprintf( t("Hi %1\$s,\n\nYour account on %2\$s will expire in less than five days. You may keep your account by logging in at least once every 30 days"), $b['params']['to_name'], "[url=" . $app->config["system"]["url"] . "]" . $app->config["sitename"] . "[/url]");
}
}
function public_server_login($a,$b) {
$days = get_config('public_server','expiredays');
if(! $days)
return;
$r = q("UPDATE user set account_expires_on = '%s' where uid = %d and account_expires_on > '0000-00-00 00:00:00' limit 1",
dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')),
local_user()
);
}

BIN
testdrive.tgz Normal file → Executable file

Binary file not shown.

View File

@ -14,6 +14,8 @@ function testdrive_install() {
register_hook('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account');
register_hook('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron');
register_hook('enotify','addon/testdrive/testdrive.php', 'testdrive_enotify');
}
@ -21,6 +23,7 @@ function testdrive_uninstall() {
unregister_hook('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account');
unregister_hook('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron');
unregister_hook('enotify','addon/testdrive/testdrive.php', 'testdrive_enotify');
}