Browse Source

Fix EOL and EOF in Admin modules

pull/7044/head
Hypolite Petovan 3 years ago
parent
commit
92b415bc36
  1. 244
      src/Module/Admin/Addons/Details.php
  2. 124
      src/Module/Admin/Addons/Index.php
  3. 172
      src/Module/Admin/Blocklist/Contact.php
  4. 184
      src/Module/Admin/Blocklist/Server.php
  5. 214
      src/Module/Admin/DBSync.php
  6. 148
      src/Module/Admin/Features.php
  7. 110
      src/Module/Admin/Item/Delete.php
  8. 148
      src/Module/Admin/Logs/Settings.php
  9. 104
      src/Module/Admin/Logs/View.php
  10. 32
      src/Module/Admin/PhpInfo.php
  11. 132
      src/Module/Admin/Queue.php
  12. 1
      src/Module/Admin/Site.php
  13. 294
      src/Module/Admin/Summary.php
  14. 252
      src/Module/Admin/Themes/Details.php
  15. 180
      src/Module/Admin/Themes/Embed.php
  16. 214
      src/Module/Admin/Themes/Index.php
  17. 106
      src/Module/Admin/Tos.php
  18. 636
      src/Module/Admin/Users.php
  19. 235
      src/Module/BaseAdminModule.php

244
src/Module/Admin/Addons/Details.php

@ -1,122 +1,122 @@
<?php
namespace Friendica\Module\Admin\Addons;
use Friendica\Content\Text\Markdown;
use Friendica\Core\Addon;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
class Details extends BaseAdminModule
{
public static function post()
{
parent::post();
$a = self::getApp();
if ($a->argc > 2) {
// @TODO: Replace with parameter from router
$addon = $a->argv[2];
$addon = Strings::sanitizeFilePathItem($addon);
if (is_file('addon/' . $addon . '/' . $addon . '.php')) {
include_once 'addon/' . $addon . '/' . $addon . '.php';
if (function_exists($addon . '_addon_admin_post')) {
$func = $addon . '_addon_admin_post';
$func($a);
}
$a->internalRedirect('admin/addons/' . $addon);
}
}
$a->internalRedirect('admin/addons');
}
public static function content()
{
parent::content();
$a = self::getApp();
$addons_admin = Addon::getAdminList();
if ($a->argc > 2) {
// @TODO: Replace with parameter from router
$addon = $a->argv[2];
$addon = Strings::sanitizeFilePathItem($addon);
if (!is_file("addon/$addon/$addon.php")) {
notice(L10n::t('Item not found.'));
$a->internalRedirect('admin/addons');
}
if (defaults($_GET, 'action', '') == 'toggle') {
parent::checkFormSecurityTokenRedirectOnError('/admin/addons', 'admin_themes', 't');
// Toggle addon status
if (Addon::isEnabled($addon)) {
Addon::uninstall($addon);
info(L10n::t('Addon %s disabled.', $addon));
} else {
Addon::install($addon);
info(L10n::t('Addon %s enabled.', $addon));
}
Addon::saveEnabledList();
$a->internalRedirect('admin/addons/' . $addon);
}
// display addon details
if (Addon::isEnabled($addon)) {
$status = 'on';
$action = L10n::t('Disable');
} else {
$status = 'off';
$action = L10n::t('Enable');
}
$readme = null;
if (is_file("addon/$addon/README.md")) {
$readme = Markdown::convert(file_get_contents("addon/$addon/README.md"), false);
} elseif (is_file("addon/$addon/README")) {
$readme = '<pre>' . file_get_contents("addon/$addon/README") . '</pre>';
}
$admin_form = '';
if (array_key_exists($addon, $addons_admin)) {
require_once "addon/$addon/$addon.php";
$func = $addon . '_addon_admin';
$func($a, $admin_form);
}
$t = Renderer::getMarkupTemplate('admin/addons/details.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Addons'),
'$toggle' => L10n::t('Toggle'),
'$settings' => L10n::t('Settings'),
'$baseurl' => $a->getBaseURL(true),
'$addon' => $addon,
'$status' => $status,
'$action' => $action,
'$info' => Addon::getInfo($addon),
'$str_author' => L10n::t('Author: '),
'$str_maintainer' => L10n::t('Maintainer: '),
'$admin_form' => $admin_form,
'$function' => 'addons',
'$screenshot' => '',
'$readme' => $readme,
'$form_security_token' => parent::getFormSecurityToken('admin_themes'),
]);
}
$a->internalRedirect('admin/addons');
}
}
<?php
namespace Friendica\Module\Admin\Addons;
use Friendica\Content\Text\Markdown;
use Friendica\Core\Addon;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
class Details extends BaseAdminModule
{
public static function post()
{
parent::post();
$a = self::getApp();
if ($a->argc > 2) {
// @TODO: Replace with parameter from router
$addon = $a->argv[2];
$addon = Strings::sanitizeFilePathItem($addon);
if (is_file('addon/' . $addon . '/' . $addon . '.php')) {
include_once 'addon/' . $addon . '/' . $addon . '.php';
if (function_exists($addon . '_addon_admin_post')) {
$func = $addon . '_addon_admin_post';
$func($a);
}
$a->internalRedirect('admin/addons/' . $addon);
}
}
$a->internalRedirect('admin/addons');
}
public static function content()
{
parent::content();
$a = self::getApp();
$addons_admin = Addon::getAdminList();
if ($a->argc > 2) {
// @TODO: Replace with parameter from router
$addon = $a->argv[2];
$addon = Strings::sanitizeFilePathItem($addon);
if (!is_file("addon/$addon/$addon.php")) {
notice(L10n::t('Item not found.'));
$a->internalRedirect('admin/addons');
}
if (defaults($_GET, 'action', '') == 'toggle') {
parent::checkFormSecurityTokenRedirectOnError('/admin/addons', 'admin_themes', 't');
// Toggle addon status
if (Addon::isEnabled($addon)) {
Addon::uninstall($addon);
info(L10n::t('Addon %s disabled.', $addon));
} else {
Addon::install($addon);
info(L10n::t('Addon %s enabled.', $addon));
}
Addon::saveEnabledList();
$a->internalRedirect('admin/addons/' . $addon);
}
// display addon details
if (Addon::isEnabled($addon)) {
$status = 'on';
$action = L10n::t('Disable');
} else {
$status = 'off';
$action = L10n::t('Enable');
}
$readme = null;
if (is_file("addon/$addon/README.md")) {
$readme = Markdown::convert(file_get_contents("addon/$addon/README.md"), false);
} elseif (is_file("addon/$addon/README")) {
$readme = '<pre>' . file_get_contents("addon/$addon/README") . '</pre>';
}
$admin_form = '';
if (array_key_exists($addon, $addons_admin)) {
require_once "addon/$addon/$addon.php";
$func = $addon . '_addon_admin';
$func($a, $admin_form);
}
$t = Renderer::getMarkupTemplate('admin/addons/details.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Addons'),
'$toggle' => L10n::t('Toggle'),
'$settings' => L10n::t('Settings'),
'$baseurl' => $a->getBaseURL(true),
'$addon' => $addon,
'$status' => $status,
'$action' => $action,
'$info' => Addon::getInfo($addon),
'$str_author' => L10n::t('Author: '),
'$str_maintainer' => L10n::t('Maintainer: '),
'$admin_form' => $admin_form,
'$function' => 'addons',
'$screenshot' => '',
'$readme' => $readme,
'$form_security_token' => parent::getFormSecurityToken('admin_themes'),
]);
}
$a->internalRedirect('admin/addons');
}
}

