<?php
/**
* Name: blackout
- * Description: Blackout your ~friendica node during a given period, requires PHP >= 5.3
+ * Description: Blackout your ~friendica node during a given period
* License: MIT
- * Version: 1.0
- * Author: Tobias Diekershoff <https://f.diekershoff.de/~tobias>
+ * Version: 1.1
+ * Author: Tobias Diekershoff <https://social.diekershoff.de/~tobias>
*
* About
* =====
* the entered time periode and fix typos without having to hack the
* database directly.
*
- * Requirements
- * ============
- *
- * THIS ADDON REQUIRES PHP VERSION 5.3 OR HIGHER.
- *
* License
* =======
*
* THE SOFTWARE.
*/
-use Friendica\Core\Config;
-use Friendica\Core\Addon;
-use Friendica\Core\L10n;
+use Friendica\App;
+use Friendica\Core\Hook;
use Friendica\Core\Logger;
use Friendica\Core\Renderer;
+use Friendica\Core\System;
+use Friendica\DI;
function blackout_install() {
- Addon::registerHook('page_header', 'addon/blackout/blackout.php', 'blackout_redirect');
-}
-
-function blackout_uninstall() {
- Addon::unregisterHook('page_header', 'addon/blackout/blackout.php', 'blackout_redirect');
+ Hook::register('page_header', 'addon/blackout/blackout.php', 'blackout_redirect');
}
-function blackout_redirect ($a, $b) {
- // if we have a logged in user, don't throw her out
- if (local_user()) {
- return true;
- }
- if (! (version_compare(PHP_VERSION, '5.3.0') >= 0))
+function blackout_redirect ($b)
+{
+ // if we have a logged in user, don't throw her out
+ if (DI::userSession()->getLocalUserId()) {
return true;
+ }
- // else...
- $mystart = Config::get('blackout','begindate');
- $myend = Config::get('blackout','enddate');
- $myurl = Config::get('blackout','url');
- $now = time();
- $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart);
- $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend);
- if ( $date1 && $date2 ) {
- $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart)->format('U');
- $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend)->format('U');
- } else {
- $date1 = 0;
- $date2 = 0;
- }
- if (( $date1 <= $now ) && ( $now <= $date2 )) {
- Logger::log('redirecting user to blackout page');
- System::externalRedirect($myurl);
- }
-}
+ // else...
+ $mystart = DI::config()->get('blackout','begindate');
+ $myend = DI::config()->get('blackout','enddate');
+ $myurl = DI::config()->get('blackout','url');
+ $now = time();
+ $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart);
+ $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend);
+ if ($date1 && $date2) {
+ $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart)->format('U');
+ $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend)->format('U');
+ } else {
+ $date1 = 0;
+ $date2 = 0;
+ }
-function blackout_addon_admin(&$a, &$o) {
- $mystart = Config::get('blackout','begindate');
- if (! is_string($mystart)) { $mystart = "YYYY-MM-DD:hhmm"; }
- $myend = Config::get('blackout','enddate');
- if (! is_string($myend)) { $myend = "YYYY-MM-DD:hhmm"; }
- $myurl = Config::get('blackout','url');
- if (! is_string($myurl)) { $myurl = "http://www.example.com"; }
- $t = Renderer::getMarkupTemplate( "admin.tpl", "addon/blackout/" );
+ if (( $date1 <= $now ) && ( $now <= $date2 )) {
+ Logger::notice('redirecting user to blackout page');
+ System::externalRedirect($myurl);
+ }
+}
- $o = Renderer::replaceMacros($t, [
- '$submit' => L10n::t('Save Settings'),
- '$rurl' => ["rurl", "Redirect URL", $myurl, "all your visitors from the web will be redirected to this URL"],
- '$startdate' => ["startdate", "Begin of the Blackout<br />(YYYY-MM-DD hh:mm)", $mystart, "format is <em>YYYY</em> year, <em>MM</em> month, <em>DD</em> day, <em>hh</em> hour and <em>mm</em> minute"],
- '$enddate' => ["enddate", "End of the Blackout<br />(YYYY-MM-DD hh:mm)", $myend, ""],
+function blackout_addon_admin(string &$o)
+{
+ $mystart = DI::config()->get('blackout','begindate');
+ if (! is_string($mystart)) { $mystart = 'YYYY-MM-DD hh:mm'; }
+ $myend = DI::config()->get('blackout','enddate');
+ if (! is_string($myend)) { $myend = 'YYYY-MM-DD hh:mm'; }
+ $myurl = DI::config()->get('blackout','url');
+ if (! is_string($myurl)) { $myurl = 'https://www.example.com'; }
+ $t = Renderer::getMarkupTemplate( 'admin.tpl', 'addon/blackout/' );
- ]);
- $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart);
- $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend);
- if ($date2 < $date1) {
- $o = "<div style='border: 2px solid #f00; bakckground: #b00; text-align: center; padding: 10px; margin: 30px;'>The end-date is prior to the start-date of the blackout, you should fix this.</div>" . $o;
- } else {
- $o = '<p>Please double check that the current settings for the blackout. Begin will be <strong>'.$mystart.'</strong> and it will end <strong>'.$myend.'</strong>.</p>' . $o;
- }
+ $date1 = DateTime::createFromFormat('Y-m-d G:i', $mystart);
+ $date2 = DateTime::createFromFormat('Y-m-d G:i', $myend);
+ // a note for the admin
+ $adminnote = '';
+ if ($date2 < $date1) {
+ $adminnote = DI::l10n()->t("The end-date is prior to the start-date of the blackout, you should fix this.");
+ } else {
+ $adminnote = DI::l10n()->t("Please double check the current settings for the blackout. It will begin on <strong>%s</strong> and end on <strong>%s</strong>.", $mystart, $myend);
+ }
+ $o = Renderer::replaceMacros($t, [
+ '$submit' => DI::l10n()->t('Save Settings'),
+ '$rurl' => ['rurl', DI::l10n()->t("Redirect URL"), $myurl, DI::l10n()->t("All your visitors from the web will be redirected to this URL."), '', '', 'url'],
+ '$startdate' => ['startdate', DI::l10n()->t("Begin of the Blackout"), $mystart, DI::l10n()->t("Format is <tt>YYYY-MM-DD hh:mm</tt>; <em>YYYY</em> year, <em>MM</em> month, <em>DD</em> day, <em>hh</em> hour and <em>mm</em> minute.")],
+ '$enddate' => ['enddate', DI::l10n()->t("End of the Blackout"), $myend, ''],
+ '$adminnote' => $adminnote,
+ '$aboutredirect' => DI::l10n()->t("<strong>Note</strong>: The redirect will be active from the moment you press the submit button. Users currently logged in will <strong>not</strong> be thrown out but can't login again after logging out while the blackout is still in place."),
+ ]);
}
-function blackout_addon_admin_post (&$a) {
- $begindate = trim($_POST['startdate']);
- $enddate = trim($_POST['enddate']);
- $url = trim($_POST['rurl']);
- Config::set('blackout','begindate',$begindate);
- Config::set('blackout','enddate',$enddate);
- Config::set('blackout','url',$url);
+
+function blackout_addon_admin_post ()
+{
+ DI::config()->set('blackout', 'begindate', trim($_POST['startdate']));
+ DI::config()->set('blackout', 'enddate', trim($_POST['enddate']));
+ DI::config()->set('blackout', 'url', trim($_POST['rurl']));
}