diff --git a/randplace.tgz b/randplace.tgz index 931781d0..7ab5f0db 100755 Binary files a/randplace.tgz and b/randplace.tgz differ diff --git a/randplace/randplace.php b/randplace/randplace.php index df713766..b70c02d9 100755 --- a/randplace/randplace.php +++ b/randplace/randplace.php @@ -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', diff --git a/testdrive.tgz b/testdrive.tgz new file mode 100644 index 00000000..7d314ea2 Binary files /dev/null and b/testdrive.tgz differ diff --git a/testdrive/README.md b/testdrive/README.md new file mode 100644 index 00000000..3d735dea --- /dev/null +++ b/testdrive/README.md @@ -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. + \ No newline at end of file diff --git a/testdrive/testdrive.php b/testdrive/testdrive.php new file mode 100644 index 00000000..b7c021a1 --- /dev/null +++ b/testdrive/testdrive.php @@ -0,0 +1,89 @@ + + */ + + + + +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]"); + } +}