124
src/Module/Admin/Addons/Index.php

@ -1,62 +1,62 @@
<?php
namespace Friendica\Module\Admin\Addons;
use Friendica\Core\Addon;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
class Index extends BaseAdminModule
{
public static function content()
{
parent::content();
$a = self::getApp();
// reload active themes
if (!empty($_GET['action'])) {
parent::checkFormSecurityTokenRedirectOnError('/admin/addons', 'admin_addons', 't');
switch ($_GET['action']) {
case 'reload':
Addon::reload();
info('Addons reloaded');
break;
case 'toggle' :
$addon = defaults($_GET, 'addon', '');
if (Addon::isEnabled($addon)) {
Addon::uninstall($addon);
info(L10n::t('Addon %s disabled.', $addon));
} elseif (Addon::install($addon)) {
info(L10n::t('Addon %s enabled.', $addon));
} else {
info(L10n::t('Addon %s failed to install.', $addon));
}
break;
}
$a->internalRedirect('admin/addons');
}
$addons = Addon::getAvailableList();
$t = Renderer::getMarkupTemplate('admin/addons/index.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Addons'),
'$submit' => L10n::t('Save Settings'),
'$reload' => L10n::t('Reload active addons'),
'$baseurl' => $a->getBaseURL(true),
'$function' => 'addons',
'$addons' => $addons,
'$pcount' => count($addons),
'$noplugshint' => L10n::t('There are currently no addons available on your node. You can find the official addon repository at %1$s and might find other interesting addons in the open addon registry at %2$s', 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'),
'$form_security_token' => parent::getFormSecurityToken('admin_addons'),
]);
}
}
<?php
namespace Friendica\Module\Admin\Addons;
use Friendica\Core\Addon;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
class Index extends BaseAdminModule
{
public static function content()
{
parent::content();
$a = self::getApp();
// reload active themes
if (!empty($_GET['action'])) {
parent::checkFormSecurityTokenRedirectOnError('/admin/addons', 'admin_addons', 't');
switch ($_GET['action']) {
case 'reload':
Addon::reload();
info('Addons reloaded');
break;
case 'toggle' :
$addon = defaults($_GET, 'addon', '');
if (Addon::isEnabled($addon)) {
Addon::uninstall($addon);
info(L10n::t('Addon %s disabled.', $addon));
} elseif (Addon::install($addon)) {
info(L10n::t('Addon %s enabled.', $addon));
} else {
info(L10n::t('Addon %s failed to install.', $addon));
}
break;
}
$a->internalRedirect('admin/addons');
}
$addons = Addon::getAvailableList();
$t = Renderer::getMarkupTemplate('admin/addons/index.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Addons'),
'$submit' => L10n::t('Save Settings'),
'$reload' => L10n::t('Reload active addons'),
'$baseurl' => $a->getBaseURL(true),
'$function' => 'addons',
'$addons' => $addons,
'$pcount' => count($addons),
'$noplugshint' => L10n::t('There are currently no addons available on your node. You can find the official addon repository at %1$s and might find other interesting addons in the open addon registry at %2$s', 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'),
'$form_security_token' => parent::getFormSecurityToken('admin_addons'),
]);
}
}

172
src/Module/Admin/Blocklist/Contact.php

