Merge pull request #988 from tobiasd/20200615-lng
[friendica-addons.git/.git] / newmemberwidget / newmemberwidget.php
1 <?php
2 /***
3  * Name: New Member Widget
4  * Description: Adds a widget for new members into the sidebar of the network page. The widget will be displayed for the 1st 14days of a account existance and contains a link to the new member page and a free-form text the admin can define.
5  * Version: 1
6  * Author: Tobias Diekershoff <https://f.diekershoff.de/profile/tobias>
7  ***/
8
9 use Friendica\Content\Text\BBCode;
10 use Friendica\Core\Hook;
11 use Friendica\Core\Logger;
12 use Friendica\Core\Renderer;
13 use Friendica\DI;
14 use Friendica\Util\Strings;
15
16 function newmemberwidget_install()
17 {
18         Hook::register( 'network_mod_init', 'addon/newmemberwidget/newmemberwidget.php', 'newmemberwidget_network_mod_init');
19         Logger::log('newmemberwidget installed');
20 }
21
22 function newmemberwidget_uninstall()
23 {
24         Hook::unregister( 'network_mod_init', 'addon/newmemberwidget/newmemberwidget.php', 'newmemberwidget_network_mod_init');
25 }
26
27 function newmemberwidget_network_mod_init ($a, $b)
28 {
29         if (empty($_SESSION['new_member'])) {
30                 return;
31         }
32
33         $t = '<div id="newmember_widget" class="widget">'.EOL;
34         $t .= '<h3>'.DI::l10n()->t('New Member').'</h3>'.EOL;
35         $t .= '<a href="newmember" id="newmemberwidget-tips">' . DI::l10n()->t('Tips for New Members') . '</a><br />'.EOL;
36
37         if (DI::config()->get('newmemberwidget','linkglobalsupport', false)) {
38                 $t .= '<a href="https://forum.friendi.ca/profile/helpers" target="_new">'.DI::l10n()->t('Global Support Forum').'</a><br />'.EOL;
39         }
40
41         if (DI::config()->get('newmemberwidget','linklocalsupport', false)) {
42                 $t .= '<a href="'.DI::baseUrl()->get().'/profile/'.DI::config()->get('newmemberwidget','localsupport').'" target="_new">'.DI::l10n()->t('Local Support Forum').'</a><br />'.EOL;
43         }
44
45         $ft = DI::config()->get('newmemberwidget','freetext', '');
46         if (!empty($ft)) {
47                 $t .= '<p>'.BBCode::convert(trim($ft)).'</p>';
48         }
49
50         $t .= '</div><div class="clear"></div>';
51         DI::page()['aside'] = $t . DI::page()['aside'];
52 }
53
54 function newmemberwidget_addon_admin_post(&$a)
55 {
56         $ft = (!empty($_POST['freetext']) ? trim($_POST['freetext']) : "");
57         $lsn = (!empty($_POST['localsupportname']) ? Strings::escapeTags(trim($_POST['localsupportname'])) : "");
58         $gs = intval($_POST['linkglobalsupport']);
59         $ls = intval($_POST['linklocalsupport']);
60         DI::config()->set('newmemberwidget', 'freetext',           trim($ft));
61         DI::config()->set('newmemberwidget', 'linkglobalsupport',  $gs);
62         DI::config()->set('newmemberwidget', 'linklocalsupport',   $ls);
63         DI::config()->set('newmemberwidget', 'localsupport',       trim($lsn));
64 }
65
66 function newmemberwidget_addon_admin(&$a, &$o)
67 {
68         $t = Renderer::getMarkupTemplate('admin.tpl', 'addon/newmemberwidget');
69         $o = Renderer::replaceMacros($t, [
70         '$submit' => DI::l10n()->t('Save Settings'),
71         '$freetext' => [ "freetext", DI::l10n()->t("Message"), DI::config()->get("newmemberwidget", "freetext"), DI::l10n()->t("Your message for new members. You can use bbcode here.")],
72         '$linkglobalsupport' => [ "linkglobalsupport", DI::l10n()->t('Add a link to global support forum'), DI::config()->get('newmemberwidget', 'linkglobalsupport'), DI::l10n()->t('Should a link to the global support forum be displayed?')." (<a href='https://forum.friendi.ca/profile/helpers'>@helpers</a>)"],
73         '$linklocalsupport' => [ "linklocalsupport", DI::l10n()->t('Add a link to the local support forum'), DI::config()->get('newmemberwidget', 'linklocalsupport'), DI::l10n()->t('If you have a local support forum and want to have a link displayed in the widget, check this box.')],
74         '$localsupportname' => [ "localsupportname", DI::l10n()->t('Name of the local support group'), DI::config()->get('newmemberwidget', 'localsupport'), DI::l10n()->t('If you checked the above, specify the <em>nickname</em> of the local support group here (i.e. helpers)')],
75         ]);
76 }