Merge branch '3.6-rc'

This commit is contained in:
Tobias Diekershoff 2018-03-23 08:00:37 +01:00
commit 39dd3dffe0
733 changed files with 10943 additions and 8237 deletions

View file

@ -2,10 +2,10 @@ Public Server
=============
Public Server is a Friendica plugin which implements automatic account & post expiration so that a site may be used as a public
Public Server is a Friendica addon 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.
This is a modified version of the testdrive addon, DO NOT ACTIVATE AT THE SAME TIME AS THE TESTDRIVE ADDON.
//When an account is created on the site, it is given a hard expiration date of
$a->config['public_server']['expiredays'] = 30;
@ -19,7 +19,7 @@ This is a modified version of the testdrive plugin, DO NOT ACTIVATE AT THE SAME
$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.
Set these in your .htconfig.php file. By default nothing is defined in case the addon 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.

View file

@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2014-10-15 09:02+0000\n"
"PO-Revision-Date: 2017-09-20 06:08+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"

View file

@ -1,176 +1,169 @@
<?php
/**
* Name: public_server
* Description: Friendica plugin/addon with functions suitable for a public server.
* Description: Friendica addon with functions suitable for a public server.
* Version: 1.1
* Author: Keith Fernie <http://friendika.me4.it/profile/keith>
*/
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Database\DBM;
use Friendica\Util\DateTimeFormat;
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_install()
{
Addon::registerHook('register_account', 'addon/public_server/public_server.php', 'public_server_register_account');
Addon::registerHook('cron', 'addon/public_server/public_server.php', 'public_server_cron');
Addon::registerHook('enotify', 'addon/public_server/public_server.php', 'public_server_enotify');
Addon::registerHook('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_uninstall()
{
Addon::unregisterHook('register_account', 'addon/public_server/public_server.php', 'public_server_register_account');
Addon::unregisterHook('cron', 'addon/public_server/public_server.php', 'public_server_cron');
Addon::unregisterHook('enotify', 'addon/public_server/public_server.php', 'public_server_enotify');
Addon::unregisterHook('logged_in', 'addon/public_server/public_server.php', 'public_server_login');
}
function public_server_register_account($a,$b) {
function public_server_register_account($a, $b)
{
$uid = $b;
$days = get_config('public_server','expiredays');
$days_posts = get_config('public_server','expireposts');
if(! $days)
$days = Config::get('public_server', 'expiredays');
$days_posts = Config::get('public_server', 'expireposts');
if (!$days) {
return;
}
$r = q("UPDATE user set account_expires_on = '%s', expire = %d where uid = %d",
dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')),
intval($days_posts),
intval($uid)
);
$fields = ['account_expires_on' => DateTimeFormat::utc('now +' . $days . ' days'), 'expire' => $days_posts];
dba::update('user', $fields, ['uid' => $uid]);
}
};
function public_server_cron($a,$b) {
function public_server_cron($a, $b)
{
logger("public_server: cron start");
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' ");
$r = q("SELECT * FROM `user` WHERE `account_expires_on` < UTC_TIMESTAMP() + INTERVAL 5 DAY AND
`account_expires_on` > '%s' AND
`expire_notification_sent` <= '%s'",
dbesc(NULL_DATE), dbesc(NULL_DATE));
if(count($r)) {
foreach($r as $rr) {
notification(array(
if (DBM::is_result($r)) {
foreach ($r as $rr) {
notification([
'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_name' => L10n::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",
dbesc(datetime_convert()),
intval($rr['uid'])
);
$fields = ['expire_notification_sent' => DateTimeFormat::utcNow()];
dba::update('user', $fields, ['uid' => $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 = Config::get('public_server', 'nologin', false);
if ($nologin) {
$r = q("SELECT `uid` FROM `user` WHERE NOT `account_expired` AND `login_date` <= '%s' AND `register_date` < UTC_TIMESTAMP() - INTERVAL %d DAY AND `account_expires_on` <= '%s'",
dbesc(NULL_DATE), intval($nologin), dbesc(NULL_DATE));
if (DBM::is_result($r)) {
foreach ($r as $rr) {
$fields = ['account_expires_on' => DateTimeFormat::utc('now +6 days')];
dba::update('user', $fields, ['uid' => $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",
dbesc(datetime_convert('UTC','UTC','now +' . '6 days')),
intval($rr['uid'])
);
$flagusers = Config::get('public_server', 'flagusers', false);
if ($flagusers) {
$r = q("SELECT `uid` FROM `user` WHERE NOT `account_expired` AND `login_date` < UTC_TIMESTAMP() - INTERVAL %d DAY AND `account_expires_on` <= '%s' AND `page-flags` = 0",
intval($flagusers), dbesc(NULL_DATE));
if (DBM::is_result($r)) {
foreach ($r as $rr) {
$fields = ['account_expires_on' => DateTimeFormat::utc('now +6 days')];
dba::update('user', $fields, ['uid' => $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",
dbesc(datetime_convert('UTC','UTC','now +' . '6 days')),
intval($rr['uid'])
);
}
}
$flagposts = get_config('public_server','flagposts');
$flagpostsexpire = get_config('public_server','flagpostsexpire');
$flagposts = Config::get('public_server', 'flagposts');
$flagpostsexpire = Config::get('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",
intval($flagpostsexpire),
intval($rr['uid'])
);
$r = q("SELECT `uid` FROM `user` WHERE NOT `account_expired` AND `login_date` < UTC_TIMESTAMP() - INTERVAL %d DAY AND `account_expires_on` <= '%s' and `expire` = 0 AND `page-flags` = 0",
intval($flagposts), dbesc(NULL_DATE));
if (DBM::is_result($r)) {
foreach ($r as $rr) {
dba::update('user', ['expire' => $flagpostsexpire], ['uid' => $rr['uid']]);
}
}
}
}
logger("public_server: cron end");
}
function public_server_enotify(&$a, &$b) {
if (x($b, 'params') && $b['params']['type'] == NOTIFY_SYSTEM
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]");
}
$b['itemlink'] = $a->get_baseurl();
$b['epreamble'] = $b['preamble'] = L10n::t('Your account on %s will expire in a few days.', Config::get('system', 'sitename'));
$b['subject'] = L10n::t('Your Friendica account is about to expire.');
$b['body'] = L10n::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)
function public_server_login($a, $b)
{
$days = Config::get('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'",
dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')),
local_user()
);
}
$fields = ['account_expires_on' => DateTimeFormat::utc('now +' . $days . ' days')];
$condition = ["`uid` = ? AND `account_expires_on` > ?", local_user(), NULL_DATE];
dba::update('user', $fields, $condition);
}
function public_server_plugin_admin_post ( &$a ) {
check_form_security_token_redirectOnErr('/admin/plugins/publicserver', 'publicserver');
$expiredays = (( x($_POST, 'expiredays') ) ? notags(trim($_POST['expiredays'] )) : '');
$expireposts = (( x($_POST, 'expireposts') ) ? notags(trim($_POST['expireposts'] )) : '');
$nologin = (( x($_POST, 'nologin') ) ? notags(trim($_POST['nologin'] )) : '');
$flagusers = (( x($_POST, 'flagusers') ) ? notags(trim($_POST['flagusers'] )) : '');
$flagposts = (( x($_POST, 'flagposts') ) ? notags(trim($_POST['flagposts'] )) : '');
$flagpostsexpire = (( x($_POST, 'flagpostsexpire') ) ? notags(trim($_POST['flagpostsexpire'] )) : '');
set_config( 'public_server','expiredays',$expiredays );
set_config( 'public_server','expireposts',$expireposts );
set_config( 'public_server','nologin',$nologin );
set_config( 'public_server','flagusers',$flagusers);
set_config( 'public_server','flagposts',$flagposts );
set_config( 'public_server','flagpostsexpire',$flagpostsexpire );
info( t('Settings saved').EOL );
}
function public_server_plugin_admin ( &$a, &$o) {
$token = get_form_security_token("publicserver");
$t = get_markup_template( "admin.tpl", "addon/public_server");
$o = replace_macros($t, array(
'$submit' => t('Save Settings'),
'$form_security_token' => $token,
'$infotext' => t('Set any of these options to 0 to deactivate it.'),
'$expiredays' => Array( "expiredays","Expire Days", intval(get_config('public_server', 'expiredays')), "When an account is created on the site, it is given a hard "),
'$expireposts' => Array( "expireposts", "Expire Posts", intval(get_config('public_server','expireposts')), "Set the default days for posts to expire here"),
'$nologin' => Array( "nologin", "No Login", intval(get_config('public_server','nologin')), "Remove users who have never logged in after nologin days "),
'$flagusers' => Array( "flagusers", "Flag users", intval(get_config('public_server','flagusers')), "Remove users who last logged in over flagusers days ago"),
'$flagposts' => Array( "flagposts", "Flag posts", intval(get_config('public_server','flagposts')), "For users who last logged in over flagposts days ago set post expiry days to flagpostsexpire "),
'$flagpostsexpire' => Array( "flagpostsexpire", "Flag posts expire", intval(get_config('public_server','flagpostsexpire'))),
));
function public_server_addon_admin_post(&$a)
{
check_form_security_token_redirectOnErr('/admin/addons/publicserver', 'publicserver');
$expiredays = (x($_POST, 'expiredays') ? notags(trim($_POST['expiredays'])) : '');
$expireposts = (x($_POST, 'expireposts') ? notags(trim($_POST['expireposts'])) : '');
$nologin = (x($_POST, 'nologin') ? notags(trim($_POST['nologin'])) : '');
$flagusers = (x($_POST, 'flagusers') ? notags(trim($_POST['flagusers'])) : '');
$flagposts = (x($_POST, 'flagposts') ? notags(trim($_POST['flagposts'])) : '');
$flagpostsexpire = (x($_POST, 'flagpostsexpire') ? notags(trim($_POST['flagpostsexpire'])) : '');
Config::set('public_server', 'expiredays', $expiredays);
Config::set('public_server', 'expireposts', $expireposts);
Config::set('public_server', 'nologin', $nologin);
Config::set('public_server', 'flagusers', $flagusers);
Config::set('public_server', 'flagposts', $flagposts);
Config::set('public_server', 'flagpostsexpire', $flagpostsexpire);
info(L10n::t('Settings saved').EOL);
}
function public_server_addon_admin(&$a, &$o)
{
$token = get_form_security_token("publicserver");
$t = get_markup_template("admin.tpl", "addon/public_server");
$o = replace_macros($t, [
'$submit' => L10n::t('Save Settings'),
'$form_security_token' => $token,
'$infotext' => L10n::t('Set any of these options to 0 to deactivate it.'),
'$expiredays' => ["expiredays","Expire Days", intval(Config::get('public_server', 'expiredays')), "When an account is created on the site, it is given a hard "],
'$expireposts' => ["expireposts", "Expire Posts", intval(Config::get('public_server', 'expireposts')), "Set the default days for posts to expire here"],
'$nologin' => ["nologin", "No Login", intval(Config::get('public_server', 'nologin')), "Remove users who have never logged in after nologin days "],
'$flagusers' => ["flagusers", "Flag users", intval(Config::get('public_server', 'flagusers')), "Remove users who last logged in over flagusers days ago"],
'$flagposts' => ["flagposts", "Flag posts", intval(Config::get('public_server', 'flagposts')), "For users who last logged in over flagposts days ago set post expiry days to flagpostsexpire "],
'$flagpostsexpire' => ["flagpostsexpire", "Flag posts expire", intval(Config::get('public_server', 'flagpostsexpire'))],
]);
}