@ -1,86 +1,86 @@
<?php
namespace Friendica\Module\Admin\Blocklist;
use Friendica\Content\Pager;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Module\BaseAdminModule;
use Friendica\Model;
class Contact extends BaseAdminModule
{
public static function post()
{
parent::post();
$contact_url = defaults($_POST, 'contact_url', '');
$contacts = defaults($_POST, 'contacts', []);
parent::checkFormSecurityTokenRedirectOnError('/admin/blocklist/contact', 'admin_contactblock');
if (!empty($_POST['page_contactblock_block'])) {
$contact_id = Model\Contact::getIdForURL($contact_url);
if ($contact_id) {
Model\Contact::block($contact_id);
notice(L10n::t('The contact has been blocked from the node'));
} else {
notice(L10n::t("Could not find any contact entry for this URL \x28%s\x29", $contact_url));
}
}
if (!empty($_POST['page_contactblock_unblock'])) {
foreach ($contacts as $uid) {
Model\Contact::unblock($uid);
}
notice(L10n::tt("%s contact unblocked", "%s contacts unblocked", count($contacts)));
}
self::getApp()->internalRedirect('admin/blocklist/contact');
}
public static function content()
{
parent::content();
$a = self::getApp();
$condition = ['uid' => 0, 'blocked' => true];
$total = DBA::count('contact', $condition);
$pager = new Pager($a->query_string, 30);
$contacts = Model\Contact::select([], $condition, ['limit' => [$pager->getStart(), $pager->getItemsPerPage()]]);
$t = Renderer::getMarkupTemplate('admin/blocklist/contact.tpl');
$o = Renderer::replaceMacros($t, [
// strings //
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Remote Contact Blocklist'),
'$description' => L10n::t('This page allows you to prevent any message from a remote contact to reach your node.'),
'$submit' => L10n::t('Block Remote Contact'),
'$select_all' => L10n::t('select all'),
'$select_none' => L10n::t('select none'),
'$block' => L10n::t('Block'),
'$unblock' => L10n::t('Unblock'),
'$no_data' => L10n::t('No remote contact is blocked from this node.'),
'$h_contacts' => L10n::t('Blocked Remote Contacts'),
'$h_newblock' => L10n::t('Block New Remote Contact'),
'$th_contacts' => [L10n::t('Photo'), L10n::t('Name'), L10n::t('Address'), L10n::t('Profile URL')],
'$form_security_token' => parent::getFormSecurityToken("admin_contactblock"),
// values //
'$baseurl' => $a->getBaseURL(true),
'$contacts' => $contacts,
'$total_contacts' => L10n::tt('%s total blocked contact', '%s total blocked contacts', $total),
'$paginate' => $pager->renderFull($total),
'$contacturl' => ['contact_url', L10n::t("Profile URL"), '', L10n::t("URL of the remote contact to block.")],
]);
return $o;
}
}
<?php
namespace Friendica\Module\Admin\Blocklist;
use Friendica\Content\Pager;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Module\BaseAdminModule;
use Friendica\Model;
class Contact extends BaseAdminModule
{
public static function post()
{
parent::post();
$contact_url = defaults($_POST, 'contact_url', '');
$contacts = defaults($_POST, 'contacts', []);
parent::checkFormSecurityTokenRedirectOnError('/admin/blocklist/contact', 'admin_contactblock');
if (!empty($_POST['page_contactblock_block'])) {
$contact_id = Model\Contact::getIdForURL($contact_url);
if ($contact_id) {
Model\Contact::block($contact_id);
notice(L10n::t('The contact has been blocked from the node'));
} else {
notice(L10n::t("Could not find any contact entry for this URL \x28%s\x29", $contact_url));
}
}
if (!empty($_POST['page_contactblock_unblock'])) {
foreach ($contacts as $uid) {
Model\Contact::unblock($uid);
}
notice(L10n::tt("%s contact unblocked", "%s contacts unblocked", count($contacts)));
}
self::getApp()->internalRedirect('admin/blocklist/contact');
}
public static function content()
{
parent::content();
$a = self::getApp();
$condition = ['uid' => 0, 'blocked' => true];
$total = DBA::count('contact', $condition);
$pager = new Pager($a->query_string, 30);
$contacts = Model\Contact::select([], $condition, ['limit' => [$pager->getStart(), $pager->getItemsPerPage()]]);
$t = Renderer::getMarkupTemplate('admin/blocklist/contact.tpl');
$o = Renderer::replaceMacros($t, [
// strings //
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Remote Contact Blocklist'),
'$description' => L10n::t('This page allows you to prevent any message from a remote contact to reach your node.'),
'$submit' => L10n::t('Block Remote Contact'),
'$select_all' => L10n::t('select all'),
'$select_none' => L10n::t('select none'),
'$block' => L10n::t('Block'),
'$unblock' => L10n::t('Unblock'),
'$no_data' => L10n::t('No remote contact is blocked from this node.'),
'$h_contacts' => L10n::t('Blocked Remote Contacts'),
'$h_newblock' => L10n::t('Block New Remote Contact'),
'$th_contacts' => [L10n::t('Photo'), L10n::t('Name'), L10n::t('Address'), L10n::t('Profile URL')],
'$form_security_token' => parent::getFormSecurityToken("admin_contactblock"),
// values //
'$baseurl' => $a->getBaseURL(true),
'$contacts' => $contacts,
'$total_contacts' => L10n::tt('%s total blocked contact', '%s total blocked contacts', $total),
'$paginate' => $pager->renderFull($total),
'$contacturl' => ['contact_url', L10n::t("Profile URL"), '', L10n::t("URL of the remote contact to block.")],
]);
return $o;
}
}

184
src/Module/Admin/Blocklist/Server.php

