5 * Description: Friendica plugin/addon with functions suitable for a public server.
7 * Author: Keith Fernie <http://friendika.me4.it/profile/keith>
13 function public_server_install() {
15 register_hook('register_account', 'addon/public_server/public_server.php', 'public_server_register_account');
16 register_hook('cron', 'addon/public_server/public_server.php', 'public_server_cron');
17 register_hook('enotify','addon/public_server/public_server.php', 'public_server_enotify');
18 register_hook('logged_in', 'addon/public_server/public_server.php', 'public_server_login');
22 function public_server_uninstall() {
24 unregister_hook('register_account', 'addon/public_server/public_server.php', 'public_server_register_account');
25 unregister_hook('cron', 'addon/public_server/public_server.php', 'public_server_cron');
26 unregister_hook('enotify','addon/public_server/public_server.php', 'public_server_enotify');
27 unregister_hook('logged_in', 'addon/public_server/public_server.php', 'public_server_login');
30 function public_server_register_account($a,$b) {
34 $days = get_config('public_server','expiredays');
35 $days_posts = get_config('public_server','expireposts');
39 $r = q("UPDATE user set account_expires_on = '%s', expire = %d where uid = %d limit 1",
40 dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')),
48 function public_server_cron($a,$b) {
49 require_once('include/enotify.php');
50 $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
51 expire_notification_sent = '0000-00-00 00:00:00' ");
57 'type' => NOTIFY_SYSTEM,
58 'system_type' => 'public_server_expire',
59 'language' => $rr['language'],
60 'to_name' => $rr['username'],
61 'to_email' => $rr['email'],
62 'source_name' => t('Administrator'),
63 'source_link' => $a->get_baseurl(),
64 'source_photo' => $a->get_baseurl() . '/images/person-80.jpg',
67 q("update user set expire_notification_sent = '%s' where uid = %d limit 1",
68 dbesc(datetime_convert()),
74 $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'");
76 require_once('include/Contact.php');
78 user_remove($rr['uid']);
81 $nologin = get_config('public_server','nologin');
83 $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));
86 q("update user set account_expires_on = '%s' where uid = %d limit 1",
87 dbesc(datetime_convert('UTC','UTC','now +' . '6 days')),
94 $flagusers = get_config('public_server','flagusers');
96 $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));
99 q("update user set account_expires_on = '%s' where uid = %d limit 1",
100 dbesc(datetime_convert('UTC','UTC','now +' . '6 days')),
106 $flagposts = get_config('public_server','flagposts');
107 $flagpostsexpire = get_config('public_server','flagpostsexpire');
108 if ($flagposts && $flagpostsexpire) {
109 $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));
112 q("update user set expire = %d where uid = %d limit 1",
113 intval($flagpostsexpire),
122 function public_server_enotify(&$a, &$b) {
123 if (x($b, 'params') && $b['params']['type'] == NOTIFY_SYSTEM
124 && x($b['params'], 'system_type') && $b['params']['system_type'] === 'public_server_expire') {
125 $b['itemlink'] = $a->get_baseurl();
126 $b['epreamble'] = $b['preamble'] = sprintf( t('Your account on %s will expire in a few days.'), get_config('system','sitename'));
127 $b['subject'] = t('Your Friendica account is about to expire.');
128 $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]");
132 function public_server_login($a,$b) {
133 $days = get_config('public_server','expiredays');
136 $r = q("UPDATE user set account_expires_on = '%s' where uid = %d and account_expires_on > '0000-00-00 00:00:00' limit 1",
137 dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')),