X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=blackout%2Fblackout.php;h=f2fb588b051a55613d4b3091719a970150b94049;hb=fe4982d51b4c8ca0e0e44058e096549e555afee2;hp=4fb824efaddc5e36fe9833b2e026b28919d1d374;hpb=c3e93f1ed9a487f823bcc75ddd43024334c25bfc;p=friendica-addons.git diff --git a/blackout/blackout.php b/blackout/blackout.php index 4fb824ef..f2fb588b 100644 --- a/blackout/blackout.php +++ b/blackout/blackout.php @@ -1,20 +1,20 @@ = 5.3 + * Description: Blackout your ~friendica node during a given period * License: MIT - * Version: 1.0 - * Author: Tobias Diekershoff + * Version: 1.1 + * Author: Tobias Diekershoff * * About * ===== * - * This plugin will allow you to enter a date/time period during which + * This addon will allow you to enter a date/time period during which * all your ~friendica visitors from the web will be redirected to a page * you can configure in the admin panel as well. * * Calls to the API and the communication with other ~friendica nodes is - * not effected from this plugin. + * not effected from this addon. * * If you enter a period the current date would be affected none of the * currently logged in users will be effected as well. But if they log @@ -22,11 +22,6 @@ * 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 * ======= * @@ -36,10 +31,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -49,73 +44,77 @@ * THE SOFTWARE. */ -use Friendica\Core\Config; +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() { - register_hook('page_header', 'addon/blackout/blackout.php', 'blackout_redirect'); + Hook::register('page_header', 'addon/blackout/blackout.php', 'blackout_redirect'); } -function blackout_uninstall() { - unregister_hook('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 (App $a, $b) +{ + // if we have a logged in user, don't throw her out + if (local_user()) { 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('redirecting user to blackout page'); - goaway($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; + } + + if (( $date1 <= $now ) && ( $now <= $date2 )) { + Logger::notice('redirecting user to blackout page'); + System::externalRedirect($myurl); + } } -function blackout_plugin_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 = get_markup_template( "admin.tpl", "addon/blackout/" ); - - $o = replace_macros($t, array( - '$submit' => t('Save Settings'), - '$rurl' => array("rurl", "Redirect URL", $myurl, "all your visitors from the web will be redirected to this URL"), - '$startdate' => array("startdate", "Begin of the Blackout
(YYYY-MM-DD hh:mm)", $mystart, "format is YYYY year, MM month, DD day, hh hour and mm minute"), - '$enddate' => array("enddate", "End of the Blackout
(YYYY-MM-DD hh:mm)", $myend, ""), +function blackout_addon_admin(App $a, 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 = "
The end-date is prior to the start-date of the blackout, you should fix this.
" . $o; - } else { - $o = '

Please double check that the current settings for the blackout. Begin will be '.$mystart.' and it will end '.$myend.'.

' . $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 %s and end on %s.", $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 YYYY-MM-DD hh:mm; YYYY year, MM month, DD day, hh hour and mm minute.")], + '$enddate' => ['enddate', DI::l10n()->t("End of the Blackout"), $myend, ''], + '$adminnote' => $adminnote, + '$aboutredirect' => DI::l10n()->t("Note: The redirect will be active from the moment you press the submit button. Users currently logged in will not be thrown out but can't login again after logging out while the blackout is still in place."), + ]); } -function blackout_plugin_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 (App $a) +{ + DI::config()->set('blackout', 'begindate', trim($_POST['startdate'])); + DI::config()->set('blackout', 'enddate', trim($_POST['enddate'])); + DI::config()->set('blackout', 'url', trim($_POST['rurl'])); }