@ -1,92 +1,92 @@
<?php
namespace Friendica\Module\Admin\Blocklist;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
class Server extends BaseAdminModule
{
public static function post()
{
parent::post();
if (empty($_POST['page_blocklist_save']) && empty($_POST['page_blocklist_edit'])) {
return;
}
parent::checkFormSecurityTokenRedirectOnError('/admin/blocklist/server', 'admin_blocklist');
if (!empty($_POST['page_blocklist_save'])) {
// Add new item to blocklist
$blocklist = Config::get('system', 'blocklist');
$blocklist[] = [
'domain' => Strings::escapeTags(trim($_POST['newentry_domain'])),
'reason' => Strings::escapeTags(trim($_POST['newentry_reason']))
];
Config::set('system', 'blocklist', $blocklist);
info(L10n::t('Server added to blocklist.') . EOL);
} else {
// Edit the entries from blocklist
$blocklist = [];
foreach ($_POST['domain'] as $id => $domain) {
// Trimming whitespaces as well as any lingering slashes
$domain = Strings::escapeTags(trim($domain, "\x00..\x1F/"));
$reason = Strings::escapeTags(trim($_POST['reason'][$id]));
if (empty($_POST['delete'][$id])) {
$blocklist[] = [
'domain' => $domain,
'reason' => $reason
];
}
}
Config::set('system', 'blocklist', $blocklist);
info(L10n::t('Site blocklist updated.') . EOL);
}
self::getApp()->internalRedirect('admin/blocklist/server');
}
public static function content()
{
parent::content();
$a = self::getApp();
$blocklist = Config::get('system', 'blocklist');
$blocklistform = [];
if (is_array($blocklist)) {
foreach ($blocklist as $id => $b) {
$blocklistform[] = [
'domain' => ["domain[$id]", L10n::t('Blocked domain'), $b['domain'], '', L10n::t('The blocked domain'), 'required', '', ''],
'reason' => ["reason[$id]", L10n::t("Reason for the block"), $b['reason'], L10n::t('The reason why you blocked this domain.') . '(' . $b['domain'] . ')', 'required', '', ''],
'delete' => ["delete[$id]", L10n::t("Delete domain") . ' (' . $b['domain'] . ')', false, L10n::t("Check to delete this entry from the blocklist")]
];
}
}
$t = Renderer::getMarkupTemplate('admin/blocklist/server.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Server Blocklist'),
'$intro' => L10n::t('This page can be used to define a black list of servers from the federated network that are not allowed to interact with your node. For all entered domains you should also give a reason why you have blocked the remote server.'),
'$public' => L10n::t('The list of blocked servers will be made publically available on the /friendica page so that your users and people investigating communication problems can find the reason easily.'),
'$addtitle' => L10n::t('Add new entry to block list'),
'$newdomain' => ['newentry_domain', L10n::t('Server Domain'), '', L10n::t('The domain of the new server to add to the block list. Do not include the protocol.'), 'required', '', ''],
'$newreason' => ['newentry_reason', L10n::t('Block reason'), '', L10n::t('The reason why you blocked this domain.'), 'required', '', ''],
'$submit' => L10n::t('Add Entry'),
'$savechanges' => L10n::t('Save changes to the blocklist'),
'$currenttitle' => L10n::t('Current Entries in the Blocklist'),
'$thurl' => L10n::t('Blocked domain'),
'$threason' => L10n::t('Reason for the block'),
'$delentry' => L10n::t('Delete entry from blocklist'),
'$entries' => $blocklistform,
'$baseurl' => $a->getBaseURL(true),
'$confirm_delete' => L10n::t('Delete entry from blocklist?'),
'$form_security_token' => parent::getFormSecurityToken("admin_blocklist")
]);
}
}
<?php
namespace Friendica\Module\Admin\Blocklist;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
class Server extends BaseAdminModule
{
public static function post()
{
parent::post();
if (empty($_POST['page_blocklist_save']) && empty($_POST['page_blocklist_edit'])) {
return;
}
parent::checkFormSecurityTokenRedirectOnError('/admin/blocklist/server', 'admin_blocklist');
if (!empty($_POST['page_blocklist_save'])) {
// Add new item to blocklist
$blocklist = Config::get('system', 'blocklist');
$blocklist[] = [
'domain' => Strings::escapeTags(trim($_POST['newentry_domain'])),
'reason' => Strings::escapeTags(trim($_POST['newentry_reason']))
];
Config::set('system', 'blocklist', $blocklist);
info(L10n::t('Server added to blocklist.') . EOL);
} else {
// Edit the entries from blocklist
$blocklist = [];
foreach ($_POST['domain'] as $id => $domain) {
// Trimming whitespaces as well as any lingering slashes
$domain = Strings::escapeTags(trim($domain, "\x00..\x1F/"));
$reason = Strings::escapeTags(trim($_POST['reason'][$id]));
if (empty($_POST['delete'][$id])) {
$blocklist[] = [
'domain' => $domain,
'reason' => $reason
];
}
}
Config::set('system', 'blocklist', $blocklist);
info(L10n::t('Site blocklist updated.') . EOL);
}
self::getApp()->internalRedirect('admin/blocklist/server');
}
public static function content()
{
parent::content();
$a = self::getApp();
$blocklist = Config::get('system', 'blocklist');
$blocklistform = [];
if (is_array($blocklist)) {
foreach ($blocklist as $id => $b) {
$blocklistform[] = [
'domain' => ["domain[$id]", L10n::t('Blocked domain'), $b['domain'], '', L10n::t('The blocked domain'), 'required', '', ''],
'reason' => ["reason[$id]", L10n::t("Reason for the block"), $b['reason'], L10n::t('The reason why you blocked this domain.') . '(' . $b['domain'] . ')', 'required', '', ''],
'delete' => ["delete[$id]", L10n::t("Delete domain") . ' (' . $b['domain'] . ')', false, L10n::t("Check to delete this entry from the blocklist")]
];
}
}
$t = Renderer::getMarkupTemplate('admin/blocklist/server.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Server Blocklist'),
'$intro' => L10n::t('This page can be used to define a black list of servers from the federated network that are not allowed to interact with your node. For all entered domains you should also give a reason why you have blocked the remote server.'),
'$public' => L10n::t('The list of blocked servers will be made publically available on the /friendica page so that your users and people investigating communication problems can find the reason easily.'),
'$addtitle' => L10n::t('Add new entry to block list'),
'$newdomain' => ['newentry_domain', L10n::t('Server Domain'), '', L10n::t('The domain of the new server to add to the block list. Do not include the protocol.'), 'required', '', ''],
'$newreason' => ['newentry_reason', L10n::t('Block reason'), '', L10n::t('The reason why you blocked this domain.'), 'required', '', ''],
'$submit' => L10n::t('Add Entry'),
'$savechanges' => L10n::t('Save changes to the blocklist'),
'$currenttitle' => L10n::t('Current Entries in the Blocklist'),
'$thurl' => L10n::t('Blocked domain'),
'$threason' => L10n::t('Reason for the block'),
'$delentry' => L10n::t('Delete entry from blocklist'),
'$entries' => $blocklistform,
'$baseurl' => $a->getBaseURL(true),
'$confirm_delete' => L10n::t('Delete entry from blocklist?'),
'$form_security_token' => parent::getFormSecurityToken("admin_blocklist")
]);
}
}

214
src/Module/Admin/DBSync.php

