19 changed files with 1770 additions and 1760 deletions
@ -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'); |
||||
} |
||||
} |
||||
|
@ -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'), |
||||
]); |
||||
} |
||||
} |
||||
|
@ -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; |
||||
} |
||||
} |
||||
|
@ -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") |
||||
]); |
||||
} |
||||
} |
||||
|
@ -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; |
||||
} |
||||
} |
||||
|
@ -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; |
||||
} |
||||
} |
||||
|
@ -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") |
||||
]); |
||||
} |
||||
} |
||||
|
@ -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, |
||||
]); |
||||
} |
||||
} |
||||
|
@ -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') |
||||
]); |
||||
} |
||||
} |
||||
|
@ -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(); |
||||
} |
||||
} |
||||
|
@ -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,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; |
||||
< |