+++ /dev/null
-<?php
-/**
- * @file mod/friendica.php
- */
-
-use Friendica\App;
-use Friendica\Core\Addon;
-use Friendica\Core\Config;
-use Friendica\Core\Hook;
-use Friendica\Core\L10n;
-use Friendica\Core\System;
-use Friendica\Database\DBA;
-use Friendica\Module\Register;
-
-function friendica_init(App $a)
-{
- if (!empty($a->argv[1]) && ($a->argv[1] == "json")) {
- $register_policies = [
- Register::CLOSED => 'REGISTER_CLOSED',
- Register::APPROVE => 'REGISTER_APPROVE',
- Register::OPEN => 'REGISTER_OPEN'
- ];
-
- $register_policy_int = intval(Config::get('config', 'register_policy'));
- if ($register_policy_int !== Register::CLOSED && Config::get('config', 'invitation_only')) {
- $register_policy = 'REGISTER_INVITATION';
- } else {
- $register_policy = $register_policies[$register_policy_int];
- }
-
- $condition = [];
- $admin = false;
- if (!empty(Config::get('config', 'admin_nickname'))) {
- $condition['nickname'] = Config::get('config', 'admin_nickname');
- }
- if (!empty(Config::get('config', 'admin_email'))) {
- $adminlist = explode(",", str_replace(" ", "", Config::get('config', 'admin_email')));
- $condition['email'] = $adminlist[0];
- $administrator = DBA::selectFirst('user', ['username', 'nickname'], $condition);
- if (DBA::isResult($administrator)) {
- $admin = [
- 'name' => $administrator['username'],
- 'profile'=> System::baseUrl() . '/profile/' . $administrator['nickname'],
- ];
- }
- }
-
- $visible_addons = Addon::getVisibleList();
-
- Config::load('feature_lock');
- $locked_features = [];
- $featureLock = Config::get('config', 'feature_lock');
- if (isset($featureLock)) {
- foreach ($featureLock as $k => $v) {
- if ($k === 'config_loaded') {
- continue;
- }
-
- $locked_features[$k] = intval($v);
- }
- }
-
- $data = [
- 'version' => FRIENDICA_VERSION,
- 'url' => System::baseUrl(),
- 'addons' => $visible_addons,
- 'locked_features' => $locked_features,
- 'explicit_content' => (int)Config::get('system', 'explicit_content', false),
- 'language' => Config::get('system','language'),
- 'register_policy' => $register_policy,
- 'admin' => $admin,
- 'site_name' => Config::get('config', 'sitename'),
- 'platform' => FRIENDICA_PLATFORM,
- 'info' => Config::get('config', 'info'),
- 'no_scrape_url' => System::baseUrl().'/noscrape'
- ];
-
- header('Content-type: application/json; charset=utf-8');
- echo json_encode($data);
- exit();
- }
-}
-
-function friendica_content(App $a)
-{
- $o = '<h1>Friendica</h1>' . PHP_EOL;
- $o .= '<p>';
- $o .= L10n::t('This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s.',
- '<strong>' . FRIENDICA_VERSION . '</strong>', System::baseUrl(), '<strong>' . DB_UPDATE_VERSION . '</strong>',
- '<strong>' . Config::get("system", "post_update_version") . '</strong>');
- $o .= '</p>' . PHP_EOL;
-
- $o .= '<p>';
- $o .= L10n::t('Please visit <a href="https://friendi.ca">Friendi.ca</a> to learn more about the Friendica project.') . PHP_EOL;
- $o .= '</p>' . PHP_EOL;
-
- $o .= '<p>';
- $o .= L10n::t('Bug reports and issues: please visit') . ' ' . '<a href="https://github.com/friendica/friendica/issues?state=open">'.L10n::t('the bugtracker at github').'</a>';
- $o .= '</p>' . PHP_EOL;
- $o .= '<p>';
- $o .= L10n::t('Suggestions, praise, etc. - please email "info" at "friendi - dot - ca');
- $o .= '</p>' . PHP_EOL;
-
- $visible_addons = Addon::getVisibleList();
- if (count($visible_addons)) {
- $o .= '<p>' . L10n::t('Installed addons/apps:') . '</p>' . PHP_EOL;
- $sorted = $visible_addons;
- $s = '';
- sort($sorted);
- foreach ($sorted as $p) {
- if (strlen($p)) {
- if (strlen($s)) {
- $s .= ', ';
- }
- $s .= $p;
- }
- }
- $o .= '<div style="margin-left: 25px; margin-right: 25px; margin-bottom: 25px;">' . $s . '</div>' . PHP_EOL;
- } else {
- $o .= '<p>' . L10n::t('No installed addons/apps') . '</p>' . PHP_EOL;
- }
-
- if (Config::get('system', 'tosdisplay'))
- {
- $o .= '<p>'.L10n::t('Read about the <a href="%1$s/tos">Terms of Service</a> of this node.', System::baseurl()).'</p>';
- }
-
- $blocklist = Config::get('system', 'blocklist', []);
- if (!empty($blocklist)) {
- $o .= '<div id="about_blocklist"><p>' . L10n::t('On this server the following remote servers are blocked.') . '</p>' . PHP_EOL;
- $o .= '<table class="table"><thead><tr><th>' . L10n::t('Blocked domain') . '</th><th>' . L10n::t('Reason for the block') . '</th></thead><tbody>' . PHP_EOL;
- foreach ($blocklist as $b) {
- $o .= '<tr><td>' . $b['domain'] .'</td><td>' . $b['reason'] . '</td></tr>' . PHP_EOL;
- }
- $o .= '</tbody></table></div>' . PHP_EOL;
- }
-
- Hook::callAll('about_hook', $o);
-
- return $o;
-}
$collector->addRoute(['GET'], '/{id:\d+}[/posts|conversations]', Module\Contact::class);
});
$this->routeCollector->addRoute(['GET'], '/credits', Module\Credits::class);
+ $this->routeCollector->addRoute(['GET'], '/directory', Module\Directory::class);
$this->routeCollector->addGroup('/feed', function (RouteCollector $collector) {
$collector->addRoute(['GET'], '/{nickname}', Module\Feed::class);
$collector->addRoute(['GET'], '/{nickname}/posts', Module\Feed::class);
$collector->addRoute(['GET'], '/{nickname}/replies', Module\Feed::class);
$collector->addRoute(['GET'], '/{nickname}/activity', Module\Feed::class);
});
- $this->routeCollector->addRoute(['GET'], '/directory', Module\Directory::class);
$this->routeCollector->addRoute(['GET'], '/feedtest', Module\Feedtest::class);
$this->routeCollector->addRoute(['GET'], '/filer[/{id:\d+}]', Module\Filer::class);
$this->routeCollector->addRoute(['GET'], '/followers/{owner}', Module\Followers::class);
$this->routeCollector->addRoute(['GET'], '/following/{owner}', Module\Following::class);
+ $this->routeCollector->addRoute(['GET'], '/friendica[/json]', Module\Friendica::class);
$this->routeCollector->addGroup('/group', function (RouteCollector $collector) {
$collector->addRoute(['GET', 'POST'], '[/]', Module\Group::class);
$collector->addRoute(['GET', 'POST'], '/{group:\d+}', Module\Group::class);
}
}
+ /**
+ * Get a user based on it's email
+ *
+ * @param string $email
+ * @param array $fields
+ *
+ * @return array|boolean User record if it exists, false otherwise
+ *
+ * @throws Exception
+ */
+ public static function getByEmail($email, array $fields = [])
+ {
+ return DBA::selectFirst('user', $fields, ['email' => $email]);
+ }
+
/**
* @brief Get owner data by user id
*
--- /dev/null
+<?php
+
+namespace Friendica\Module;
+
+use Friendica\BaseModule;
+use Friendica\Core\Addon;
+use Friendica\Core\Hook;
+use Friendica\Core\L10n;
+use Friendica\Core\Renderer;
+use Friendica\Model\User;
+
+class Friendica extends BaseModule
+{
+ public static function content()
+ {
+ $app = self::getApp();
+ $config = $app->getConfig();
+
+ $visibleAddonList = Addon::getVisibleList();
+ if (!empty($visibleAddonList)) {
+
+ $sorted = $visibleAddonList;
+ sort($sorted);
+
+ $sortedAddonList = '';
+
+ foreach ($sorted as $addon) {
+ if (strlen($addon)) {
+ if (strlen($sortedAddonList)) {
+ $sortedAddonList .= ', ';
+ }
+ $sortedAddonList .= $addon;
+ }
+ }
+ $addon = [
+ 'title' => L10n::t('Installed addons/apps:'),
+ 'list' => $sortedAddonList,
+ ];
+ } else {
+ $addon = [
+ 'title' => L10n::t('No installed addons/apps'),
+ ];
+ }
+
+ $tos = ($config->get('system', 'tosdisplay')) ?
+ L10n::t('Read about the <a href="%1$s/tos">Terms of Service</a> of this node.', $app->getBaseURL()) :
+ '';
+
+ $blockList = $config->get('system', 'blocklist');
+
+ if (!empty($blockList)) {
+ $blocked = [
+ 'title' => L10n::t('On this server the following remote servers are blocked.'),
+ 'header' => [
+ L10n::t('Blocked domain'),
+ L10n::t('Reason for the block'),
+ ],
+ 'list' => $blockList,
+ ];
+ } else {
+ $blocked = null;
+ }
+
+ $hooked = '';
+
+ Hook::callAll('about_hook', $hooked);
+
+ $tpl = Renderer::getMarkupTemplate('friendica.tpl');
+
+ return Renderer::replaceMacros($tpl, [
+ 'about' => L10n::t('This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s.',
+ '<strong>' . FRIENDICA_VERSION . '</strong>',
+ $app->getBaseURL(),
+ '<strong>' . DB_UPDATE_VERSION . '</strong>',
+ '<strong>' . $config->get("system", "post_update_version") . '</strong>'),
+ 'friendica' => L10n::t('Please visit <a href="https://friendi.ca">Friendi.ca</a> to learn more about the Friendica project.'),
+ 'bugs' => L10n::t('Bug reports and issues: please visit') . ' ' . '<a href="https://github.com/friendica/friendica/issues?state=open">' . L10n::t('the bugtracker at github') . '</a>',
+ 'info' => L10n::t('Suggestions, praise, etc. - please email "info" at "friendi - dot - ca'),
+
+ 'visible_addons' => $addon,
+ 'tos' => $tos,
+ 'block_list' => $blocked,
+ 'hooked' => $hooked,
+ ]);
+ }
+
+ public static function rawContent()
+ {
+ $app = self::getApp();
+
+ // @TODO: Replace with parameter from router
+ if ($app->argc <= 1 || ($app->argv[1] !== 'json')) {
+ return;
+ }
+
+ $config = $app->getConfig();
+
+ $register_policies = [
+ Register::CLOSED => 'REGISTER_CLOSED',
+ Register::APPROVE => 'REGISTER_APPROVE',
+ Register::OPEN => 'REGISTER_OPEN'
+ ];
+
+ $register_policy_int = intval($config->get('config', 'register_policy'));
+ if ($register_policy_int !== Register::CLOSED && $config->get('config', 'invitation_only')) {
+ $register_policy = 'REGISTER_INVITATION';
+ } else {
+ $register_policy = $register_policies[$register_policy_int];
+ }
+
+ $condition = [];
+ $admin = false;
+ if (!empty($config->get('config', 'admin_nickname'))) {
+ $condition['nickname'] = $config->get('config', 'admin_nickname');
+ }
+ if (!empty($config->get('config', 'admin_email'))) {
+ $adminList = explode(',', str_replace(' ', '', $config->get('config', 'admin_email')));
+ $condition['email'] = $adminList[0];
+ $administrator = User::getByEmail($adminList[0], ['username', 'nickname']);
+ if (!empty($administrator)) {
+ $admin = [
+ 'name' => $administrator['username'],
+ 'profile' => $app->getBaseURL() . '/profile/' . $administrator['nickname'],
+ ];
+ }
+ }
+
+ $visible_addons = Addon::getVisibleList();
+
+ $config->load('feature_lock');
+ $locked_features = [];
+ $featureLocks = $config->get('config', 'feature_lock');
+ if (isset($featureLocks)) {
+ foreach ($featureLocks as $feature => $lock) {
+ if ($feature === 'config_loaded') {
+ continue;
+ }
+
+ $locked_features[$feature] = intval($lock);
+ }
+ }
+
+ $data = [
+ 'version' => FRIENDICA_VERSION,
+ 'url' => $app->getBaseURL(),
+ 'addons' => $visible_addons,
+ 'locked_features' => $locked_features,
+ 'explicit_content' => intval($config->get('system', 'explicit_content', 0)),
+ 'language' => $config->get('system', 'language'),
+ 'register_policy' => $register_policy,
+ 'admin' => $admin,
+ 'site_name' => $config->get('config', 'sitename'),
+ 'platform' => FRIENDICA_PLATFORM,
+ 'info' => $config->get('config', 'info'),
+ 'no_scrape_url' => $app->getBaseURL() . '/noscrape',
+ ];
+
+ header('Content-type: application/json; charset=utf-8');
+ echo json_encode($data);
+ exit();
+ }
+}
--- /dev/null
+<h1>Friendica</h1>
+<br>
+<p>{{$about nofilter}}</p>
+<br>
+<p>{{$friendica nofilter}}</p>
+<br>
+<p>{{$bugs nofilter}}</p>
+<br>
+<p>{{$info nofilter}}</p>
+<br>
+
+<p>{{$visible_addons.title nofilter}}</p>
+{{if $visible_addons.list}}
+<div style="margin-left: 25px; margin-right: 25px; margin-bottom: 25px;">{{$visible_addons.list nofilter}}</div>
+{{/if}}
+
+{{if $tos}}
+<p>{{$tos}}</p>
+{{/if}}
+
+{{if $block_list}}
+<div id="about_blocklist">
+ <p>{{$block_list.title nofilter}}</p>
+ <br>
+ <table class="table">
+ <thead>
+ <tr>
+ <th>{{$block_list.header[0] nofilter}}</th>
+ <th>{{$block_list.header[1] nofilter}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{foreach $block_list.list as $blocked}}
+ <tr>
+ <td>{{$blocked.domain nofilter}}</td>
+ <td>{{$blocked.reason nofilter}}</td>
+ </tr>
+ {{/foreach}}
+ </tbody>
+ </table>
+</div>
+
+{{/if}}
+
+{{$hooked}}