@ -1,107 +1,107 @@
<?php
namespace Friendica\Module\Admin;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Core\Update;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
use Friendica\Module\BaseAdminModule;
class DBSync extends BaseAdminModule
{
public static function content()
{
parent::content();
$a = self::getApp();
$o = '';
if ($a->argc > 3 && $a->argv[2] === 'mark') {
// @TODO: Replace with parameter from router
$update = intval($a->argv[3]);
if ($update) {
Config::set('database', 'update_' . $update, 'success');
$curr = Config::get('system', 'build');
if (intval($curr) == $update) {
Config::set('system', 'build', intval($curr) + 1);
}
info(L10n::t('Update has been marked successful') . EOL);
}
$a->internalRedirect('admin/dbsync');
}
if ($a->argc > 2) {
if ($a->argv[2] === 'check') {
// @TODO Seems like a similar logic like Update::check()
$retval = DBStructure::update($a->getBasePath(), false, true);
if ($retval === '') {
$o .= L10n::t("Database structure update %s was successfully applied.", DB_UPDATE_VERSION) . "<br />";
Config::set('database', 'last_successful_update', DB_UPDATE_VERSION);
Config::set('database', 'last_successful_update_time', time());
} else {
$o .= L10n::t("Executing of database structure update %s failed with error: %s", DB_UPDATE_VERSION, $retval) . "<br />";
}
if ($a->argv[2] === 'check') {
return $o;
}
} elseif (intval($a->argv[2])) {
require_once 'update.php';
// @TODO: Replace with parameter from router
$update = intval($a->argv[2]);
$func = 'update_' . $update;
if (function_exists($func)) {
$retval = $func();
if ($retval === Update::FAILED) {
$o .= L10n::t("Executing %s failed with error: %s", $func, $retval);
} elseif ($retval === Update::SUCCESS) {
$o .= L10n::t('Update %s was successfully applied.', $func);
Config::set('database', $func, 'success');
} else {
$o .= L10n::t('Update %s did not return a status. Unknown if it succeeded.', $func);
}
} else {
$o .= L10n::t('There was no additional update function %s that needed to be called.', $func) . "<br />";
Config::set('database', $func, 'success');
}
return $o;
}
}
$failed = [];
$configStmt = DBA::select('config', ['k', 'v'], ['cat' => 'database']);
while ($config = DBA::fetch($configStmt)) {
$upd = intval(substr($config['k'], 7));
if ($upd >= 1139 && $config['v'] != 'success') {
$failed[] = $upd;
}
}
if (!count($failed)) {
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/dbsync/structure_check.tpl'), [
'$base' => $a->getBaseURL(true),
'$banner' => L10n::t('No failed updates.'),
'$check' => L10n::t('Check database structure'),
]);
} else {
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/dbsync/failed_updates.tpl'), [
'$base' => $a->getBaseURL(true),
'$banner' => L10n::t('Failed Updates'),
'$desc' => L10n::t('This does not include updates prior to 1139, which did not return a status.'),
'$mark' => L10n::t("Mark success \x28if update was manually applied\x29"),
'$apply' => L10n::t('Attempt to execute this update step automatically'),
'$failed' => $failed
]);
}
return $o;
}
}
<?php
namespace Friendica\Module\Admin;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Core\Update;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
use Friendica\Module\BaseAdminModule;
class DBSync extends BaseAdminModule
{
public static function content()
{
parent::content();
$a = self::getApp();
$o = '';
if ($a->argc > 3 && $a->argv[2] === 'mark') {
// @TODO: Replace with parameter from router
$update = intval($a->argv[3]);
if ($update) {
Config::set('database', 'update_' . $update, 'success');
$curr = Config::get('system', 'build');
if (intval($curr) == $update) {
Config::set('system', 'build', intval($curr) + 1);
}
info(L10n::t('Update has been marked successful') . EOL);
}
$a->internalRedirect('admin/dbsync');
}
if ($a->argc > 2) {
if ($a->argv[2] === 'check') {
// @TODO Seems like a similar logic like Update::check()
$retval = DBStructure::update($a->getBasePath(), false, true);
if ($retval === '') {
$o .= L10n::t("Database structure update %s was successfully applied.", DB_UPDATE_VERSION) . "<br />";
Config::set('database', 'last_successful_update', DB_UPDATE_VERSION);
Config::set('database', 'last_successful_update_time', time());
} else {
$o .= L10n::t("Executing of database structure update %s failed with error: %s", DB_UPDATE_VERSION, $retval) . "<br />";
}
if ($a->argv[2] === 'check') {
return $o;
}
} elseif (intval($a->argv[2])) {
require_once 'update.php';
// @TODO: Replace with parameter from router
$update = intval($a->argv[2]);
$func = 'update_' . $update;
if (function_exists($func)) {
$retval = $func();
if ($retval === Update::FAILED) {
$o .= L10n::t("Executing %s failed with error: %s", $func, $retval);
} elseif ($retval === Update::SUCCESS) {
$o .= L10n::t('Update %s was successfully applied.', $func);
Config::set('database', $func, 'success');
} else {
$o .= L10n::t('Update %s did not return a status. Unknown if it succeeded.', $func);
}
} else {
$o .= L10n::t('There was no additional update function %s that needed to be called.', $func) . "<br />";
Config::set('database', $func, 'success');
}
return $o;
}
}
$failed = [];
$configStmt = DBA::select('config', ['k', 'v'], ['cat' => 'database']);
while ($config = DBA::fetch($configStmt)) {
$upd = intval(substr($config['k'], 7));
if ($upd >= 1139 && $config['v'] != 'success') {
$failed[] = $upd;
}
}
if (!count($failed)) {
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/dbsync/structure_check.tpl'), [
'$base' => $a->getBaseURL(true),
'$banner' => L10n::t('No failed updates.'),
'$check' => L10n::t('Check database structure'),
]);
} else {
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('admin/dbsync/failed_updates.tpl'), [
'$base' => $a->getBaseURL(true),
'$banner' => L10n::t('Failed Updates'),
'$desc' => L10n::t('This does not include updates prior to 1139, which did not return a status.'),
'$mark' => L10n::t("Mark success \x28if update was manually applied\x29"),
'$apply' => L10n::t('Attempt to execute this update step automatically'),
'$failed' => $failed
]);
}
return $o;
}
}

148
src/Module/Admin/Features.php

