From 7c0351d29d4b27cedb31e446148522ecb5b1bb28 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Wed, 8 Feb 2012 09:22:11 +0100 Subject: [PATCH] blackout addon added --- blackout.tgz | Bin 0 -> 1689 bytes blackout/README | 48 ++++++++++++++++++ blackout/admin.tpl | 11 ++++ blackout/blackout.php | 115 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 174 insertions(+) create mode 100644 blackout.tgz create mode 100644 blackout/README create mode 100644 blackout/admin.tpl create mode 100644 blackout/blackout.php diff --git a/blackout.tgz b/blackout.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2c0f6cf7e094e78dc6ac34d7b571038bbf4104a1 GIT binary patch literal 1689 zcmV;K24?vmiwFSs<|9u61ML`TZ_`M$pCj=f-ex1>pj=K#E2T+RpcGn(0^1fOgitiG zC-JDZ#~P2DW>NU<``-9SD4`ru5lDWO8hhs5=Zt4QbFO5fJA3yBU4+Aa-~1xn{x#3G zeb_xbu=n>5dV5{l-ak0lgZ|zxfF#yT0qiL$^<8-1+W$jgmd9W7ShpiDx~KRbJbwJu z_}l%%EdJfTeSqusez%YD@0RhucNqSIF|X8Ira6pYf@L{7f!(b)jw;;oBp6Pu@%#%SMEGZ1*(>2Ut^fSt9(uqx z>c8K&d$;=k{$aPQ|6f=C4=SBUj~-Ou5xitr{E+7YtxS0AC=qEP!vQ?aHee+a1)t_h z@X!?wgHXC0+(e0R0Sp%6nuic^C8TTEz7P%%W8{2xdP(nZxrz-#yWKSiPZI4(HGoSw z6D)>_;8%#^$@v_Hp4QQz({VRzZBGU~3B^r2_i8OT+fk6EQ@7vJfFG zh3^CNeYqsDOExly*n%629Tp z9iw=jO;ZtKt@*yyfRBiWp!h<>7=x)N<&{+@O{X4b=mDBB%ynhh+1a3IyI`9ej3eej zWxZQ8y79K~B)lK-h42N}Q}R(FpbBV!;(H9GUl;4kDbp{3h}-idKD4Z*KM| zFGs~z3%3yaefL8_ODQ{oSgUCq`9fP}-~Q0-Wf+Rmg;@! zA&LB(Ng_TdDVvYW<+9Chu-*8)jgw;|kc^)TpHDM+n&yuM7~K%3y)~Vh&1s`u?UvqePe_T>ibtp(p9aiPGR8L3%z8=@|9UM>W`WRk7>xn5@FIO{G`BDm8AkglZI#}u zO{kvdZRgGTi)u474A+aHyL-~^o_CriJ~8@Cw8;Sz!Y%p5A}R5d(hB6iL;Xc~Wj!lr51x$H?J_tU+2NBN0YM<0~^_yLzXQjB!|C4HxBG zR3|k_B?7B9ef{d<@_l_1fnt1R+TO;@?JDrnH2)08q*9I$f2&b6H)`EYl8bKUy4{UV zN;GR}!&_JW@cUm;`oH}9k8Ss|?|=Jv7d$lIfAFom|NRR1_z}->4$cSeyLdp4@PLas zkX|-wW_7gbp0HjcK3zMIWWBC@4{=`QKS4@Wew(f`bj39uc~?FkRcBJ+VSNC-=muix z3m5*Lce_V;I&l$yf!E7!baMm&Q&|3kig}x34{pWcKTem=9uJPH;~`F087{^zrRKv< z_JVg&Z!=tqX~VD|;vu-0L;>DJLvtUlM2g3;Sxjdk%o43-*oHTFdWykGltNU0wRL_r zTyycE)P-~uRiOiQvJB}sO|0nthR19qMnbk=^nXqlSYk(qG{VE{apJp1iQ=p#;!3PZ z5Z&@ + +About +===== + +This plugin will allow you to enter a date/time periode 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. + +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 +out they can't login again. That way you dear admin can double check +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 +======= + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +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 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/blackout/admin.tpl b/blackout/admin.tpl new file mode 100644 index 00000000..25922193 --- /dev/null +++ b/blackout/admin.tpl @@ -0,0 +1,11 @@ +{{ inc field_input.tpl with $field=$startdate }}{{ endinc }} +{{ inc field_input.tpl with $field=$enddate }}{{ endinc }} +{{ inc field_input.tpl with $field=$rurl }}{{ endinc }} + +
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 should the blackout is +still in place.
+ +
diff --git a/blackout/blackout.php b/blackout/blackout.php new file mode 100644 index 00000000..1171b890 --- /dev/null +++ b/blackout/blackout.php @@ -0,0 +1,115 @@ + + * + * About + * ===== + * + * This plugin will allow you to enter a date/time periode 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. + * + * 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 + * out they can't login again. That way you dear admin can double check + * 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 + * ======= + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * 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 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + +function blackout_install() { + register_hook('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; + } + // 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); + } +} + +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 = file_get_contents( dirname(__file__)."/admin.tpl" ); + $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
(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, ""), + + )); + $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; + } +} +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); +} -- 2.39.5