]> git.mxchange.org Git - friendica-addons.git/blobdiff - blackout/blackout.php
Move Config::get() to DI::config()->get()
[friendica-addons.git] / blackout / blackout.php
index e629b7a38d020f88a3592ce301b6b151f564bf4f..aee5acc76ed7d197d10ee6c9e068f89ca719ca31 100644 (file)
@@ -1,20 +1,20 @@
 <?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
  * =====
  *
- * 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
  * 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
  * =======
  *
  * 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
  * THE SOFTWARE.
  */
 
+use Friendica\Core\Config;
+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');
+       Hook::unregister('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))
+       // if we have a logged in user, don't throw her out
+       if (local_user()) {
                return true;
+       }
 
-    // else...
-    $mystart = get_config('blackout','begindate');
-    $myend   = get_config('blackout','enddate');
-    $myurl   = get_config('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::log('redirecting user to blackout page');
+               System::externalRedirect($myurl);
+       }
 }
 
-function blackout_plugin_admin(&$a, &$o) {
-    $mystart = get_config('blackout','begindate');
-    if (! is_string($mystart)) { $mystart = "YYYY-MM-DD:hhmm"; }
-    $myend   = get_config('blackout','enddate');
-    if (! is_string($myend)) { $myend = "YYYY-MM-DD:hhmm"; }
-    $myurl   = get_config('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('Submit'),
-        '$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<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' => array("enddate", "End of the Blackout<br />(YYYY-MM-DD hh:mm)", $myend, ""),
+function blackout_addon_admin(&$a, &$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 that the current settings for the blackout. Begin will be <strong>%s</strong> and it will end <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 should the blackout is still in place."),
+       ]);
 }
-function blackout_plugin_admin_post (&$a) {
-    $begindate = trim($_POST['startdate']);
-    $enddate = trim($_POST['enddate']);
-    $url = trim($_POST['rurl']);
-    set_config('blackout','begindate',$begindate);
-    set_config('blackout','enddate',$enddate);
-    set_config('blackout','url',$url);
+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);
 }