@ -1,74 +1,74 @@
<?php
namespace Friendica\Module\Admin;
use Friendica\Content\Feature;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
class Features extends BaseAdminModule
{
public static function post()
{
parent::post();
parent::checkFormSecurityTokenRedirectOnError('/admin/features', 'admin_manage_features');
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
foreach (array_slice($fdata, 1) as $f) {
$feature = $f[0];
$feature_state = 'feature_' . $feature;
$featurelock = 'featurelock_' . $feature;
if (!empty($_POST[$feature_state])) {
$val = intval($_POST[$feature_state]);
} else {
$val = 0;
}
Config::set('feature', $feature, $val);
if (!empty($_POST[$featurelock])) {
Config::set('feature_lock', $feature, $val);
} else {
Config::delete('feature_lock', $feature);
}
}
}
self::getApp()->internalRedirect('admin/features');
}
public static function content()
{
parent::content();
$arr = [];
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
$arr[$fname] = [];
$arr[$fname][0] = $fdata[0];
foreach (array_slice($fdata, 1) as $f) {
$set = Config::get('feature', $f[0], $f[3]);
$arr[$fname][1][] = [
['feature_' . $f[0], $f[1], $set, $f[2], [L10n::t('Off'), L10n::t('On')]],
['featurelock_' . $f[0], L10n::t('Lock feature %s', $f[1]), (($f[4] !== false) ? "1" : ''), '', [L10n::t('Off'), L10n::t('On')]]
];
}
}
$tpl = Renderer::getMarkupTemplate('admin/features.tpl');
$o = Renderer::replaceMacros($tpl, [
'$form_security_token' => parent::getFormSecurityToken("admin_manage_features"),
'$title' => L10n::t('Manage Additional Features'),
'$features' => $arr,
'$submit' => L10n::t('Save Settings'),
]);
return $o;
}
}
<?php
namespace Friendica\Module\Admin;
use Friendica\Content\Feature;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
class Features extends BaseAdminModule
{
public static function post()
{
parent::post();
parent::checkFormSecurityTokenRedirectOnError('/admin/features', 'admin_manage_features');
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
foreach (array_slice($fdata, 1) as $f) {
$feature = $f[0];
$feature_state = 'feature_' . $feature;
$featurelock = 'featurelock_' . $feature;
if (!empty($_POST[$feature_state])) {
$val = intval($_POST[$feature_state]);
} else {
$val = 0;
}
Config::set('feature', $feature, $val);
if (!empty($_POST[$featurelock])) {
Config::set('feature_lock', $feature, $val);
} else {
Config::delete('feature_lock', $feature);
}
}
}
self::getApp()->internalRedirect('admin/features');
}
public static function content()
{
parent::content();
$arr = [];
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
$arr[$fname] = [];
$arr[$fname][0] = $fdata[0];
foreach (array_slice($fdata, 1) as $f) {
$set = Config::get('feature', $f[0], $f[3]);
$arr[$fname][1][] = [
['feature_' . $f[0], $f[1], $set, $f[2], [L10n::t('Off'), L10n::t('On')]],
['featurelock_' . $f[0], L10n::t('Lock feature %s', $f[1]), (($f[4] !== false) ? "1" : ''), '', [L10n::t('Off'), L10n::t('On')]]
];
}
}
$tpl = Renderer::getMarkupTemplate('admin/features.tpl');
$o = Renderer::replaceMacros($tpl, [
'$form_security_token' => parent::getFormSecurityToken("admin_manage_features"),
'$title' => L10n::t('Manage Additional Features'),
'$features' => $arr,
'$submit' => L10n::t('Save Settings'),
]);
return $o;
}
}

110
src/Module/Admin/Item/Delete.php

@ -1,55 +1,55 @@
<?php
namespace Friendica\Module\Admin\Item;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Model\Item;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
class Delete extends BaseAdminModule
{
public static function post()
{
parent::post();
if (empty($_POST['page_deleteitem_submit'])) {
return;
}
parent::checkFormSecurityTokenRedirectOnError('/admin/item/delete', 'admin_deleteitem');
if (!empty($_POST['page_deleteitem_submit'])) {
$guid = trim(Strings::escapeTags($_POST['deleteitemguid']));
// The GUID should not include a "/", so if there is one, we got an URL
// and the last part of it is most likely the GUID.
if (strpos($guid, '/')) {
$guid = substr($guid, strrpos($guid, '/') + 1);
}
// Now that we have the GUID, drop those items, which will also delete the
// associated threads.
Item::delete(['guid' => $guid]);
}
info(L10n::t('Item marked for deletion.') . EOL);
self::getApp()->internalRedirect('admin/item/delete');
}
public static function content()
{
parent::content();
$t = Renderer::getMarkupTemplate('admin/item/delete.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Delete Item'),
'$submit' => L10n::t('Delete this Item'),
'$intro1' => L10n::t('On this page you can delete an item from your node. If the item is a top level posting, the entire thread will be deleted.'),
'$intro2' => L10n::t('You need to know the GUID of the item. You can find it e.g. by looking at the display URL. The last part of http://example.com/display/123456 is the GUID, here 123456.'),
'$deleteitemguid' => ['deleteitemguid', L10n::t("GUID"), '', L10n::t("The GUID of the item you want to delete."), 'required', 'autofocus'],
'$form_security_token' => parent::getFormSecurityToken("admin_deleteitem")
]);
}
}
<?php
namespace Friendica\Module\Admin\Item;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Model\Item;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
class Delete extends BaseAdminModule
{
public static function post()
{
parent::post();
if (empty($_POST['page_deleteitem_submit'])) {
return;
}
parent::checkFormSecurityTokenRedirectOnError('/admin/item/delete', 'admin_deleteitem');
if (!empty($_POST['page_deleteitem_submit'])) {
$guid = trim(Strings::escapeTags($_POST['deleteitemguid']));
// The GUID should not include a "/", so if there is one, we got an URL
// and the last part of it is most likely the GUID.
if (strpos($guid, '/')) {
$guid = substr($guid, strrpos($guid, '/') + 1);
}
// Now that we have the GUID, drop those items, which will also delete the
// associated threads.
Item::delete(['guid' => $guid]);
}
info(L10n::t('Item marked for deletion.') . EOL);
self::getApp()->internalRedirect('admin/item/delete');
}
public static function content()
{
parent::content();
$t = Renderer::getMarkupTemplate('admin/item/delete.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Delete Item'),
'$submit' => L10n::t('Delete this Item'),
'$intro1' => L10n::t('On this page you can delete an item from your node. If the item is a top level posting, the entire thread will be deleted.'),
'$intro2' => L10n::t('You need to know the GUID of the item. You can find it e.g. by looking at the display URL. The last part of http://example.com/display/123456 is the GUID, here 123456.'),
'$deleteitemguid' => ['deleteitemguid', L10n::t("GUID"), '', L10n::t("The GUID of the item you want to delete."), 'required', 'autofocus'],
'$form_security_token' => parent::getFormSecurityToken("admin_deleteitem")
]);
}
}

148
src/Module/Admin/Logs/Settings.php

@ -1,74 +1,74 @@
<?php
namespace Friendica\Module\Admin\Logs;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
use Psr\Log\LogLevel;
class Settings extends BaseAdminModule
{
public static function post()
{
parent::post();
if (!empty($_POST['page_logs'])) {
parent::checkFormSecurityTokenRedirectOnError('/admin/logs', 'admin_logs');
$logfile = (!empty($_POST['logfile']) ? Strings::escapeTags(trim($_POST['logfile'])) : '');
$debugging = !empty($_POST['debugging']);
$loglevel = defaults($_POST, 'loglevel', LogLevel::ERROR);
Config::set('system', 'logfile', $logfile);
Config::set('system', 'debugging', $debugging);
Config::set('system', 'loglevel', $loglevel);
}
info(L10n::t("Log settings updated."));
self::getApp()->internalRedirect('admin/logs');
}
public static function content()
{
parent::content();
$a = self::getApp();
$log_choices = [
LogLevel::ERROR => 'Error',
LogLevel::WARNING => 'Warning',
LogLevel::NOTICE => 'Notice',
LogLevel::INFO => 'Info',
LogLevel::DEBUG => 'Debug',
];
if (ini_get('log_errors')) {
$phplogenabled = L10n::t('PHP log currently enabled.');
} else {
$phplogenabled = L10n::t('PHP log currently disabled.');
}
$t = Renderer::getMarkupTemplate('admin/logs/settings.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Logs'),
'$submit' => L10n::t('Save Settings'),
'$clear' => L10n::t('Clear'),
'$baseurl' => $a->getBaseURL(true),
'$logname' => Config::get('system', 'logfile'),
// see /help/smarty3-templates#1_1 on any Friendica node
'$debugging' => ['debugging', L10n::t("Enable Debugging"), Config::get('system', 'debugging'), ""],
'$logfile' => ['logfile', L10n::t("Log file"), Config::get('system', 'logfile'), L10n::t("Must be writable by web server. Relative to your Friendica top-level directory.")],
'$loglevel' => ['loglevel', L10n::t("Log level"), Config::get('system', 'loglevel'), "", $log_choices],
'$form_security_token' => parent::getFormSecurityToken("admin_logs"),
'$phpheader' => L10n::t("PHP logging"),
'$phphint' => L10n::t("To temporarily enable logging of PHP errors and warnings you can prepend the following to the index.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."),
'$phplogcode' => "error_reporting(E_ERROR | E_WARNING | E_PARSE);\nini_set('error_log','php.out');\nini_set('log_errors','1');\nini_set('display_errors', '1');",
'$phplogenabled' => $phplogenabled,
]);
}
}
<?php
namespace Friendica\Module\Admin\Logs;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
use Psr\Log\LogLevel;
class Settings extends BaseAdminModule
{
public static function post()
{
parent::post();
if (!empty($_POST['page_logs'])) {
parent::checkFormSecurityTokenRedirectOnError('/admin/logs', 'admin_logs');
$logfile = (!empty($_POST['logfile']) ? Strings::escapeTags(trim($_POST['logfile'])) : '');
$debugging = !empty($_POST['debugging']);
$loglevel = defaults($_POST, 'loglevel', LogLevel::ERROR);
Config::set('system', 'logfile', $logfile);
Config::set('system', 'debugging', $debugging);
Config::set('system', 'loglevel', $loglevel);
}
info(L10n::t("Log settings updated."));
self::getApp()->internalRedirect('admin/logs');
}
public static function content()
{
parent::content();
$a = self::getApp();
$log_choices = [
LogLevel::ERROR => 'Error',
LogLevel::WARNING => 'Warning',
LogLevel::NOTICE => 'Notice',
LogLevel::INFO => 'Info',
LogLevel::DEBUG => 'Debug',
];
if (ini_get('log_errors')) {
$phplogenabled = L10n::t('PHP log currently enabled.');
} else {
$phplogenabled = L10n::t('PHP log currently disabled.');
}
$t = Renderer::getMarkupTemplate('admin/logs/settings.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('Logs'),
'$submit' => L10n::t('Save Settings'),
'$clear' => L10n::t('Clear'),
'$baseurl' => $a->getBaseURL(true),
'$logname' => Config::get('system', 'logfile'),
// see /help/smarty3-templates#1_1 on any Friendica node
'$debugging' => ['debugging', L10n::t("Enable Debugging"), Config::get('system', 'debugging'), ""],
'$logfile' => ['logfile', L10n::t("Log file"), Config::get('system', 'logfile'), L10n::t("Must be writable by web server. Relative to your Friendica top-level directory.")],
'$loglevel' => ['loglevel', L10n::t("Log level"), Config::get('system', 'loglevel'), "", $log_choices],
'$form_security_token' => parent::getFormSecurityToken("admin_logs"),
'$phpheader' => L10n::t("PHP logging"),
'$phphint' => L10n::t("To temporarily enable logging of PHP errors and warnings you can prepend the following to the index.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."),
'$phplogcode' => "error_reporting(E_ERROR | E_WARNING | E_PARSE);\nini_set('error_log','php.out');\nini_set('log_errors','1');\nini_set('display_errors', '1');",
'$phplogenabled' => $phplogenabled,
]);
}
}

104
src/Module/Admin/Logs/View.php

@ -1,52 +1,52 @@
<?php
namespace Friendica\Module\Admin\Logs;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
class View extends BaseAdminModule
{
public static function content()
{
parent::content();
$t = Renderer::getMarkupTemplate('admin/logs/view.tpl');
$f = Config::get('system', 'logfile');
$data = '';
if (!file_exists($f)) {
$data = L10n::t('Error trying to open <strong>%1$s</strong> log file.\r\n<br/>Check to see if file %1$s exist and is readable.', $f);
} else {
$fp = fopen($f, 'r');
if (!$fp) {
$data = L10n::t('Couldn\'t open <strong>%1$s</strong> log file.\r\n<br/>Check to see if file %1$s is readable.', $f);
} else {
$fstat = fstat($fp);
$size = $fstat['size'];
if ($size != 0) {
if ($size > 5000000 || $size < 0) {
$size = 5000000;
}
$seek = fseek($fp, 0 - $size, SEEK_END);
if ($seek === 0) {
$data = Strings::escapeHtml(fread($fp, $size));
while (!feof($fp)) {
$data .= Strings::escapeHtml(fread($fp, 4096));
}
}
}
fclose($fp);
}
}
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('View Logs'),
'$data' => $data,
'$logname' => Config::get('system', 'logfile')
]);
}
}
<?php
namespace Friendica\Module\Admin\Logs;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings;
class View extends BaseAdminModule
{
public static function content()
{
parent::content();
$t = Renderer::getMarkupTemplate('admin/logs/view.tpl');
$f = Config::get('system', 'logfile');
$data = '';
if (!file_exists($f)) {
$data = L10n::t('Error trying to open <strong>%1$s</strong> log file.\r\n<br/>Check to see if file %1$s exist and is readable.', $f);
} else {
$fp = fopen($f, 'r');
if (!$fp) {
$data = L10n::t('Couldn\'t open <strong>%1$s</strong> log file.\r\n<br/>Check to see if file %1$s is readable.', $f);
} else {
$fstat = fstat($fp);
$size = $fstat['size'];
if ($size != 0) {
if ($size > 5000000 || $size < 0) {
$size = 5000000;
}
$seek = fseek($fp, 0 - $size, SEEK_END);
if ($seek === 0) {
$data = Strings::escapeHtml(fread($fp, $size));
while (!feof($fp)) {
$data .= Strings::escapeHtml(fread($fp, 4096));
}
}
}
fclose($fp);
}
}
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => L10n::t('View Logs'),
'$data' => $data,
'$logname' => Config::get('system', 'logfile')
]);
}
}

32
src/Module/Admin/PhpInfo.php

@ -1,16 +1,16 @@
<?php
namespace Friendica\Module\Admin;
use Friendica\Module\BaseAdminModule;
class PhpInfo extends BaseAdminModule
{
public static function rawContent()
{
parent::rawContent();
phpinfo();
exit();
}
}
<?php
namespace Friendica\Module\Admin;
use Friendica\Module\BaseAdminModule;
class PhpInfo extends BaseAdminModule
{
public static function rawContent()
{
parent::rawContent();
phpinfo();
exit();
}
}

132
src/Module/Admin/Queue.php

@ -1,66 +1,66 @@
<?php
namespace Friendica\Module\Admin;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Arrays;
use Friendica\Util\DateTimeFormat;
/**
* @brief Admin Inspect Queue Page
*
* Generates a page for the admin to have a look into the current queue of
* worker jobs. Shown are the parameters for the job and its priority.
*
* @return string
*/
class Queue extends BaseAdminModule
{
public static function content()
{
parent::content();
$a = self::getApp();
// @TODO: Replace with parameter from router
$deferred = $a->argc > 2 && $a->argv[2] == 'deferred';
// get jobs from the workerqueue table
if ($deferred) {
$condition = ["NOT `done` AND `next_try` > ?", DateTimeFormat::utcNow()];
$sub_title = L10n::t('Inspect Deferred Worker Queue');
$info = L10n::t("This page lists the deferred worker jobs. This are jobs that couldn't be executed at the first time.");
} else {
$condition = ["NOT `done` AND `next_try` < ?", DateTimeFormat::utcNow()];
$sub_title = L10n::t('Inspect Worker Queue');
$info = L10n::t('This page lists the currently queued worker jobs. These jobs are handled by the worker cronjob you\'ve set up during install.');
}
$entries = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], $condition, ['order' => ['priority']]);
$r = [];
while ($entry = DBA::fetch($entries)) {
// fix GH-5469. ref: src/Core/Worker.php:217
$entry['parameter'] = Arrays::recursiveImplode(json_decode($entry['parameter'], true), ': ');
$entry['created'] = DateTimeFormat::local($entry['created']);
$r[] = $entry;
}
DBA::close($entries);
$t = Renderer::getMarkupTemplate('admin/queue.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => $sub_title,
'$count' => count($r),
'$id_header' => L10n::t('ID'),
'$param_header' => L10n::t('Job Parameters'),
'$created_header' => L10n::t('Created'),
'$prio_header' => L10n::t('Priority'),
'$info' => $info,
'$entries' => $r,
]);
}
}
<?php
namespace Friendica\Module\Admin;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\Arrays;
use Friendica\Util\DateTimeFormat;
/**
* @brief Admin Inspect Queue Page
*
* Generates a page for the admin to have a look into the current queue of
* worker jobs. Shown are the parameters for the job and its priority.
*
* @return string
*/
class Queue extends BaseAdminModule
{
public static function content()
{
parent::content();
$a = self::getApp();
// @TODO: Replace with parameter from router
$deferred = $a->argc > 2 && $a->argv[2] == 'deferred';
// get jobs from the workerqueue table
if ($deferred) {
$condition = ["NOT `done` AND `next_try` > ?", DateTimeFormat::utcNow()];
$sub_title = L10n::t('Inspect Deferred Worker Queue');
$info = L10n::t("This page lists the deferred worker jobs. This are jobs that couldn't be executed at the first time.");
} else {
$condition = ["NOT `done` AND `next_try` < ?", DateTimeFormat::utcNow()];
$sub_title = L10n::t('Inspect Worker Queue');
$info = L10n::t('This page lists the currently queued worker jobs. These jobs are handled by the worker cronjob you\'ve set up during install.');
}
$entries = DBA::select('workerqueue', ['id', 'parameter', 'created', 'priority'], $condition, ['order' => ['priority']]);
$r = [];
while ($entry = DBA::fetch($entries)) {
// fix GH-5469. ref: src/Core/Worker.php:217
$entry['parameter'] = Arrays::recursiveImplode(json_decode($entry['parameter'], true), ': ');
$entry['created'] = DateTimeFormat::local($entry['created']);
$r[] = $entry;
}
DBA::close($entries);
$t = Renderer::getMarkupTemplate('admin/queue.tpl');
return Renderer::replaceMacros($t, [
'$title' => L10n::t('Administration'),
'$page' => $sub_title,
'$count' => count($r),
'$id_header' => L10n::t('ID'),
'$param_header' => L10n::t('Job Parameters'),
'$created_header' => L10n::t('Created'),
'$prio_header' => L10n::t('Priority'),
'$info' => $info,
'$entries' => $r,
]);
}
}

1
src/Module/Admin/Site.php

@ -39,6 +39,7 @@ class Site extends BaseAdminModule
}
// relocate
// @TODO This file could benefit from moving this feature away in a Module\Admin\Relocate class for example
if (!empty($_POST['relocate']) && !empty($_POST['relocate_url']) && $_POST['relocate_url'] != "") {
$new_url = $_POST['relocate_url'];
$new_url = rtrim($new_url, "/");

294
src/Module/Admin/Summary.php

@ -1,147 +1,147 @@
<?php
namespace Friendica\Module\Admin;
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Logger;
use Friendica\Core\Renderer;
use Friendica\Core\Update;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
use Friendica\Model\Register;
use Friendica\Module\BaseAdminModule;
use Friendica\Util\DateTimeFormat;
<