From ecdd9a4d6edd769a3e2c3b0604e4637d94fa1a51 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 23 Mar 2024 11:19:24 +0000 Subject: revert default to activity type Article until we have a more stable solution to override it for platforms which do not support it --- Zotlabs/Module/Item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index b158ed4e0..0324bf662 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -404,7 +404,7 @@ class Item extends Controller { $pagetitle = ((x($_REQUEST, 'pagetitle')) ? escape_tags($_REQUEST['pagetitle']) : ''); $layout_mid = ((x($_REQUEST, 'layout_mid')) ? escape_tags($_REQUEST['layout_mid']) : ''); $plink = ((x($_REQUEST, 'permalink')) ? escape_tags($_REQUEST['permalink']) : ''); - $obj_type = ((x($_REQUEST, 'obj_type')) ? escape_tags($_REQUEST['obj_type']) : 'Article'); + $obj_type = ((x($_REQUEST, 'obj_type')) ? escape_tags($_REQUEST['obj_type']) : 'Note'); // allow API to bulk load a bunch of imported items with sending out a bunch of posts. $nopush = ((x($_REQUEST, 'nopush')) ? intval($_REQUEST['nopush']) : 0); -- cgit v1.2.3 From 0dc959d9fe40bddce5e99b8162bb0e770fc28ed9 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sun, 24 Mar 2024 09:58:21 +0000 Subject: Deprecate *_config() functions in core. --- Zotlabs/Access/PermissionRoles.php | 4 +- Zotlabs/Daemon/Cache_query.php | 7 +- Zotlabs/Daemon/Checksites.php | 4 +- Zotlabs/Daemon/Cron.php | 21 +-- Zotlabs/Daemon/Cron_daily.php | 7 +- Zotlabs/Daemon/Cron_weekly.php | 4 +- Zotlabs/Daemon/Directory.php | 3 +- Zotlabs/Daemon/Expire.php | 16 +- Zotlabs/Daemon/Master.php | 2 +- Zotlabs/Daemon/Notifier.php | 7 +- Zotlabs/Daemon/Onepoll.php | 5 +- Zotlabs/Daemon/Poller.php | 16 +- Zotlabs/Daemon/Thumbnail.php | 7 +- Zotlabs/Extend/Route.php | 5 +- Zotlabs/Extend/Widget.php | 5 +- Zotlabs/Identity/OAuth2Server.php | 6 +- Zotlabs/Lib/Apps.php | 9 +- Zotlabs/Lib/Cache.php | 9 +- Zotlabs/Lib/Connect.php | 5 +- Zotlabs/Lib/Crypto.php | 3 +- Zotlabs/Lib/DB_Upgrade.php | 29 ++-- Zotlabs/Lib/DReport.php | 4 +- Zotlabs/Lib/Enotify.php | 9 +- Zotlabs/Lib/Libsync.php | 5 +- Zotlabs/Lib/Libzot.php | 43 +++--- Zotlabs/Lib/Libzotdir.php | 27 ++-- Zotlabs/Lib/QueueWorker.php | 23 +-- Zotlabs/Lib/ThreadItem.php | 17 ++- Zotlabs/Lib/Zotfinger.php | 3 +- Zotlabs/Module/Acl.php | 7 +- Zotlabs/Module/Admin.php | 4 +- Zotlabs/Module/Admin/Accounts.php | 6 +- Zotlabs/Module/Admin/Addons.php | 7 +- Zotlabs/Module/Admin/Dbsync.php | 14 +- Zotlabs/Module/Admin/Features.php | 44 +++--- Zotlabs/Module/Admin/Logs.php | 49 ++++--- Zotlabs/Module/Admin/Profs.php | 57 ++++---- Zotlabs/Module/Admin/Queueworker.php | 17 ++- Zotlabs/Module/Admin/Security.php | 73 +++++----- Zotlabs/Module/Admin/Site.php | 257 +++++++++++++++++---------------- Zotlabs/Module/Admin/Themes.php | 5 +- Zotlabs/Module/Api.php | 4 +- Zotlabs/Module/Apps.php | 4 +- Zotlabs/Module/Channel.php | 3 +- Zotlabs/Module/Cover_photo.php | 7 +- Zotlabs/Module/Dircensor.php | 6 +- Zotlabs/Module/Directory.php | 16 +- Zotlabs/Module/Dirsearch.php | 7 +- Zotlabs/Module/Display.php | 3 +- Zotlabs/Module/Email_validation.php | 9 +- Zotlabs/Module/Fhublocs.php | 3 +- Zotlabs/Module/Go.php | 9 +- Zotlabs/Module/Group.php | 7 +- Zotlabs/Module/Home.php | 13 +- Zotlabs/Module/Import.php | 9 +- Zotlabs/Module/Invite.php | 23 +-- Zotlabs/Module/Linkinfo.php | 3 +- Zotlabs/Module/Lostpass.php | 10 +- Zotlabs/Module/New_channel.php | 11 +- Zotlabs/Module/Profile_photo.php | 3 +- Zotlabs/Module/Profiles.php | 5 +- Zotlabs/Module/Profperm.php | 87 +++++------ Zotlabs/Module/Pubsites.php | 5 +- Zotlabs/Module/Pubstream.php | 13 +- Zotlabs/Module/Regate.php | 9 +- Zotlabs/Module/Regdir.php | 31 ++-- Zotlabs/Module/Register.php | 55 +++---- Zotlabs/Module/Search.php | 7 +- Zotlabs/Module/Service_limits.php | 14 +- Zotlabs/Module/Settings/Account.php | 4 +- Zotlabs/Module/Settings/Channel.php | 7 +- Zotlabs/Module/Settings/Display.php | 7 +- Zotlabs/Module/Settings/Privacy.php | 3 +- Zotlabs/Module/Setup.php | 7 +- Zotlabs/Module/Siteinfo.php | 7 +- Zotlabs/Module/Sse.php | 5 +- Zotlabs/Module/Sse_bs.php | 7 +- Zotlabs/Module/Well_known.php | 3 +- Zotlabs/Module/Wfinger.php | 3 +- Zotlabs/Photo/PhotoDriver.php | 5 +- Zotlabs/Photo/PhotoGd.php | 8 +- Zotlabs/Photo/PhotoImagick.php | 8 +- Zotlabs/Render/Comanche.php | 28 ++-- Zotlabs/Render/SmartyTemplate.php | 2 +- Zotlabs/Storage/Browser.php | 7 +- Zotlabs/Storage/Directory.php | 9 +- Zotlabs/Storage/File.php | 3 +- Zotlabs/Thumbs/Pdf.php | 3 +- Zotlabs/Thumbs/Video.php | 3 +- Zotlabs/Update/_1103.php | 6 +- Zotlabs/Update/_1226.php | 7 +- Zotlabs/Update/_1236.php | 11 +- Zotlabs/Update/_1242.php | 6 +- Zotlabs/Update/_1243.php | 12 +- Zotlabs/Web/HTTPSig.php | 5 +- Zotlabs/Web/Router.php | 5 +- Zotlabs/Web/Session.php | 13 +- Zotlabs/Widget/Newmember.php | 6 +- Zotlabs/Widget/Pinned.php | 4 +- Zotlabs/Widget/Pubtagcloud.php | 8 +- Zotlabs/Widget/Rating.php | 4 +- boot.php | 56 +++---- doc/dev-function-overview.md | 10 +- doc/developer_function_primer.bb | 4 + include/account.php | 51 +++---- include/attach.php | 7 +- include/auth.php | 15 +- include/bbcode.php | 9 +- include/channel.php | 27 ++-- include/cli_startup.php | 4 +- include/config.php | 65 +++++++++ include/connections.php | 7 +- include/contact_widgets.php | 3 +- include/conversation.php | 5 +- include/crypto.php | 8 +- include/event.php | 3 +- include/features.php | 80 +++++----- include/feedutils.php | 8 +- include/hubloc.php | 9 +- include/import.php | 3 +- include/items.php | 11 +- include/language.php | 7 +- include/nav.php | 13 +- include/network.php | 89 ++++++------ include/oauth.php | 60 ++++---- include/oauth2.php | 10 +- include/oembed.php | 20 +-- include/permissions.php | 8 +- include/photo/photo_driver.php | 7 +- include/photos.php | 9 +- include/plugin.php | 9 +- include/security.php | 4 +- include/socgraph.php | 3 +- include/statistics_fns.php | 22 +-- include/taxonomy.php | 3 +- include/text.php | 21 +-- include/zid.php | 3 +- tests/unit/Photo/PhotoGdTest.php | 17 +-- tests/unit/Web/HttpSigTest.php | 5 +- util/addons | 20 +-- util/config | 17 ++- util/db_update.php | 4 +- util/service_class | 34 +++-- util/storageconv | 21 +-- view/theme/redbasic/php/theme_init.php | 6 +- 145 files changed, 1223 insertions(+), 1011 deletions(-) diff --git a/Zotlabs/Access/PermissionRoles.php b/Zotlabs/Access/PermissionRoles.php index 2078b52a8..5dfedfcd7 100644 --- a/Zotlabs/Access/PermissionRoles.php +++ b/Zotlabs/Access/PermissionRoles.php @@ -2,6 +2,8 @@ namespace Zotlabs\Access; +use Zotlabs\Lib\Config; + /** * @brief PermissionRoles class. * @@ -247,7 +249,7 @@ class PermissionRoles { break; } - $x = get_config('system','role_perms'); + $x = Config::Get('system','role_perms'); // let system settings over-ride any or all if($x && is_array($x) && array_key_exists($role,$x)) diff --git a/Zotlabs/Daemon/Cache_query.php b/Zotlabs/Daemon/Cache_query.php index cd9597e9a..8e5c6b2ea 100644 --- a/Zotlabs/Daemon/Cache_query.php +++ b/Zotlabs/Daemon/Cache_query.php @@ -3,6 +3,7 @@ namespace Zotlabs\Daemon; use Zotlabs\Lib\Cache; +use Zotlabs\Lib\Config; class Cache_query { @@ -13,14 +14,14 @@ class Cache_query { $key = $argv[1]; - $pid = get_config('procid', $key, false); + $pid = Config::Get('procid', $key, false); if ($pid && (function_exists('posix_kill') ? posix_kill($pid, 0) : true)) { logger($key . ': procedure already run with pid ' . $pid, LOGGER_DEBUG); return; } $pid = getmypid(); - set_config('procid', $key, $pid); + Config::Set('procid', $key, $pid); array_shift($argv); array_shift($argv); @@ -31,7 +32,7 @@ class Cache_query { if($r) Cache::set($key, serialize($r)); - del_config('procid', $key); + Config::Delete('procid', $key); return; } diff --git a/Zotlabs/Daemon/Checksites.php b/Zotlabs/Daemon/Checksites.php index eacf8c6bc..8f6319edb 100644 --- a/Zotlabs/Daemon/Checksites.php +++ b/Zotlabs/Daemon/Checksites.php @@ -2,6 +2,8 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; + require_once('include/hubloc.php'); class Checksites { @@ -19,7 +21,7 @@ class Checksites { if ($site_id) $sql_options = " and site_url = '" . dbesc($argv[1]) . "' "; - $days = intval(get_config('system', 'sitecheckdays')); + $days = intval(Config::Get('system', 'sitecheckdays')); if ($days < 1) $days = 30; diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php index e0fa2d629..d2c863572 100644 --- a/Zotlabs/Daemon/Cron.php +++ b/Zotlabs/Daemon/Cron.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; use Zotlabs\Lib\Libzotdir; @@ -9,7 +10,7 @@ class Cron { static public function run($argc, $argv) { - $maxsysload = intval(get_config('system', 'maxloadavg')); + $maxsysload = intval(Config::Get('system', 'maxloadavg')); if ($maxsysload < 1) $maxsysload = 50; if (function_exists('sys_getloadavg')) { @@ -24,7 +25,7 @@ class Cron { // Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it. $lockfile = 'store/[data]/cron'; if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600)) - && (!get_config('system', 'override_cron_lockfile'))) { + && (!Config::Get('system', 'override_cron_lockfile'))) { logger("cron: Already running"); return; } @@ -41,7 +42,7 @@ class Cron { // Pull remote changes and push local changes. // potential issue: how do we keep from creating an endless update loop? - $dirmode = get_config('system', 'directory_mode'); + $dirmode = Config::Get('system', 'directory_mode'); if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { Libzotdir::sync_directories($dirmode); @@ -64,7 +65,7 @@ class Cron { require_once('include/account.php'); remove_expired_registrations(); - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); // expire any expired items @@ -124,13 +125,13 @@ class Cron { $r = q("SELECT DISTINCT xchan, content FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s", intval(PHOTO_CACHE), db_utcnow(), - db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY') + db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY') ); if ($r) { q("DELETE FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s", intval(PHOTO_CACHE), db_utcnow(), - db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY') + db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY') ); foreach ($r as $rr) { $file = dbunescbin($rr['content']); @@ -185,13 +186,13 @@ class Cron { // FIXME: add birthday updates, both locally and for xprof for use // by directory servers - $d1 = intval(get_config('system', 'last_expire_day')); + $d1 = intval(Config::Get('system', 'last_expire_day')); $d2 = intval(datetime_convert('UTC', 'UTC', 'now', 'd')); // Allow somebody to staggger daily activities if they have more than one site on their server, // or if it happens at an inconvenient (busy) hour. - $h1 = intval(get_config('system', 'cron_hour')); + $h1 = intval(Config::Get('system', 'cron_hour')); $h2 = intval(datetime_convert('UTC', 'UTC', 'now', 'G')); @@ -225,7 +226,7 @@ class Cron { // pull in some public posts if allowed - $disable_externals = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false || get_config('system', 'site_firehose'); + $disable_externals = Config::Get('system', 'disable_discover_tab') || Config::Get('system', 'disable_discover_tab') === false || Config::Get('system', 'site_firehose'); if (!$disable_externals) Master::Summon(['Externals']); @@ -245,7 +246,7 @@ class Cron { if (!$restart) Master::Summon(array('Cronhooks')); - set_config('system', 'lastcron', datetime_convert()); + Config::Set('system', 'lastcron', datetime_convert()); //All done - clear the lockfile //@unlink($lockfile); diff --git a/Zotlabs/Daemon/Cron_daily.php b/Zotlabs/Daemon/Cron_daily.php index 98379be1b..3bc267f08 100644 --- a/Zotlabs/Daemon/Cron_daily.php +++ b/Zotlabs/Daemon/Cron_daily.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzotdir; class Cron_daily { @@ -68,7 +69,7 @@ class Cron_daily { // Clean up cache q("DELETE FROM cache WHERE updated < %s - INTERVAL %s", db_utcnow(), - db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY') + db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY') ); //update statistics in config @@ -82,7 +83,7 @@ class Cron_daily { // expire old delivery reports - $keep_reports = intval(get_config('system', 'expire_delivery_reports')); + $keep_reports = intval(Config::Get('system', 'expire_delivery_reports')); if ($keep_reports === 0) $keep_reports = 10; @@ -103,7 +104,7 @@ class Cron_daily { $date = datetime_convert(); call_hooks('cron_daily', $date); - set_config('system', 'last_expire_day', intval(datetime_convert('UTC', 'UTC', 'now', 'd'))); + Config::Set('system', 'last_expire_day', intval(datetime_convert('UTC', 'UTC', 'now', 'd'))); /** * End Cron Daily diff --git a/Zotlabs/Daemon/Cron_weekly.php b/Zotlabs/Daemon/Cron_weekly.php index 75fb94700..f9ea5aae7 100644 --- a/Zotlabs/Daemon/Cron_weekly.php +++ b/Zotlabs/Daemon/Cron_weekly.php @@ -2,6 +2,8 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; + class Cron_weekly { static public function run($argc, $argv) { @@ -44,7 +46,7 @@ class Cron_weekly { db_utcnow(), db_quoteinterval('14 DAY') ); - $dirmode = intval(get_config('system', 'directory_mode')); + $dirmode = intval(Config::Get('system', 'directory_mode')); if ($dirmode === DIRECTORY_MODE_SECONDARY || $dirmode === DIRECTORY_MODE_PRIMARY) { logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . urlencode(z_root()) . '&realm=' . urlencode(get_directory_realm())), true)); } diff --git a/Zotlabs/Daemon/Directory.php b/Zotlabs/Daemon/Directory.php index 19adf8273..1c4c29ac2 100644 --- a/Zotlabs/Daemon/Directory.php +++ b/Zotlabs/Daemon/Directory.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Libzotdir; use Zotlabs\Lib\Queue; @@ -25,7 +26,7 @@ class Directory { logger('directory update', LOGGER_DEBUG); - $dirmode = get_config('system', 'directory_mode'); + $dirmode = Config::Get('system', 'directory_mode'); if ($dirmode === false) $dirmode = DIRECTORY_MODE_NORMAL; diff --git a/Zotlabs/Daemon/Expire.php b/Zotlabs/Daemon/Expire.php index 6ab67150f..ad52a6b71 100644 --- a/Zotlabs/Daemon/Expire.php +++ b/Zotlabs/Daemon/Expire.php @@ -2,6 +2,8 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; + require_once('include/items.php'); class Expire { @@ -10,14 +12,14 @@ class Expire { cli_startup(); - $pid = get_config('procid', 'expire', false); + $pid = Config::Get('procid', 'expire', false); if ($pid && (function_exists('posix_kill') ? posix_kill($pid, 0) : true)) { logger('procedure already run with pid ' . $pid, LOGGER_DEBUG); return; } $pid = getmypid(); - set_config('procid', 'expire', $pid); + Config::Set('procid', 'expire', $pid); // perform final cleanup on previously delete items @@ -38,13 +40,13 @@ class Expire { db_quoteinterval('36 DAY') ); - if (intval(get_config('system', 'optimize_items'))) + if (intval(Config::Get('system', 'optimize_items'))) q("optimize table item"); logger('expire: start with pid ' . $pid, LOGGER_DEBUG); - $site_expire = intval(get_config('system', 'default_expire_days', 30)); - $commented_days = intval(get_config('system', 'active_expire_days', 7)); + $site_expire = intval(Config::Get('system', 'default_expire_days', 30)); + $commented_days = intval(Config::Get('system', 'active_expire_days', 7)); logger('site_expire: ' . $site_expire); @@ -84,7 +86,7 @@ class Expire { // this should probably just fetch the channel_expire_days from the sys channel, // but there's no convenient way to set it. - $expire_days = get_config('system', 'sys_expire_days'); + $expire_days = Config::Get('system', 'sys_expire_days'); if ($expire_days === false) $expire_days = 30; @@ -101,7 +103,7 @@ class Expire { logger('Expire: sys: done', LOGGER_DEBUG); } - del_config('procid', 'expire'); + Config::Delete('procid', 'expire'); return; } diff --git a/Zotlabs/Daemon/Master.php b/Zotlabs/Daemon/Master.php index c9ed91aaa..d28e462dd 100644 --- a/Zotlabs/Daemon/Master.php +++ b/Zotlabs/Daemon/Master.php @@ -37,7 +37,7 @@ class Master { return; } - $phpbin = get_config('system', 'phpbin', 'php'); + $phpbin = Config::Get('system', 'phpbin', 'php'); proc_run($phpbin, 'Zotlabs/Daemon/Master.php', $arr); */ } diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index 4e7ca3911..20134b8fe 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -2,8 +2,9 @@ namespace Zotlabs\Daemon; -use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Queue; require_once('include/html2plain.php'); @@ -668,7 +669,7 @@ class Notifier { ); // only create delivery reports for normal undeleted items - if (is_array($target_item) && (!$target_item['item_deleted']) && (!get_config('system', 'disable_dreport'))) { + if (is_array($target_item) && (!$target_item['item_deleted']) && (!Config::Get('system', 'disable_dreport'))) { q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan, dreport_queue ) values ( '%s', '%s','%s','%s','%s','%s','%s','%s' ) ", dbesc($target_item['mid']), @@ -698,7 +699,7 @@ class Notifier { do_delivery(self::$deliveries); } - if ($dead_hosts && is_array($target_item) && (!$target_item['item_deleted']) && (!get_config('system', 'disable_dreport'))) { + if ($dead_hosts && is_array($target_item) && (!$target_item['item_deleted']) && (!Config::Get('system', 'disable_dreport'))) { foreach ($dead_hosts as $deceased_host) { $r = q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan, dreport_queue ) values ( '%s', '%s','%s','%s','%s','%s','%s','%s' ) ", diff --git a/Zotlabs/Daemon/Onepoll.php b/Zotlabs/Daemon/Onepoll.php index 973bcf402..e525d138c 100644 --- a/Zotlabs/Daemon/Onepoll.php +++ b/Zotlabs/Daemon/Onepoll.php @@ -5,6 +5,7 @@ namespace Zotlabs\Daemon; use Zotlabs\Lib\Activity; use Zotlabs\Lib\ActivityStreams; use Zotlabs\Lib\ASCollection; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; require_once('include/socgraph.php'); @@ -25,7 +26,7 @@ class Onepoll { } $sql_extra = ''; - $allow_feeds = get_config('system', 'feed_contacts'); + $allow_feeds = Config::Get('system', 'feed_contacts'); if(!$allow_feeds) { $sql_extra = ' and abook_feed = 0 '; } @@ -125,7 +126,7 @@ class Onepoll { if ($fetch_feed) { - $max = intval(get_config('system', 'max_imported_posts', 30)); + $max = intval(Config::Get('system', 'max_imported_posts', 30)); if (intval($max)) { $cl = Activity::get_actor_collections($contact['abook_xchan']); diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php index 77a428ec3..2103310b9 100644 --- a/Zotlabs/Daemon/Poller.php +++ b/Zotlabs/Daemon/Poller.php @@ -2,11 +2,13 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; + class Poller { static public function run($argc, $argv) { - $maxsysload = intval(get_config('system', 'maxloadavg')); + $maxsysload = intval(Config::Get('system', 'maxloadavg')); if ($maxsysload < 1) $maxsysload = 50; if (function_exists('sys_getloadavg')) { @@ -17,7 +19,7 @@ class Poller { } } - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); logger('poller: start'); @@ -43,13 +45,13 @@ class Poller { reload_plugins(); // Only poll from those with suitable relationships - $abandon_days = intval(get_config('system', 'account_abandon_days', 0)); + $abandon_days = intval(Config::Get('system', 'account_abandon_days', 0)); $abandon_sql = (($abandon_days) ? sprintf(" AND account_lastlog > %s - INTERVAL %s ", db_utcnow(), db_quoteinterval(intval($abandon_days) . ' DAY')) : '' ); - $allow_feeds = get_config('system', 'feed_contacts'); + $allow_feeds = Config::Get('system', 'feed_contacts'); if(!$allow_feeds) { $sql_extra .= ' and abook_feed = 0 '; } @@ -81,7 +83,7 @@ class Poller { if (intval($contact['abook_feed'])) { $min = service_class_fetch($contact['abook_channel'], 'minimum_feedcheck_minutes'); if (!$min) - $min = intval(get_config('system', 'minimum_feedcheck_minutes')); + $min = intval(Config::Get('system', 'minimum_feedcheck_minutes')); if (!$min) $min = 60; @@ -167,7 +169,7 @@ class Poller { } } - $dirmode = intval(get_config('system', 'directory_mode')); + $dirmode = intval(Config::Get('system', 'directory_mode')); if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { $r = q("SELECT * FROM updates WHERE ud_update = 1 AND (ud_last = '%s' OR ud_last > %s - INTERVAL %s)", @@ -195,7 +197,7 @@ class Poller { } } - set_config('system', 'lastpoll', datetime_convert()); + Config::Set('system', 'lastpoll', datetime_convert()); return; } diff --git a/Zotlabs/Daemon/Thumbnail.php b/Zotlabs/Daemon/Thumbnail.php index fa9570658..85fcb8b72 100644 --- a/Zotlabs/Daemon/Thumbnail.php +++ b/Zotlabs/Daemon/Thumbnail.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Config; class Thumbnail { @@ -19,9 +20,9 @@ class Thumbnail { $attach = $c[0]; - $preview_style = intval(get_config('system', 'thumbnail_security', 0)); - $preview_width = intval(get_config('system', 'thumbnail_width', 300)); - $preview_height = intval(get_config('system', 'thumbnail_height', 300)); + $preview_style = intval(Config::Get('system', 'thumbnail_security', 0)); + $preview_width = intval(Config::Get('system', 'thumbnail_width', 300)); + $preview_height = intval(Config::Get('system', 'thumbnail_height', 300)); $p = [ 'attach' => $attach, diff --git a/Zotlabs/Extend/Route.php b/Zotlabs/Extend/Route.php index f7b90ec6e..95b83e11b 100644 --- a/Zotlabs/Extend/Route.php +++ b/Zotlabs/Extend/Route.php @@ -2,6 +2,7 @@ namespace Zotlabs\Extend; +use Zotlabs\Lib\Config; class Route { @@ -38,11 +39,11 @@ class Route { } static function get() { - return get_config('system','routes',[]); + return Config::Get('system','routes',[]); } static function set($r) { - return set_config('system','routes',$r); + return Config::Set('system','routes',$r); } } diff --git a/Zotlabs/Extend/Widget.php b/Zotlabs/Extend/Widget.php index dee64c61b..6ab95237d 100644 --- a/Zotlabs/Extend/Widget.php +++ b/Zotlabs/Extend/Widget.php @@ -2,6 +2,7 @@ namespace Zotlabs\Extend; +use Zotlabs\Lib\Config; class Widget { @@ -38,10 +39,10 @@ class Widget { } static function get() { - return get_config('system','widgets',[]); + return Config::Get('system','widgets',[]); } static function set($r) { - return set_config('system','widgets',$r); + return Config::Set('system','widgets',$r); } } diff --git a/Zotlabs/Identity/OAuth2Server.php b/Zotlabs/Identity/OAuth2Server.php index b747b95db..67326b599 100644 --- a/Zotlabs/Identity/OAuth2Server.php +++ b/Zotlabs/Identity/OAuth2Server.php @@ -2,6 +2,8 @@ namespace Zotlabs\Identity; +use Zotlabs\Lib\Config; + class OAuth2Server extends \OAuth2\Server { public function __construct(OAuth2Storage $storage, $config = null) { @@ -24,8 +26,8 @@ class OAuth2Server extends \OAuth2\Server { $keyStorage = new \OAuth2\Storage\Memory( [ 'keys' => [ - 'public_key' => get_config('system', 'pubkey'), - 'private_key' => get_config('system', 'prvkey') + 'public_key' => Config::Get('system', 'pubkey'), + 'private_key' => Config::Get('system', 'prvkey') ] ]); diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index 1c05d69b1..0dc405ea9 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -3,6 +3,7 @@ namespace Zotlabs\Lib; use App; +use Zotlabs\Lib\Config; require_once('include/plugin.php'); require_once('include/channel.php'); @@ -65,7 +66,7 @@ class Apps { } static public function get_base_apps() { - $x = get_config('system','base_apps',[ + $x = Config::Get('system','base_apps',[ 'Connections', 'Contact Roles', 'Network', @@ -301,7 +302,7 @@ class Apps { break; default: if($config) - $unset = ((get_config('system', $require[0]) == $require[1]) ? false : true); + $unset = ((Config::Get('system', $require[0]) == $require[1]) ? false : true); else $unset = ((local_channel() && feature_enabled(local_channel(),$require)) ? false : true); if($unset) @@ -523,7 +524,7 @@ class Apps { break; default: if($config) - $unset = ((get_config('system', $require[0]) === $require[1]) ? false : true); + $unset = ((Config::Get('system', $require[0]) === $require[1]) ? false : true); else $unset = ((local_channel() && feature_enabled(local_channel(),$require)) ? false : true); if($unset) @@ -960,7 +961,7 @@ class Apps { $conf = (($menu === 'nav_featured_app') ? 'app_order' : 'app_pin_order'); - $x = (($uid) ? get_pconfig($uid,'system',$conf) : get_config('system',$conf)); + $x = (($uid) ? get_pconfig($uid,'system',$conf) : Config::Get('system',$conf)); if(($x) && (! is_array($x))) { $y = explode(',',$x); $y = array_map('trim',$y); diff --git a/Zotlabs/Lib/Cache.php b/Zotlabs/Lib/Cache.php index f3f520496..4b5beb2aa 100644 --- a/Zotlabs/Lib/Cache.php +++ b/Zotlabs/Lib/Cache.php @@ -2,10 +2,11 @@ namespace Zotlabs\Lib; - /** - * cache api - */ +use Zotlabs\Lib\Config; +/** + * cache api + */ class Cache { /** @@ -23,7 +24,7 @@ class Cache { $r = q("SELECT v FROM cache WHERE k = '%s' AND updated > %s - INTERVAL %s LIMIT 1", dbesc($hash), db_utcnow(), - db_quoteinterval(($age ? $age : get_config('system','object_cache_days', '30') . ' DAY')) + db_quoteinterval(($age ? $age : Config::Get('system','object_cache_days', '30') . ' DAY')) ); if ($r) diff --git a/Zotlabs/Lib/Connect.php b/Zotlabs/Lib/Connect.php index 4de41526b..b8e7a5c4e 100644 --- a/Zotlabs/Lib/Connect.php +++ b/Zotlabs/Lib/Connect.php @@ -5,8 +5,7 @@ namespace Zotlabs\Lib; use App; use Zotlabs\Access\Permissions; use Zotlabs\Daemon\Master; - - +use Zotlabs\Lib\Config; class Connect { @@ -96,7 +95,7 @@ class Connect { $wf = discover_by_webbie($url,$protocol); if (! $wf) { - $feeds = get_config('system','feed_contacts'); + $feeds = Config::Get('system','feed_contacts'); if (($feeds) && (in_array($protocol, [ '', 'feed', 'rss' ]))) { $d = discover_by_url($url); diff --git a/Zotlabs/Lib/Crypto.php b/Zotlabs/Lib/Crypto.php index 188c6bd81..46a25d3b5 100644 --- a/Zotlabs/Lib/Crypto.php +++ b/Zotlabs/Lib/Crypto.php @@ -3,6 +3,7 @@ namespace Zotlabs\Lib; use Exception; +use Zotlabs\Lib\Config; class Crypto { @@ -44,7 +45,7 @@ class Crypto { 'encrypt_key' => false ]; - $conf = get_config('system', 'openssl_conf_file'); + $conf = Config::Get('system', 'openssl_conf_file'); if ($conf) { $openssl_options['config'] = $conf; diff --git a/Zotlabs/Lib/DB_Upgrade.php b/Zotlabs/Lib/DB_Upgrade.php index b6e3f7b7b..981c354a4 100644 --- a/Zotlabs/Lib/DB_Upgrade.php +++ b/Zotlabs/Lib/DB_Upgrade.php @@ -2,6 +2,7 @@ namespace Zotlabs\Lib; +use Zotlabs\Lib\Config; class DB_Upgrade { @@ -13,9 +14,9 @@ class DB_Upgrade { $this->config_name = 'db_version'; $this->func_prefix = '_'; - $build = get_config('system', 'db_version', 0); + $build = Config::Get('system', 'db_version', 0); if(! intval($build)) - $build = set_config('system', 'db_version', $db_revision); + $build = Config::Set('system', 'db_version', $db_revision); if($build == $db_revision) { // Nothing to be done. @@ -27,7 +28,7 @@ class DB_Upgrade { logger('Critical: check_config unable to determine database schema version'); return; } - + $current = intval($db_revision); if($stored < $current) { @@ -38,7 +39,7 @@ class DB_Upgrade { for($x = $stored + 1; $x <= $current; $x ++) { $s = '_' . $x; $cls = '\\Zotlabs\Update\\' . $s ; - if(! class_exists($cls)) { + if(! class_exists($cls)) { return; } @@ -52,10 +53,10 @@ class DB_Upgrade { Config::Load('database'); - if(get_config('database', $s)) + if(Config::Get('database', $s)) break; - set_config('database',$s, '1'); - + Config::Set('database',$s, '1'); + $c = new $cls(); @@ -65,10 +66,10 @@ class DB_Upgrade { $source = t('Source code of failed update: ') . "\n\n" . @file_get_contents('Zotlabs/Update/' . $s . '.php'); - + // Prevent sending hundreds of thousands of emails by creating - // a lockfile. + // a lockfile. $lockfile = 'store/[data]/mailsent'; @@ -77,7 +78,7 @@ class DB_Upgrade { @unlink($lockfile); //send the administrator an e-mail file_put_contents($lockfile, $x); - + $r = q("select account_language from account where account_email = '%s' limit 1", dbesc(\App::$config['system']['admin_email']) ); @@ -86,7 +87,7 @@ class DB_Upgrade { [ 'toEmail' => \App::$config['system']['admin_email'], 'messageSubject' => sprintf( t('Update Error at %s'), z_root()), - 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'), + 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'), [ '$sitename' => \App::$config['system']['sitename'], '$siteurl' => z_root(), @@ -104,11 +105,11 @@ class DB_Upgrade { pop_lang(); } else { - set_config('database',$s, 'success'); + Config::Set('database',$s, 'success'); } } } - set_config('system', 'db_version', $db_revision); + Config::Set('system', 'db_version', $db_revision); } } -} \ No newline at end of file +} diff --git a/Zotlabs/Lib/DReport.php b/Zotlabs/Lib/DReport.php index 71e39a9d7..ac8e0d377 100644 --- a/Zotlabs/Lib/DReport.php +++ b/Zotlabs/Lib/DReport.php @@ -1,6 +1,8 @@ intval(get_config('system', 'force_queue_threshold', 3000))) { + if (intval($x[0]['total']) > intval(Config::Get('system', 'force_queue_threshold', 3000))) { logger('immediate delivery deferred.', LOGGER_DEBUG, LOG_INFO); Queue::update($hash); continue; diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php index 3495ede06..89157bf5e 100644 --- a/Zotlabs/Lib/Libzot.php +++ b/Zotlabs/Lib/Libzot.php @@ -3,10 +3,11 @@ namespace Zotlabs\Lib; use App; -use Zotlabs\Web\HTTPSig; -use Zotlabs\Access\Permissions; use Zotlabs\Access\PermissionLimits; +use Zotlabs\Access\Permissions; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; +use Zotlabs\Web\HTTPSig; require_once('include/crypto.php'); @@ -101,12 +102,12 @@ class Libzot { */ static function build_packet($channel, $type = 'activity', $recipients = null, $msg = [], $encoding = 'activitystreams', $remote_key = null, $methods = '') { - $sig_method = get_config('system', 'signature_algorithm', 'sha256'); + $sig_method = Config::Get('system', 'signature_algorithm', 'sha256'); $data = [ 'type' => $type, 'encoding' => $encoding, 'sender' => $channel['channel_hash'], - 'site_id' => self::make_xchan_hash(z_root(), get_config('system', 'pubkey')), + 'site_id' => self::make_xchan_hash(z_root(), Config::Get('system', 'pubkey')), 'version' => System::get_zot_revision(), ]; @@ -661,7 +662,7 @@ class Libzot { */ call_hooks('import_xchan', $arr); - $dirmode = intval(get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL)); + $dirmode = intval(Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL)); $changed = false; $what = ''; @@ -710,7 +711,7 @@ class Libzot { // if we import an entry from a site that's not ours and either or both of us is off the grid - hide the entry. /** @TODO: check if we're the same directory realm, which would mean we are allowed to see it */ - $dirmode = get_config('system', 'directory_mode'); + $dirmode = Config::Get('system', 'directory_mode'); if (((isset($arr['site']['directory_mode']) && $arr['site']['directory_mode'] === 'standalone') || ($dirmode & DIRECTORY_MODE_STANDALONE)) && ($arr['site']['url'] != z_root())) $arr['searchable'] = false; @@ -1008,7 +1009,7 @@ class Libzot { logger('Headers: ' . print_r($arr['header'], true), LOGGER_DATA, LOG_DEBUG); } - $x = Crypto::unencapsulate($x, get_config('system', 'prvkey')); + $x = Crypto::unencapsulate($x, Config::Get('system', 'prvkey')); if ($x && !is_array($x)) { $x = json_decode($x, true); @@ -1416,7 +1417,7 @@ class Libzot { $include_sys = false; if ($msg['type'] === 'activity') { - $disable_discover_tab = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false; + $disable_discover_tab = Config::Get('system', 'disable_discover_tab') || Config::Get('system', 'disable_discover_tab') === false; if (!$disable_discover_tab) $include_sys = true; @@ -1632,8 +1633,8 @@ class Libzot { continue; } - $incl = get_config('system','pubstream_incl'); - $excl = get_config('system','pubstream_excl'); + $incl = Config::Get('system','pubstream_incl'); + $excl = Config::Get('system','pubstream_excl'); if(($incl || $excl) && !MessageFilter::evaluate($arr, $incl, $excl)) { $local_public = false; @@ -2924,8 +2925,8 @@ class Libzot { */ static function site_info() { - $signing_key = get_config('system', 'prvkey'); - $sig_method = get_config('system', 'signature_algorithm', 'sha256'); + $signing_key = Config::Get('system', 'prvkey'); + $sig_method = Config::Get('system', 'signature_algorithm', 'sha256'); $ret = []; $ret['site'] = []; @@ -2934,10 +2935,10 @@ class Libzot { $ret['site']['post'] = z_root() . '/zot'; $ret['site']['openWebAuth'] = z_root() . '/owa'; $ret['site']['authRedirect'] = z_root() . '/magic'; - $ret['site']['sitekey'] = get_config('system', 'pubkey'); + $ret['site']['sitekey'] = Config::Get('system', 'pubkey'); $ret['site']['directory_mode'] = 'normal'; - $dirmode = get_config('system', 'directory_mode'); + $dirmode = Config::Get('system', 'directory_mode'); if ($dirmode == DIRECTORY_MODE_PRIMARY) $ret['site']['directory_mode'] = 'primary'; @@ -2956,7 +2957,7 @@ class Libzot { if ($dirmode != DIRECTORY_MODE_STANDALONE) { - $register_policy = intval(get_config('system', 'register_policy')); + $register_policy = intval(Config::Get('system', 'register_policy')); if ($register_policy == REGISTER_CLOSED) $ret['site']['register_policy'] = 'closed'; @@ -2966,7 +2967,7 @@ class Libzot { $ret['site']['register_policy'] = 'open'; - $access_policy = intval(get_config('system', 'access_policy')); + $access_policy = intval(Config::Get('system', 'access_policy')); if ($access_policy == ACCESS_PRIVATE) $ret['site']['access_policy'] = 'private'; @@ -2982,7 +2983,7 @@ class Libzot { require_once('include/channel.php'); $ret['site']['channels'] = channel_total(); - $ret['site']['admin'] = get_config('system', 'admin_email'); + $ret['site']['admin'] = Config::Get('system', 'admin_email'); $visible_plugins = []; if (is_array(App::$plugins) && count(App::$plugins)) { @@ -2993,10 +2994,10 @@ class Libzot { } $ret['site']['plugins'] = $visible_plugins; - $ret['site']['sitehash'] = get_config('system', 'location_hash'); - $ret['site']['sitename'] = get_config('system', 'sitename'); - $ret['site']['sellpage'] = get_config('system', 'sellpage'); - $ret['site']['location'] = get_config('system', 'site_location'); + $ret['site']['sitehash'] = Config::Get('system', 'location_hash'); + $ret['site']['sitename'] = Config::Get('system', 'sitename'); + $ret['site']['sellpage'] = Config::Get('system', 'sellpage'); + $ret['site']['location'] = Config::Get('system', 'site_location'); $ret['site']['realm'] = get_directory_realm(); $ret['site']['project'] = System::get_platform_name(); $ret['site']['version'] = System::get_project_version(); diff --git a/Zotlabs/Lib/Libzotdir.php b/Zotlabs/Lib/Libzotdir.php index ca3902a9e..25f308fc2 100644 --- a/Zotlabs/Lib/Libzotdir.php +++ b/Zotlabs/Lib/Libzotdir.php @@ -2,6 +2,7 @@ namespace Zotlabs\Lib; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Zotfinger; use Zotlabs\Lib\Webfinger; @@ -20,7 +21,7 @@ class Libzotdir { static function find_upstream_directory($dirmode) { - $preferred = get_config('system','directory_server'); + $preferred = Config::Get('system','directory_server'); // Thwart attempts to use a private directory @@ -47,17 +48,17 @@ class Libzotdir { $directory_fallback_servers = get_directory_fallback_servers(); - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); if ($dirmode == DIRECTORY_MODE_NORMAL) { $toss = mt_rand(0,count($directory_fallback_servers)); $preferred = $directory_fallback_servers[$toss]; if(! $preferred) { $preferred = DIRECTORY_FALLBACK_MASTER; } - set_config('system','directory_server',$preferred); + Config::Set('system','directory_server',$preferred); } else { - set_config('system','directory_server',z_root()); + Config::Set('system','directory_server',z_root()); } } if($preferred) { @@ -77,7 +78,7 @@ class Libzotdir { static function check_upstream_directory() { - $directory = get_config('system', 'directory_server'); + $directory = Config::Get('system', 'directory_server'); // it's possible there is no directory server configured and the local hub is being used. // If so, default to preserving the absence of a specific server setting. @@ -94,7 +95,7 @@ class Libzotdir { } if (! $isadir) - set_config('system', 'directory_server', ''); + Config::Set('system', 'directory_server', ''); } @@ -106,7 +107,7 @@ class Libzotdir { $ret = ((array_key_exists($setting,$_SESSION)) ? intval($_SESSION[$setting]) : false); if($ret === false) - $ret = get_config('directory', $setting); + $ret = Config::Get('directory', $setting); // 'safemode' is the default if there is no observer or no established preference. @@ -114,7 +115,7 @@ class Libzotdir { if($setting === 'safemode' && $ret === false) $ret = 1; - if($setting === 'globaldir' && intval(get_config('system','localdir_hide'))) + if($setting === 'globaldir' && intval(Config::Get('system','localdir_hide'))) $ret = 1; return $ret; @@ -133,7 +134,7 @@ class Libzotdir { $globaldir = self::get_directory_setting($observer, 'globaldir'); $pubforums = self::get_directory_setting($observer, 'pubforums'); - $hide_local = intval(get_config('system','localdir_hide')); + $hide_local = intval(Config::Get('system','localdir_hide')); if($hide_local) $globaldir = 1; @@ -141,7 +142,7 @@ class Libzotdir { // Build urls without order and pubforums so it's easy to tack on the changed value // Probably there's an easier way to do this - $directory_sort_order = get_config('system','directory_sort_order'); + $directory_sort_order = Config::Get('system','directory_sort_order'); if(! $directory_sort_order) $directory_sort_order = 'date'; @@ -232,7 +233,7 @@ class Libzotdir { if (! $r) return; - $dir_trusted_hosts = array_merge(get_directory_fallback_servers(), get_config('system', 'trusted_directory_servers', [])); + $dir_trusted_hosts = array_merge(get_directory_fallback_servers(), Config::Get('system', 'trusted_directory_servers', [])); foreach ($r as $rr) { if (! $rr['site_directory']) @@ -244,7 +245,7 @@ class Libzotdir { // It will take about a month for a new directory to obtain the full current repertoire of channels. /** @FIXME Go back and pick up earlier ratings if this is a new directory server. These do not get refreshed. */ - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); $syncdate = (($rr['site_sync'] <= NULL_DATE) ? datetime_convert('UTC','UTC','now - 2 days') : $rr['site_sync']); $x = z_fetch_url($rr['site_directory'] . '?f=&sync=' . urlencode($syncdate) . (($token) ? '&t=' . $token : '')); @@ -696,7 +697,7 @@ class Libzotdir { static function update($hash, $addr, $bump_date = true, $flag = null) { - $dirmode = intval(get_config('system', 'directory_mode')); + $dirmode = intval(Config::Get('system', 'directory_mode')); if($dirmode == DIRECTORY_MODE_NORMAL) { return; diff --git a/Zotlabs/Lib/QueueWorker.php b/Zotlabs/Lib/QueueWorker.php index 68e747b0f..ce239809f 100644 --- a/Zotlabs/Lib/QueueWorker.php +++ b/Zotlabs/Lib/QueueWorker.php @@ -4,6 +4,7 @@ namespace Zotlabs\Lib; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\Exception\UnableToBuildUuidException; +use Zotlabs\Lib\Config; class QueueWorker { @@ -84,7 +85,7 @@ class QueueWorker { $workers = self::GetWorkerCount(); if ($workers < self::$maxworkers) { logger($workers . '/' . self::$maxworkers . ' workers active', LOGGER_DEBUG); - $phpbin = get_config('system', 'phpbin', 'php'); + $phpbin = Config::Get('system', 'phpbin', 'php'); proc_run($phpbin, 'Zotlabs/Daemon/Master.php', ['Queueworker']); } } @@ -132,18 +133,18 @@ class QueueWorker { public static function GetWorkerCount() { if (self::$maxworkers == 0) { - self::$maxworkers = get_config('queueworker', 'max_queueworkers', 4); + self::$maxworkers = Config::Get('queueworker', 'max_queueworkers', 4); self::$maxworkers = self::$maxworkers > 3 ? self::$maxworkers : 4; } if (self::$workermaxage == 0) { - self::$workermaxage = get_config('queueworker', 'max_queueworker_age'); + self::$workermaxage = Config::Get('queueworker', 'max_queueworker_age'); self::$workermaxage = self::$workermaxage > 120 ? self::$workermaxage : 300; } self::qstart(); // skip locked is preferred but is not supported by mariadb < 10.6 which is still used a lot - hence make it optional - $sql_quirks = ((get_config('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); + $sql_quirks = ((Config::Get('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); $r = q("SELECT workerq_id FROM workerq WHERE workerq_reservationid IS NOT NULL AND workerq_processtimeout < %s FOR UPDATE $sql_quirks", db_utcnow() @@ -199,7 +200,7 @@ class QueueWorker { self::qstart(); // skip locked is preferred but is not supported by mariadb < 10.6 which is still used a lot - hence make it optional - $sql_quirks = ((get_config('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); + $sql_quirks = ((Config::Get('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); $work = dbq("SELECT workerq_id, workerq_cmd FROM workerq WHERE workerq_reservationid IS NULL ORDER BY workerq_priority DESC, workerq_id ASC LIMIT 1 FOR UPDATE $sql_quirks"); @@ -236,12 +237,12 @@ class QueueWorker { } public static function Process() { - $sleep = intval(get_config('queueworker', 'queue_worker_sleep', 100)); - $auto_queue_worker_sleep = get_config('queueworker', 'auto_queue_worker_sleep', 0); + $sleep = intval(Config::Get('queueworker', 'queue_worker_sleep', 100)); + $auto_queue_worker_sleep = Config::Get('queueworker', 'auto_queue_worker_sleep', 0); if (!self::GetWorkerID()) { if ($auto_queue_worker_sleep) { - set_config('queueworker', 'queue_worker_sleep', $sleep + 100); + Config::Set('queueworker', 'queue_worker_sleep', $sleep + 100); } logger('Unable to get worker ID. Exiting.', LOGGER_DEBUG); @@ -250,7 +251,7 @@ class QueueWorker { if ($auto_queue_worker_sleep && $sleep > 100) { $next_sleep = $sleep - 100; - set_config('queueworker', 'queue_worker_sleep', (($next_sleep < 100) ? 100 : $next_sleep)); + Config::Set('queueworker', 'queue_worker_sleep', (($next_sleep < 100) ? 100 : $next_sleep)); } $jobs = 0; @@ -259,7 +260,7 @@ class QueueWorker { self::$workersleep = $sleep; self::$workersleep = ((intval(self::$workersleep) > 100) ? intval(self::$workersleep) : 100); - if (function_exists('sys_getloadavg') && get_config('queueworker', 'load_average_sleep')) { + if (function_exists('sys_getloadavg') && Config::Get('queueworker', 'load_average_sleep')) { // very experimental! $load_average_sleep = true; } @@ -287,7 +288,7 @@ class QueueWorker { if ($workers < self::$maxworkers) { logger($workers . '/' . self::$maxworkers . ' workers active', LOGGER_DEBUG); - $phpbin = get_config('system', 'phpbin', 'php'); + $phpbin = Config::Get('system', 'phpbin', 'php'); proc_run($phpbin, 'Zotlabs/Daemon/Master.php', ['Queueworker']); } diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index 8f364e945..290a7b0c2 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -3,8 +3,9 @@ namespace Zotlabs\Lib; use App; -use Zotlabs\Lib\Apps; use Zotlabs\Access\AccessList; +use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; require_once('include/text.php'); @@ -41,7 +42,7 @@ class ThreadItem { $this->data = $data; $this->toplevel = ($this->get_id() == $this->get_data_value('parent')); - $this->threaded = get_config('system','thread_allow'); + $this->threaded = Config::Get('system','thread_allow'); $observer = \App::get_observer(); @@ -70,7 +71,7 @@ class ThreadItem { // allow a site to configure the order and content of the reaction emoji list if($this->toplevel) { - $x = get_config('system','reactions'); + $x = Config::Get('system','reactions'); if($x && is_array($x) && count($x)) { $this->reactions = $x; } @@ -347,12 +348,12 @@ class ThreadItem { $dreport = ''; - $keep_reports = intval(get_config('system','expire_delivery_reports')); + $keep_reports = intval(Config::Get('system','expire_delivery_reports')); if($keep_reports === 0) $keep_reports = 10; $dreport_link = ''; - if((intval($item['item_type']) == ITEM_TYPE_POST) && (! get_config('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0) { + if((intval($item['item_type']) == ITEM_TYPE_POST) && (! Config::Get('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0) { $dreport = t('Delivery Report'); $dreport_link = '?mid=' . $item['mid']; } @@ -397,7 +398,7 @@ class ThreadItem { $json_mids = json_encode($mids); // Pinned item processing - $allowed_type = (in_array($item['item_type'], get_config('system', 'pin_types', [ ITEM_TYPE_POST ])) ? true : false); + $allowed_type = (in_array($item['item_type'], Config::Get('system', 'pin_types', [ ITEM_TYPE_POST ])) ? true : false); $pinned_items = ($allowed_type ? get_pconfig($item['uid'], 'pinned', $item['item_type'], []) : []); $pinned = ((!empty($pinned_items) && in_array($midb64, $pinned_items)) ? true : false); @@ -549,7 +550,7 @@ class ThreadItem { $result['children'] = array(); $nb_children = count($children); - $visible_comments = get_config('system','expanded_comments'); + $visible_comments = Config::Get('system','expanded_comments'); if($visible_comments === false) $visible_comments = 3; @@ -826,7 +827,7 @@ class ThreadItem { */ private function get_comment_box() { - if(!$this->is_toplevel() && !get_config('system','thread_allow')) { + if(!$this->is_toplevel() && !Config::Get('system','thread_allow')) { return ''; } diff --git a/Zotlabs/Lib/Zotfinger.php b/Zotlabs/Lib/Zotfinger.php index ccf64d6d1..2a16fc8cf 100644 --- a/Zotlabs/Lib/Zotfinger.php +++ b/Zotlabs/Lib/Zotfinger.php @@ -2,6 +2,7 @@ namespace Zotlabs\Lib; +use Zotlabs\Lib\Config; use Zotlabs\Web\HTTPSig; class Zotfinger { @@ -75,7 +76,7 @@ class Zotfinger { $result['data'] = json_decode($x['body'],true); if($result['data'] && is_array($result['data']) && array_key_exists('encrypted',$result['data']) && $result['data']['encrypted']) { - $result['data'] = json_decode(Crypto::unencapsulate($result['data'],get_config('system','prvkey')),true); + $result['data'] = json_decode(Crypto::unencapsulate($result['data'],Config::Get('system','prvkey')),true); } logger('decrypted: ' . print_r($result,true), LOGGER_DATA); diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php index b98f5621e..1de7a3d02 100644 --- a/Zotlabs/Module/Acl.php +++ b/Zotlabs/Module/Acl.php @@ -2,8 +2,9 @@ namespace Zotlabs\Module; -use Zotlabs\Lib\Libzotdir; use Zotlabs\Lib\AccessList; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libzotdir; require_once 'include/acl_selectors.php'; @@ -414,7 +415,7 @@ class Acl extends \Zotlabs\Web\Controller { return; } - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); $search = ((x($_REQUEST,'search')) ? htmlentities($_REQUEST['search'],ENT_COMPAT,'UTF-8',false) : ''); if(! $search || mb_strlen($search) < 2) return array(); @@ -443,7 +444,7 @@ class Acl extends \Zotlabs\Web\Controller { $url = $directory['url'] . '/dirsearch'; } - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); $count = (x($_REQUEST,'count') ? $_REQUEST['count'] : 100); if($url) { diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php index 59a9e22b2..89eaeccfe 100644 --- a/Zotlabs/Module/Admin.php +++ b/Zotlabs/Module/Admin.php @@ -8,6 +8,8 @@ namespace Zotlabs\Module; +use Zotlabs\Lib\Config; + require_once('include/account.php'); /** @@ -149,7 +151,7 @@ class Admin extends \Zotlabs\Web\Controller { '$vmaster' => array( t('Repository version (master)'), $vmaster), '$vdev' => array( t('Repository version (dev)'), $vdev), '$upgrade' => $upgrade, - '$build' => get_config('system', 'db_version') + '$build' => Config::Get('system', 'db_version') )); } diff --git a/Zotlabs/Module/Admin/Accounts.php b/Zotlabs/Module/Admin/Accounts.php index b067b4bf6..6f7cb0311 100644 --- a/Zotlabs/Module/Admin/Accounts.php +++ b/Zotlabs/Module/Admin/Accounts.php @@ -2,7 +2,7 @@ namespace Zotlabs\Module\Admin; - +use Zotlabs\Lib\Config; class Accounts { @@ -76,7 +76,7 @@ class Accounts { if ( $ac['success'] ) { $rc .= '✔'; - $auto_create = get_config('system','auto_channel_create',1); + $auto_create = Config::Get('system','auto_channel_create',1); if($auto_create) { $reonar = json_decode($rs[0]['reg_stuff'], true); @@ -87,7 +87,7 @@ class Accounts { if($reonar['chan.did1']) set_aconfig($ac['account']['account_id'], 'register', 'channel_address', $reonar['chan.did1']); - $permissions_role = get_config('system','default_permissions_role'); + $permissions_role = Config::Get('system','default_permissions_role'); if($permissions_role) set_aconfig($ac['account']['account_id'], 'register', 'permissions_role', $permissions_role); diff --git a/Zotlabs/Module/Admin/Addons.php b/Zotlabs/Module/Admin/Addons.php index e088353e3..b7cfb651c 100644 --- a/Zotlabs/Module/Admin/Addons.php +++ b/Zotlabs/Module/Admin/Addons.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module\Admin; use App; +use \Zotlabs\Lib\Config; use \Zotlabs\Storage\GitRepo; use \Michelf\MarkdownExtra; @@ -276,7 +277,7 @@ class Addons { if ($idz !== false) { unset(App::$plugins[$idz]); uninstall_plugin($plugin); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); @@ -297,7 +298,7 @@ class Addons { $pinstalled = true; info( sprintf( t("Plugin %s enabled."), $plugin ) ); } - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); if($pinstalled) { @require_once("addon/$plugin/$plugin.php"); @@ -395,7 +396,7 @@ class Addons { if ($idz !== false) { unset(App::$plugins[$idz]); uninstall_plugin($id); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); diff --git a/Zotlabs/Module/Admin/Dbsync.php b/Zotlabs/Module/Admin/Dbsync.php index b68e7bbc2..9f202993d 100644 --- a/Zotlabs/Module/Admin/Dbsync.php +++ b/Zotlabs/Module/Admin/Dbsync.php @@ -2,7 +2,7 @@ namespace Zotlabs\Module\Admin; - +use Zotlabs\Lib\Config; class Dbsync { @@ -12,10 +12,10 @@ class Dbsync { if(argc() > 3 && intval(argv(3)) && argv(2) === 'mark') { // remove the old style config if it exists - del_config('database', 'update_r' . intval(argv(3))); - set_config('database', '_' . intval(argv(3)), 'success'); - if(intval(get_config('system','db_version')) < intval(argv(3))) - set_config('system','db_version',intval(argv(3))); + Config::Delete('database', 'update_r' . intval(argv(3))); + Config::Set('database', '_' . intval(argv(3)), 'success'); + if(intval(Config::Get('system','db_version')) < intval(argv(3))) + Config::Set('system','db_version',intval(argv(3))); info( t('Update has been marked successful') . EOL); goaway(z_root() . '/admin/dbsync'); } @@ -33,7 +33,7 @@ class Dbsync { } elseif($retval === UPDATE_SUCCESS) { $o .= sprintf( t('Update %s was successfully applied.'), $s); - set_config('database',$s, 'success'); + Config::Set('database',$s, 'success'); } else $o .= sprintf( t('Verifying update %s did not return a status. Unknown if it succeeded.'), $s); @@ -60,7 +60,7 @@ class Dbsync { } elseif($retval === UPDATE_SUCCESS) { $o .= sprintf( t('Update %s was successfully applied.'), $s); - set_config('database',$s, 'success'); + Config::Set('database',$s, 'success'); } else $o .= sprintf( t('Update %s did not return a status. It cannot be determined if it was successful.'), $s); diff --git a/Zotlabs/Module/Admin/Features.php b/Zotlabs/Module/Admin/Features.php index 504caae79..e0b3a3fd4 100644 --- a/Zotlabs/Module/Admin/Features.php +++ b/Zotlabs/Module/Admin/Features.php @@ -2,53 +2,53 @@ namespace Zotlabs\Module\Admin; - +use Zotlabs\Lib\Config; class Features { - + function post() { - + check_form_security_token_redirectOnErr('/admin/features', 'admin_manage_features'); - + logger('postvars: ' . print_r($_POST,true)); - + $arr = array(); $features = get_features(false); - + foreach($features as $fname => $fdata) { foreach(array_slice($fdata,1) as $f) { $feature = $f[0]; - + if(array_key_exists('feature_' . $feature,$_POST)) $val = intval($_POST['feature_' . $feature]); else $val = 0; - set_config('feature',$feature,$val); - + Config::Set('feature',$feature,$val); + if(array_key_exists('featurelock_' . $feature,$_POST)) - set_config('feature_lock',$feature,$val); + Config::Set('feature_lock',$feature,$val); else - del_config('feature_lock',$feature); + Config::Delete('feature_lock',$feature); } } - + goaway(z_root() . '/admin/features' ); - + } - + function get() { - + if((argc() > 1) && (argv(1) === 'features')) { $arr = array(); $features = get_features(false); - + foreach($features as $fname => $fdata) { $arr[$fname] = array(); $arr[$fname][0] = $fdata[0]; foreach(array_slice($fdata,1) as $f) { - - $set = get_config('feature',$f[0]); + + $set = Config::Get('feature',$f[0]); if($set === false) $set = $f[3]; $arr[$fname][1][] = array( @@ -57,7 +57,7 @@ class Features { ); } } - + $tpl = get_markup_template("admin_settings_features.tpl"); $o .= replace_macros($tpl, array( '$form_security_token' => get_form_security_token("admin_manage_features"), @@ -65,10 +65,10 @@ class Features { '$features' => $arr, '$submit' => t('Submit'), )); - + return $o; } } - -} \ No newline at end of file + +} diff --git a/Zotlabs/Module/Admin/Logs.php b/Zotlabs/Module/Admin/Logs.php index c83fc6a9a..73c890e26 100644 --- a/Zotlabs/Module/Admin/Logs.php +++ b/Zotlabs/Module/Admin/Logs.php @@ -2,11 +2,12 @@ namespace Zotlabs\Module\Admin; +use Zotlabs\Lib\Config; class Logs { - + /** * @brief POST handler for logs admin page. * @@ -15,20 +16,20 @@ class Logs { function post() { if (x($_POST, 'page_logs')) { check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs'); - + $logfile = ((x($_POST,'logfile')) ? notags(trim($_POST['logfile'])) : ''); $debugging = ((x($_POST,'debugging')) ? true : false); $loglevel = ((x($_POST,'loglevel')) ? intval(trim($_POST['loglevel'])) : 0); - - set_config('system','logfile', $logfile); - set_config('system','debugging', $debugging); - set_config('system','loglevel', $loglevel); + + Config::Set('system','logfile', $logfile); + Config::Set('system','debugging', $debugging); + Config::Set('system','loglevel', $loglevel); } - + info( t('Log settings updated.') ); goaway(z_root() . '/admin/logs' ); } - + /** * @brief Logs admin page. * @@ -36,7 +37,7 @@ class Logs { */ function get() { - + $log_choices = Array( LOGGER_NORMAL => 'Normal', LOGGER_TRACE => 'Trace', @@ -44,15 +45,15 @@ class Logs { LOGGER_DATA => 'Data', LOGGER_ALL => 'All' ); - + $t = get_markup_template('admin_logs.tpl'); - - $f = get_config('system', 'logfile'); - + + $f = Config::Get('system', 'logfile'); + $data = ''; - + if(!file_exists($f)) { - $data = t("Error trying to open $f log file.\r\n
Check to see if file $f exist and is + $data = t("Error trying to open $f log file.\r\n
Check to see if file $f exist and is readable."); } else { @@ -77,7 +78,7 @@ class Logs { fclose($fp); } } - + return replace_macros($t, array( '$title' => t('Administration'), '$page' => t('Logs'), @@ -85,17 +86,17 @@ class Logs { '$clear' => t('Clear'), '$data' => $data, '$baseurl' => z_root(), - '$logname' => get_config('system','logfile'), - + '$logname' => Config::Get('system','logfile'), + // name, label, value, help string, extra data... - '$debugging' => array('debugging', t("Debugging"),get_config('system','debugging'), ""), - '$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your top-level webserver directory.")), - '$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices), - + '$debugging' => array('debugging', t("Debugging"),Config::Get('system','debugging'), ""), + '$logfile' => array('logfile', t("Log file"), Config::Get('system','logfile'), t("Must be writable by web server. Relative to your top-level webserver directory.")), + '$loglevel' => array('loglevel', t("Log level"), Config::Get('system','loglevel'), "", $log_choices), + '$form_security_token' => get_form_security_token('admin_logs'), )); } - -} \ No newline at end of file + +} diff --git a/Zotlabs/Module/Admin/Profs.php b/Zotlabs/Module/Admin/Profs.php index eb2501d43..9965cab19 100644 --- a/Zotlabs/Module/Admin/Profs.php +++ b/Zotlabs/Module/Admin/Profs.php @@ -2,11 +2,12 @@ namespace Zotlabs\Module\Admin; +use Zotlabs\Lib\Config; class Profs { function post() { - + if(array_key_exists('basic',$_REQUEST)) { $arr = explode(',',$_REQUEST['basic']); array_walk($arr,'array_trim'); @@ -19,9 +20,9 @@ class Profs { } } if(! $narr) - del_config('system','profile_fields_basic'); + Config::Delete('system','profile_fields_basic'); else - set_config('system','profile_fields_basic',$narr); + Config::Set('system','profile_fields_basic',$narr); if(array_key_exists('advanced',$_REQUEST)) { @@ -36,15 +37,15 @@ class Profs { } } if(! $narr) - del_config('system','profile_fields_advanced'); + Config::Delete('system','profile_fields_advanced'); else - set_config('system','profile_fields_advanced',$narr); + Config::Set('system','profile_fields_advanced',$narr); } goaway(z_root() . '/admin/profs'); } - - + + if(array_key_exists('field_name',$_REQUEST)) { if($_REQUEST['id']) { $r = q("update profdef set field_name = '%s', field_type = '%s', field_desc = '%s' field_help = '%s', field_inputs = '%s' where id = %d", @@ -66,24 +67,24 @@ class Profs { ); } } - - + + // add to chosen array basic or advanced - + goaway(z_root() . '/admin/profs'); } - + function get() { - + if((argc() > 3) && argv(2) == 'drop' && intval(argv(3))) { $r = q("delete from profdef where id = %d", intval(argv(3)) ); // remove from allowed fields - - goaway(z_root() . '/admin/profs'); + + goaway(z_root() . '/admin/profs'); } - + if((argc() > 2) && argv(2) === 'new') { return replace_macros(get_markup_template('profdef_edit.tpl'),array( '$header' => t('New Profile Field'), @@ -94,7 +95,7 @@ class Profs { '$submit' => t('Save') )); } - + if((argc() > 2) && intval(argv(2))) { $r = q("select * from profdef where id = %d limit 1", intval(argv(2)) @@ -103,7 +104,7 @@ class Profs { notice( t('Field definition not found') . EOL); goaway(z_root() . '/admin/profs'); } - + return replace_macros(get_markup_template('profdef_edit.tpl'),array( '$id' => intval($r[0]['id']), '$header' => t('Edit Profile Field'), @@ -114,7 +115,7 @@ class Profs { '$submit' => t('Save') )); } - + $basic = ''; $barr = array(); $fields = get_profile_fields_basic(); @@ -129,7 +130,7 @@ class Profs { $barr[] = trim($k); } } - + $advanced = ''; $fields = get_profile_fields_advanced(); if(! $fields) @@ -143,7 +144,7 @@ class Profs { $advanced .= trim($k); } } - + $all = ''; $fields = get_profile_fields_advanced(1); if($fields) { @@ -153,7 +154,7 @@ class Profs { $all .= trim($k); } } - + $r = q("select * from profdef where true"); if($r) { foreach($r as $rr) { @@ -162,8 +163,8 @@ class Profs { $all .= $rr['field_name']; } } - - + + $o = replace_macros(get_markup_template('admin_profiles.tpl'),array( '$title' => t('Profile Fields'), '$basic' => array('basic',t('Basic Profile Fields'),$basic,''), @@ -174,17 +175,17 @@ class Profs { '$cust_fields' => $r, '$edit' => t('Edit'), '$drop' => t('Delete'), - '$new' => t('Create Custom Field'), + '$new' => t('Create Custom Field'), '$submit' => t('Submit') )); - + return $o; - - + + } -} \ No newline at end of file +} diff --git a/Zotlabs/Module/Admin/Queueworker.php b/Zotlabs/Module/Admin/Queueworker.php index a4f38d07c..c98df6ac0 100644 --- a/Zotlabs/Module/Admin/Queueworker.php +++ b/Zotlabs/Module/Admin/Queueworker.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module\Admin; use App; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; class Queueworker extends Controller { @@ -17,18 +18,18 @@ class Queueworker extends Controller { $maxqueueworkers = intval($_POST['queueworker_maxworkers']); $maxqueueworkers = ($maxqueueworkers > 3) ? $maxqueueworkers : 4; - set_config('queueworker', 'max_queueworkers', $maxqueueworkers); + Config::Set('queueworker', 'max_queueworkers', $maxqueueworkers); $maxworkerage = intval($_POST['queueworker_max_age']); $maxworkerage = ($maxworkerage >= 120) ? $maxworkerage : 300; - set_config('queueworker', 'queueworker_max_age', $maxworkerage); + Config::Set('queueworker', 'queueworker_max_age', $maxworkerage); $queueworkersleep = intval($_POST['queue_worker_sleep']); $queueworkersleep = ($queueworkersleep > 100) ? $queueworkersleep : 100; - set_config('queueworker', 'queue_worker_sleep', $queueworkersleep); + Config::Set('queueworker', 'queue_worker_sleep', $queueworkersleep); $auto_queue_worker_sleep = intval($_POST['auto_queue_worker_sleep']); - set_config('queueworker', 'auto_queue_worker_sleep', $auto_queue_worker_sleep); + Config::Set('queueworker', 'auto_queue_worker_sleep', $auto_queue_worker_sleep); goaway(z_root() . '/admin/queueworker'); } @@ -54,7 +55,7 @@ class Queueworker extends Controller { } } - $maxqueueworkers = get_config('queueworker', 'max_queueworkers', 4); + $maxqueueworkers = Config::Get('queueworker', 'max_queueworkers', 4); $maxqueueworkers = ($maxqueueworkers > 3) ? $maxqueueworkers : 4; $sc = ''; @@ -68,7 +69,7 @@ class Queueworker extends Controller { ] ]); - $workermaxage = get_config('queueworker', 'queueworker_max_age'); + $workermaxage = Config::Get('queueworker', 'queueworker_max_age'); $workermaxage = ($workermaxage >= 120) ? $workermaxage : 300; $sc .= replace_macros(get_markup_template('field_input.tpl'), [ @@ -80,10 +81,10 @@ class Queueworker extends Controller { ] ]); - $queueworkersleep = get_config('queueworker', 'queue_worker_sleep'); + $queueworkersleep = Config::Get('queueworker', 'queue_worker_sleep'); $queueworkersleep = ($queueworkersleep > 100) ? $queueworkersleep : 100; - $auto_queue_worker_sleep = get_config('queueworker', 'auto_queue_worker_sleep', 0); + $auto_queue_worker_sleep = Config::Get('queueworker', 'auto_queue_worker_sleep', 0); $sc .= replace_macros(get_markup_template('field_input.tpl'), [ '$field' => [ diff --git a/Zotlabs/Module/Admin/Security.php b/Zotlabs/Module/Admin/Security.php index 499572170..559097df2 100644 --- a/Zotlabs/Module/Admin/Security.php +++ b/Zotlabs/Module/Admin/Security.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module\Admin; +use Zotlabs\Lib\Config; class Security { @@ -11,53 +12,53 @@ class Security { $allowed_email = ((x($_POST,'allowed_email')) ? notags(trim($_POST['allowed_email'])) : ''); $not_allowed_email = ((x($_POST,'not_allowed_email')) ? notags(trim($_POST['not_allowed_email'])) : ''); - set_config('system','allowed_email', $allowed_email); - set_config('system','not_allowed_email', $not_allowed_email); + Config::Set('system','allowed_email', $allowed_email); + Config::Set('system','not_allowed_email', $not_allowed_email); $block_public = ((x($_POST,'block_public')) ? True : False); - set_config('system','block_public',$block_public); + Config::Set('system','block_public',$block_public); $cloud_noroot = ((x($_POST,'cloud_noroot')) ? 1 : 0); - set_config('system','cloud_disable_siteroot',1 - $cloud_noroot); + Config::Set('system','cloud_disable_siteroot',1 - $cloud_noroot); $cloud_disksize = ((x($_POST,'cloud_disksize')) ? 1 : 0); - set_config('system','cloud_report_disksize',$cloud_disksize); + Config::Set('system','cloud_report_disksize',$cloud_disksize); $ws = $this->trim_array_elems(explode("\n",$_POST['whitelisted_sites'])); - set_config('system','whitelisted_sites',$ws); + Config::Set('system','whitelisted_sites',$ws); $bs = $this->trim_array_elems(explode("\n",$_POST['blacklisted_sites'])); - set_config('system','blacklisted_sites',$bs); + Config::Set('system','blacklisted_sites',$bs); $wc = $this->trim_array_elems(explode("\n",$_POST['whitelisted_channels'])); - set_config('system','whitelisted_channels',$wc); + Config::Set('system','whitelisted_channels',$wc); $bc = $this->trim_array_elems(explode("\n",$_POST['blacklisted_channels'])); - set_config('system','blacklisted_channels',$bc); + Config::Set('system','blacklisted_channels',$bc); $embed_sslonly = ((x($_POST,'embed_sslonly')) ? True : False); - set_config('system','embed_sslonly',$embed_sslonly); + Config::Set('system','embed_sslonly',$embed_sslonly); $we = $this->trim_array_elems(explode("\n",$_POST['embed_allow'])); - set_config('system','embed_allow',$we); + Config::Set('system','embed_allow',$we); $be = $this->trim_array_elems(explode("\n",$_POST['embed_deny'])); - set_config('system','embed_deny',$be); + Config::Set('system','embed_deny',$be); $thumbnail_security = ((x($_POST,'thumbnail_security')) ? intval($_POST['thumbnail_security']) : 0); - set_config('system', 'thumbnail_security' , $thumbnail_security); + Config::Set('system', 'thumbnail_security' , $thumbnail_security); $inline_pdf = ((x($_POST,'inline_pdf')) ? intval($_POST['inline_pdf']) : 0); - set_config('system', 'inline_pdf' , $inline_pdf); + Config::Set('system', 'inline_pdf' , $inline_pdf); $ts = ((x($_POST,'transport_security')) ? True : False); - set_config('system','transport_security_header',$ts); + Config::Set('system','transport_security_header',$ts); $cs = ((x($_POST,'content_security')) ? True : False); - set_config('system','content_security_policy',$cs); + Config::Set('system','content_security_policy',$cs); $trusted_directory_servers = $this->trim_array_elems(explode("\n", $_POST['trusted_directory_servers'])); - set_config('system', 'trusted_directory_servers', $trusted_directory_servers); + Config::Set('system', 'trusted_directory_servers', $trusted_directory_servers); goaway(z_root() . '/admin/security'); } @@ -66,31 +67,31 @@ class Security { function get() { - $whitesites = get_config('system','whitelisted_sites'); + $whitesites = Config::Get('system','whitelisted_sites'); $whitesites_str = ((is_array($whitesites)) ? implode("\n",$whitesites) : ''); - $blacksites = get_config('system','blacklisted_sites'); + $blacksites = Config::Get('system','blacklisted_sites'); $blacksites_str = ((is_array($blacksites)) ? implode("\n",$blacksites) : ''); - $whitechannels = get_config('system','whitelisted_channels'); + $whitechannels = Config::Get('system','whitelisted_channels'); $whitechannels_str = ((is_array($whitechannels)) ? implode("\n",$whitechannels) : ''); - $blackchannels = get_config('system','blacklisted_channels'); + $blackchannels = Config::Get('system','blacklisted_channels'); $blackchannels_str = ((is_array($blackchannels)) ? implode("\n",$blackchannels) : ''); - $whiteembeds = get_config('system','embed_allow'); + $whiteembeds = Config::Get('system','embed_allow'); $whiteembeds_str = ((is_array($whiteembeds)) ? implode("\n",$whiteembeds) : ''); - $blackembeds = get_config('system','embed_deny'); + $blackembeds = Config::Get('system','embed_deny'); $blackembeds_str = ((is_array($blackembeds)) ? implode("\n",$blackembeds) : ''); - $trusted_directory_servers = get_config('system', 'trusted_directory_servers'); + $trusted_directory_servers = Config::Get('system', 'trusted_directory_servers'); $trusted_directory_servers_str = ((is_array($trusted_directory_servers)) ? implode("\n", $trusted_directory_servers) : ''); - $is_dir = (intval(get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL)) !== DIRECTORY_MODE_NORMAL); + $is_dir = (intval(Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL)) !== DIRECTORY_MODE_NORMAL); - $embed_coop = intval(get_config('system','embed_coop')); + $embed_coop = intval(Config::Get('system','embed_coop')); if((! $whiteembeds) && (! $blackembeds)) { $embedhelp1 = t("By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."); @@ -105,22 +106,22 @@ class Security { '$title' => t('Administration'), '$page' => t('Security'), '$form_security_token' => get_form_security_token('admin_security'), - '$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated.")), - '$cloud_noroot' => [ 'cloud_noroot', t('Provide a cloud root directory'), 1 - intval(get_config('system','cloud_disable_siteroot')), t('The cloud root directory lists all channel names which provide public files') ], - '$cloud_disksize' => [ 'cloud_disksize', t('Show total disk space available to cloud uploads'), intval(get_config('system','cloud_report_disksize')), '' ], - '$transport_security' => array('transport_security', t('Set "Transport Security" HTTP header'),intval(get_config('system','transport_security_header')),''), - '$content_security' => array('content_security', t('Set "Content Security Policy" HTTP header'),intval(get_config('system','content_security_policy')),''), - '$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")), - '$not_allowed_email' => array('not_allowed_email', t("Not allowed email domains"), get_config('system','not_allowed_email'), t("Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined.")), + '$block_public' => array('block_public', t("Block public"), Config::Get('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated.")), + '$cloud_noroot' => [ 'cloud_noroot', t('Provide a cloud root directory'), 1 - intval(Config::Get('system','cloud_disable_siteroot')), t('The cloud root directory lists all channel names which provide public files') ], + '$cloud_disksize' => [ 'cloud_disksize', t('Show total disk space available to cloud uploads'), intval(Config::Get('system','cloud_report_disksize')), '' ], + '$transport_security' => array('transport_security', t('Set "Transport Security" HTTP header'),intval(Config::Get('system','transport_security_header')),''), + '$content_security' => array('content_security', t('Set "Content Security Policy" HTTP header'),intval(Config::Get('system','content_security_policy')),''), + '$allowed_email' => array('allowed_email', t("Allowed email domains"), Config::Get('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")), + '$not_allowed_email' => array('not_allowed_email', t("Not allowed email domains"), Config::Get('system','not_allowed_email'), t("Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined.")), '$whitelisted_sites' => array('whitelisted_sites', t('Allow communications only from these sites'), $whitesites_str, t('One site per line. Leave empty to allow communication from anywhere by default')), '$blacklisted_sites' => array('blacklisted_sites', t('Block communications from these sites'), $blacksites_str, ''), '$whitelisted_channels' => array('whitelisted_channels', t('Allow communications only from these channels'), $whitechannels_str, t('One channel (hash) per line. Leave empty to allow from any channel by default')), '$blacklisted_channels' => array('blacklisted_channels', t('Block communications from these channels'), $blackchannels_str, ''), - '$embed_sslonly' => array('embed_sslonly',t('Only allow embeds from secure (SSL) websites and links.'), intval(get_config('system','embed_sslonly')),''), + '$embed_sslonly' => array('embed_sslonly',t('Only allow embeds from secure (SSL) websites and links.'), intval(Config::Get('system','embed_sslonly')),''), '$embed_allow' => array('embed_allow', t('Allow unfiltered embedded HTML content only from these domains'), $whiteembeds_str, t('One site per line. By default embedded content is filtered.')), '$embed_deny' => array('embed_deny', t('Block embedded HTML from these domains'), $blackembeds_str, ''), - '$thumbnail_security' => [ 'thumbnail_security', t("Allow SVG thumbnails in file browser"), get_config('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.") ], - '$inline_pdf' => [ 'inline_pdf', t("Allow embedded (inline) PDF files"), get_config('system','inline_pdf',0), '' ], + '$thumbnail_security' => [ 'thumbnail_security', t("Allow SVG thumbnails in file browser"), Config::Get('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.") ], + '$inline_pdf' => [ 'inline_pdf', t("Allow embedded (inline) PDF files"), Config::Get('system','inline_pdf',0), '' ], '$trusted_directory_servers' => (($is_dir) ? ['trusted_directory_servers', t('Additional trusted directory server URLs'), $trusted_directory_servers_str, t('Accept directory flags (spam, nsfw) from those servers. One per line like https://example.tld')] : ''), diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php index dae5e7c77..abc56d298 100644 --- a/Zotlabs/Module/Admin/Site.php +++ b/Zotlabs/Module/Admin/Site.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module\Admin; +use Zotlabs\Lib\Config; class Site { @@ -125,8 +126,8 @@ class Site { //logger( print_r( $this->msgbg, true) ); //logger( print_r( $this->joo, true) ); if ($this->error === 0) { - set_config('system', 'register_duty', $this->register_duty); - set_config('system', 'register_duty_jso', $this->joo); + Config::Set('system', 'register_duty', $this->register_duty); + Config::Set('system', 'register_duty_jso', $this->joo); } else { notice('ZAR0130E,' . t('Errors') . ': ' . $this->error . EOL . $this->msgfg . EOL); } @@ -134,87 +135,87 @@ class Site { } // <-hilmar] - set_config('system', 'feed_contacts', $feed_contacts); - set_config('system', 'delivery_interval', $delivery_interval); - set_config('system', 'delivery_batch_count', $delivery_batch_count); - set_config('system', 'poll_interval', $poll_interval); - set_config('system', 'maxloadavg', $maxloadavg); - set_config('system', 'frontpage', $frontpage); - set_config('system', 'sellpage', $site_sellpage); - set_config('system', 'workflow_channel_next', $first_page); - set_config('system', 'site_location', $site_location); - set_config('system', 'mirror_frontpage', $mirror_frontpage); - set_config('system', 'sitename', $sitename); - set_config('system', 'login_on_homepage', $login_on_homepage); - set_config('system', 'enable_context_help', $enable_context_help); - set_config('system', 'verify_email', $verify_email); - set_config('system', 'max_daily_registrations', $register_perday); - set_config('system', 'register_sameip', $register_sameip); - set_config('system', 'register_delay', $reg_delay); - set_config('system', 'register_expire', $reg_expire); - set_config('system', 'default_expire_days', $default_expire_days); - set_config('system', 'active_expire_days', $active_expire_days); - set_config('system', 'reply_address', $reply_address); - set_config('system', 'from_email', $from_email); - set_config('system', 'from_email_name' , $from_email_name); - set_config('system', 'imagick_convert_path' , $imagick_path); - set_config('system', 'default_permissions_role', $permissions_role); - set_config('system', 'pubstream_incl',$pub_incl); - set_config('system', 'pubstream_excl',$pub_excl); + Config::Set('system', 'feed_contacts', $feed_contacts); + Config::Set('system', 'delivery_interval', $delivery_interval); + Config::Set('system', 'delivery_batch_count', $delivery_batch_count); + Config::Set('system', 'poll_interval', $poll_interval); + Config::Set('system', 'maxloadavg', $maxloadavg); + Config::Set('system', 'frontpage', $frontpage); + Config::Set('system', 'sellpage', $site_sellpage); + Config::Set('system', 'workflow_channel_next', $first_page); + Config::Set('system', 'site_location', $site_location); + Config::Set('system', 'mirror_frontpage', $mirror_frontpage); + Config::Set('system', 'sitename', $sitename); + Config::Set('system', 'login_on_homepage', $login_on_homepage); + Config::Set('system', 'enable_context_help', $enable_context_help); + Config::Set('system', 'verify_email', $verify_email); + Config::Set('system', 'max_daily_registrations', $register_perday); + Config::Set('system', 'register_sameip', $register_sameip); + Config::Set('system', 'register_delay', $reg_delay); + Config::Set('system', 'register_expire', $reg_expire); + Config::Set('system', 'default_expire_days', $default_expire_days); + Config::Set('system', 'active_expire_days', $active_expire_days); + Config::Set('system', 'reply_address', $reply_address); + Config::Set('system', 'from_email', $from_email); + Config::Set('system', 'from_email_name' , $from_email_name); + Config::Set('system', 'imagick_convert_path' , $imagick_path); + Config::Set('system', 'default_permissions_role', $permissions_role); + Config::Set('system', 'pubstream_incl',$pub_incl); + Config::Set('system', 'pubstream_excl',$pub_excl); if($directory_server) - set_config('system','directory_server',$directory_server); + Config::Set('system','directory_server',$directory_server); if ($banner == '') { - del_config('system', 'banner'); + Config::Delete('system', 'banner'); } else { - set_config('system', 'banner', $banner); + Config::Set('system', 'banner', $banner); } if ($admininfo == ''){ - del_config('system', 'admininfo'); + Config::Delete('system', 'admininfo'); } else { require_once('include/text.php'); linkify_tags($admininfo, local_channel()); - set_config('system', 'admininfo', $admininfo); + Config::Set('system', 'admininfo', $admininfo); } - set_config('system','siteinfo',$siteinfo); - //set_config('system', 'language', $language); - set_config('system', 'theme', $theme); + Config::Set('system','siteinfo',$siteinfo); + //Config::Set('system', 'language', $language); + Config::Set('system', 'theme', $theme); // if ( $theme_mobile === '---' ) { - // del_config('system', 'mobile_theme'); + // Config::Delete('system', 'mobile_theme'); // } else { - // set_config('system', 'mobile_theme', $theme_mobile); + // Config::Set('system', 'mobile_theme', $theme_mobile); // } - // set_config('system','site_channel', $site_channel); - set_config('system','maximagesize', $maximagesize); - - set_config('system','register_policy', $register_policy); - set_config('system','register_wo_email', $register_wo_email); - set_config('system','minimum_age', $minimum_age); - set_config('system','auto_channel_create', $reg_autochannel); - set_config('system', 'invitation_only', $invitation_only); - set_config('system', 'invitation_also', $invitation_also); - set_config('system','access_policy', $access_policy); - set_config('system','account_abandon_days', $abandon_days); - set_config('system','register_text', $register_text); - set_config('system','allowed_sites', $allowed_sites); - set_config('system','publish_all', $force_publish); - set_config('system','disable_discover_tab', $disable_discover_tab); - set_config('system','site_firehose', $site_firehose); - set_config('system','open_pubstream', $open_pubstream); - //set_config('system','force_queue_threshold', $force_queue); - - set_config('system','no_community_page', $no_community_page); - set_config('system','no_utf', $no_utf); - - set_config('system','sse_enabled', $sse_enabled); - - set_config('system','verifyssl', $verifyssl); - set_config('system','proxyuser', $proxyuser); - set_config('system','proxy', $proxy); - set_config('system','curl_timeout', $timeout); + // Config::Set('system','site_channel', $site_channel); + Config::Set('system','maximagesize', $maximagesize); + + Config::Set('system','register_policy', $register_policy); + Config::Set('system','register_wo_email', $register_wo_email); + Config::Set('system','minimum_age', $minimum_age); + Config::Set('system','auto_channel_create', $reg_autochannel); + Config::Set('system', 'invitation_only', $invitation_only); + Config::Set('system', 'invitation_also', $invitation_also); + Config::Set('system','access_policy', $access_policy); + Config::Set('system','account_abandon_days', $abandon_days); + Config::Set('system','register_text', $register_text); + Config::Set('system','allowed_sites', $allowed_sites); + Config::Set('system','publish_all', $force_publish); + Config::Set('system','disable_discover_tab', $disable_discover_tab); + Config::Set('system','site_firehose', $site_firehose); + Config::Set('system','open_pubstream', $open_pubstream); + //Config::Set('system','force_queue_threshold', $force_queue); + + Config::Set('system','no_community_page', $no_community_page); + Config::Set('system','no_utf', $no_utf); + + Config::Set('system','sse_enabled', $sse_enabled); + + Config::Set('system','verifyssl', $verifyssl); + Config::Set('system','proxyuser', $proxyuser); + Config::Set('system','proxy', $proxy); + Config::Set('system','curl_timeout', $timeout); info( t('Site settings updated.') . EOL); goaway(z_root() . '/admin/site' ); @@ -263,7 +264,7 @@ class Site { } $dir_choices = null; - $dirmode = get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL); + $dirmode = Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL); $realm = get_directory_realm(); // directory server should not be set or settable unless we are a directory client @@ -291,14 +292,14 @@ class Site { /* Banner */ - $banner = get_config('system', 'banner'); + $banner = Config::Get('system', 'banner'); if($banner === false) - $banner = get_config('system','sitename'); + $banner = Config::Get('system','sitename'); $banner = htmlspecialchars($banner); /* Admin Info */ - $admininfo = get_config('system', 'admininfo'); + $admininfo = Config::Get('system', 'admininfo'); /* Register policy */ $register_choices = Array( @@ -306,8 +307,8 @@ class Site { REGISTER_APPROVE => t("Yes - with approval"), REGISTER_OPEN => t("Yes") ); - $this->register_duty = get_config('system', 'register_duty', '-:-'); - $register_perday = get_config('system','max_daily_registrations', 50); + $this->register_duty = Config::Get('system', 'register_duty', '-:-'); + $register_perday = Config::Get('system','max_daily_registrations', 50); /* Acess policy */ $access_choices = Array( @@ -317,7 +318,7 @@ class Site { ACCESS_TIERED => t("My site offers free accounts with optional paid upgrades") ); - $discover_tab = get_config('system','disable_discover_tab'); + $discover_tab = Config::Get('system','disable_discover_tab'); // $disable public streams by default if($discover_tab === false) @@ -326,7 +327,7 @@ class Site { $discover_tab = (1 - $discover_tab); $perm_roles = \Zotlabs\Access\PermissionRoles::channel_roles(); - $default_role = get_config('system', 'default_permissions_role', 'personal'); + $default_role = Config::Get('system', 'default_permissions_role', 'personal'); if (!in_array($default_role, array_keys($perm_roles))) { $default_role = 'personal'; @@ -334,8 +335,8 @@ class Site { $role = array('permissions_role' , t('Default permission role for new accounts'), $default_role, t('This role will be used for the first channel created after registration.'),$perm_roles); - $homelogin = get_config('system','login_on_homepage'); - $enable_context_help = get_config('system','enable_context_help'); + $homelogin = Config::Get('system','login_on_homepage'); + $enable_context_help = Config::Get('system','enable_context_help'); // for reuse reg_delay and reg_expire $reg_rabots = array( @@ -347,7 +348,7 @@ class Site { 'y' => t('Year(s)') ); $regdelay_n = $regdelay_u = false; - $regdelay = get_config('system','register_delay'); + $regdelay = Config::Get('system','register_delay'); if ($regdelay) list($regdelay_n, $regdelay_u) = array(substr($regdelay,0,-1),substr($regdelay,-1)); $reg_delay = replace_macros(get_markup_template('field_duration.qmc.tpl'), @@ -369,7 +370,7 @@ class Site { ) ); $regexpire_n = $regexpire_u = false; - $regexpire = get_config('system','register_expire'); + $regexpire = Config::Get('system','register_expire'); if ($regexpire) list($regexpire_n, $regexpire_u) = array(substr($regexpire,0,-1),substr($regexpire,-1)); $reg_expire = replace_macros(get_markup_template('field_duration.qmc.tpl'), @@ -406,38 +407,38 @@ class Site { '$baseurl' => z_root(), // name, label, value, help string, extra data... - '$sitename' => array('sitename', t("Site name"), htmlspecialchars(get_config('system','sitename'), ENT_QUOTES, 'UTF-8'),''), + '$sitename' => array('sitename', t("Site name"), htmlspecialchars(Config::Get('system','sitename'), ENT_QUOTES, 'UTF-8'),''), '$banner' => array('banner', t("Banner/Logo"), $banner, t('Unfiltered HTML/CSS/JS is allowed')), '$admininfo' => array('admininfo', t("Administrator Information"), $admininfo, t("Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here")), - '$siteinfo' => array('siteinfo', t('Site Information'), get_config('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")), - '$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - change theme settings"), $theme_choices), - // '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile), - // '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), get_config('system','site_channel'), t("Site Channel")), - '$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),get_config('system','feed_contacts'),t('(Heavy system resource usage)')), - '$maximagesize' => array('maximagesize', t("Maximum image size"), intval(get_config('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")), - '$minimum_age' => array('minimum_age', t("Minimum age"), (x(get_config('system','minimum_age'))?get_config('system','minimum_age'):13), t("Minimum age (in years) for who may register on this site.")), - '$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), get_config('system','access_policy'), t("This is displayed on the public server site list."), $access_choices), + '$siteinfo' => array('siteinfo', t('Site Information'), Config::Get('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")), + '$theme' => array('theme', t("System theme"), Config::Get('system','theme'), t("Default system theme - may be over-ridden by user profiles - change theme settings"), $theme_choices), + // '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), Config::Get('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile), + // '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), Config::Get('system','site_channel'), t("Site Channel")), + '$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),Config::Get('system','feed_contacts'),t('(Heavy system resource usage)')), + '$maximagesize' => array('maximagesize', t("Maximum image size"), intval(Config::Get('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")), + '$minimum_age' => array('minimum_age', t("Minimum age"), (x(Config::Get('system','minimum_age'))?Config::Get('system','minimum_age'):13), t("Minimum age (in years) for who may register on this site.")), + '$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), Config::Get('system','access_policy'), t("This is displayed on the public server site list."), $access_choices), // Register // [hilmar-> '$register_text' => [ 'register_text', t("Register text"), - htmlspecialchars(get_config('system','register_text'), ENT_QUOTES, 'UTF-8'), + htmlspecialchars(Config::Get('system','register_text'), ENT_QUOTES, 'UTF-8'), t("This text will be displayed prominently at the registration page") ], '$register_policy' => [ 'register_policy', t("Does this site allow new member registration?"), - get_config('system','register_policy'), + Config::Get('system','register_policy'), "", $register_choices, ], '$register_duty' => [ 'register_duty', t('Configure the registration open days/hours'), - get_config('system', 'register_duty', '-:-'), + Config::Get('system', 'register_duty', '-:-'), t('Empty or \'-:-\' value will keep registration open 24/7 (default)') . EOL . t('Weekdays and hours must be separated by colon \':\', From-To ranges with a dash `-` example: 1:800-1200') . EOL . t('Weekday:Hour pairs must be separated by space \' \' example: 1:900-1700 2:900-1700') . EOL . @@ -448,13 +449,13 @@ class Site { '$register_perday' => [ 'register_perday', t('Max account registrations per day'), - get_config('system', 'max_daily_registrations', 50), + Config::Get('system', 'max_daily_registrations', 50), t('Unlimited if zero or no value - default 50') ], '$register_sameip' => [ 'register_sameip', t('Max account registrations from same IP'), - get_config('system', 'register_sameip', 3), + Config::Get('system', 'register_sameip', 3), t('Unlimited if zero or no value - default 3') ], '$reg_delay' => $reg_delay, @@ -462,70 +463,70 @@ class Site { '$reg_autochannel' => [ 'auto_channel_create', t("Auto channel create"), - get_config('system','auto_channel_create', 1), + Config::Get('system','auto_channel_create', 1), t("If disabled the channel will be created in a separate step during the registration process") ], '$invitation_only' => [ 'invitation_only', t("Require invite code"), - get_config('system', 'invitation_only', 0) + Config::Get('system', 'invitation_only', 0) ], '$invitation_also' => [ 'invitation_also', t("Allow invite code"), - get_config('system', 'invitation_also', 0) + Config::Get('system', 'invitation_also', 0) ], '$verify_email' => [ 'verify_email', t("Require email address"), - get_config('system','verify_email'), + Config::Get('system','verify_email'), t("The provided email address will be verified (recommended)") ], '$abandon_days' => [ 'abandon_days', t('Abandon account after x days'), - get_config('system','account_abandon_days'), + Config::Get('system','account_abandon_days'), t('Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit.') ], // <-hilmar] '$role' => $role, - '$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), get_config('system','frontpage'), t("example: 'pubstream' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file.")), - '$mirror_frontpage' => array('mirror_frontpage', t("Preserve site homepage URL"), get_config('system','mirror_frontpage'), t('Present the site homepage in a frame at the original location instead of redirecting')), - '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")), - '$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory")), + '$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), Config::Get('system','frontpage'), t("example: 'pubstream' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file.")), + '$mirror_frontpage' => array('mirror_frontpage', t("Preserve site homepage URL"), Config::Get('system','mirror_frontpage'), t('Present the site homepage in a frame at the original location instead of redirecting')), + '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), Config::Get('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")), + '$force_publish' => array('publish_all', t("Force publish"), Config::Get('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory")), '$disable_discover_tab' => array('disable_discover_tab', t('Enable public stream'), $discover_tab, t('Enable the public stream. Warning: this content is unmoderated')), - '$site_firehose' => array('site_firehose', t('Site only public stream'), get_config('system','site_firehose'), t('Restrict the public stream to content originating at this site')), - '$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the public streams'), get_config('system','open_pubstream',1), t('Disable to require authentication before viewing')), - '$incl' => array('pub_incl',t('Only import Public stream posts with this text'), get_config('system','pubstream_incl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')), - '$excl' => array('pub_excl',t('Do not import Public stream posts with this text'), get_config('system','pubstream_excl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')), + '$site_firehose' => array('site_firehose', t('Site only public stream'), Config::Get('system','site_firehose'), t('Restrict the public stream to content originating at this site')), + '$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the public streams'), Config::Get('system','open_pubstream',1), t('Disable to require authentication before viewing')), + '$incl' => array('pub_incl',t('Only import Public stream posts with this text'), Config::Get('system','pubstream_incl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')), + '$excl' => array('pub_excl',t('Do not import Public stream posts with this text'), Config::Get('system','pubstream_excl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')), '$login_on_homepage' => array('login_on_homepage', t("Login on Homepage"),((intval($homelogin) || $homelogin === false) ? 1 : '') , t("Present a login box to visitors on the home page if no other content has been configured.")), '$enable_context_help' => array('enable_context_help', t("Enable context help"),((intval($enable_context_help) === 1 || $enable_context_help === false) ? 1 : 0) , t("Display contextual help for the current page when the help button is pressed.")), - '$reply_address' => [ 'reply_address', t('Reply-to email address for system generated email.'), get_config('system','reply_address','noreply@' . \App::get_hostname()),'' ], - '$from_email' => [ 'from_email', t('Sender (From) email address for system generated email.'), get_config('system','from_email','Administrator@' . \App::get_hostname()),'' ], - '$from_email_name' => [ 'from_email_name', t('Name of email sender for system generated email.'), get_config('system','from_email_name',\Zotlabs\Lib\System::get_site_name()),'' ], - - '$directory_server' => (($dir_choices) ? array('directory_server', t("Directory Server URL"), get_config('system','directory_server'), t("Default directory server"), $dir_choices) : null), - - '$sse_enabled' => array('sse_enabled', t('Enable SSE Notifications'), get_config('system', 'sse_enabled', 0), t('If disabled, traditional polling will be used. Warning: this setting might not be suited for shared hosting')), - - '$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""), - '$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""), - '$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")), - '$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(get_config('system','delivery_interval'))?get_config('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")), - '$delivery_batch_count' => array('delivery_batch_count', t('Deliveries per process'),(x(get_config('system','delivery_batch_count'))?get_config('system','delivery_batch_count'):1), t("Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5.")), - //'$force_queue' => array('force_queue', t("Queue Threshold"), get_config('system','force_queue_threshold',3000), t("Always defer immediate delivery if queue contains more than this number of entries.")), - '$poll_interval' => array('poll_interval', t("Poll interval"), (x(get_config('system','poll_interval'))?get_config('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")), - '$imagick_path' => array('imagick_path', t("Path to ImageMagick convert program"), get_config('system','imagick_convert_path'), t("If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert")), - '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")), - '$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(get_config('system','default_expire_days', 30)), t('0 for no expiration of imported content')), - '$active_expire_days' => array('active_expire_days', t('Do not expire any posts which have comments less than this many days ago'), intval(get_config('system','active_expire_days',7)), ''), - '$sellpage' => array('site_sellpage', t('Public servers: Optional landing (marketing) webpage for new registrants'), get_config('system','sellpage',''), sprintf( t('Create this page first. Default is %s/register'),z_root())), - '$first_page' => array('first_page', t('Page to display after creating a new channel'), get_config('system','workflow_channel_next','profiles'), t('Default: profiles')), - '$location' => array('site_location', t('Optional: site location'), get_config('system','site_location',''), t('Region or country')), + '$reply_address' => [ 'reply_address', t('Reply-to email address for system generated email.'), Config::Get('system','reply_address','noreply@' . \App::get_hostname()),'' ], + '$from_email' => [ 'from_email', t('Sender (From) email address for system generated email.'), Config::Get('system','from_email','Administrator@' . \App::get_hostname()),'' ], + '$from_email_name' => [ 'from_email_name', t('Name of email sender for system generated email.'), Config::Get('system','from_email_name',\Zotlabs\Lib\System::get_site_name()),'' ], + + '$directory_server' => (($dir_choices) ? array('directory_server', t("Directory Server URL"), Config::Get('system','directory_server'), t("Default directory server"), $dir_choices) : null), + + '$sse_enabled' => array('sse_enabled', t('Enable SSE Notifications'), Config::Get('system', 'sse_enabled', 0), t('If disabled, traditional polling will be used. Warning: this setting might not be suited for shared hosting')), + + '$proxyuser' => array('proxyuser', t("Proxy user"), Config::Get('system','proxyuser'), ""), + '$proxy' => array('proxy', t("Proxy URL"), Config::Get('system','proxy'), ""), + '$timeout' => array('timeout', t("Network timeout"), (x(Config::Get('system','curl_timeout'))?Config::Get('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")), + '$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(Config::Get('system','delivery_interval'))?Config::Get('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")), + '$delivery_batch_count' => array('delivery_batch_count', t('Deliveries per process'),(x(Config::Get('system','delivery_batch_count'))?Config::Get('system','delivery_batch_count'):1), t("Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5.")), + //'$force_queue' => array('force_queue', t("Queue Threshold"), Config::Get('system','force_queue_threshold',3000), t("Always defer immediate delivery if queue contains more than this number of entries.")), + '$poll_interval' => array('poll_interval', t("Poll interval"), (x(Config::Get('system','poll_interval'))?Config::Get('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")), + '$imagick_path' => array('imagick_path', t("Path to ImageMagick convert program"), Config::Get('system','imagick_convert_path'), t("If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert")), + '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(Config::Get('system','maxloadavg')) > 0)?Config::Get('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")), + '$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(Config::Get('system','default_expire_days', 30)), t('0 for no expiration of imported content')), + '$active_expire_days' => array('active_expire_days', t('Do not expire any posts which have comments less than this many days ago'), intval(Config::Get('system','active_expire_days',7)), ''), + '$sellpage' => array('site_sellpage', t('Public servers: Optional landing (marketing) webpage for new registrants'), Config::Get('system','sellpage',''), sprintf( t('Create this page first. Default is %s/register'),z_root())), + '$first_page' => array('first_page', t('Page to display after creating a new channel'), Config::Get('system','workflow_channel_next','profiles'), t('Default: profiles')), + '$location' => array('site_location', t('Optional: site location'), Config::Get('system','site_location',''), t('Region or country')), '$form_security_token' => get_form_security_token("admin_site"), )); } diff --git a/Zotlabs/Module/Admin/Themes.php b/Zotlabs/Module/Admin/Themes.php index 7f615afa8..6793f56b1 100644 --- a/Zotlabs/Module/Admin/Themes.php +++ b/Zotlabs/Module/Admin/Themes.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module\Admin; use \Michelf\MarkdownExtra; +use Zotlabs\Lib\Config; /** * @brief Admin area theme settings. @@ -37,7 +38,7 @@ class Themes { * @return string with parsed HTML */ function get(){ - $allowed_themes_str = get_config('system', 'allowed_themes'); + $allowed_themes_str = Config::Get('system', 'allowed_themes'); $allowed_themes_raw = explode(',', $allowed_themes_str); $allowed_themes = array(); if(count($allowed_themes_raw)) @@ -100,7 +101,7 @@ class Themes { info(sprintf('Theme %s disabled.', $theme)); } - set_config('system', 'allowed_themes', $s); + Config::Set('system', 'allowed_themes', $s); goaway(z_root() . '/admin/themes' ); } diff --git a/Zotlabs/Module/Api.php b/Zotlabs/Module/Api.php index 5b835ac51..8574ae1cd 100644 --- a/Zotlabs/Module/Api.php +++ b/Zotlabs/Module/Api.php @@ -1,6 +1,8 @@ callback_url != null) { diff --git a/Zotlabs/Module/Apps.php b/Zotlabs/Module/Apps.php index a955d572a..a8817111e 100644 --- a/Zotlabs/Module/Apps.php +++ b/Zotlabs/Module/Apps.php @@ -1,7 +1,7 @@ get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$cat' => $cat, '$title' => (($available) ? t('Available Apps') : t('Installed Apps')), '$apps' => $apps, diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index 4e6811a10..f3855b7e8 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -6,6 +6,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Activity; use Zotlabs\Lib\ActivityStreams; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; use Zotlabs\Lib\Libzot; use Zotlabs\Lib\PermissionDescription; @@ -176,7 +177,7 @@ class Channel extends Controller { function get($update = 0, $load = false) { - $noscript_content = get_config('system', 'noscript_content', '1'); + $noscript_content = Config::Get('system', 'noscript_content', '1'); $category = $datequery = $datequery2 = ''; diff --git a/Zotlabs/Module/Cover_photo.php b/Zotlabs/Module/Cover_photo.php index f4f9480c0..4b9fc4cce 100644 --- a/Zotlabs/Module/Cover_photo.php +++ b/Zotlabs/Module/Cover_photo.php @@ -1,6 +1,7 @@ $max_thumb || intval($r[0]['width']) > $max_thumb) { - $imagick_path = get_config('system','imagick_convert_path'); + $imagick_path = Config::Get('system','imagick_convert_path'); if($imagick_path && @file_exists($imagick_path) && intval($r[0]['os_storage'])) { $fname = dbunescbin($r[0]['content']); @@ -428,7 +429,7 @@ class Cover_photo extends \Zotlabs\Web\Controller { function cover_photo_crop_ui_head(&$a, $ph, $hash, $smallest){ - $max_length = get_config('system','max_image_length'); + $max_length = Config::Get('system','max_image_length'); if(! $max_length) $max_length = MAX_IMAGE_LENGTH; if($max_length > 0) diff --git a/Zotlabs/Module/Dircensor.php b/Zotlabs/Module/Dircensor.php index 4ce3a81c4..7caefa37c 100644 --- a/Zotlabs/Module/Dircensor.php +++ b/Zotlabs/Module/Dircensor.php @@ -3,9 +3,9 @@ namespace Zotlabs\Module; use App; -use Zotlabs\Web\Controller; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzotdir; - +use Zotlabs\Web\Controller; class Dircensor extends Controller { @@ -14,7 +14,7 @@ class Dircensor extends Controller { return; } - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); if(!in_array($dirmode, [DIRECTORY_MODE_PRIMARY, DIRECTORY_MODE_SECONDARY, DIRECTORY_MODE_STANDALONE])) { return; diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php index 13353c108..88e2dd59b 100644 --- a/Zotlabs/Module/Directory.php +++ b/Zotlabs/Module/Directory.php @@ -3,9 +3,9 @@ namespace Zotlabs\Module; use App; -use Zotlabs\Web\Controller; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzotdir; - +use Zotlabs\Web\Controller; require_once('include/socgraph.php'); require_once('include/bbcode.php'); @@ -73,7 +73,7 @@ class Directory extends Controller { return; } - if(get_config('system','block_public_directory',false) && (! get_observer_hash())) { + if(Config::Get('system','block_public_directory',false) && (! get_observer_hash())) { notice( t('Public access denied.') . EOL); return; } @@ -145,7 +145,7 @@ class Directory extends Controller { $tpl = get_markup_template('directory_header.tpl'); - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); $directory_admin = false; @@ -165,7 +165,7 @@ class Directory extends Controller { $url = $directory['url'] . '/dirsearch'; } - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); logger('mod_directory: URL = ' . $url, LOGGER_DEBUG); @@ -184,11 +184,11 @@ class Directory extends Controller { if($url) { - $numtags = get_config('system','directorytags'); + $numtags = Config::Get('system','directorytags'); $kw = ((intval($numtags) > 0) ? intval($numtags) : 50); - if(get_config('system','disable_directory_keywords')) + if(Config::Get('system','disable_directory_keywords')) $kw = 0; if (intval($safe_mode) === 0 && $directory_admin) @@ -213,7 +213,7 @@ class Directory extends Controller { if(! is_null($pubforums)) $query .= '&pubforums=' . intval($pubforums); - $directory_sort_order = get_config('system','directory_sort_order'); + $directory_sort_order = Config::Get('system','directory_sort_order'); if(! $directory_sort_order) $directory_sort_order = 'date'; diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php index a5c3f41c0..a90c2104a 100644 --- a/Zotlabs/Module/Dirsearch.php +++ b/Zotlabs/Module/Dirsearch.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; use App; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; class Dirsearch extends Controller { @@ -17,7 +18,7 @@ class Dirsearch extends Controller { // logger('request: ' . print_r($_REQUEST,true)); - $dirmode = intval(get_config('system','directory_mode')); + $dirmode = intval(Config::Get('system','directory_mode')); if($dirmode == DIRECTORY_MODE_NORMAL) { $ret['message'] = t('This site is not a directory server'); @@ -26,7 +27,7 @@ class Dirsearch extends Controller { $access_token = $_REQUEST['t'] ?? ''; - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); if($token && $access_token != $token) { $ret['message'] = t('This directory server requires an access token'); json_return_and_die($ret); @@ -79,7 +80,7 @@ class Dirsearch extends Controller { $forums = ((array_key_exists('pubforums',$_REQUEST)) ? intval($_REQUEST['pubforums']) : 0); - if(get_config('system','disable_directory_keywords')) + if(Config::Get('system','disable_directory_keywords')) $kw = 0; diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php index f08aedc95..451ddeb1f 100644 --- a/Zotlabs/Module/Display.php +++ b/Zotlabs/Module/Display.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; use App; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; class Display extends Controller { @@ -12,7 +13,7 @@ class Display extends Controller { function get($update = 0, $load = false) { - $noscript_content = (get_config('system', 'noscript_content', '1') && (! $update)); + $noscript_content = (Config::Get('system', 'noscript_content', '1') && (! $update)); $module_format = 'html'; diff --git a/Zotlabs/Module/Email_validation.php b/Zotlabs/Module/Email_validation.php index c1ba9a01a..c5799560f 100644 --- a/Zotlabs/Module/Email_validation.php +++ b/Zotlabs/Module/Email_validation.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; +use Zotlabs\Lib\Config; class Email_validation extends \Zotlabs\Web\Controller { @@ -12,8 +13,8 @@ class Email_validation extends \Zotlabs\Web\Controller { // This will redirect internally on success unless the channel is auto_created if(account_approve(trim(basename($_POST['token'])))) { $success = true; - if(get_config('system','auto_channel_create')) { - $next_page = get_config('system', 'workflow_channel_next', 'profiles'); + if(Config::Get('system','auto_channel_create')) { + $next_page = Config::Get('system', 'workflow_channel_next', 'profiles'); } if($next_page) { goaway(z_root() . '/' . $next_page); @@ -40,9 +41,9 @@ class Email_validation extends \Zotlabs\Web\Controller { '$submit' => t('Submit'), '$token' => [ 'token', t('Validation token'),'','' ], ]); - + return $o; } -} \ No newline at end of file +} diff --git a/Zotlabs/Module/Fhublocs.php b/Zotlabs/Module/Fhublocs.php index a4d335a94..6cfee94f0 100644 --- a/Zotlabs/Module/Fhublocs.php +++ b/Zotlabs/Module/Fhublocs.php @@ -1,6 +1,7 @@ t('View your personal stream (this may be empty until you add some connections)'), ]; - - $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); - $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + + $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false); + $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true); if($site_firehose || $net_firehose) { $options['pubstream'] = t('View the public stream. Warning: this content is not moderated'); @@ -64,4 +65,4 @@ class Go extends \Zotlabs\Web\Controller { } -} \ No newline at end of file +} diff --git a/Zotlabs/Module/Group.php b/Zotlabs/Module/Group.php index 1dce08757..63fdee7f0 100644 --- a/Zotlabs/Module/Group.php +++ b/Zotlabs/Module/Group.php @@ -2,10 +2,11 @@ namespace Zotlabs\Module; use App; -use Zotlabs\Web\Controller; +use Zotlabs\Lib\AccessList; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; -use Zotlabs\Lib\AccessList; +use Zotlabs\Web\Controller; class Group extends Controller { @@ -123,7 +124,7 @@ class Group extends Controller { // Switch to text mode interface if we have more than 'n' contacts or group members $switchtotext = get_pconfig(local_channel(),'system','groupedit_image_limit'); if($switchtotext === false) - $switchtotext = get_config('system','groupedit_image_limit'); + $switchtotext = Config::Get('system','groupedit_image_limit'); if($switchtotext === false) $switchtotext = 400; diff --git a/Zotlabs/Module/Home.php b/Zotlabs/Module/Home.php index 8d78960cc..691ca1af9 100644 --- a/Zotlabs/Module/Home.php +++ b/Zotlabs/Module/Home.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; use App; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Web\Controller; use Zotlabs\Web\HTTPSig; @@ -20,7 +21,7 @@ class Home extends Controller { call_hooks('home_init', $ret); if (Libzot::is_zot_request()) { - $key = get_config('system', 'prvkey'); + $key = Config::Get('system', 'prvkey'); $ret = json_encode(Libzot::site_info()); $headers = ['Content-Type' => 'application/x-zot+json', 'Digest' => HTTPSig::generate_digest_header($ret)]; @@ -38,7 +39,7 @@ class Home extends Controller { if (local_channel() && $channel && $channel['xchan_url'] && !$splash) { $dest = $ret['startpage'] ?? ''; if (!$dest) - $dest = get_config('system', 'startpage'); + $dest = Config::Get('system', 'startpage'); if (!$dest) $dest = z_root() . '/hq'; @@ -78,7 +79,7 @@ class Home extends Controller { if ($o) return $o; - $frontpage = get_config('system', 'frontpage'); + $frontpage = Config::Get('system', 'frontpage'); if ($frontpage) { if (strpos($frontpage, 'include:') !== false) { $file = trim(str_replace('include:', '', $frontpage)); @@ -91,7 +92,7 @@ class Home extends Controller { } if (strpos($frontpage, 'http') !== 0) $frontpage = z_root() . '/' . $frontpage; - if (intval(get_config('system', 'mirror_frontpage'))) { + if (intval(Config::Get('system', 'mirror_frontpage'))) { $o = '' . t('$Projectname') . ''; echo $o; killme(); @@ -99,11 +100,11 @@ class Home extends Controller { goaway($frontpage); } - $sitename = get_config('system', 'sitename'); + $sitename = Config::Get('system', 'sitename'); if ($sitename) $o .= '

' . sprintf(t('Welcome to %s'), $sitename) . '

'; - $loginbox = get_config('system', 'login_on_homepage'); + $loginbox = Config::Get('system', 'login_on_homepage'); if (intval($loginbox) || $loginbox === false) $o .= login(true); diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php index c8a9ac5ed..e8968c6bd 100644 --- a/Zotlabs/Module/Import.php +++ b/Zotlabs/Module/Import.php @@ -9,6 +9,7 @@ require_once('include/perm_upgrade.php'); use App; use URLify; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; use Zotlabs\Web\Controller; @@ -168,7 +169,7 @@ class Import extends Controller { if ($newname) { $x = false; - if (get_config('system', 'unicode_usernames')) { + if (Config::Get('system', 'unicode_usernames')) { $x = punify(mb_strtolower($newname)); } @@ -227,10 +228,10 @@ class Import extends Controller { 'hubloc_url_sig' => Libzot::sign(z_root(), $channel['channel_prvkey']), 'hubloc_host' => App::get_hostname(), 'hubloc_callback' => z_root() . '/zot', - 'hubloc_sitekey' => get_config('system', 'pubkey'), + 'hubloc_sitekey' => Config::Get('system', 'pubkey'), 'hubloc_updated' => datetime_convert(), 'hubloc_id_url' => channel_url($channel), - 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(), get_config('system', 'pubkey')) + 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(), Config::Get('system', 'pubkey')) ] ); @@ -536,7 +537,7 @@ class Import extends Controller { $since = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), '0001-01-01 00:00'); $until = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), 'now + 1 day'); - //$poll_interval = get_config('system', 'poll_interval', 3); + //$poll_interval = Config::Get('system', 'poll_interval', 3); $page = 0; Master::Summon(['Content_importer', sprintf('%d', $page), $since, $until, $channel['channel_address'], urlencode($hz_server)]); diff --git a/Zotlabs/Module/Invite.php b/Zotlabs/Module/Invite.php index bb552e4c7..3e1e98f89 100644 --- a/Zotlabs/Module/Invite.php +++ b/Zotlabs/Module/Invite.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; /** @@ -76,7 +77,7 @@ class Invite extends Controller { $feedbk = ''; $isajax = is_ajax(); $eol = $isajax ? "\n" : EOL; - $policy = intval(get_config('system','register_policy')); + $policy = intval(Config::Get('system','register_policy')); if ($policy == REGISTER_CLOSED) { notice( 'ZAI0212E,' . t('Register is closed') . ')' . EOL); return; @@ -85,13 +86,13 @@ class Invite extends Controller { $flags = 0; elseif ($policy == REGISTER_APPROVE) $flags = ACCOUNT_PENDING; - $flags = ($flags | intval(get_config('system','verify_email'))); + $flags = ($flags | intval(Config::Get('system','verify_email'))); // how many max recipients in one mail submit - $maxto = get_config('system','invitation_max_recipients', 'na'); + $maxto = Config::Get('system','invitation_max_recipients', 'na'); If (is_site_admin()) { // set, if admin is operator, default to 12 - if ($maxto === 'na') set_config('system','invitation_max_recipients', 12); + if ($maxto === 'na') Config::Set('system','invitation_max_recipients', 12); } $maxto = ($maxto === 'na') ? 12 : $maxto; @@ -323,7 +324,7 @@ class Invite extends Controller { return Apps::app_render($papp, 'module'); } - if (! (get_config('system','invitation_also') || get_config('system','invitation_only')) ) { + if (! (Config::Get('system','invitation_also') || Config::Get('system','invitation_only')) ) { $o = 'ZAI0103E,' . t('Invites not proposed by configuration') . '. '; $o .= t('Contact the site admin'); return $o; @@ -331,7 +332,7 @@ class Invite extends Controller { // invitation_by_user may still not configured, the default 'na' will tell this // if configured, 0 disables invitations by users, other numbers are how many invites a user may propagate - $invuser = get_config('system','invitation_by_user', 'na'); + $invuser = Config::Get('system','invitation_by_user', 'na'); // if the mortal user drives the invitation If (! is_site_admin()) { @@ -352,7 +353,7 @@ class Invite extends Controller { } else { // general deity admin invite limit infinite (theoretical) - if ($invuser === 'na') set_config('system','invitation_by_user', 4); + if ($invuser === 'na') Config::Set('system','invitation_by_user', 4); // for display only $invuser = '∞'; } @@ -385,11 +386,11 @@ class Invite extends Controller { $wehave = ($r ? $r[0]['ct'] : 0); // invites max for all users except admins - $invmaxau = intval(get_config('system','invitations_max_users')); + $invmaxau = intval(Config::Get('system','invitations_max_users')); if(! $invmaxau) { $invmaxau = 50; if (is_site_admin()) { - set_config('system','invitations_max_users',intval($invmaxau)); + Config::Set('system','invitations_max_users',intval($invmaxau)); } } @@ -519,7 +520,7 @@ class Invite extends Controller { $ts = replace_macros(get_intltext_template('invite.'.$t1.'.subject.tpl'), array( '$projectname' => t('$Projectname'), - '$invite_loc' => get_config('system','sitename') + '$invite_loc' => Config::Get('system','sitename') ) ); @@ -569,7 +570,7 @@ class Invite extends Controller { function calcdue($duri=false) { // expirations, duration interval if ($duri===false) - $duri = get_config('system','register_expire', '2d'); + $duri = Config::Get('system','register_expire', '2d'); if ( preg_match( '/^[0-9]{1,2}[ihdwmy]{1}$/', $duri ) ) { $durq = substr($duri, -1); $durn = substr($duri, 0, -1); diff --git a/Zotlabs/Module/Linkinfo.php b/Zotlabs/Module/Linkinfo.php index 081966dba..8eb9a8c6d 100644 --- a/Zotlabs/Module/Linkinfo.php +++ b/Zotlabs/Module/Linkinfo.php @@ -1,6 +1,7 @@ get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$username' => sprintf( t('Site Member (%s)'), $email), '$email' => $email, '$reset_link' => z_root() . '/lostpass?verify=' . $hash )); - $subject = email_header_encode(sprintf( t('Password reset requested at %s'),get_config('system','sitename')), 'UTF-8'); + $subject = email_header_encode(sprintf( t('Password reset requested at %s'),Config::Get('system','sitename')), 'UTF-8'); $res = z_mail( [ 'toEmail' => $email, - 'messageSubject' => sprintf( t('Password reset requested at %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Password reset requested at %s'), Config::Get('system','sitename')), 'textVersion' => $message, ] ); @@ -114,7 +114,7 @@ class Lostpass extends \Zotlabs\Web\Controller { $res = z_mail( [ 'toEmail' => $email, - 'messageSubject' => sprintf( t('Your password has changed at %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Your password has changed at %s'), Config::Get('system','sitename')), 'textVersion' => $message, ] ); diff --git a/Zotlabs/Module/New_channel.php b/Zotlabs/Module/New_channel.php index 24dbe2944..48fcd9e10 100644 --- a/Zotlabs/Module/New_channel.php +++ b/Zotlabs/Module/New_channel.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; use URLify; +use Zotlabs\Lib\Config; require_once('include/channel.php'); require_once('include/permissions.php'); @@ -20,7 +21,7 @@ class New_channel extends \Zotlabs\Web\Controller { $x = false; - if(get_config('system','unicode_usernames')) { + if(Config::Get('system','unicode_usernames')) { $x = punify(mb_strtolower($n)); } @@ -55,7 +56,7 @@ class New_channel extends \Zotlabs\Web\Controller { $x = false; - if(get_config('system','unicode_usernames')) { + if(Config::Get('system','unicode_usernames')) { $x = punify(mb_strtolower($n)); } @@ -117,7 +118,7 @@ class New_channel extends \Zotlabs\Web\Controller { change_channel($result['channel']['channel_id']); - $next_page = get_config('system', 'workflow_channel_next', 'profiles'); + $next_page = Config::Get('system', 'workflow_channel_next', 'profiles'); goaway(z_root() . '/' . $next_page); } @@ -138,7 +139,7 @@ class New_channel extends \Zotlabs\Web\Controller { intval($aid) ); if($r && (! intval($r[0]['total']))) { - $default_role = get_config('system','default_permissions_role','personal'); + $default_role = Config::Get('system','default_permissions_role','personal'); } $limit = account_service_class_fetch(get_account_id(),'total_identities'); @@ -163,7 +164,7 @@ class New_channel extends \Zotlabs\Web\Controller { $nick_help = ''; $nick_help .= t('This will be used to create a unique network address (like an email address).'); - if(! get_config('system','unicode_usernames')) { + if(! Config::Get('system','unicode_usernames')) { $nick_help .= ' ' . t('Allowed characters are a-z 0-9, - and _'); } $nick_help .= ''; diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php index dc47d213b..8c9d4d90c 100644 --- a/Zotlabs/Module/Profile_photo.php +++ b/Zotlabs/Module/Profile_photo.php @@ -4,6 +4,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; use Zotlabs\Web\Controller; @@ -599,7 +600,7 @@ class Profile_photo extends Controller { function profile_photo_crop_ui_head($ph, $hash, $smallest) { - $max_length = get_config('system', 'max_image_length'); + $max_length = Config::Get('system', 'max_image_length'); if (!$max_length) { $max_length = MAX_IMAGE_LENGTH; diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php index 15252d6e6..58e5857ed 100644 --- a/Zotlabs/Module/Profiles.php +++ b/Zotlabs/Module/Profiles.php @@ -1,6 +1,7 @@ '; } else { @@ -716,7 +717,7 @@ class Profiles extends \Zotlabs\Web\Controller { //$vctmp = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); //$vcard = (($vctmp) ? get_vcard_array($vctmp,$r[0]['id']) : [] ); - $f = get_config('system','birthday_input_format'); + $f = Config::Get('system','birthday_input_format'); if(! $f) $f = 'ymd'; diff --git a/Zotlabs/Module/Profperm.php b/Zotlabs/Module/Profperm.php index 900e2f981..842197415 100644 --- a/Zotlabs/Module/Profperm.php +++ b/Zotlabs/Module/Profperm.php @@ -1,6 +1,7 @@ 2) && intval(argv(1)) && intval(argv(2))) { $r = q("SELECT abook_id FROM abook WHERE abook_id = %d and abook_channel = %d limit 1", intval(argv(2)), @@ -52,8 +53,8 @@ class Profperm extends \Zotlabs\Web\Controller { if($r) $change = intval(argv(2)); } - - + + if((argc() > 1) && (intval(argv(1)))) { $r = q("SELECT * FROM profile WHERE id = %d AND uid = %d AND is_default = 0 LIMIT 1", intval(argv(1)), @@ -63,21 +64,21 @@ class Profperm extends \Zotlabs\Web\Controller { notice( t('Invalid profile identifier.') . EOL ); return; } - + $profile = $r[0]; - + $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'", intval(local_channel()), dbesc($profile['profile_guid']) ); - + $ingroup = array(); if($r) foreach($r as $member) $ingroup[] = $member['abook_id']; - + $members = $r; - + if($change) { if(in_array($change,$ingroup)) { q("UPDATE abook SET abook_profile = '' WHERE abook_id = %d AND abook_channel = %d", @@ -91,42 +92,42 @@ class Profperm extends \Zotlabs\Web\Controller { intval($change), intval(local_channel()) ); - + } - - $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash + + $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'", intval(local_channel()), dbesc($profile['profile_guid']) ); - + $members = $r; - + $ingroup = array(); if(count($r)) foreach($r as $member) $ingroup[] = $member['abook_id']; } - + $o .= '

' . t('Profile Visibility Editor') . '

'; - + $o .= '

' . t('Profile') . ' \'' . $profile['profile_name'] . '\'

'; - + $o .= '
' . t('Click on a contact to add or remove.') . '
'; - + } - + $o .= '
'; if($change) $o = ''; - + $o .= '
'; $o .= '

' . t('Visible To') . '

'; $o .= '
'; $o .= '
'; - + $textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false); - + foreach($members as $member) { if($member['xchan_url']) { $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['abook_id'] . '); return false;'; @@ -135,14 +136,14 @@ class Profperm extends \Zotlabs\Web\Controller { } $o .= '
'; $o .= '
'; - + $o .= '
'; $o .= '

' . t("All Connections") . '

'; $o .= '
'; $o .= '
'; - + $r = abook_connections(local_channel()); - + if($r) { $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false); foreach($r as $member) { @@ -152,17 +153,17 @@ class Profperm extends \Zotlabs\Web\Controller { } } } - + $o .= '
'; - + if($change) { echo $o; killme(); } $o .= '
'; return $o; - + } - - + + } diff --git a/Zotlabs/Module/Pubsites.php b/Zotlabs/Module/Pubsites.php index 032406be4..cbaa66042 100644 --- a/Zotlabs/Module/Pubsites.php +++ b/Zotlabs/Module/Pubsites.php @@ -1,12 +1,13 @@ '; diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php index c40751fdc..d60eb88df 100644 --- a/Zotlabs/Module/Pubstream.php +++ b/Zotlabs/Module/Pubstream.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; require_once('include/conversation.php'); require_once('include/acl_selectors.php'); @@ -26,19 +27,19 @@ class Pubstream extends \Zotlabs\Web\Controller { return login(); } - if(! intval(get_config('system','open_pubstream',1))) { + if(! intval(Config::Get('system','open_pubstream',1))) { if(! get_observer_hash()) { return login(); } } - $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true); if(!$net_firehose) { return ''; } - $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); + $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false); $mid = $_REQUEST['mid'] ?? ''; $identifier = 'uuid'; @@ -107,7 +108,7 @@ class Pubstream extends \Zotlabs\Web\Controller { nav_set_selected(t('Public Stream')); - $maxheight = get_config('system','home_divmore_height'); + $maxheight = Config::Get('system','home_divmore_height'); if(! $maxheight) $maxheight = 400; @@ -172,7 +173,7 @@ class Pubstream extends \Zotlabs\Web\Controller { $site_firehose_sql = " and owner_xchan in (select channel_hash from channel where channel_system = 0 and channel_removed = 0) "; } - if(get_config('system','public_list_mode')) + if(Config::Get('system','public_list_mode')) $page_mode = 'list'; else $page_mode = 'client'; @@ -196,7 +197,7 @@ class Pubstream extends \Zotlabs\Web\Controller { if($update) { - $ordering = get_config('system', 'pubstream_ordering', 'commented'); + $ordering = Config::Get('system', 'pubstream_ordering', 'commented'); if($load) { if($mid) { diff --git a/Zotlabs/Module/Regate.php b/Zotlabs/Module/Regate.php index ac6273951..8158416bd 100644 --- a/Zotlabs/Module/Regate.php +++ b/Zotlabs/Module/Regate.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Connect; use Zotlabs\Daemon\Master; @@ -58,7 +59,7 @@ class Regate extends \Zotlabs\Web\Controller { // normally, that should never happen here // log suitable for fail2ban also $logmsg = 'ZAR1230S Unexpected registration verification request for ' - . get_config('system','sitename') . ' arrived from § ' . $ip . ' §'; + . Config::Get('system','sitename') . ' arrived from § ' . $ip . ' §'; zar_log($logmsg); goaway(z_root()); } @@ -118,7 +119,7 @@ class Regate extends \Zotlabs\Web\Controller { $isa = ($isa && ($isa['account_roles'] && ACCOUNT_ROLE_ADMIN)); // approve contra invite by admin - if ($isa && get_config('system','register_policy') == REGISTER_APPROVE) { + if ($isa && Config::Get('system','register_policy') == REGISTER_APPROVE) { $flags &= $flags ^ ACCOUNT_PENDING; } @@ -159,7 +160,7 @@ class Regate extends \Zotlabs\Web\Controller { $nextpage = 'new_channel'; - $auto_create = get_config('system', 'auto_channel_create', 1); + $auto_create = Config::Get('system', 'auto_channel_create', 1); if($auto_create) { @@ -179,7 +180,7 @@ class Regate extends \Zotlabs\Web\Controller { if($reonar['chan.did1']) set_aconfig($cra['account']['account_id'], 'register', 'channel_address', $reonar['chan.did1']); - $permissions_role = get_config('system','default_permissions_role'); + $permissions_role = Config::Get('system','default_permissions_role'); if($permissions_role) set_aconfig($cra['account']['account_id'], 'register', 'permissions_role', $permissions_role); diff --git a/Zotlabs/Module/Regdir.php b/Zotlabs/Module/Regdir.php index e49f89231..70e021715 100644 --- a/Zotlabs/Module/Regdir.php +++ b/Zotlabs/Module/Regdir.php @@ -1,6 +1,7 @@ false); - + $url = $_REQUEST['url']; $access_token = $_REQUEST['t']; $valid = 0; - + // we probably don't need the realm as we will find out in the probe. // What we may want to do is throw an error if you're trying to register in a different realm // so this configuration issue can be discovered. - + $realm = $_REQUEST['realm']; if(! $realm) $realm = DIRECTORY_REALM; - + if($realm === DIRECTORY_REALM) { $valid = 1; } else { - $token = get_config('system','realm_token'); + $token = Config::Get('system','realm_token'); if($token && $access_token != $token) { $result['message'] = 'This realm requires an access token'; return; } $valid = 1; } - - $dirmode = intval(get_config('system','directory_mode')); - + + $dirmode = intval(Config::Get('system','directory_mode')); + if ($dirmode == DIRECTORY_MODE_NORMAL) { $ret['message'] = t('This site is not a directory server'); json_return_and_die($ret); } - + $m = null; if ($url) { $m = parse_url($url); - + if ((! $m) || (! z_dns_check($m['host']))) { $result['message'] = 'unparseable url'; json_return_and_die($result); } - + $j = Zotfinger::exec($url); if($j) { $result['success'] = true; @@ -79,7 +80,7 @@ class Regdir extends Controller { } else { - + if ($dirmode == DIRECTORY_MODE_STANDALONE) { $r = array(array('site_url' => z_root())); } else { @@ -93,7 +94,7 @@ class Regdir extends Controller { $result['directories'] = array(); foreach ($r as $rr) $result['directories'][] = $rr['site_url']; - + json_return_and_die($result); } } diff --git a/Zotlabs/Module/Register.php b/Zotlabs/Module/Register.php index 5a50b4de0..428b68178 100644 --- a/Zotlabs/Module/Register.php +++ b/Zotlabs/Module/Register.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; use App; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; require_once('include/security.php'); @@ -63,7 +64,7 @@ class Register extends Controller { $act = q("SELECT COUNT(*) AS act FROM account")[0]['act']; $is247 = false; $ip = $_SERVER['REMOTE_ADDR']; - $sameip = intval(get_config('system','register_sameip', 3)); + $sameip = intval(Config::Get('system','register_sameip', 3)); $arr = $_POST; $invite_code = ((x($arr,'invite_code')) ? notags(trim($arr['invite_code'])) : ''); $name = ''; @@ -73,10 +74,10 @@ class Register extends Controller { $password2 = ((x($arr,'password2')) ? trim($arr['password2']) : ''); $register_msg = ((x($arr,'register_msg')) ? notags(trim($arr['register_msg'])) : ''); $reonar = []; - $auto_create = get_config('system','auto_channel_create', 1); + $auto_create = Config::Get('system','auto_channel_create', 1); $duty = zar_register_dutystate(); - if (!get_config('system', 'register_duty_jso')) { + if (!Config::Get('system', 'register_duty_jso')) { // if not yet configured default to true $duty = array( 'isduty' => true, 'atfrm' => '', 'nowfmt' => ''); } @@ -107,7 +108,7 @@ class Register extends Controller { } } - $email_verify = get_config('system', 'verify_email'); + $email_verify = Config::Get('system', 'verify_email'); if ($email_verify && !$email) { notice(t('Email address required') . EOL); return; @@ -180,9 +181,9 @@ class Register extends Controller { return; } - $policy = get_config('system','register_policy'); - $invonly = get_config('system','invitation_only'); - $invalso = get_config('system','invitation_also'); + $policy = Config::Get('system','register_policy'); + $invonly = Config::Get('system','invitation_only'); + $invalso = Config::Get('system','invitation_also'); switch($policy) { @@ -306,11 +307,11 @@ class Register extends Controller { if($policy == REGISTER_OPEN || $policy == REGISTER_APPROVE ) { - $cfgdelay = get_config('system', 'register_delay', '0i'); + $cfgdelay = Config::Get('system', 'register_delay', '0i'); $reg_delayed = calculate_adue( $cfgdelay ); $regdelay = (($reg_delayed) ? datetime_convert(date_default_timezone_get(), 'UTC', $reg_delayed['due']) : $now); - $cfgexpire = get_config('system', 'register_expire', '3d'); + $cfgexpire = Config::Get('system', 'register_expire', '3d'); $reg_expires = calculate_adue( $cfgexpire ); $regexpire = (($reg_expires) ? datetime_convert(date_default_timezone_get(), 'UTC', $reg_expires['due']) : datetime_convert('UTC', 'UTC', 'now + 99 years')); @@ -323,12 +324,12 @@ class Register extends Controller { $didx = 'e'; push_lang(($reg['lang']) ? $reg['lang'] : App::$language); - $reonar['from'] = get_config('system', 'from_email'); + $reonar['from'] = Config::Get('system', 'from_email'); $reonar['to'] = $email; - $reonar['subject'] = sprintf( t('Registration confirmation for %s'), get_config('system','sitename')); + $reonar['subject'] = sprintf( t('Registration confirmation for %s'), Config::Get('system','sitename')); $reonar['txttemplate']= replace_macros(get_intltext_template('register_verify_member.tpl'), [ - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $email, '$timeframe' => [$regdelay, $regexpire], @@ -430,8 +431,8 @@ class Register extends Controller { $registration_is = ''; $other_sites = ''; - if(intval(get_config('system','register_policy')) === REGISTER_CLOSED) { - if(intval(get_config('system','directory_mode')) === DIRECTORY_MODE_STANDALONE) { + if(intval(Config::Get('system','register_policy')) === REGISTER_CLOSED) { + if(intval(Config::Get('system','directory_mode')) === DIRECTORY_MODE_STANDALONE) { notice(t('Registration on this hub is disabled.') . EOL); return; } @@ -440,24 +441,24 @@ class Register extends Controller { return $mod->get(); } - if(intval(get_config('system','register_policy')) == REGISTER_APPROVE) { + if(intval(Config::Get('system','register_policy')) == REGISTER_APPROVE) { $registration_is = t('Registration on this hub is by approval only.'); $other_sites = '' . t('Register at another affiliated hub in case when prefered') . ''; } $duty = zar_register_dutystate(); - if (!get_config('system', 'register_duty_jso')) { + if (!Config::Get('system', 'register_duty_jso')) { // if not yet configured default to true $duty = array( 'isduty' => true, 'atfrm' => '', 'nowfmt' => ''); } $invitations = false; - if(intval(get_config('system','invitation_only'))) { + if(intval(Config::Get('system','invitation_only'))) { $invitations = true; $registration_is = t('Registration on this hub is by invitation only.'); $other_sites = '' . t('Register at another affiliated hub') . ''; - } elseif (intval(get_config('system','invitation_also'))) { + } elseif (intval(Config::Get('system','invitation_also'))) { $invitations = true; } @@ -466,7 +467,7 @@ class Register extends Controller { $duty['atform'] = 'disabled'; // Configurable terms of service link - $tosurl = get_config('system','tos_url'); + $tosurl = Config::Get('system','tos_url'); if(! $tosurl) $tosurl = z_root() . '/help/TermsOfService'; @@ -475,21 +476,21 @@ class Register extends Controller { // Configurable whether to restrict age or not - default is based on international legal requirements // This can be relaxed if you are on a restricted server that does not share with public servers - if(get_config('system','no_age_restriction')) { + if(Config::Get('system','no_age_restriction')) { $label_tos = sprintf( t('I accept the %s for this website'), $toslink); } else { - $age = get_config('system','minimum_age'); + $age = Config::Get('system','minimum_age'); if(!$age) { $age = 13; } $label_tos = sprintf( t('I am over %s years of age and accept the %s for this website'), $age, $toslink); } - $enable_tos = 1 - intval(get_config('system','no_termsofservice')); + $enable_tos = 1 - intval(Config::Get('system','no_termsofservice')); - $auto_create = get_config('system', 'auto_channel_create', 1); - $email_verify = get_config('system','verify_email'); + $auto_create = Config::Get('system', 'auto_channel_create', 1); + $email_verify = Config::Get('system','verify_email'); $emailval = ((x($_REQUEST,'email')) ? strip_tags(trim($_REQUEST['email'])) : ""); $email = ['email', @@ -506,7 +507,7 @@ class Register extends Controller { $invite_code = array('invite_code', t('Please enter your invitation code'), ((x($_REQUEST,'invite_code')) ? strip_tags(trim($_REQUEST['invite_code'])) : "")); $name = array('name', t('Your name'), ((x($_REQUEST,'name')) ? $_REQUEST['name'] : ''), t('Real name is preferred'), '', '', $duty['atform']); - $nickhub = '@' . str_replace(array('http://','https://','/'), '', get_config('system','baseurl')); + $nickhub = '@' . str_replace(array('http://','https://','/'), '', Config::Get('system','baseurl')); $nickname = array('nickname', t('Choose a short nickname'), ((x($_REQUEST,'nickname')) ? $_REQUEST['nickname'] : ''), t('Your nickname will be used to create an easy to remember channel address'), '', '', $duty['atform']); $tos = array('tos', $label_tos, ((x($_REQUEST,'tos')) ? $_REQUEST['tos'] : ''), '', [t('No'),t('Yes')], $duty['atform']); @@ -520,7 +521,7 @@ class Register extends Controller { '$title' => t('Registration'), '$reg_is' => $registration_is, '$register_msg' => $register_msg, - '$registertext' => bbcode(get_config('system','register_text')), + '$registertext' => bbcode(Config::Get('system','register_text')), '$other_sites' => $other_sites, '$msg' => $opal['msg'], '$invitations' => $invitations, @@ -551,7 +552,7 @@ class Register extends Controller { // check against register, account $rear = array( 'is' => false, 'rn' => 0, 'an' => 0, 'msg' => '' ); - $max_dailies = intval(get_config('system', 'max_daily_registrations', 50)); + $max_dailies = intval(Config::Get('system', 'max_daily_registrations', 50)); if ($max_dailies) { diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php index 9511c0389..3753e2a5f 100644 --- a/Zotlabs/Module/Search.php +++ b/Zotlabs/Module/Search.php @@ -3,11 +3,12 @@ namespace Zotlabs\Module; use App; -use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Activity; use Zotlabs\Lib\ActivityStreams; -use Zotlabs\Web\Controller; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libzot; use Zotlabs\Lib\Zotfinger; +use Zotlabs\Web\Controller; class Search extends Controller { @@ -18,7 +19,7 @@ class Search extends Controller { function get($update = 0, $load = false) { - if ((get_config('system', 'block_public')) || (get_config('system', 'block_public_search'))) { + if ((Config::Get('system', 'block_public')) || (Config::Get('system', 'block_public_search'))) { if ((!local_channel()) && (!remote_channel())) { notice(t('Public access denied.') . EOL); return; diff --git a/Zotlabs/Module/Service_limits.php b/Zotlabs/Module/Service_limits.php index 2a1f78054..aa27f7a9c 100644 --- a/Zotlabs/Module/Service_limits.php +++ b/Zotlabs/Module/Service_limits.php @@ -1,20 +1,20 @@ 0) { if(! validate_email($email)) $errs[] = t('Not valid email.'); - $adm = trim(get_config('system','admin_email')); + $adm = trim(Config::Get('system','admin_email')); if(($adm) && (strcasecmp($email,$adm) == 0)) { $errs[] = t('Protected email address. Cannot change to that email.'); $email = \App::$account['account_email']; diff --git a/Zotlabs/Module/Settings/Channel.php b/Zotlabs/Module/Settings/Channel.php index 1e0c2a2db..b46208879 100644 --- a/Zotlabs/Module/Settings/Channel.php +++ b/Zotlabs/Module/Settings/Channel.php @@ -7,6 +7,7 @@ use Zotlabs\Access\PermissionLimits; use Zotlabs\Access\PermissionRoles; use Zotlabs\Daemon\Master; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; require_once('include/selectors.php'); @@ -183,11 +184,11 @@ class Channel { $subdir = ((strlen(App::get_path())) ? '
' . t('or') . ' ' . z_root() . '/channel/' . $nickname : ''); $webbie = $nickname . '@' . App::get_hostname(); $intl_nickname = unpunify($nickname) . '@' . unpunify(App::get_hostname()); - $disable_discover_tab = intval(get_config('system', 'disable_discover_tab', 1)) == 1; - $site_firehose = intval(get_config('system', 'site_firehose', 0)) == 1; + $disable_discover_tab = intval(Config::Get('system', 'disable_discover_tab', 1)) == 1; + $site_firehose = intval(Config::Get('system', 'site_firehose', 0)) == 1; $expire = $channel['channel_expire_days']; - $sys_expire = get_config('system', 'default_expire_days'); + $sys_expire = Config::Get('system', 'default_expire_days'); $tpl_addr = get_markup_template("settings_nick_set.tpl"); $prof_addr = replace_macros($tpl_addr, [ diff --git a/Zotlabs/Module/Settings/Display.php b/Zotlabs/Module/Settings/Display.php index ee9692014..a7fccea47 100644 --- a/Zotlabs/Module/Settings/Display.php +++ b/Zotlabs/Module/Settings/Display.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module\Settings; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; class Display { @@ -85,7 +86,7 @@ class Display { $yes_no = array(t('No'),t('Yes')); - $default_theme = get_config('system','theme'); + $default_theme = Config::Get('system','theme'); if(! $default_theme) $default_theme = 'redbasic'; @@ -95,7 +96,7 @@ class Display { $theme = (($existing_theme) ? $existing_theme : $default_theme); - $allowed_themes_str = get_config('system','allowed_themes'); + $allowed_themes_str = Config::Get('system','allowed_themes'); $allowed_themes_raw = explode(',',$allowed_themes_str); $allowed_themes = array(); if(count($allowed_themes_raw)) @@ -121,7 +122,7 @@ class Display { $unsupported = file_exists('view/theme/' . $th . '/unsupported'); $is_library = file_exists('view/theme/'. $th . '/library'); - if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){ + if (!$is_experimental or ($is_experimental && (Config::Get('experimentals','exp_themes')==1 or Config::Get('experimentals','exp_themes')===false))){ $theme_name = (($is_experimental) ? sprintf(t('%s - (Experimental)'), $f) : $f); if (! $is_library) { $themes[$f] = $theme_name; diff --git a/Zotlabs/Module/Settings/Privacy.php b/Zotlabs/Module/Settings/Privacy.php index 316b1306e..ed14fa94c 100644 --- a/Zotlabs/Module/Settings/Privacy.php +++ b/Zotlabs/Module/Settings/Privacy.php @@ -6,6 +6,7 @@ use App; use Zotlabs\Access\PermissionLimits; use Zotlabs\Access\Permissions; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Group; use Zotlabs\Lib\Libsync; @@ -81,7 +82,7 @@ class Privacy { $help_txt = t('Advise: set to "Anybody on the internet" and use privacy groups to restrict access'); $limits = PermissionLimits::Get(local_channel()); - $anon_comments = get_config('system', 'anonymous_comments', true); + $anon_comments = Config::Get('system', 'anonymous_comments', true); foreach ($global_perms as $k => $perm) { $options = []; diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index 83faf85dc..74b10de25 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -8,6 +8,7 @@ namespace Zotlabs\Module; * @todo This setup module could need some love and improvements. */ +use Zotlabs\Lib\Config; /** * @brief Initialisation for the setup module. @@ -760,11 +761,11 @@ class Setup extends \Zotlabs\Web\Controller { */ function what_next() { // install the standard theme - set_config('system', 'allowed_themes', 'redbasic'); + Config::Set('system', 'allowed_themes', 'redbasic'); // if imagick converter is installed, use it if(@is_executable('/usr/bin/convert')) { - set_config('system','imagick_convert_path','/usr/bin/convert'); + Config::Set('system','imagick_convert_path','/usr/bin/convert'); } @@ -783,7 +784,7 @@ class Setup extends \Zotlabs\Web\Controller { $x = curl_version(); if(stristr($x['ssl_version'],'openssl')) - set_config('system','curl_ssl_ciphers','ALL:!eNULL'); + Config::Set('system','curl_ssl_ciphers','ALL:!eNULL'); // Create a system channel require_once ('include/channel.php'); diff --git a/Zotlabs/Module/Siteinfo.php b/Zotlabs/Module/Siteinfo.php index 18eb703a2..df6a334d8 100644 --- a/Zotlabs/Module/Siteinfo.php +++ b/Zotlabs/Module/Siteinfo.php @@ -1,6 +1,7 @@ t('Site Name'), '$sitename' => \Zotlabs\Lib\System::get_site_name(), '$headline' => t('Site Information'), - '$site_about' => bbcode(get_config('system','siteinfo')), + '$site_about' => bbcode(Config::Get('system','siteinfo')), '$admin_headline' => t('Administrator'), - '$admin_about' => bbcode(get_config('system','admininfo')), + '$admin_about' => bbcode(Config::Get('system','admininfo')), '$terms' => t('Terms of Service'), '$prj_header' => t('Software and Project information'), '$prj_name' => t('This site is powered by $Projectname'), @@ -33,7 +34,7 @@ class Siteinfo extends \Zotlabs\Web\Controller { '$additional_text' => t('Additional federated transport protocols:'), '$additional_fed' => implode(', ', $federated), - '$prj_version' => ((get_config('system','hidden_version_siteinfo')) ? '' : sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version())), + '$prj_version' => ((Config::Get('system','hidden_version_siteinfo')) ? '' : sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version())), '$prj_linktxt' => t('Project homepage'), '$prj_srctxt' => t('Developer homepage'), '$prj_link' => \Zotlabs\Lib\System::get_project_link(), diff --git a/Zotlabs/Module/Sse.php b/Zotlabs/Module/Sse.php index 8b46dcafd..5baa90128 100644 --- a/Zotlabs/Module/Sse.php +++ b/Zotlabs/Module/Sse.php @@ -4,6 +4,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; use Zotlabs\Lib\Enotify; use Zotlabs\Lib\XConfig; @@ -22,7 +23,7 @@ class Sse extends Controller { killme(); } - if(! intval(get_config('system','open_pubstream',1))) { + if(! intval(Config::Get('system','open_pubstream',1))) { if(! get_observer_hash()) { killme(); } @@ -52,7 +53,7 @@ class Sse extends Controller { $sleep = 1000000; // microseconds - self::$sse_enabled = get_config('system', 'sse_enabled', 0); + self::$sse_enabled = Config::Get('system', 'sse_enabled', 0); if(self::$sse_enabled) { diff --git a/Zotlabs/Module/Sse_bs.php b/Zotlabs/Module/Sse_bs.php index 9fb295c4b..a18301a1a 100644 --- a/Zotlabs/Module/Sse_bs.php +++ b/Zotlabs/Module/Sse_bs.php @@ -4,6 +4,7 @@ namespace Zotlabs\Module; use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Config; use Zotlabs\Web\Controller; use Zotlabs\Lib\Enotify; use Zotlabs\Lib\XConfig; @@ -424,7 +425,7 @@ class Sse_bs extends Controller { return $result; } - if(! intval(get_config('system','open_pubstream',1))) { + if(! intval(Config::Get('system','open_pubstream',1))) { if(! get_observer_hash()) { $result['pubs']['offset'] = -1; return $result; @@ -459,7 +460,7 @@ class Sse_bs extends Controller { $uids = " AND uid IN ( " . $sys['channel_id'] . " ) "; - $site_firehose = get_config('system', 'site_firehose', 0); + $site_firehose = Config::Get('system', 'site_firehose', 0); if($site_firehose) { $uids = " AND uid IN ( " . stream_perms_api_uids(PERMS_PUBLIC) . " ) AND item_private = 0 AND item_wall = 1 "; } @@ -732,7 +733,7 @@ class Sse_bs extends Controller { if(! self::$uid && ! is_site_admin()) return $result; - $policy = intval(get_config('system','register_policy')); + $policy = intval(Config::Get('system','register_policy')); if(($policy & REGISTER_APPROVE) != REGISTER_APPROVE) return $result; diff --git a/Zotlabs/Module/Well_known.php b/Zotlabs/Module/Well_known.php index 9cc31a7d3..a90397d2f 100644 --- a/Zotlabs/Module/Well_known.php +++ b/Zotlabs/Module/Well_known.php @@ -1,6 +1,7 @@ get_config('system','pubkey') + 'https://w3id.org/security/v1#publicKeyPem' => Config::Get('system','pubkey') ]; $result['links'] = [ [ diff --git a/Zotlabs/Photo/PhotoDriver.php b/Zotlabs/Photo/PhotoDriver.php index fc34f87a9..e8b42ec1b 100644 --- a/Zotlabs/Photo/PhotoDriver.php +++ b/Zotlabs/Photo/PhotoDriver.php @@ -2,6 +2,7 @@ namespace Zotlabs\Photo; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Hashpath; /** @@ -443,7 +444,7 @@ abstract class PhotoDriver { $p['display_path'] = $arr['display_path'] ?? ''; $p['width'] = $arr['width'] ?? $this->getWidth(); $p['height'] = $arr['height'] ?? $this->getHeight(); - $p['expires'] = $arr['expires'] ?? gmdate('Y-m-d H:i:s', time() + get_config('system', 'photo_cache_time', 86400)); + $p['expires'] = $arr['expires'] ?? gmdate('Y-m-d H:i:s', time() + Config::Get('system', 'photo_cache_time', 86400)); $p['profile'] = $arr['profile'] ?? 0; if(! intval($p['imgscale'])) @@ -508,7 +509,7 @@ abstract class PhotoDriver { $arr['imgscale'] = $scale; - if(boolval(get_config('system','photo_storage_type', 1))) { + if(boolval(Config::Get('system','photo_storage_type', 1))) { $arr['os_storage'] = 1; diff --git a/Zotlabs/Photo/PhotoGd.php b/Zotlabs/Photo/PhotoGd.php index 6854be0ab..4a47f97ee 100644 --- a/Zotlabs/Photo/PhotoGd.php +++ b/Zotlabs/Photo/PhotoGd.php @@ -2,6 +2,8 @@ namespace Zotlabs\Photo; +use Zotlabs\Lib\Config; + /** * @brief GD photo driver. * @@ -157,14 +159,14 @@ class PhotoGd extends PhotoDriver { switch($this->getType()){ case 'image/png': - $quality = get_config('system', 'png_quality'); + $quality = Config::Get('system', 'png_quality'); if((! $quality) || ($quality > 9)) $quality = PNG_QUALITY; \imagepng($this->image, NULL, $quality); break; case 'image/webp': - $quality = get_config('system', 'webp_quality'); + $quality = Config::Get('system', 'webp_quality'); if((! $quality) || ($quality > 100)) $quality = WEBP_QUALITY; \imagewebp($this->image, NULL, $quality); @@ -174,7 +176,7 @@ class PhotoGd extends PhotoDriver { // gd can lack imagejpeg(), but we verify during installation it is available default: - $quality = get_config('system', 'jpeg_quality'); + $quality = Config::Get('system', 'jpeg_quality'); if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; \imagejpeg($this->image, NULL, $quality); diff --git a/Zotlabs/Photo/PhotoImagick.php b/Zotlabs/Photo/PhotoImagick.php index 0a08d19e6..59f276480 100644 --- a/Zotlabs/Photo/PhotoImagick.php +++ b/Zotlabs/Photo/PhotoImagick.php @@ -2,6 +2,8 @@ namespace Zotlabs\Photo; +use Zotlabs\Lib\Config; + /** * @brief ImageMagick photo driver. */ @@ -57,7 +59,7 @@ class PhotoImagick extends PhotoDriver { switch($this->getType()) { case 'image/png': - $quality = get_config('system', 'png_quality'); + $quality = Config::Get('system', 'png_quality'); if((! $quality) || ($quality > 9)) $quality = PNG_QUALITY; /* @@ -73,14 +75,14 @@ class PhotoImagick extends PhotoDriver { break; case 'image/jpeg': - $quality = get_config('system', 'jpeg_quality'); + $quality = Config::Get('system', 'jpeg_quality'); if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; $this->image->setCompressionQuality($quality); break; case 'image/webp': - $quality = get_config('system', 'webp_quality'); + $quality = Config::Get('system', 'webp_quality'); if((! $quality) || ($quality > 100)) $quality = WEBP_QUALITY; $this->image->setCompressionQuality($quality); diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php index 7288c7fd7..ba0d77c39 100644 --- a/Zotlabs/Render/Comanche.php +++ b/Zotlabs/Render/Comanche.php @@ -2,6 +2,8 @@ namespace Zotlabs\Render; +use Zotlabs\Lib\Config; + require_once('include/security.php'); require_once('include/menu.php'); @@ -157,7 +159,7 @@ class Comanche { * @brief Replace conditional variables with real values. * * Currently supported condition variables: - * * $config.xxx.yyy - get_config with cat = xxx and k = yyy + * * $config.xxx.yyy - Config::Get with cat = xxx and k = yyy * * $request - request uri for this page * * $observer.language - viewer's preferred language (closest match) * * $observer.address - xchan_addr or false @@ -172,7 +174,7 @@ class Comanche { if($v) { $x = explode('.', $v); if($x[0] == 'config') - return get_config($x[1],$x[2]); + return Config::Get($x[1],$x[2]); elseif($x[0] === 'request') return $_SERVER['REQUEST_URI']; elseif($x[0] === 'local_channel') { @@ -208,18 +210,18 @@ class Comanche { * * This is extensible. The first version of variable testing supports tests of the forms: * - * - [if $config.system.foo ~= baz] which will check if get_config('system','foo') contains the string 'baz'; - * - [if $config.system.foo == baz] which will check if get_config('system','foo') is the string 'baz'; - * - [if $config.system.foo != baz] which will check if get_config('system','foo') is not the string 'baz'; - * - [if $config.system.foo >= 3] which will check if get_config('system','foo') is greater than or equal to 3; - * - [if $config.system.foo > 3] which will check if get_config('system','foo') is greater than 3; - * - [if $config.system.foo <= 3] which will check if get_config('system','foo') is less than or equal to 3; - * - [if $config.system.foo < 3] which will check if get_config('system','foo') is less than 3; + * - [if $config.system.foo ~= baz] which will check if Config::Get('system','foo') contains the string 'baz'; + * - [if $config.system.foo == baz] which will check if Config::Get('system','foo') is the string 'baz'; + * - [if $config.system.foo != baz] which will check if Config::Get('system','foo') is not the string 'baz'; + * - [if $config.system.foo >= 3] which will check if Config::Get('system','foo') is greater than or equal to 3; + * - [if $config.system.foo > 3] which will check if Config::Get('system','foo') is greater than 3; + * - [if $config.system.foo <= 3] which will check if Config::Get('system','foo') is less than or equal to 3; + * - [if $config.system.foo < 3] which will check if Config::Get('system','foo') is less than 3; * - * - [if $config.system.foo {} baz] which will check if 'baz' is an array element in get_config('system','foo') - * - [if $config.system.foo {*} baz] which will check if 'baz' is an array key in get_config('system','foo') - * - [if $config.system.foo] which will check for a return of a true condition for get_config('system','foo'); - * - [if !$config.system.foo] which will check for a return of a false condition for get_config('system','foo'); + * - [if $config.system.foo {} baz] which will check if 'baz' is an array element in Config::Get('system','foo') + * - [if $config.system.foo {*} baz] which will check if 'baz' is an array key in Config::Get('system','foo') + * - [if $config.system.foo] which will check for a return of a true condition for Config::Get('system','foo'); + * - [if !$config.system.foo] which will check for a return of a false condition for Config::Get('system','foo'); * * The values 0, '', an empty array, and an unset value will all evaluate to false. * diff --git a/Zotlabs/Render/SmartyTemplate.php b/Zotlabs/Render/SmartyTemplate.php index 2cb96521b..79f03637b 100644 --- a/Zotlabs/Render/SmartyTemplate.php +++ b/Zotlabs/Render/SmartyTemplate.php @@ -11,7 +11,7 @@ class SmartyTemplate implements TemplateEngine { public function __construct() { - // Cannot use get_config() here because it is called during installation when there is no DB. + // Cannot use Config::Get() here because it is called during installation when there is no DB. // FIXME: this may leak private information such as system pathnames. $basecompiledir = ((array_key_exists('smarty3_folder', App::$config['system'])) diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php index 912b4442d..e7f71c8c8 100644 --- a/Zotlabs/Storage/Browser.php +++ b/Zotlabs/Storage/Browser.php @@ -4,6 +4,7 @@ namespace Zotlabs\Storage; use Sabre\DAV; use App; +use Zotlabs\Lib\Config; /** * @brief Provides a DAV frontend for the webbrowser. @@ -101,7 +102,7 @@ class Browser extends DAV\Browser\Plugin { $folder_list = attach_folder_select_list($channel_id); - $siteroot_disabled = get_config('system', 'cloud_disable_siteroot'); + $siteroot_disabled = Config::Get('system', 'cloud_disable_siteroot'); $is_root_folder = (($path === 'cloud/' . $nick) ? true : false); $parent_path = ''; @@ -210,7 +211,7 @@ class Browser extends DAV\Browser\Plugin { // types $photo_icon = ''; - $preview_style = intval(get_config('system','thumbnail_security',0)); + $preview_style = intval(Config::Get('system','thumbnail_security',0)); $is_creator = (($data['creator'] === get_observer_hash()) ? true : false); @@ -474,7 +475,7 @@ class Browser extends DAV\Browser\Plugin { $limit = engr_units_to_bytes(service_class_fetch($this->auth->owner_id, 'attach_upload_limit')); } - if((! $limit) && get_config('system','cloud_report_disksize')) { + if((! $limit) && Config::Get('system','cloud_report_disksize')) { $limit = engr_units_to_bytes(disk_free_space('store')); } diff --git a/Zotlabs/Storage/Directory.php b/Zotlabs/Storage/Directory.php index 333251f69..b62f268d3 100644 --- a/Zotlabs/Storage/Directory.php +++ b/Zotlabs/Storage/Directory.php @@ -3,6 +3,7 @@ namespace Zotlabs\Storage; use Sabre\DAV; +use Zotlabz\Lib\Config; use Zotlabs\Lib\Libsync; /** @@ -89,7 +90,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo logger('children for ' . $this->ext_path, LOGGER_DATA); $this->log(); - if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { + if (Config::Get('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { throw new DAV\Exception\Forbidden('Permission denied.'); } @@ -111,7 +112,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo public function getChild($name) { logger($name, LOGGER_DATA); - if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { + if (Config::Get('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) { throw new DAV\Exception\Forbidden('Permission denied.'); } @@ -360,7 +361,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo intval($c[0]['channel_id']) ); - $maxfilesize = get_config('system', 'maxfilesize'); + $maxfilesize = Config::Get('system', 'maxfilesize'); if (($maxfilesize) && ($size > $maxfilesize)) { attach_delete($c[0]['channel_id'], $hash); return; @@ -776,7 +777,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo function ChannelList(&$auth) { $ret = []; - if (intval(get_config('system','cloud_disable_siteroot'))) { + if (intval(Config::Get('system','cloud_disable_siteroot'))) { return $ret; } diff --git a/Zotlabs/Storage/File.php b/Zotlabs/Storage/File.php index ff379e2e9..642dd4515 100644 --- a/Zotlabs/Storage/File.php +++ b/Zotlabs/Storage/File.php @@ -3,6 +3,7 @@ namespace Zotlabs\Storage; use Sabre\DAV; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; /** @@ -240,7 +241,7 @@ class File extends DAV\Node implements DAV\IFile { // There is an Exception "InsufficientStorage" or "PaymentRequired" for // our service class from SabreDAV we could use. - $maxfilesize = get_config('system', 'maxfilesize'); + $maxfilesize = Config::Get('system', 'maxfilesize'); if (($maxfilesize) && ($size > $maxfilesize)) { attach_delete($c[0]['channel_id'], $this->data['hash']); return; diff --git a/Zotlabs/Thumbs/Pdf.php b/Zotlabs/Thumbs/Pdf.php index 6f9111ed3..52afc09a3 100644 --- a/Zotlabs/Thumbs/Pdf.php +++ b/Zotlabs/Thumbs/Pdf.php @@ -2,6 +2,7 @@ namespace Zotlabs\Thumbs; +use Zotlabs\Lib\Config; class Pdf { @@ -29,7 +30,7 @@ class Pdf { fclose($ostream); } - $imagick_path = get_config('system','imagick_convert_path'); + $imagick_path = Config::Get('system','imagick_convert_path'); if($imagick_path && @file_exists($imagick_path)) { $cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmpfile . '[0]') . ' -resize ' . $width . 'x' . $height . ' ' . escapeshellarg(PROJECT_BASE . '/' . $outfile); // logger('imagick thumbnail command: ' . $cmd); diff --git a/Zotlabs/Thumbs/Video.php b/Zotlabs/Thumbs/Video.php index 9df27d703..1da500370 100644 --- a/Zotlabs/Thumbs/Video.php +++ b/Zotlabs/Thumbs/Video.php @@ -2,6 +2,7 @@ namespace Zotlabs\Thumbs; +use Zotlabs\Lib\Config; class Video { @@ -47,7 +48,7 @@ class Video { logger('ffmpeg not found in path. Video thumbnails may fail.'); } - $imagick_path = get_config('system','imagick_convert_path'); + $imagick_path = Config::Get('system','imagick_convert_path'); if($imagick_path && @file_exists($imagick_path)) { $cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmpfile . '[0]') . ' -resize ' . $width . 'x' . $height . ' ' . escapeshellarg(PROJECT_BASE . '/' . $outfile); // logger('imagick thumbnail command: ' . $cmd); diff --git a/Zotlabs/Update/_1103.php b/Zotlabs/Update/_1103.php index 3f9a9286c..a32c81fe9 100644 --- a/Zotlabs/Update/_1103.php +++ b/Zotlabs/Update/_1103.php @@ -2,13 +2,15 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; + class _1103 { function run() { $x = curl_version(); if(stristr($x['ssl_version'],'openssl')) - set_config('system','curl_ssl_ciphers','ALL:!eNULL'); + Config::Set('system','curl_ssl_ciphers','ALL:!eNULL'); return UPDATE_SUCCESS; } -} \ No newline at end of file +} diff --git a/Zotlabs/Update/_1226.php b/Zotlabs/Update/_1226.php index 6e5a0e319..526fc867b 100644 --- a/Zotlabs/Update/_1226.php +++ b/Zotlabs/Update/_1226.php @@ -2,6 +2,7 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; class _1226 { @@ -17,7 +18,7 @@ class _1226 { $r = ($r1 && $r2); } else { - $r = q("ALTER TABLE `channel` ADD `channel_portable_id` char(191) NOT NULL DEFAULT '' , + $r = q("ALTER TABLE `channel` ADD `channel_portable_id` char(191) NOT NULL DEFAULT '' , ADD INDEX `channel_portable_id` (`channel_portable_id`)"); } @@ -52,7 +53,7 @@ class _1226 { $rec['xchan_hash'] = $zhash; $rec['xchan_guid_sig'] = 'sha256.' . $rec['xchan_guid_sig']; $rec['xchan_network'] = 'zot6'; - + xchan_store_lowlevel($rec); } $x = q("select * from hubloc where hubloc_hash = '%s' and hubloc_url = '%s' limit 1", @@ -67,7 +68,7 @@ class _1226 { $rec['hubloc_url_sig'] = 'sha256.' . $rec['hubloc_url_sig']; $rec['hubloc_callback'] = z_root() . '/zot'; $rec['hubloc_id_url'] = channel_url($rv); - $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),get_config('system','pubkey')); + $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),Config::Get('system','pubkey')); hubloc_store_lowlevel($rec); } } diff --git a/Zotlabs/Update/_1236.php b/Zotlabs/Update/_1236.php index e57338e16..b5bfdaad8 100644 --- a/Zotlabs/Update/_1236.php +++ b/Zotlabs/Update/_1236.php @@ -2,15 +2,16 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; class _1236 { function run() { - - $r = q("SELECT channel.channel_address, channel.channel_hash, xchan.xchan_guid, channel.channel_pubkey, channel.channel_portable_id FROM channel - LEFT JOIN xchan ON channel_hash = xchan_hash - WHERE xchan.xchan_network = 'zot' + + $r = q("SELECT channel.channel_address, channel.channel_hash, xchan.xchan_guid, channel.channel_pubkey, channel.channel_portable_id FROM channel + LEFT JOIN xchan ON channel_hash = xchan_hash + WHERE xchan.xchan_network = 'zot' AND channel.channel_removed = 0" ); @@ -102,7 +103,7 @@ class _1236 { $rec['hubloc_url_sig'] = 'sha256.' . $rec['hubloc_url_sig']; $rec['hubloc_callback'] = z_root() . '/zot'; $rec['hubloc_id_url'] = channel_url($rr); - $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),get_config('system','pubkey')); + $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),Config::Get('system','pubkey')); $hubloc = hubloc_store_lowlevel($rec); } diff --git a/Zotlabs/Update/_1242.php b/Zotlabs/Update/_1242.php index c2c9a66d0..0a4265984 100644 --- a/Zotlabs/Update/_1242.php +++ b/Zotlabs/Update/_1242.php @@ -2,6 +2,8 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; + class _1242 { function run() { @@ -10,7 +12,7 @@ class _1242 { if ($pp['v'][0] === '{') { $a = json_decode($pp['v'], true); if (isset($a['encrypted'])) { - $v = crypto_unencapsulate($a, get_config('system', 'prvkey')); + $v = crypto_unencapsulate($a, Config::Get('system', 'prvkey')); set_pconfig($pp['uid'], $pp['cat'], $pp['k'], obscurify($v)); } } @@ -18,4 +20,4 @@ class _1242 { return UPDATE_SUCCESS; } -} \ No newline at end of file +} diff --git a/Zotlabs/Update/_1243.php b/Zotlabs/Update/_1243.php index 850cb1d6c..05845ad47 100644 --- a/Zotlabs/Update/_1243.php +++ b/Zotlabs/Update/_1243.php @@ -2,15 +2,17 @@ namespace Zotlabs\Update; +use Zotlabs\Lib\Config; + class _1243 { function run() { - - $x = get_config('system','filesystem_storage_thumbnails'); - del_config('system','filesystem_storage_thumbnails'); + + $x = Config::Get('system','filesystem_storage_thumbnails'); + Config::Delete('system','filesystem_storage_thumbnails'); if ($x !== false) - set_config('system','photo_storage_type', intval($x)); - + Config::Set('system','photo_storage_type', intval($x)); + return UPDATE_SUCCESS; } diff --git a/Zotlabs/Web/HTTPSig.php b/Zotlabs/Web/HTTPSig.php index 793b8cb45..7c289ff5f 100644 --- a/Zotlabs/Web/HTTPSig.php +++ b/Zotlabs/Web/HTTPSig.php @@ -5,6 +5,7 @@ namespace Zotlabs\Web; use DateTime; use DateTimeZone; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; use Zotlabs\Lib\Keyutils; use Zotlabs\Lib\Webfinger; @@ -528,7 +529,7 @@ class HTTPSig { // TODO: should we default to hs2019? cavage-http-signatures-12 is not very wide spread yet - if (get_config('system', 'use_hs2019', false) && $algorithm === 'rsa-sha256') { + if (Config::Get('system', 'use_hs2019', false) && $algorithm === 'rsa-sha256') { $algorithm = 'hs2019'; } @@ -673,7 +674,7 @@ class HTTPSig { $iv = $key = $alg = $data = null; if (!$prvkey) { - $prvkey = get_config('system', 'prvkey'); + $prvkey = Config::Get('system', 'prvkey'); } $matches = []; diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php index 2876fcc3c..f2604b95d 100644 --- a/Zotlabs/Web/Router.php +++ b/Zotlabs/Web/Router.php @@ -4,6 +4,7 @@ namespace Zotlabs\Web; use App; use Zotlabs\Extend\Route; +use Zotlabs\Lib\Config; use Exception; /** @@ -154,7 +155,7 @@ class Router { // make the file read-only so letsencrypt doesn't modify it if(strpos($_SERVER['REQUEST_URI'],'/.well-known/') === 0) { - if(file_exists('.well-known/.htaccess') && get_config('system','fix_apache_acme',true)) { + if(file_exists('.well-known/.htaccess') && Config::Get('system','fix_apache_acme',true)) { rename('.well-known/.htaccess','.well-known/.htaccess.old'); } } @@ -173,7 +174,7 @@ class Router { killme(); } - if(get_config('system','log_404',true)) { + if(Config::Get('system','log_404',true)) { logger("Module {$module} not found.", LOGGER_DEBUG, LOG_WARNING); logger('index.php: page not found: ' . $_SERVER['REQUEST_URI'] . ' ADDRESS: ' . $_SERVER['REMOTE_ADDR'] . ' QUERY: ' diff --git a/Zotlabs/Web/Session.php b/Zotlabs/Web/Session.php index 14c054d20..ec26e6b0d 100644 --- a/Zotlabs/Web/Session.php +++ b/Zotlabs/Web/Session.php @@ -10,6 +10,7 @@ namespace Zotlabs\Web; * session info. */ +use Zotlabs\Lib\Config; class Session { @@ -24,7 +25,7 @@ class Session { ini_set('session.use_only_cookies', 1); ini_set('session.cookie_httponly', 1); - $this->custom_handler = boolval(get_config('system', 'session_custom', false)); + $this->custom_handler = boolval(Config::Get('system', 'session_custom', false)); /* * Set our session storage functions. @@ -33,8 +34,8 @@ class Session { if($this->custom_handler) { /* Custom handler (files, memached, redis..) */ - $session_save_handler = strval(get_config('system', 'session_save_handler', Null)); - $session_save_path = strval(get_config('system', 'session_save_path', Null)); + $session_save_handler = strval(Config::Get('system', 'session_save_handler', Null)); + $session_save_path = strval(Config::Get('system', 'session_save_path', Null)); if(is_null($session_save_handler) || is_null($session_save_path)) { logger('Session save handler or path not set', LOGGER_NORMAL, LOG_ERR); @@ -48,8 +49,8 @@ class Session { else { ini_set('session.save_handler', $session_save_handler); ini_set('session.save_path', $session_save_path); - ini_set('session.gc_probability', intval(get_config('system', 'session_gc_probability', 1))); - ini_set('session.gc_divisor', intval(get_config('system', 'session_gc_divisor', 100))); + ini_set('session.gc_probability', intval(Config::Get('system', 'session_gc_probability', 1))); + ini_set('session.gc_divisor', intval(Config::Get('system', 'session_gc_divisor', 100))); } } } @@ -212,7 +213,7 @@ class Session { $paranoia = intval(get_pconfig($_SESSION['uid'], 'system', 'paranoia')); if(! $paranoia) - $paranoia = intval(get_config('system', 'paranoia')); + $paranoia = intval(Config::Get('system', 'paranoia')); switch($paranoia) { case 0: diff --git a/Zotlabs/Widget/Newmember.php b/Zotlabs/Widget/Newmember.php index 70a858fb0..79bdf9f9f 100644 --- a/Zotlabs/Widget/Newmember.php +++ b/Zotlabs/Widget/Newmember.php @@ -7,6 +7,8 @@ namespace Zotlabs\Widget; +use Zotlabs\Lib\Config; + class Newmember { function widget($arr) { @@ -66,8 +68,8 @@ class Newmember { ] ]; - $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); - $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false); + $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true); // hack to put this in the correct spot of the array diff --git a/Zotlabs/Widget/Pinned.php b/Zotlabs/Widget/Pinned.php index 1380c156b..2ba170fe8 100644 --- a/Zotlabs/Widget/Pinned.php +++ b/Zotlabs/Widget/Pinned.php @@ -1,6 +1,8 @@ uid) return $ret; - $this->allowed_types = get_config('system', 'pin_types', [ ITEM_TYPE_POST ]); + $this->allowed_types = Config::Get('system', 'pin_types', [ ITEM_TYPE_POST ]); $items = $this->list($types); diff --git a/Zotlabs/Widget/Pubtagcloud.php b/Zotlabs/Widget/Pubtagcloud.php index 90bf5eb97..8119d0c73 100644 --- a/Zotlabs/Widget/Pubtagcloud.php +++ b/Zotlabs/Widget/Pubtagcloud.php @@ -7,6 +7,8 @@ namespace Zotlabs\Widget; +use Zotlabs\Lib\Config; + class Pubtagcloud { function widget($arr) { @@ -16,19 +18,19 @@ class Pubtagcloud { return EMPTY_STR; } - if(! intval(get_config('system','open_pubstream',1))) { + if(! intval(Config::Get('system','open_pubstream',1))) { if(! get_observer_hash()) { return EMPTY_STR; } } - $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true); + $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true); if(!$net_firehose) { return ''; } - $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false); + $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false); $safemode = get_xconfig(get_observer_hash(),'directory','safemode',1); diff --git a/Zotlabs/Widget/Rating.php b/Zotlabs/Widget/Rating.php index 20c27ff1c..f8986ac93 100644 --- a/Zotlabs/Widget/Rating.php +++ b/Zotlabs/Widget/Rating.php @@ -8,12 +8,14 @@ namespace Zotlabs\Widget; +use Zotlabs\Lib\Config; + class Rating { function widget($arr) { - $rating_enabled = get_config('system','rating_enabled'); + $rating_enabled = Config::Get('system','rating_enabled'); if(! $rating_enabled) { return; } diff --git a/boot.php b/boot.php index 1dc29051e..cdfa15855 100644 --- a/boot.php +++ b/boot.php @@ -1249,7 +1249,7 @@ class App { '$metas' => self::$meta->get(), '$plugins' => $x['header'], '$update_interval' => $interval, - '$sse_enabled' => get_config('system', 'sse_enabled', 0), + '$sse_enabled' => Config::Get('system', 'sse_enabled', 0), '$head_css' => head_get_css(), '$head_js' => head_get_js(), '$linkrel' => head_get_links(), @@ -1495,9 +1495,9 @@ function is_ajax() { */ function check_config() { - $saved = get_config('system', 'urlverify'); + $saved = Config::Get('system', 'urlverify'); if (!$saved) - set_config('system', 'urlverify', bin2hex(z_root())); + Config::Set('system', 'urlverify', bin2hex(z_root())); if (($saved) && ($saved != bin2hex(z_root()))) { // our URL changed. Do something. @@ -1513,7 +1513,7 @@ function check_config() { // only change the url to an ip address if it was already an ip and not a dns name if ((!$is_ip_addr) || ($is_ip_addr && $was_ip_addr)) { fix_system_urls($oldurl, z_root()); - set_config('system', 'urlverify', bin2hex(z_root())); + Config::Set('system', 'urlverify', bin2hex(z_root())); } else logger('Attempt to change baseurl from a DNS name to an IP address was refused.'); @@ -1713,9 +1713,9 @@ function login($register = false, $form_id = 'main_login', $hiddens = false, $lo // your site. - $register_policy = get_config('system', 'register_policy'); + $register_policy = Config::Get('system', 'register_policy'); - $reglink = get_config('system', 'register_link', z_root() . '/' . ((intval($register_policy) === REGISTER_CLOSED) ? 'pubsites' : 'register')); + $reglink = Config::Get('system', 'register_link', z_root() . '/' . ((intval($register_policy) === REGISTER_CLOSED) ? 'pubsites' : 'register')); if ($reglink !== 'none') { $reg = [ @@ -1736,7 +1736,7 @@ function login($register = false, $form_id = 'main_login', $hiddens = false, $lo $_SESSION['login_return_url'] = App::$query_string; } - $email_required = get_config('system', 'verify_email'); + $email_required = Config::Get('system', 'verify_email'); $lname_label = (($email_required) ? t('Email or nickname') : t('Nickname')); $o .= replace_macros($tpl, [ @@ -1854,13 +1854,13 @@ function can_view_public_stream() { return false; } - if (!(intval(get_config('system', 'open_pubstream', 1)))) { + if (!(intval(Config::Get('system', 'open_pubstream', 1)))) { if (!get_observer_hash()) { return false; } } - $net_firehose = ((get_config('system', 'disable_discover_tab', 1)) ? false : true); + $net_firehose = ((Config::Get('system', 'disable_discover_tab', 1)) ? false : true); if (!$net_firehose) { return false; @@ -2001,7 +2001,7 @@ function info($s) { * @return int */ function get_max_import_size() { - return (intval(get_config('system', 'max_import_size'))); + return (intval(Config::Get('system', 'max_import_size'))); } @@ -2055,7 +2055,7 @@ function proc_run() { proc_close(proc_open($cmd, [], $foo)); } else { - if (get_config('system', 'use_proc_open')) + if (Config::Get('system', 'use_proc_open')) proc_close(proc_open($cmdline . " &", [], $foo)); else exec($cmdline . ' > /dev/null &'); @@ -2333,7 +2333,7 @@ function construct_page() { $uid = ((App::$profile_uid) ? App::$profile_uid : local_channel()); - $navbar = get_config('system', 'navbar', 'default'); + $navbar = Config::Get('system', 'navbar', 'default'); if ($uid) { $navbar = get_pconfig($uid, 'system', 'navbar', $navbar); } @@ -2533,7 +2533,7 @@ function head_get_icon() { * @return string */ function get_directory_realm() { - if ($x = get_config('system', 'directory_realm')) + if ($x = Config::Get('system', 'directory_realm')) return $x; return DIRECTORY_REALM; @@ -2546,13 +2546,13 @@ function get_directory_realm() { */ function get_directory_primary() { - $dirmode = intval(get_config('system', 'directory_mode')); + $dirmode = intval(Config::Get('system', 'directory_mode')); if ($dirmode == DIRECTORY_MODE_STANDALONE || $dirmode == DIRECTORY_MODE_PRIMARY) { return z_root(); } - if ($x = get_config('system', 'directory_primary')) + if ($x = Config::Get('system', 'directory_primary')) return $x; return DIRECTORY_FALLBACK_MASTER; @@ -2565,13 +2565,13 @@ function get_directory_primary() { * @return string relative date of last completed poller execution */ function get_poller_runtime() { - $t = get_config('system', 'lastpoll'); + $t = Config::Get('system', 'lastpoll'); return relative_date($t); } function z_get_upload_dir() { - $upload_dir = get_config('system', 'uploaddir'); + $upload_dir = Config::Get('system', 'uploaddir'); if (!$upload_dir) $upload_dir = ini_get('upload_tmp_dir'); if (!$upload_dir) @@ -2581,7 +2581,7 @@ function z_get_upload_dir() { } function z_get_temp_dir() { - $temp_dir = get_config('system', 'tempdir'); + $temp_dir = Config::Get('system', 'tempdir'); if (!$temp_dir) $temp_dir = sys_get_temp_dir(); @@ -2637,12 +2637,12 @@ function check_for_new_perms() { if (Permissions::version() != PermissionRoles::version()) return; - $pregistered = get_config('system', 'perms'); + $pregistered = Config::Get('system', 'perms'); $pcurrent = array_keys(Permissions::Perms()); if (!$pregistered) { - set_config('system', 'perms', $pcurrent); + Config::Set('system', 'perms', $pcurrent); return; } @@ -2699,7 +2699,7 @@ function check_for_new_perms() { // We should probably call perms_refresh here, but this should get pushed in 24 hours and there is no urgency if ($found_new_perm) - set_config('system', 'perms', $pcurrent); + Config::Set('system', 'perms', $pcurrent); } @@ -2708,17 +2708,17 @@ function check_for_new_perms() { */ function check_cron_broken() { - $d = get_config('system', 'lastcron'); + $d = Config::Get('system', 'lastcron'); if ((!$d) || ($d < datetime_convert('UTC', 'UTC', 'now - 4 hours'))) { Zotlabs\Daemon\Master::Summon(['Cron']); - set_config('system', 'lastcron', datetime_convert()); + Config::Set('system', 'lastcron', datetime_convert()); } - $t = get_config('system', 'lastcroncheck'); + $t = Config::Get('system', 'lastcroncheck'); if (!$t) { // never checked before. Start the timer. - set_config('system', 'lastcroncheck', datetime_convert()); + Config::Set('system', 'lastcroncheck', datetime_convert()); return; } @@ -2727,7 +2727,7 @@ function check_cron_broken() { return; } - set_config('system', 'lastcroncheck', datetime_convert()); + Config::Set('system', 'lastcroncheck', datetime_convert()); if (($d) && ($d > datetime_convert('UTC', 'UTC', 'now - 3 days'))) { // Scheduled tasks have run successfully in the last 3 days. @@ -2759,7 +2759,7 @@ function check_cron_broken() { */ function observer_prohibited($allow_account = false) { if ($allow_account) { - return (((get_config('system', 'block_public')) && (!get_account_id()) && (!remote_channel())) ? true : false); + return (((Config::Get('system', 'block_public')) && (!get_account_id()) && (!remote_channel())) ? true : false); } - return (((get_config('system', 'block_public')) && (!local_channel()) && (!remote_channel())) ? true : false); + return (((Config::Get('system', 'block_public')) && (!local_channel()) && (!remote_channel())) ? true : false); } diff --git a/doc/dev-function-overview.md b/doc/dev-function-overview.md index cd2526ead..4dccc8cef 100644 --- a/doc/dev-function-overview.md +++ b/doc/dev-function-overview.md @@ -21,11 +21,15 @@ returns an xchan structure representing the current viewer if authenticated (loc * get_config($family,$key), get_pconfig($uid,$family,$key) -Returns the config setting for $family and $key or false if unset. +Returns the config setting for $family and $key or false if unset. + +Deprecated: Use Zotlabs\Lib\Config::Get instead. * set_config($family,$key,$value), set_pconfig($uid,$family,$key,$value) -Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). +Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). + +Deprecated: Use Zotlabs\Lib\Config::Set instead. * dbesc() @@ -33,7 +37,7 @@ Always escape strings being used in DB queries. This function returns the escape * q($sql,$var1...) -Perform a DB query with the SQL statement $sql. printf style arguments %s and %d are replaced with variable arguments, which should each be appropriately dbesc() or intval(). SELECT queries return an array of results or false if SQL or DB error. Other queries return true if the command was successful or false if it wasn't. +Perform a DB query with the SQL statement $sql. printf style arguments %s and %d are replaced with variable arguments, which should each be appropriately dbesc() or intval(). SELECT queries return an array of results or false if SQL or DB error. Other queries return true if the command was successful or false if it wasn't. * t($string) diff --git a/doc/developer_function_primer.bb b/doc/developer_function_primer.bb index 48af9523d..f39954d73 100644 --- a/doc/developer_function_primer.bb +++ b/doc/developer_function_primer.bb @@ -20,10 +20,14 @@ returns an xchan structure representing the current viewer if authenticated (loc Returns the config setting for $family and $key or false if unset. +Deprecated: Use Zotlabs\Lib\Config::Get instead. + [b] set_config($family,$key,$value), set_pconfig($uid,$family,$key,$value)[/b] Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). The xconfig version get/sets the value for a specific xchan hash - generally used for remote users. +Deprecated: Use Zotlabs\Lib\Config::Set instead. + [b]dbesc()[/b] Always escape strings being used in DB queries. This function returns the escaped string. Integer DB parameters should all be proven integers by wrapping with intval() diff --git a/include/account.php b/include/account.php index a1fb0f159..884c07389 100644 --- a/include/account.php +++ b/include/account.php @@ -4,6 +4,7 @@ * @brief Somme account related functions. */ +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; require_once('include/config.php'); @@ -83,8 +84,8 @@ function check_account_invite($invite_code) { $result = array('error' => false, 'message' => ''); // [hilmar -> - $using_invites = (get_config('system','invitation_only') - || get_config('system','invitation_also')); + $using_invites = (Config::Get('system','invitation_only') + || Config::Get('system','invitation_also')); if($using_invites) { @@ -118,7 +119,7 @@ function check_account_invite($invite_code) { function check_account_admin($arr) { if(is_site_admin()) return true; - $admin_email = trim(get_config('system','admin_email')); + $admin_email = trim(Config::Get('system','admin_email')); if(strlen($admin_email) && $admin_email === trim($arr['email'])) return true; return false; @@ -182,7 +183,7 @@ function create_account_IS_OBSOLETE($arr) { $roles = ((x($arr,'account_roles')) ? intval($arr['account_roles']) : 0 ); $expires = ((x($arr,'expires')) ? intval($arr['expires']) : NULL_DATE); - $default_service_class = get_config('system','default_service_class'); + $default_service_class = Config::Get('system','default_service_class'); if($default_service_class === false) $default_service_class = ''; @@ -209,10 +210,10 @@ function create_account_IS_OBSOLETE($arr) { // Ensure that there is a host keypair. - if ((! get_config('system', 'pubkey')) && (! get_config('system', 'prvkey'))) { + if ((! Config::Get('system', 'pubkey')) && (! Config::Get('system', 'prvkey'))) { $hostkey = Crypto::new_keypair(4096); - set_config('system', 'pubkey', $hostkey['pubkey']); - set_config('system', 'prvkey', $hostkey['prvkey']); + Config::Set('system', 'pubkey', $hostkey['pubkey']); + Config::Set('system', 'prvkey', $hostkey['prvkey']); } $invite_result = check_account_invite($invite_code); @@ -319,7 +320,7 @@ function create_account_from_register($arr) { // account $expires = NULL_DATE; - $default_service_class = get_config('system','default_service_class'); + $default_service_class = Config::Get('system','default_service_class'); if($default_service_class === false) $default_service_class = ''; @@ -420,7 +421,7 @@ function verify_email_address($arr) { $email_msg = replace_macros(get_intltext_template('register_verify_member.tpl'), [ - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $arr['email'], '$uid' => 1, @@ -432,7 +433,7 @@ function verify_email_address($arr) { $res = z_mail( [ 'toEmail' => $arr['email'], - 'messageSubject' => sprintf( t('Registration confirmation for %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration confirmation for %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); @@ -488,7 +489,7 @@ function verify_email_addressNOP($arr) { $email_msg = replace_macros(get_intltext_template('register_verify_member.tpl'), [ - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $arr['email'], '$uid' => $account['account_id'], @@ -500,7 +501,7 @@ function verify_email_addressNOP($arr) { $res = z_mail( [ 'toEmail' => $arr['email'], - 'messageSubject' => sprintf( t('Registration confirmation for %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration confirmation for %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); @@ -564,7 +565,7 @@ function send_reg_approval_email($arr) { push_lang('en'); $email_msg = replace_macros(get_intltext_template('register_verify_eml.tpl'), array( - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $arr['email'], '$uid' => $arr['account']['account_id'], @@ -575,7 +576,7 @@ function send_reg_approval_email($arr) { $res = z_mail( [ 'toEmail' => $admin['email'], - 'messageSubject' => sprintf( t('Registration request at %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration request at %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); @@ -594,7 +595,7 @@ function send_reg_approval_email($arr) { function send_register_success_email($email,$password) { $email_msg = replace_macros(get_intltext_template('register_open_eml.tpl'), array( - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$email' => $email, '$password' => t('your registration password'), @@ -603,7 +604,7 @@ function send_register_success_email($email,$password) { $res = z_mail( [ 'toEmail' => $email, - 'messageSubject' => sprintf( t('Registration details for %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration details for %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); @@ -681,7 +682,7 @@ function account_allow($hash) { $email_tpl = get_intltext_template("register_open_eml.tpl"); $email_msg = replace_macros($email_tpl, array( - '$sitename' => get_config('system','sitename'), + '$sitename' => Config::Get('system','sitename'), '$siteurl' => z_root(), '$username' => $account[0]['account_email'], '$email' => $account[0]['account_email'], @@ -692,14 +693,14 @@ function account_allow($hash) { $res = z_mail( [ 'toEmail' => $account[0]['account_email'], - 'messageSubject' => sprintf( t('Registration details for %s'), get_config('system','sitename')), + 'messageSubject' => sprintf( t('Registration details for %s'), Config::Get('system','sitename')), 'textVersion' => $email_msg, ] ); pop_lang(); - if(get_config('system', 'auto_channel_create', 1)) + if(Config::Get('system', 'auto_channel_create', 1)) auto_channel_create($register[0]['uid']); if ($res) { @@ -844,7 +845,7 @@ function account_approve($hash) { if(! $account) return $ret; - if(get_config('system','auto_channel_create')) + if(Config::Get('system','auto_channel_create')) auto_channel_create($register[0]['reg_uid']); else { $_SESSION['login_return_url'] = 'new_channel'; @@ -992,7 +993,7 @@ function downgrade_accounts() { if(! $r) return; - $basic = get_config('system','default_service_class'); + $basic = Config::Get('system','default_service_class'); foreach($r as $rr) { if(($basic) && ($rr['account_service_class']) && ($rr['account_service_class'] != $basic)) { @@ -1135,7 +1136,7 @@ function service_class_fetch($uid, $property) { if(! x($service_class)) return false; // everything is allowed - $arr = get_config('service_class', $service_class); + $arr = Config::Get('service_class', $service_class); if(! is_array($arr) || (! count($arr))) return false; @@ -1169,7 +1170,7 @@ function account_service_class_fetch($aid, $property) { if(! isset($service_class)) return false; // everything is allowed - $arr = get_config('service_class', $service_class); + $arr = Config::Get('service_class', $service_class); if(! is_array($arr) || (! count($arr))) return false; @@ -1179,7 +1180,7 @@ function account_service_class_fetch($aid, $property) { function upgrade_link($bbcode = false) { - $l = get_config('service_class', 'upgrade_link'); + $l = Config::Get('service_class', 'upgrade_link'); if(! $l) return ''; if($bbcode) @@ -1208,7 +1209,7 @@ function get_account_techlevel($account_id = 0) { function zar_log($msg='') { - if(get_config('system', 'register_logfile', 0)) { + if(Config::Get('system', 'register_logfile', 0)) { file_put_contents('./zar.log', date('Y-m-d_H:i:s') . ' ' . $msg . ', ip: § ' . $_SERVER['REMOTE_ADDR'] . ' §' . "\n", FILE_APPEND); } diff --git a/include/attach.php b/include/attach.php index e5a2900b3..efefc73a4 100644 --- a/include/attach.php +++ b/include/attach.php @@ -11,11 +11,12 @@ * @todo Also an 'append' option to the storage function might be a useful addition. */ -use Zotlabs\Lib\Libsync; -use Zotlabs\Lib\Activity; use Zotlabs\Access\PermissionLimits; use Zotlabs\Daemon\Master; use Zotlabs\Lib\AccessList; +use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libsync; require_once('include/permissions.php'); require_once('include/security.php'); @@ -801,7 +802,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { // Check storage limits if($options !== 'update') { - $maxfilesize = get_config('system','maxfilesize'); + $maxfilesize = Config::Get('system','maxfilesize'); if(($maxfilesize) && ($filesize > $maxfilesize)) { logger('quota_exceeded'); diff --git a/include/auth.php b/include/auth.php index 5956b89e2..0cd48bce3 100644 --- a/include/auth.php +++ b/include/auth.php @@ -9,8 +9,9 @@ * Also provides a function for OpenID identiy matching. */ -use Zotlabs\Lib\Libzot; use Zotlabs\Lib\AConfig; +use Zotlabs\Lib\Config; +use Zotlabs\Lib\Libzot; use Zotlabs\Module\Totp_check; require_once('include/api_auth.php'); @@ -43,8 +44,8 @@ function account_verify_password($login, $pass) { $ret = [ 'account' => null, 'channel' => null, 'xchan' => null ]; $login = punify($login); - $email_verify = get_config('system', 'verify_email'); - $register_policy = get_config('system', 'register_policy'); + $email_verify = Config::Get('system', 'verify_email'); + $register_policy = Config::Get('system', 'register_policy'); if(!$login || !$pass) return null; @@ -170,7 +171,7 @@ function account_verify_password($login, $pass) { * Error message to display for failed login. */ function log_failed_login($errormsg) { - $authlog = get_config('system', 'authlog'); + $authlog = Config::Get('system', 'authlog'); if ($authlog) @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $errormsg . PHP_EOL, FILE_APPEND); } @@ -208,10 +209,10 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) && if(x($_SESSION, 'visitor_id') && (! x($_SESSION, 'uid'))) { // if our authenticated guest is allowed to take control of the admin channel, make it so. - $admins = get_config('system', 'remote_admin'); + $admins = Config::Get('system', 'remote_admin'); if($admins && is_array($admins) && in_array($_SESSION['visitor_id'], $admins)) { $x = q("select * from account where account_email = '%s' and account_email != '' and ( account_flags & %d )>0 limit 1", - dbesc(get_config('system', 'admin_email')), + dbesc(Config::Get('system', 'admin_email')), intval(ACCOUNT_ROLE_ADMIN) ); if($x) { @@ -328,7 +329,7 @@ else { $error = 'authenticate: failed login attempt: ' . notags(trim($username)) . ' from IP ' . $_SERVER['REMOTE_ADDR']; logger($error); // Also log failed logins to a separate auth log to reduce overhead for server side intrusion prevention - $authlog = get_config('system', 'authlog'); + $authlog = Config::Get('system', 'authlog'); if ($authlog) @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $error . "\n", FILE_APPEND); notice( t('Login failed.') . EOL ); diff --git a/include/bbcode.php b/include/bbcode.php index db4147c1e..87c09a775 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -4,8 +4,9 @@ * @brief BBCode related functions for parsing, etc. */ -use Zotlabs\Lib\SvgSanitizer; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libzot; +use Zotlabs\Lib\SvgSanitizer; require_once('include/oembed.php'); require_once('include/event.php'); @@ -111,7 +112,7 @@ function tryzrlvideo($match) { if($zrl) $link = zid($link); - $static_link = get_config('system','video_default_poster','images/video_poster.jpg'); + $static_link = Config::Get('system','video_default_poster','images/video_poster.jpg'); if($static_link) $poster = 'poster="' . escape_tags($static_link) . '" ' ; @@ -1133,7 +1134,7 @@ function parseIdentityAwareHTML($Text) { $Text = str_replace('[observer.photo]','', $Text); } - $Text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),get_config('system','sitename')),$Text); + $Text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),Config::Get('system','sitename')),$Text); // Unhide all [noparse] contained bbtags unspacefying them @@ -1242,7 +1243,7 @@ function bbcode($text, $options = []) { $text = $x['body']; $saved_images = $x['images']; - $text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),get_config('system','sitename')),$text); + $text = str_replace(array('[baseurl]','[sitename]'),array(z_root(),Config::Get('system','sitename')),$text); // Replace any html brackets with HTML Entities to prevent executing HTML or script // Don't use strip_tags here because it breaks [url] search by replacing & with amp diff --git a/include/channel.php b/include/channel.php index a82794bfd..568ad052a 100644 --- a/include/channel.php +++ b/include/channel.php @@ -9,6 +9,7 @@ use Zotlabs\Access\PermissionRoles; use Zotlabs\Access\PermissionLimits; use Zotlabs\Access\Permissions; use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Crypto; use Zotlabs\Lib\System; use Zotlabs\Render\Comanche; @@ -108,11 +109,11 @@ function create_sys_channel() { // Ensure that there is a host keypair. - if ((! get_config('system', 'pubkey')) && (! get_config('system', 'prvkey'))) { + if ((! Config::Get('system', 'pubkey')) && (! Config::Get('system', 'prvkey'))) { require_once('include/crypto.php'); $hostkey = Crypto::new_keypair(4096); - set_config('system', 'pubkey', $hostkey['pubkey']); - set_config('system', 'prvkey', $hostkey['prvkey']); + Config::Set('system', 'pubkey', $hostkey['pubkey']); + Config::Set('system', 'prvkey', $hostkey['prvkey']); } create_identity([ @@ -357,10 +358,10 @@ function create_identity($arr) { 'hubloc_primary' => intval($primary), 'hubloc_url' => z_root(), 'hubloc_url_sig' => Libzot::sign(z_root(),$ret['channel']['channel_prvkey']), - 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(),get_config('system','pubkey')), + 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(),Config::Get('system','pubkey')), 'hubloc_host' => App::get_hostname(), 'hubloc_callback' => z_root() . '/zot', - 'hubloc_sitekey' => get_config('system','pubkey'), + 'hubloc_sitekey' => Config::Get('system','pubkey'), 'hubloc_network' => 'zot6', 'hubloc_updated' => datetime_convert() ] @@ -493,7 +494,7 @@ function create_identity($arr) { // otherwise it could get annoying. Don't make this list too big // or it will impact registration time. - $accts = get_config('system','auto_follow'); + $accts = Config::Get('system','auto_follow'); if(($accts) && (! $total_identities)) { if(! is_array($accts)) $accts = array($accts); @@ -1591,7 +1592,7 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $details = $reddress = true; $connect_url = ''; $connect = ''; - $default_cover = get_config('system', 'default_cover_photo', 'hubzilla'); + $default_cover = Config::Get('system', 'default_cover_photo', 'hubzilla'); $default_cover_url = z_root() . '/images/default_cover_photos/' . $default_cover . '/425.png'; @@ -2040,7 +2041,7 @@ function get_theme_uid() { * @return string with path to profile photo */ function get_default_profile_photo($size = 300) { - $scheme = get_config('system','default_profile_photo'); + $scheme = Config::Get('system','default_profile_photo'); if(! $scheme) $scheme = 'rainbow_man'; @@ -2171,7 +2172,7 @@ function is_public_profile() { if(! local_channel()) return false; - if(intval(get_config('system','block_public'))) + if(intval(Config::Get('system','block_public'))) return false; $channel = App::get_channel(); @@ -2186,7 +2187,7 @@ function is_public_profile() { function get_profile_fields_basic($filter = 0) { - $profile_fields_basic = (($filter == 0) ? get_config('system','profile_fields_basic') : null); + $profile_fields_basic = (($filter == 0) ? Config::Get('system','profile_fields_basic') : null); if(! $profile_fields_basic) $profile_fields_basic = array('fullname','pdesc','chandesc','comms','gender','dob','dob_tz','region','country_name','marital','sexual','homepage','hometown','keywords','about','contact'); @@ -2202,7 +2203,7 @@ function get_profile_fields_basic($filter = 0) { function get_profile_fields_advanced($filter = 0) { $basic = get_profile_fields_basic($filter); - $profile_fields_advanced = (($filter == 0) ? get_config('system','profile_fields_advanced') : null); + $profile_fields_advanced = (($filter == 0) ? Config::Get('system','profile_fields_advanced') : null); if(! $profile_fields_advanced) $profile_fields_advanced = array('address','locality','postal_code','partner','howlong','politic','religion','likes','dislikes','interest','channels','music','book','film','tv','romance','employment','education'); @@ -2423,7 +2424,7 @@ function get_zcard($channel, $observer_hash = '', $args = array()) { $cover = $r[0]; $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['imgscale']; } else { - $default_cover = get_config('system', 'default_cover_photo', 'hubzilla'); + $default_cover = Config::Get('system', 'default_cover_photo', 'hubzilla'); $cover = [ 'href' => z_root() . '/images/default_cover_photos/' . $default_cover . '/' . $cover_width . '.png' ]; } @@ -2500,7 +2501,7 @@ function get_zcard_embed($channel, $observer_hash = '', $args = array()) { $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['imgscale']; } else { - $default_cover = get_config('system', 'default_cover_photo', 'hubzilla'); + $default_cover = Config::Get('system', 'default_cover_photo', 'hubzilla'); $cover = [ 'href' => z_root() . '/images/default_cover_photos/' . $default_cover . '/' . $cover_width . '.png' ]; } diff --git a/include/cli_startup.php b/include/cli_startup.php index b9e7d124d..012b29fbf 100644 --- a/include/cli_startup.php +++ b/include/cli_startup.php @@ -2,11 +2,13 @@ require_once('boot.php'); +use Zotlabs\Lib\Config; + // Everything we need to boot standalone 'background' processes function cli_startup() { sys_boot(); - App::set_baseurl(get_config('system','baseurl')); + App::set_baseurl(Config::Get('system','baseurl')); } diff --git a/include/config.php b/include/config.php index ec3547a82..674d5afe4 100644 --- a/include/config.php +++ b/include/config.php @@ -31,18 +31,83 @@ use Zotlabs\Lib as Zlib; +/** + * Loads the hub's configuration from database to a cached storage. + * + * Retrieve a category ($family) of config variables from database to a cached + * storage in the global App::$config[$family]. + * + * @param string $family The category of the configuration value + * + * @return Nothing + * + * @deprecated + * This function is deprecated, use Zotlabs\Lib\Config::Load + * instead. + */ function load_config($family) { Zlib\Config::Load($family); } +/** + * Get a particular config variable given the category name ($family) + * and a key. + * + * Get a particular config variable from the given category ($family) and the + * $key from a cached storage in App::$config[$family]. If a key is found in the + * DB but does not exist in local config cache, pull it into the cache so we + * do not have to hit the DB again for this item. + * + * Returns false if not set. + * + * @param string $family The category of the configuration value + * @param string $key The configuration key to query + * @param string $default (optional) default false + * + * @return mixed|false Return value or false on error or if not set + * + * @deprecated + * This function is deprecated, use Zotlabs\Lib\Config::Get + * instead. + */ function get_config($family, $key, $default = false) { return Zlib\Config::Get($family,$key,$default); } +/** + * Sets a configuration value for the hub. + * + * Stores a config value ($value) in the category ($family) under the key ($key). + * + * @param string $family The category of the configuration value + * @param string $key The configuration key to set + * @param mixed $value The value to store in the configuration + * + * @return mixed|false Return the set value, or false if the database update failed + * + * @deprecated + * This function is deprecated, use Zotlabs\Lib\Config::Set + * instead. + */ function set_config($family, $key, $value) { return Zlib\Config::Set($family,$key,$value); } +/** + * Deletes the given key from the hub's configuration database. + * + * Removes the configured value from the stored cache in App::$config[$family] + * and removes it from the database. + * + * @param string $family The category of the configuration value + * @param string $key The configuration key to delete + * + * @return mixed + * + * @deprecated + * This function is deprecated, use Zotlabs\Lib\Config::Delete + * instead. + */ function del_config($family, $key) { return Zlib\Config::Delete($family,$key); } diff --git a/include/connections.php b/include/connections.php index 9a6ee7d8d..e5cc90411 100644 --- a/include/connections.php +++ b/include/connections.php @@ -1,6 +1,7 @@ ' diff --git a/include/conversation.php b/include/conversation.php index 79fe12d54..3992f06f6 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1,7 +1,8 @@ false ); - $conf = get_config('system','openssl_conf_file'); + $conf = Config::Get('system','openssl_conf_file'); if($conf) $openssl_options['config'] = $conf; @@ -460,12 +462,12 @@ function convert_salmon_key($key) { function z_obscure($s) { - return json_encode(crypto_encapsulate($s,get_config('system','pubkey'))); + return json_encode(crypto_encapsulate($s,Config::Get('system','pubkey'))); } function z_unobscure($s) { if(strpos($s,"{\"") !== 0) return $s; - return crypto_unencapsulate(json_decode($s,true),get_config('system','prvkey')); + return crypto_unencapsulate(json_decode($s,true),Config::Get('system','prvkey')); } diff --git a/include/event.php b/include/event.php index 701f3c330..ef73fc9b5 100644 --- a/include/event.php +++ b/include/event.php @@ -8,6 +8,7 @@ use Sabre\VObject; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; use Zotlabs\Access\AccessList; @@ -237,7 +238,7 @@ function ical_wrapper($ev) { $o .= "BEGIN:VCALENDAR"; $o .= "\r\nVERSION:2.0"; $o .= "\r\nMETHOD:PUBLISH"; - $o .= "\r\nPRODID:-//" . get_config('system','sitename') . "//" . Zotlabs\Lib\System::get_platform_name() . "//" . strtoupper(App::$language). "\r\n"; + $o .= "\r\nPRODID:-//" . Config::Get('system','sitename') . "//" . Zotlabs\Lib\System::get_platform_name() . "//" . strtoupper(App::$language). "\r\n"; if(array_key_exists('dtstart', $ev)) $o .= format_event_ical($ev); else { diff --git a/include/features.php b/include/features.php index e57859aa8..d527f60e6 100644 --- a/include/features.php +++ b/include/features.php @@ -4,17 +4,15 @@ * Features management */ - - - +use Zotlabs\Lib\Config; function feature_enabled($uid,$feature) { - $x = get_config('feature_lock',$feature); + $x = Config::Get('feature_lock',$feature); if($x === false) { $x = get_pconfig($uid,'feature',$feature); if($x === false) { - $x = get_config('feature',$feature); + $x = Config::Get('feature',$feature); if($x === false) $x = get_feature_default($feature); } @@ -38,7 +36,7 @@ function get_feature_default($feature) { function feature_level($feature,$def) { - $x = get_config('feature_level',$feature); + $x = Config::Get('feature_level',$feature); if($x !== false) return intval($x); return $def; @@ -86,7 +84,7 @@ function get_features($filtered = true, $level = (-1)) { t('Start calendar week on Monday'), t('Default is Sunday'), false, - get_config('feature_lock','cal_first_day') + Config::Get('feature_lock','cal_first_day') ], [ @@ -94,7 +92,7 @@ function get_features($filtered = true, $level = (-1)) { t('Event Timezone Selection'), t('Allow event creation in timezones other than your own.'), false, - get_config('feature_lock','event_tz_select'), + Config::Get('feature_lock','event_tz_select'), ] ], @@ -108,7 +106,7 @@ function get_features($filtered = true, $level = (-1)) { t('Search by Date'), t('Ability to select posts by date ranges'), false, - get_config('feature_lock','archives') + Config::Get('feature_lock','archives') ], [ @@ -116,7 +114,7 @@ function get_features($filtered = true, $level = (-1)) { t('Tag Cloud'), t('Provide a personal tag cloud on your channel page'), false, - get_config('feature_lock','tagadelic'), + Config::Get('feature_lock','tagadelic'), ], [ @@ -124,7 +122,7 @@ function get_features($filtered = true, $level = (-1)) { t('Use blog/list mode'), t('Comments will be displayed separately'), false, - get_config('feature_lock','channel_list_mode'), + Config::Get('feature_lock','channel_list_mode'), ] ], @@ -137,7 +135,7 @@ function get_features($filtered = true, $level = (-1)) { t('Connection Filtering'), t('Filter incoming posts from connections based on keywords/content'), false, - get_config('feature_lock','connfilter') + Config::Get('feature_lock','connfilter') ] ], @@ -150,7 +148,7 @@ function get_features($filtered = true, $level = (-1)) { t('Community Tagging'), t('Ability to tag existing posts'), false, - get_config('feature_lock','commtag'), + Config::Get('feature_lock','commtag'), ], */ [ @@ -158,7 +156,7 @@ function get_features($filtered = true, $level = (-1)) { t('Emoji Reactions'), t('Add emoji reaction ability to posts'), true, - get_config('feature_lock','emojis'), + Config::Get('feature_lock','emojis'), ], [ @@ -166,7 +164,7 @@ function get_features($filtered = true, $level = (-1)) { t('Dislike Posts'), t('Ability to dislike posts/comments'), false, - get_config('feature_lock','dislike'), + Config::Get('feature_lock','dislike'), ], [ @@ -174,7 +172,7 @@ function get_features($filtered = true, $level = (-1)) { t('Star Posts'), t('Ability to mark special posts with a star indicator'), false, - get_config('feature_lock','star_posts'), + Config::Get('feature_lock','star_posts'), ], [ @@ -182,7 +180,7 @@ function get_features($filtered = true, $level = (-1)) { t('Reply on comment'), t('Ability to reply on selected comment'), false, - get_config('feature_lock','reply_to'), + Config::Get('feature_lock','reply_to'), ] ], @@ -196,7 +194,7 @@ function get_features($filtered = true, $level = (-1)) { t('Advanced Directory Search'), t('Allows creation of complex directory search queries'), false, - get_config('feature_lock','advanced_dirsearch'), + Config::Get('feature_lock','advanced_dirsearch'), ] ], @@ -210,7 +208,7 @@ function get_features($filtered = true, $level = (-1)) { t('Post Categories'), t('Add categories to your posts'), false, - get_config('feature_lock','categories'), + Config::Get('feature_lock','categories'), ], [ @@ -218,7 +216,7 @@ function get_features($filtered = true, $level = (-1)) { t('Large Photos'), t('Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails'), false, - get_config('feature_lock','large_photos'), + Config::Get('feature_lock','large_photos'), ], [ @@ -226,7 +224,7 @@ function get_features($filtered = true, $level = (-1)) { t('Even More Encryption'), t('Allow optional encryption of content end-to-end with a shared secret key'), false, - get_config('feature_lock','content_encrypt'), + Config::Get('feature_lock','content_encrypt'), ], [ @@ -234,7 +232,7 @@ function get_features($filtered = true, $level = (-1)) { t('Disable Comments'), t('Provide the option to disable comments for a post'), false, - get_config('feature_lock','disable_comments'), + Config::Get('feature_lock','disable_comments'), ], [ @@ -242,7 +240,7 @@ function get_features($filtered = true, $level = (-1)) { t('Delayed Posting'), t('Allow posts to be published at a later date'), false, - get_config('feature_lock','delayed_posting'), + Config::Get('feature_lock','delayed_posting'), ], [ @@ -250,7 +248,7 @@ function get_features($filtered = true, $level = (-1)) { t('Content Expiration'), t('Remove posts/comments and/or private messages at a future time'), false, - get_config('feature_lock','content_expire'), + Config::Get('feature_lock','content_expire'), ], [ @@ -258,7 +256,7 @@ function get_features($filtered = true, $level = (-1)) { t('Suppress Duplicate Posts/Comments'), t('Prevent posts with identical content to be published with less than two minutes in between submissions.'), true, - get_config('feature_lock','suppress_duplicates'), + Config::Get('feature_lock','suppress_duplicates'), ], [ @@ -266,7 +264,7 @@ function get_features($filtered = true, $level = (-1)) { t('Auto-save drafts of posts and comments'), t('Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions'), true, - get_config('feature_lock','auto_save_draft'), + Config::Get('feature_lock','auto_save_draft'), ] ], @@ -280,7 +278,7 @@ function get_features($filtered = true, $level = (-1)) { t('Navigation Channel Select'), t('Change channels directly from within the navigation dropdown menu'), false, - get_config('feature_lock','nav_channel_select'), + Config::Get('feature_lock','nav_channel_select'), ] ], @@ -294,7 +292,7 @@ function get_features($filtered = true, $level = (-1)) { t('Events Filter'), t('Ability to display only events'), false, - get_config('feature_lock','events_tab') + Config::Get('feature_lock','events_tab') ], [ @@ -302,7 +300,7 @@ function get_features($filtered = true, $level = (-1)) { t('Polls Filter'), t('Ability to display only polls'), false, - get_config('feature_lock','polls_tab') + Config::Get('feature_lock','polls_tab') ], [ @@ -310,7 +308,7 @@ function get_features($filtered = true, $level = (-1)) { t('Saved Searches'), t('Save search terms for re-use'), false, - get_config('feature_lock','savedsearch') + Config::Get('feature_lock','savedsearch') ], [ @@ -318,7 +316,7 @@ function get_features($filtered = true, $level = (-1)) { t('Saved Folders'), t('Ability to file posts under folders'), false, - get_config('feature_lock','filing'), + Config::Get('feature_lock','filing'), ], [ @@ -326,7 +324,7 @@ function get_features($filtered = true, $level = (-1)) { t('Alternate Stream Order'), t('Ability to order the stream by last post date, last comment date or unthreaded activities'), false, - get_config('feature_lock','order_tab') + Config::Get('feature_lock','order_tab') ], [ @@ -334,7 +332,7 @@ function get_features($filtered = true, $level = (-1)) { t('Contact Filter'), t('Ability to display only posts of a selected contact'), false, - get_config('feature_lock','name_tab') + Config::Get('feature_lock','name_tab') ], [ @@ -342,7 +340,7 @@ function get_features($filtered = true, $level = (-1)) { t('Forum Filter'), t('Ability to display only posts of a specific forum'), false, - get_config('feature_lock','forums_tab') + Config::Get('feature_lock','forums_tab') ], [ @@ -350,7 +348,7 @@ function get_features($filtered = true, $level = (-1)) { t('Personal Posts Filter'), t('Ability to display only posts that you\'ve interacted on'), false, - get_config('feature_lock','personal_tab') + Config::Get('feature_lock','personal_tab') ], [ @@ -358,7 +356,7 @@ function get_features($filtered = true, $level = (-1)) { t('Use blog/list mode'), t('Comments will be displayed separately'), false, - get_config('feature_lock','network_list_mode'), + Config::Get('feature_lock','network_list_mode'), ] ], @@ -372,7 +370,7 @@ function get_features($filtered = true, $level = (-1)) { t('Photo Location'), t('If location data is available on uploaded photos, link this to a map.'), false, - get_config('feature_lock','photo_location'), + Config::Get('feature_lock','photo_location'), ], [ @@ -380,7 +378,7 @@ function get_features($filtered = true, $level = (-1)) { t('Flag Adult Photos'), t('Provide photo edit option to hide inappropriate photos from default album view'), false, - get_config('feature_lock','adult_photo_flagging'), + Config::Get('feature_lock','adult_photo_flagging'), ] ], @@ -394,7 +392,7 @@ function get_features($filtered = true, $level = (-1)) { t('Advanced Profiles'), t('Additional profile sections and selections'), false, - get_config('feature_lock','advanced_profiles') + Config::Get('feature_lock','advanced_profiles') ], [ @@ -402,7 +400,7 @@ function get_features($filtered = true, $level = (-1)) { t('Profile Import/Export'), t('Save and load profile details across sites/channels'), false, - get_config('feature_lock','profile_export') + Config::Get('feature_lock','profile_export') ], [ @@ -410,7 +408,7 @@ function get_features($filtered = true, $level = (-1)) { t('Multiple Profiles'), t('Ability to create multiple profiles'), false, - get_config('feature_lock','multi_profiles') + Config::Get('feature_lock','multi_profiles') ] ] diff --git a/include/feedutils.php b/include/feedutils.php index f05c15414..a50214746 100644 --- a/include/feedutils.php +++ b/include/feedutils.php @@ -4,6 +4,8 @@ * @brief Some functions to work with XML feeds. */ +use Zotlabs\Lib\Config; + /** * @brief Return an Atom feed for channel. * @@ -1037,7 +1039,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { - $sys_expire = intval(get_config('system', 'default_expire_days')); + $sys_expire = intval(Config::Get('system', 'default_expire_days')); $chn_expire = intval($importer['channel_expire_days']); $expire_days = $sys_expire; @@ -1325,7 +1327,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { // but save the thread_parent in case we need to refer to it later. if($importer['channel_system']) { - if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,get_config('system','pubstream_incl'),get_config('system','pubstream_excl'))) { + if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,Config::Get('system','pubstream_incl'),Config::Get('system','pubstream_excl'))) { continue; } } @@ -1481,7 +1483,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { } if($importer['channel_system']) { - if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,get_config('system','pubstream_incl'),get_config('system','pubstream_excl'))) { + if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,Config::Get('system','pubstream_incl'),Config::Get('system','pubstream_excl'))) { continue; } } diff --git a/include/hubloc.php b/include/hubloc.php index 4d2980a6b..982455f9c 100644 --- a/include/hubloc.php +++ b/include/hubloc.php @@ -5,6 +5,7 @@ */ use Zotlabs\Daemon\Master; +use Zotlabs\Lib\Config; /** * @brief Create an array for hubloc table and insert record. @@ -129,7 +130,7 @@ function remove_obsolete_hublocs() { $r = q("select hubloc_id from hubloc where hubloc_url = '%s' and hubloc_sitekey = '%s'", dbesc(z_root()), - dbesc(get_config('system', 'pubkey')) + dbesc(Config::Get('system', 'pubkey')) ); if((! $r) || (! count($r))) return; @@ -139,11 +140,11 @@ function remove_obsolete_hublocs() { // Do we have any invalid ones? $r = q("select hubloc_id, hubloc_hash from hubloc where hubloc_sitekey = '%s' and hubloc_url != '%s'", - dbesc(get_config('system', 'pubkey')), + dbesc(Config::Get('system', 'pubkey')), dbesc(z_root()) ); $p = q("select hubloc_id, hubloc_hash from hubloc where hubloc_sitekey != '%s' and hubloc_url = '%s'", - dbesc(get_config('system', 'pubkey')), + dbesc(Config::Get('system', 'pubkey')), dbesc(z_root()) ); if(is_array($r) && is_array($p)) @@ -156,7 +157,7 @@ function remove_obsolete_hublocs() { logger('remove_obsolete_hublocs: removing ' . count($r) . ' hublocs.'); - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); foreach($r as $rr) { q("update hubloc set hubloc_deleted = 1 where hubloc_id = %d", diff --git a/include/import.php b/include/import.php index 7dac518f5..479c2c255 100644 --- a/include/import.php +++ b/include/import.php @@ -1,6 +1,7 @@ $unless) { $tagged = false; } @@ -3762,7 +3763,7 @@ function item_expire($uid,$days,$comment_days = 7) { $sql_extra = ((intval($expire_network_only)) ? " AND item_wall = 0 " : ""); - $expire_limit = get_config('system','expire_limit', 1000); + $expire_limit = Config::Get('system','expire_limit', 1000); $item_normal = item_normal(); diff --git a/include/language.php b/include/language.php index 1b2e7332e..22f350aac 100644 --- a/include/language.php +++ b/include/language.php @@ -10,6 +10,7 @@ use CommerceGuys\Intl\Language\LanguageRepository; use LanguageDetection\Language; +use Zotlabs\Lib\Config; /** * @brief Get the browser's submitted preferred languages. @@ -17,7 +18,7 @@ use LanguageDetection\Language; * This functions parses the HTTP_ACCEPT_LANGUAGE header sent by the browser and * extracts the preferred languages and their priority. * - * Get the language setting directly from system variables, bypassing get_config() + * Get the language setting directly from system variables, bypassing Config::Get() * as database may not yet be configured. * * If possible, we use the value from the browser. @@ -313,8 +314,8 @@ function detect_language($s) { return EMPTY_STR; } - $min_length = get_config('system', 'language_detect_min_length', LANGUAGE_DETECT_MIN_LENGTH); - $min_confidence = get_config('system', 'language_detect_min_confidence', LANGUAGE_DETECT_MIN_CONFIDENCE); + $min_length = Config::Get('system', 'language_detect_min_length', LANGUAGE_DETECT_MIN_LENGTH); + $min_confidence = Config::Get('system', 'language_detect_min_confidence', LANGUAGE_DETECT_MIN_CONFIDENCE); // embedded apps have long base64 strings which will trip up the detector. $naked_body = preg_replace('/\[app\](.*?)\[\/app\]/', '', $s); diff --git a/include/nav.php b/include/nav.php index e4df7e4e5..a68d564a0 100644 --- a/include/nav.php +++ b/include/nav.php @@ -2,6 +2,7 @@ use \Zotlabs\Lib\Apps; use \Zotlabs\Lib\Chatroom; +use \Zotlabs\Lib\Config; require_once('include/security.php'); require_once('include/menu.php'); @@ -57,10 +58,10 @@ function nav($template = 'default') { * */ - $banner = get_config('system', 'banner'); + $banner = Config::Get('system', 'banner'); if ($banner === false) - $banner = get_config('system', 'sitename'); + $banner = Config::Get('system', 'sitename'); call_hooks('get_banner', $banner); @@ -175,15 +176,15 @@ function nav($template = 'default') { ]; } - if ((get_config('system', 'register_policy') == REGISTER_OPEN || get_config('system', 'register_policy') == REGISTER_APPROVE) && empty($_SESSION['authenticated'])) { + if ((Config::Get('system', 'register_policy') == REGISTER_OPEN || Config::Get('system', 'register_policy') == REGISTER_APPROVE) && empty($_SESSION['authenticated'])) { $nav['register'] = ['register', t('Register'), "", t('Create an account'), 'register_nav_btn']; } // TODO: update help content for various modules - if (false /* !get_config('system', 'hide_help') */) { + if (false /* !Config::Get('system', 'hide_help') */) { $help_url = z_root() . '/help?f=&cmd=' . App::$cmd; $context_help = ''; - $enable_context_help = ((intval(get_config('system', 'enable_context_help')) === 1 || get_config('system', 'enable_context_help') === false) ? true : false); + $enable_context_help = ((intval(Config::Get('system', 'enable_context_help')) === 1 || Config::Get('system', 'enable_context_help') === false) ? true : false); if ($enable_context_help === true) { require_once('include/help.php'); $context_help = load_context_help(); @@ -350,7 +351,7 @@ function nav($template = 'default') { '$pleasewait' => t('Please wait...'), '$nav_apps' => $nav_apps, '$navbar_apps' => $navbar_apps, - '$channel_menu' => get_pconfig(App::$profile_uid, 'system', 'channel_menu', get_config('system', 'channel_menu')), + '$channel_menu' => get_pconfig(App::$profile_uid, 'system', 'channel_menu', Config::Get('system', 'channel_menu')), '$channel_thumb' => ((App::$profile) ? App::$profile['thumb'] : ''), '$channel_apps' => $channel_apps, '$addapps' => t('Apps'), diff --git a/include/network.php b/include/network.php index a5c14f9d1..a7a11ff6e 100644 --- a/include/network.php +++ b/include/network.php @@ -1,6 +1,7 @@ intval(get_config('system','force_queue_threshold',3000)) && (! $force)) { + if(intval($x[0]['total']) > intval(Config::Get('system','force_queue_threshold',3000)) && (! $force)) { logger('immediate delivery deferred.', LOGGER_DEBUG, LOG_INFO); foreach($deliveries as $d) { Queue::update($d); @@ -1482,9 +1483,9 @@ function do_delivery($deliveries, $force = false) { */ - $interval = get_config('queueworker', 'queue_interval', 500000); + $interval = Config::Get('queueworker', 'queue_interval', 500000); - $deliveries_per_process = intval(get_config('system','delivery_batch_count')); + $deliveries_per_process = intval(Config::Get('system','delivery_batch_count')); if($deliveries_per_process <= 0) $deliveries_per_process = 1; @@ -1542,9 +1543,9 @@ function get_site_info() { $admin = false; } - $def_service_class = get_config('system','default_service_class'); + $def_service_class = Config::Get('system','default_service_class'); if($def_service_class) - $service_class = get_config('service_class',$def_service_class); + $service_class = Config::Get('service_class',$def_service_class); else $service_class = false; @@ -1555,9 +1556,9 @@ function get_site_info() { if(! isset($commit) || strlen($commit) > 16) $commit = ''; - $site_info = get_config('system','info'); - $site_name = get_config('system','sitename'); - if(! get_config('system','hidden_version_siteinfo')) { + $site_info = Config::Get('system','info'); + $site_name = Config::Get('system','sitename'); + if(! Config::Get('system','hidden_version_siteinfo')) { $version = Zotlabs\Lib\System::get_project_version(); $tag = Zotlabs\Lib\System::get_std_version(); @@ -1573,15 +1574,15 @@ function get_site_info() { } //Statistics - $channels_total_stat = intval(get_config('system','channels_total_stat')); - $channels_active_halfyear_stat = intval(get_config('system','channels_active_halfyear_stat')); - $channels_active_monthly_stat = intval(get_config('system','channels_active_monthly_stat')); - $local_posts_stat = intval(get_config('system','local_posts_stat')); - $local_comments_stat = intval(get_config('system','local_comments_stat')); - $hide_in_statistics = intval(get_config('system','hide_in_statistics')); - $site_expire = intval(get_config('system', 'default_expire_days')); - - load_config('feature_lock'); + $channels_total_stat = intval(Config::Get('system','channels_total_stat')); + $channels_active_halfyear_stat = intval(Config::Get('system','channels_active_halfyear_stat')); + $channels_active_monthly_stat = intval(Config::Get('system','channels_active_monthly_stat')); + $local_posts_stat = intval(Config::Get('system','local_posts_stat')); + $local_comments_stat = intval(Config::Get('system','local_comments_stat')); + $hide_in_statistics = intval(Config::Get('system','hide_in_statistics')); + $site_expire = intval(Config::Get('system', 'default_expire_days')); + + Config::Load('feature_lock'); $locked_features = array(); if(is_array(App::$config['feature_lock']) && count(App::$config['feature_lock'])) { foreach(App::$config['feature_lock'] as $k => $v) { @@ -1602,18 +1603,18 @@ function get_site_info() { 'server_role' => Zotlabs\Lib\System::get_server_role(), 'commit' => $commit, 'plugins' => $visible_plugins, - 'register_policy' => $register_policy[get_config('system','register_policy')], - 'invitation_only' => (bool) intval(get_config('system','invitation_only')), - 'directory_mode' => $directory_mode[get_config('system','directory_mode')], - 'directory_server' => get_config('system','directory_server'), - 'language' => get_config('system','language'), - 'rss_connections' => (bool) intval(get_config('system','feed_contacts')), + 'register_policy' => $register_policy[Config::Get('system','register_policy')], + 'invitation_only' => (bool) intval(Config::Get('system','invitation_only')), + 'directory_mode' => $directory_mode[Config::Get('system','directory_mode')], + 'directory_server' => Config::Get('system','directory_server'), + 'language' => Config::Get('system','language'), + 'rss_connections' => (bool) intval(Config::Get('system','feed_contacts')), 'expiration' => $site_expire, 'default_service_restrictions' => $service_class, 'locked_features' => $locked_features, 'admin' => $admin, 'dbdriver' => DBA::$dba->getdriver() . ' ' . ((ACTIVE_DBTYPE == DBTYPE_POSTGRES) ? 'postgres' : 'mysql'), - 'lastpoll' => get_config('system','lastpoll'), + 'lastpoll' => Config::Get('system','lastpoll'), 'info' => (($site_info) ? $site_info : ''), 'channels_total' => $channels_total_stat, 'hide_in_statistics' => $hide_in_statistics @@ -1651,7 +1652,7 @@ function check_siteallowed($url) { if(array_key_exists('allowed',$arr)) return $arr['allowed']; - $bl1 = get_config('system','whitelisted_sites'); + $bl1 = Config::Get('system','whitelisted_sites'); if(is_array($bl1) && $bl1) { foreach($bl1 as $bl) { if($bl1 === '*') @@ -1660,7 +1661,7 @@ function check_siteallowed($url) { return true; } } - $bl1 = get_config('system','blacklisted_sites'); + $bl1 = Config::Get('system','blacklisted_sites'); if(is_array($bl1) && $bl1) { foreach($bl1 as $bl) { if($bl1 === '*') @@ -1696,7 +1697,7 @@ function check_channelallowed($hash) { if(array_key_exists('allowed',$arr)) return $arr['allowed']; - $bl1 = get_config('system','whitelisted_channels'); + $bl1 = Config::Get('system','whitelisted_channels'); if(is_array($bl1) && $bl1) { foreach($bl1 as $bl) { if($bl1 === '*') @@ -1705,7 +1706,7 @@ function check_channelallowed($hash) { return true; } } - $bl1 = get_config('system','blacklisted_channels'); + $bl1 = Config::Get('system','blacklisted_channels'); if(is_array($bl1) && $bl1) { foreach($bl1 as $bl) { if($bl1 === '*') @@ -1810,17 +1811,17 @@ function network_to_name($s) { function z_mail($params) { if(! $params['fromEmail']) { - $params['fromEmail'] = get_config('system','from_email'); + $params['fromEmail'] = Config::Get('system','from_email'); if(! $params['fromEmail']) $params['fromEmail'] = 'Administrator' . '@' . App::get_hostname(); } if(! $params['fromName']) { - $params['fromName'] = get_config('system','from_email_name'); + $params['fromName'] = Config::Get('system','from_email_name'); if(! $params['fromName']) $params['fromName'] = Zotlabs\Lib\System::get_site_name(); } if(! $params['replyTo']) { - $params['replyTo'] = get_config('system','reply_address'); + $params['replyTo'] = Config::Get('system','reply_address'); if(! $params['replyTo']) $params['replyTo'] = 'noreply' . '@' . App::get_hostname(); } diff --git a/include/oauth.php b/include/oauth.php index 845ec4558..3426f9ca5 100644 --- a/include/oauth.php +++ b/include/oauth.php @@ -1,11 +1,13 @@ - * + * */ +use Zotlabs\Lib\Config; + define('REQUEST_TOKEN_DURATION', 300); define('ACCESS_TOKEN_DURATION', 31536000); @@ -18,7 +20,7 @@ class ZotOAuth1DataStore extends OAuth1DataStore { function gen_token(){ return md5(base64_encode(pack('N6', mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), uniqid()))); } - + function lookup_consumer($consumer_key) { logger('consumer_key: ' . $consumer_key, LOGGER_DEBUG); @@ -72,7 +74,7 @@ class ZotOAuth1DataStore extends OAuth1DataStore { $key = $this->gen_token(); $sec = $this->gen_token(); - + if ($consumer->key){ $k = $consumer->key; } else { @@ -94,19 +96,19 @@ class ZotOAuth1DataStore extends OAuth1DataStore { function new_access_token($token, $consumer, $verifier = null) { logger(__function__.":".$token.", ". $consumer.", ". $verifier, LOGGER_DEBUG); - + // return a new access token attached to this consumer // for the user associated with this token if the request token // is authorized // should also invalidate the request token - + $ret=Null; - + // get user for this verifier - $uverifier = get_config("oauth", $verifier); + $uverifier = Config::Get("oauth", $verifier); logger(__function__.":".$verifier.",".$uverifier, LOGGER_DEBUG); if (is_null($verifier) || ($uverifier!==false)) { - + $key = $this->gen_token(); $sec = $this->gen_token(); @@ -119,16 +121,16 @@ class ZotOAuth1DataStore extends OAuth1DataStore { intval($uverifier)); if ($r) - $ret = new OAuth1Token($key,$sec); + $ret = new OAuth1Token($key,$sec); } - - + + q("DELETE FROM tokens WHERE id='%s'", $token->key); - - + + if (!is_null($ret) && $uverifier!==false) { - del_config("oauth", $verifier); - + Config::Delete("oauth", $verifier); + // $apps = get_pconfig($uverifier, "oauth", "apps"); // if ($apps===false) $apps=array(); // $apps[] = $consumer->key; @@ -145,7 +147,7 @@ class ZotOAuth1 extends OAuth1Server { $this->add_signature_method(new OAuth1SignatureMethod_PLAINTEXT()); $this->add_signature_method(new OAuth1SignatureMethod_HMAC_SHA1()); } - + function loginUser($uid){ logger("ZotOAuth1::loginUser $uid"); @@ -174,7 +176,7 @@ class ZotOAuth1 extends OAuth1Server { $_SESSION['allow_api'] = true; } } - + } /* @@ -195,13 +197,13 @@ class FKOAuth2 extends OAuth2 { dbesc($client_secret), dbesc($redirect_uri) ); - + return $r; } protected function checkClientCredentials($client_id, $client_secret = NULL) { $client_secret = $this->db_secret($client_secret); - + $r = q("SELECT pw FROM clients WHERE client_id = '%s'", dbesc($client_id)); @@ -223,21 +225,21 @@ class FKOAuth2 extends OAuth2 { protected function getAccessToken($oauth_token) { $r = q("SELECT client_id, expires, scope FROM tokens WHERE id = '%s'", dbesc($oauth_token)); - + if (count($r)) return $r[0]; return null; } - + protected function setAccessToken($oauth_token, $client_id, $expires, $scope = NULL) { $r = q("INSERT INTO tokens (id, client_id, expires, scope) VALUES ('%s', '%s', %d, '%s')", dbesc($oauth_token), dbesc($client_id), intval($expires), dbesc($scope)); - + return $r; } @@ -251,23 +253,23 @@ class FKOAuth2 extends OAuth2 { protected function getAuthCode($code) { $r = q("SELECT id, client_id, redirect_uri, expires, auth_scope FROM auth_codes WHERE id = '%s'", dbesc($code)); - + if (count($r)) return $r[0]; return null; } protected function setAuthCode($code, $client_id, $redirect_uri, $expires, $scope = NULL) { - $r = q("INSERT INTO auth_codes - (id, client_id, redirect_uri, expires, auth_scope) VALUES + $r = q("INSERT INTO auth_codes + (id, client_id, redirect_uri, expires, auth_scope) VALUES ('%s', '%s', '%s', %d, '%s')", dbesc($code), dbesc($client_id), dbesc($redirect_uri), intval($expires), dbesc($scope)); - return $r; - } - + return $r; + } + } */ diff --git a/include/oauth2.php b/include/oauth2.php index 3a71a651d..f7a279892 100644 --- a/include/oauth2.php +++ b/include/oauth2.php @@ -12,12 +12,12 @@ $oauth2_server->addGrantType(new OAuth2\GrantType\ClientCredentials($storage)); $oauth2_server->addGrantType(new OAuth2\GrantType\AuthorizationCode($storage)); - $keyStorage = new OAuth2\Storage\Memory( [ - 'keys' => [ - 'public_key' => get_config('system','pubkey'), - 'private_key' => get_config('system','prvkey') + $keyStorage = new OAuth2\Storage\Memory( [ + 'keys' => [ + 'public_key' => Config::Get('system','pubkey'), + 'private_key' => Config::Get('system','prvkey') ] ]); $oauth2_server->addStorage($keyStorage,'public_key'); -*/ \ No newline at end of file +*/ diff --git a/include/oembed.php b/include/oembed.php index a90c91641..1b6157241 100644 --- a/include/oembed.php +++ b/include/oembed.php @@ -1,7 +1,7 @@ '', @@ -164,7 +164,7 @@ function oembed_fetch_url($embedurl){ $txt = EMPTY_STR; if ($action !== 'block') { - $max_oembed_size = get_config('system', 'oembed_max_size', 1 * 1024 * 1024 /* 1MB */); + $max_oembed_size = Config::Get('system', 'oembed_max_size', 1 * 1024 * 1024 /* 1MB */); stream_context_set_default( [ @@ -259,7 +259,7 @@ function oembed_fetch_url($embedurl){ // save in cache - if(! get_config('system','oembed_cache_disable')) + if(! Config::Get('system','oembed_cache_disable')) Cache::set('[' . App::$videowidth . '] ' . $furl, $txt); } @@ -429,7 +429,7 @@ function oembed_iframe($src,$width,$height) { function oembed_bbcode2html($text){ - $stopoembed = get_config("system","no_oembed"); + $stopoembed = Config::Get("system","no_oembed"); if ($stopoembed == true){ return preg_replace("/\[embed\](.+?)\[\/embed\]/is", "". t('Embedding disabled') ." : $1" ,$text); } diff --git a/include/permissions.php b/include/permissions.php index 28f242712..be6fc8594 100644 --- a/include/permissions.php +++ b/include/permissions.php @@ -1,5 +1,7 @@ $v) { - $x = get_config('default_perms', $perm, $typical[$perm]); + $x = Config::Get('default_perms', $perm, $typical[$perm]); $ret[$perm] = $x; } diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php index 4394d3238..66a5d19f9 100644 --- a/include/photo/photo_driver.php +++ b/include/photo/photo_driver.php @@ -1,5 +1,6 @@ = 0) { - $limits = get_config('system', 'imagick_limits', false); + $limits = Config::Get('system', 'imagick_limits', false); if ($limits) foreach ($limits as $k => $v) IMagick::setResourceLimit($k, $v); @@ -99,7 +100,7 @@ function guess_image_type($filename, $data = '') { } if(is_null($type)){ - $ignore_imagick = get_config('system', 'ignore_imagick'); + $ignore_imagick = Config::Get('system', 'ignore_imagick'); // Guessing from extension? Isn't that... dangerous? if(class_exists('Imagick') && ! $ignore_imagick) { $v = Imagick::getVersion(); diff --git a/include/photos.php b/include/photos.php index 5e993e15f..85c97d1fd 100644 --- a/include/photos.php +++ b/include/photos.php @@ -6,6 +6,7 @@ use Zotlabs\Access\PermissionLimits; use Zotlabs\Lib\Activity; +use Zotlabs\Lib\Config; require_once('include/permissions.php'); require_once('include/items.php'); @@ -74,11 +75,11 @@ function photo_upload($channel, $observer, $args) { $os_storage = 0; - $max_thumb = get_config('system', 'max_thumbnail', 1600); + $max_thumb = Config::Get('system', 'max_thumbnail', 1600); if ($args['os_syspath'] && $args['getimagesize']) { if ($args['getimagesize'][0] > $max_thumb || $args['getimagesize'][1] > $max_thumb) { - $imagick_path = get_config('system', 'imagick_convert_path'); + $imagick_path = Config::Get('system', 'imagick_convert_path'); if ($imagick_path && @file_exists($imagick_path)) { $tmp_name = $args['os_syspath'] . '-001'; $newsize = photo_calculate_scale(array_merge($args['getimagesize'], ['max' => $max_thumb])); @@ -146,7 +147,7 @@ function photo_upload($channel, $observer, $args) { logger('Received file: ' . $filename . ' as ' . $src . ' (' . $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG); - $maximagesize = get_config('system', 'maximagesize'); + $maximagesize = Config::Get('system', 'maximagesize'); if (($maximagesize) && ($filesize > $maximagesize)) { $ret['message'] = sprintf(t('Image exceeds website size limit of %lu bytes'), $maximagesize); @@ -219,7 +220,7 @@ function photo_upload($channel, $observer, $args) { @unlink($src); - $max_length = get_config('system', 'max_image_length'); + $max_length = Config::Get('system', 'max_image_length'); if (!$max_length) $max_length = MAX_IMAGE_LENGTH; if ($max_length > 0) diff --git a/include/plugin.php b/include/plugin.php index bbfeab988..4601cb544 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -5,6 +5,7 @@ * @brief Some functions to handle addons and themes. */ +use Zotlabs\Lib\Config; /** * @brief Handle errors in plugin calls. @@ -25,7 +26,7 @@ function handleerrors_plugin($plugin, $notice, $log, $uninstall = false){ $idx = array_search($plugin, \App::$plugins); unset(\App::$plugins[$idx]); uninstall_plugin($plugin); - set_config("system", "addon", implode(", ", \App::$plugins)); + Config::Set("system", "addon", implode(", ", \App::$plugins)); } } @@ -187,7 +188,7 @@ function plugin_is_installed($name) { * @brief Reload all updated plugins. */ function reload_plugins() { - $plugins = get_config('system', 'addon'); + $plugins = Config::Get('system', 'addon'); if(strlen($plugins)) { $r = dbq("SELECT * FROM addon WHERE installed = 1"); if($r) @@ -266,7 +267,7 @@ function plugins_sync() { $installed = plugins_installed_list(); - $plugins = get_config('system', 'addon', ''); + $plugins = Config::Get('system', 'addon', ''); $plugins_arr = explode(',', $plugins); @@ -719,7 +720,7 @@ function check_plugin_versions($info) { continue; if(strpos($test,'.')) { $conf = explode('.',$test); - if(get_config(trim($conf[0]),trim($conf[1]))) + if(Config::Get(trim($conf[0]),trim($conf[1]))) return true; else return false; diff --git a/include/security.php b/include/security.php index b3e45742e..bc44704d0 100644 --- a/include/security.php +++ b/include/security.php @@ -5,6 +5,8 @@ * @brief Some security related functions. */ +use Zotlabs\Lib\Config; + /** * @param int $user_record The account_id * @param array $channel @@ -872,7 +874,7 @@ function stream_perms_xchans($perms = NULL) { */ function zarIsDuty($wd=NULL, $hhmm=NULL, $op='isOpen') { - $isduty = get_config('system', 'register_duty_jso'); + $isduty = Config::Get('system', 'register_duty_jso'); if (!$isduty) return (bool)false; diff --git a/include/socgraph.php b/include/socgraph.php index e5e8ddf74..336c1c0c3 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -1,6 +1,7 @@ $loglevel)) @@ -846,9 +847,9 @@ function dlogger($msg, $level = 0) { if(App::$module == 'setup') return; - $debugging = get_config('system','debugging'); - $loglevel = intval(get_config('system','loglevel')); - $logfile = get_config('system','dlogfile'); + $debugging = Config::Get('system','debugging'); + $loglevel = intval(Config::Get('system','loglevel')); + $logfile = Config::Get('system','dlogfile'); if((! $debugging) || (! $logfile) || ($level > $loglevel)) return; @@ -1253,7 +1254,7 @@ function sslify($s) { // The downside is that http: media files will likely be blocked by your browser // Complain to your browser maker - $allow = get_config('system','sslify_everything'); + $allow = Config::Get('system','sslify_everything'); $pattern = (($allow) ? "/\<(.*?)src=[\"|'](http\:.*?)[\"|'](.*?)\>/" : "/\/" ); $matches = null; @@ -1407,7 +1408,7 @@ function list_smilies($default_only = false) { */ function smilies($s, $sample = false) { - if(intval(get_config('system', 'no_smilies')) + if(intval(Config::Get('system', 'no_smilies')) || (local_channel() && intval(get_pconfig(local_channel(), 'system', 'no_smilies')))) return $s; @@ -2113,7 +2114,7 @@ function create_export_photo_body(&$item) { * @return string */ function feed_hublinks() { - $hub = get_config('system', 'huburl'); + $hub = Config::Get('system', 'huburl'); $hubxml = ''; if(strlen($hub)) { @@ -2496,7 +2497,7 @@ function check_webbie($arr) { // These names conflict with the CalDAV server $taken = [ 'principals', 'addressbooks', 'calendars' ]; - $reservechan = get_config('system','reserved_channels'); + $reservechan = Config::Get('system','reserved_channels'); if(strlen($reservechan)) { $taken = array_merge($taken,explode(',', $reservechan)); } diff --git a/include/zid.php b/include/zid.php index b38457d99..9f0b23edf 100644 --- a/include/zid.php +++ b/include/zid.php @@ -1,5 +1,6 @@ imageString() */ public function testImagestringReturnsABinaryString() { - // Create a stub for global function get_config() - // get_config('system', 'png_quality') - // get_config('system', 'jpeg_quality'); - $gc = $this->getFunctionMock('Zotlabs\Photo', 'get_config'); - $gc->expects($this->once())->willReturnCallback( - function() { - switch($this->photoGd->getType()){ - case 'image/png': - return 7; - case 'image/jpeg': - default: - return 70; - } - } - ); + // Init config with a known value for the test + \Zotlabs\Lib\Config::Set('system', 'png_quality', 7); $this->assertIsString($this->photoGd->imageString()); } diff --git a/tests/unit/Web/HttpSigTest.php b/tests/unit/Web/HttpSigTest.php index 0a22b543a..c01e4f6a3 100644 --- a/tests/unit/Web/HttpSigTest.php +++ b/tests/unit/Web/HttpSigTest.php @@ -84,9 +84,8 @@ class HttpSigTest extends UnitTestCase { } function testDecrypt_sigheaderUseSitePrivateKey() { - // Create a stub for global function get_config() with expectation - $t = $this->getFunctionMock('Zotlabs\Web', 'get_config'); - $t->expects($this->once())->willReturn('system.prvkey'); + // Initialize config with a known value for test + \Zotlabs\Lib\Config::Set('system', 'prvkey', 'system.prvkey'); $header = 'Header: iv="value_iv" key="value_key" alg="value_alg" data="value_data"'; $result = [ diff --git a/util/addons b/util/addons index 7bd70984e..f700dfcf7 100755 --- a/util/addons +++ b/util/addons @@ -19,7 +19,9 @@ require_once('include/cli_startup.php'); cli_startup(); - $plugs = get_config('system', 'addon'); +use Zotlabs\Lib\Config; + + $plugs = Config::Get('system', 'addon'); $plugins_arr = array(); if($plugs) @@ -42,7 +44,7 @@ cli_startup(); if ($idz !== false) { unset(App::$plugins[$idz]); uninstall_plugin($id); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); @@ -65,7 +67,7 @@ if($argc == 2 && $argv[1] === 'list') { echo $p[0] . "\n"; } } - } + } killme(); } @@ -89,7 +91,7 @@ if($argc == 3 && $argv[1] === 'list' && $argv[2] === 'all') { foreach($plugins as $p) { echo $p[0] . (($p[1]) ? $p[1] : (($p[2]['disabled']) ? '!' : '')) . "\n"; } - } + } killme(); } @@ -107,12 +109,12 @@ if($argc == 3 && $argv[1] === 'install') { else { App::$plugins[] = $p[0]; install_plugin($p[0]); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); echo $p[0] . ' installed.' . "\n"; } } } - } + } killme(); } @@ -136,12 +138,12 @@ if($argc == 3 && $argv[1] === 'uninstall') { if ($idx !== false) unset(App::$plugins[$idx]); uninstall_plugin($p[0]); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); echo $p[0] . ' uninstalled.' . "\n"; } } } - } + } // force uninstall of addon which no longer exists @@ -150,7 +152,7 @@ if($argc == 3 && $argv[1] === 'uninstall') { if ($idx !== false) unset(App::$plugins[$idx]); uninstall_plugin($argv[2]); - set_config("system","addon", implode(", ",App::$plugins)); + Config::Set("system","addon", implode(", ",App::$plugins)); echo $argv[2] . ' uninstalled.' . "\n"; } diff --git a/util/config b/util/config index cfe4500b5..c0f51b3fb 100755 --- a/util/config +++ b/util/config @@ -12,13 +12,14 @@ require_once('include/cli_startup.php'); cli_startup(); +use Zotlabs\Lib\Config; $helpArgs = getopt('h', array('help')); if (count($helpArgs) === 1) { echo <<<'EndOfOutput' Gets, sets, or lists site-wide configuration settings. -Usage: util/config +Usage: util/config util/config util/config util/config @@ -36,8 +37,8 @@ Usage: util/config Set config entry for specified family and key to value and display result Notes: - Setting config entries which are manually set in .htconfig.php may result - in conflict between database settings and the manual startup settings. + Setting config entries which are manually set in .htconfig.php may result + in conflict between database settings and the manual startup settings. For channel-specific configuration settings, use util/pconfig @@ -55,16 +56,16 @@ if($argc > 1 && strpos($argv[1],'.')) { } if($argc > 3) { - set_config($argv[1],$argv[2],$argv[3]); - echo "config[{$argv[1]}][{$argv[2]}] = " . printable_config(get_config($argv[1],$argv[2])) . "\n"; + Config::Set($argv[1],$argv[2],$argv[3]); + echo "config[{$argv[1]}][{$argv[2]}] = " . printable_config(Config::Get($argv[1],$argv[2])) . "\n"; } if($argc == 3) { - echo "config[{$argv[1]}][{$argv[2]}] = " . printable_config(get_config($argv[1],$argv[2])) . "\n"; + echo "config[{$argv[1]}][{$argv[2]}] = " . printable_config(Config::Get($argv[1],$argv[2])) . "\n"; } if($argc == 2) { - load_config($argv[1]); + Config::Load($argv[1]); foreach(App::$config[$argv[1]] as $k => $x) { echo "config[{$argv[1]}][{$k}] = " . $x . "\n"; } @@ -89,4 +90,4 @@ function printable_config($x) { } else return $x; -} \ No newline at end of file +} diff --git a/util/db_update.php b/util/db_update.php index 8fc7c7616..d74dc6ca3 100755 --- a/util/db_update.php +++ b/util/db_update.php @@ -9,7 +9,9 @@ require_once('boot.php'); require_once('include/cli_startup.php'); cli_startup(); -$build = get_config('system','db_version'); +use Zotlabs\Lib\Config; + +$build = Config::Get('system','db_version'); echo "Old DB VERSION: " . $build . "\n"; echo "New DB VERSION: " . DB_UPDATE_VERSION . "\n"; diff --git a/util/service_class b/util/service_class index b8a1f2386..afad4c709 100755 --- a/util/service_class +++ b/util/service_class @@ -7,10 +7,12 @@ require_once('include/cli_startup.php'); cli_startup(); +use Zotlabs\Lib\Config; + if($argc > 3) { - $d = get_config('service_class', $argv[1]); + $d = Config::Get('service_class', $argv[1]); $d[$argv[2]] = $argv[3]; - set_config('service_class', $argv[1], $d); + Config::Set('service_class', $argv[1], $d); echo 'Updated service class "' . $argv[1] . '" service "' . $argv[2] . '" to ' . $argv[3] . "\n"; } @@ -24,7 +26,7 @@ if($argc == 3) { ); if(!$r) die('could not find channel'); - + $acct = intval($r[0]['channel_account_id']); } else { exit(); @@ -34,28 +36,28 @@ if($argc == 3) { ); if(!$r) die('could not find account'); - + $c = q('SELECT channel_address FROM channel WHERE channel_account_id=%d', intval($acct) ); - + echo "Account $acct: "; - + foreach($c as $chan) echo $chan['channel_address'] . ', '; - + echo "\n\033[1mProperty Old\t\tNew\033[0m\n"; - + if(empty($r[0]['account_service_class'])) { $oclass = 'None'; $old = false; } else { $oclass = $r[0]['account_service_class']; - $old = get_config('service_class', $oclass); + $old = Config::Get('service_class', $oclass); } echo "service_class $oclass\t\t\033[1m" . $argv[2] . "\033[0m\n"; - - $new = get_config('service_class', $argv[2]); + + $new = Config::Get('service_class', $argv[2]); foreach(array('photo_upload_limit','total_items','total_pages','total_identities','total_channels','total_feeds','attach_upload_limit','minimum_feedcheck_minutes','chatrooms','chatters_inroom','access_tokens') as $prop) { echo $prop . str_repeat(' ',26 - strlen($prop)) . (($old && $old[$prop]) ? $old[$prop] : 'unlimited') . "\t\t\033[1m" . (($new && $new[$prop]) ? $new[$prop] : 'unlimited') . "\033[0m\n"; } @@ -67,7 +69,7 @@ if($argc == 3) { } if($r == 'n') die('no update done'); - + $r = q("UPDATE account SET account_service_class='%s' WHERE account_id=%d", dbesc($argv[2]), intval($acct) @@ -77,11 +79,11 @@ if($argc == 3) { } else { echo "failed\n"; } -} +} if($argc == 2) { - $d = get_config('service_class', $argv[1]); + $d = Config::Get('service_class', $argv[1]); echo $argv[1] . ":\n"; foreach($d as $k => $v) { echo "$k = $v\n"; @@ -89,7 +91,7 @@ if($argc == 2) { } if($argc == 1) { - load_config('service_class'); + Config::Load('service_class'); if(is_array(App::$config['service_class']) && App::$config['service_class']) { foreach(App::$config['service_class'] as $class=>$props) { echo "$class:\n"; @@ -106,4 +108,4 @@ if($argc == 1) { } } } -} \ No newline at end of file +} diff --git a/util/storageconv b/util/storageconv index 676425038..fe12137a3 100755 --- a/util/storageconv +++ b/util/storageconv @@ -18,6 +18,7 @@ require_once('include/cli_startup.php'); cli_startup(); +use Zotlabs\Lib\Config; use Zotlabs\Lib\Hashpath; if($argc == 1) { @@ -26,8 +27,8 @@ if($argc == 1) { } if($argc == 2) { - - $storage = (intval(get_config('system','photo_storage_type', 1)) > 0 ? 1 : 0); + + $storage = (intval(Config::Get('system','photo_storage_type', 1)) > 0 ? 1 : 0); echo 'Current storage set to: ' . ($storage ? 'filesystem' : 'SQL database') . PHP_EOL; switch($argv[1]) { case 'stats': @@ -38,14 +39,14 @@ if($argc == 2) { $xx = intval($x[0]['qty']); $x = q("SELECT COUNT(resource_id) AS qty FROM photo WHERE photo_usage IN (1, 2)"); echo 'Imported profiles thumbnails: ' . $x[0]['qty'] . PHP_EOL; - $xx += intval($x[0]['qty']); + $xx += intval($x[0]['qty']); echo 'Thumbnails total: ' . $xx . PHP_EOL; $x = q("SELECT COUNT(id) AS qty FROM photo WHERE os_storage != %d AND imgscale > 0", $storage ); echo 'Thumbnails to convert: ' . $x[0]['qty'] . PHP_EOL; break; - + case 'fs': if($storage == 0) { echo 'Please set system.photo_storage_type to 1 before move thumbnails to filesystem storage' . PHP_EOL; @@ -101,7 +102,7 @@ if($argc == 2) { } echo $i . PHP_EOL . 'Total thumbnails processed: ' . $i; break; - + case 'db': if($storage == 1) { echo 'Please set system.photo_storage_type to 0 before move thumbnails to SQL database storage' . PHP_EOL; @@ -119,15 +120,15 @@ if($argc == 2) { $x = q("SELECT id, uid, resource_id, content, imgscale FROM photo WHERE id > %d AND os_storage = 1 AND imgscale > 0 ORDER BY id LIMIT 10", intval($cur_id) ); - + if($x) { foreach($x as $xx) { - + $filename = dbunescbin($xx['content']); $content = file_get_contents($filename); if($content) { - + $z = q("UPDATE photo SET content = '%s', os_storage = 0 WHERE id = %d", dbescbin($content), intval($xx['id']) @@ -136,7 +137,7 @@ if($argc == 2) { echo PHP_EOL . 'Failed to update stored file metadata ' . $filename . PHP_EOL; continue; } - + @unlink($filename); } else @@ -152,7 +153,7 @@ if($argc == 2) { } echo $i . PHP_EOL . 'Total files processed: ' . $i; break; - + default: usage(); return; diff --git a/view/theme/redbasic/php/theme_init.php b/view/theme/redbasic/php/theme_init.php index 54e6e7be3..cffe22de6 100644 --- a/view/theme/redbasic/php/theme_init.php +++ b/view/theme/redbasic/php/theme_init.php @@ -1,4 +1,6 @@ Date: Sun, 24 Mar 2024 17:50:27 +0100 Subject: make sure we preserve linefeeds in the actual content of lists and tables also add tests --- include/bbcode.php | 25 ++++++++++++++++--------- tests/unit/includes/BBCodeTest.php | 12 ++++++++++++ vendor/composer/installed.php | 12 ++++++------ 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index aa1257a56..1ced24ec3 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -1060,8 +1060,8 @@ function bb_fix_lf($match) { // be converted to '
' and turn your neatly crafted tables into a whole lot of // empty space. - $new_content = str_replace(["\n\r", "\n", "\r"], '', $match[1]); - return str_replace($match[1], $new_content, $match[0]); + $new_content = preg_replace("/\]\s+\[/",'][', $match[1]); + return str_replace($match[1], trim($new_content, "\r\n"), $match[0]); } function bbtopoll($s) { @@ -1554,6 +1554,20 @@ function bbcode($text, $options = []) { $text = preg_replace_callback("/\[checklist\](.*?)\[\/checklist\]/ism", 'bb_checklist', $text); } + + if (strpos($text,'[/table]') !== false) { + $text = str_replace(["[/table]\r", "[/table]\n"], '[/table]', $text); + + $text = preg_replace_callback("/\[table\](.*?)\[\/table\]/ism",'bb_fix_lf',$text); + $text = preg_replace("/\[table\](.*?)\[\/table\]/sm", '$1
', $text); + + $text = preg_replace_callback("/\[table border=1\](.*?)\[\/table\]/ism",'bb_fix_lf',$text); + $text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '$1
', $text); + + $text = preg_replace_callback("/\[table border=0\](.*?)\[\/table\]/ism",'bb_fix_lf',$text); + $text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '$1
', $text); + } + if (strpos($text,'[th]') !== false) { $text = preg_replace("/\[th\](.*?)\[\/th\]/sm", '$1', $text); } @@ -1566,13 +1580,6 @@ function bbcode($text, $options = []) { $text = preg_replace("/\[tr\](.*?)\[\/tr\]/sm", '$1', $text); } - if (strpos($text,'[/table]') !== false) { - $text = preg_replace_callback("/\[table\](.*?)\[\/table\]/ism",'bb_fix_lf',$text); - $text = preg_replace("/\[table\](.*?)\[\/table\]/sm", '$1
', $text); - $text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '$1
', $text); - $text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '$1
', $text); - } - $text = str_replace('[hr]', '
', $text); // This is actually executed in prepare_body() diff --git a/tests/unit/includes/BBCodeTest.php b/tests/unit/includes/BBCodeTest.php index fedd2df06..a6c798992 100644 --- a/tests/unit/includes/BBCodeTest.php +++ b/tests/unit/includes/BBCodeTest.php @@ -111,13 +111,25 @@ class BBCodeTest extends UnitTestCase { "some text\n[list]\n[*] item1\n[*] item2\n[/list]\nsome more text", 'some text
  • item1
  • item2
some more text' ], + 'list with linebreaks \n in text' => [ + "some text\n[list]\n[*] item1\nsome text[*] item2\nsome text[/list]\nsome more text", + 'some text
  • item1
    some text
  • item2
    some text
some more text' + ], 'list with linebreaks \r' => [ "some text\r[list]\r[*] item1\r[*] item2\r[/list]\rsome more text", 'some text
  • item1
  • item2
some more text' ], + 'list with linebreaks \r in text' => [ + "some text\r[list]\r[*] item1\rsome text\r[*] item2\rsome text\r[/list]\rsome more text", + 'some text
  • item1
    some text
  • item2
    some text
some more text' + ], 'list with linebreaks \r\n' => [ "some text\r\n[list]\r\n[*] item1\r\n[*] item2\r\n[/list]\r\nsome more text", 'some text
  • item1
  • item2
some more text' + ], + 'list with linebreaks \r\n in text' => [ + "some text\r\n[list]\r\n[*] item1\r\nsome text[*] item2\r\nsome text[/list]\r\nsome more text", + 'some text
  • item1
    some text
  • item2
    some text
some more text' ] ]; } diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 4386e70b5..dd4bccc71 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -1,9 +1,9 @@ array( 'name' => 'zotlabs/hubzilla', - 'pretty_version' => 'dev-9.0RC', - 'version' => 'dev-9.0RC', - 'reference' => 'a18e873d08e733225c70b0ace31c3cbb025ff906', + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => 'a0cfe22501dc9daa7dd8cff86803cf494a1f5ec3', 'type' => 'application', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -338,9 +338,9 @@ 'dev_requirement' => false, ), 'zotlabs/hubzilla' => array( - 'pretty_version' => 'dev-9.0RC', - 'version' => 'dev-9.0RC', - 'reference' => 'a18e873d08e733225c70b0ace31c3cbb025ff906', + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => 'a0cfe22501dc9daa7dd8cff86803cf494a1f5ec3', 'type' => 'application', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), -- cgit v1.2.3 From b139e5bb0054b97beff22bae65f145bc29874e08 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 25 Mar 2024 12:26:06 +0100 Subject: Fix smarty deprecation warning in category widget. --- view/tpl/categories_widget.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/tpl/categories_widget.tpl b/view/tpl/categories_widget.tpl index fd27dca44..a7be796d6 100644 --- a/view/tpl/categories_widget.tpl +++ b/view/tpl/categories_widget.tpl @@ -5,7 +5,7 @@ -- cgit v1.2.3 From 01c6fd03b7e82d89967b4e348b75d90310375de9 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 14:15:28 +0000 Subject: fix typo after get_config -> Confi::Get conversion --- Zotlabs/Storage/Directory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Storage/Directory.php b/Zotlabs/Storage/Directory.php index b62f268d3..a68fdcf26 100644 --- a/Zotlabs/Storage/Directory.php +++ b/Zotlabs/Storage/Directory.php @@ -3,7 +3,7 @@ namespace Zotlabs\Storage; use Sabre\DAV; -use Zotlabz\Lib\Config; +use Zotlabs\Lib\Config; use Zotlabs\Lib\Libsync; /** -- cgit v1.2.3 From 842df8a7991688ccb0770dcca0119acf728e1c8b Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 16:09:53 +0000 Subject: add the observer hash to the cache key in categories_widget() --- Zotlabs/Daemon/Cache_query.php | 5 ++++- include/contact_widgets.php | 7 +++++-- include/taxonomy.php | 5 +++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Zotlabs/Daemon/Cache_query.php b/Zotlabs/Daemon/Cache_query.php index 8e5c6b2ea..d5788795f 100644 --- a/Zotlabs/Daemon/Cache_query.php +++ b/Zotlabs/Daemon/Cache_query.php @@ -12,6 +12,7 @@ class Cache_query { if(! $argc == 3) return; + $r = null; $key = $argv[1]; $pid = Config::Get('procid', $key, false); @@ -29,8 +30,10 @@ class Cache_query { $arr = json_decode(base64_decode($argv[0]), true); $r = call_user_func_array('q', $arr); - if($r) + + if(is_array($r)) { Cache::set($key, serialize($r)); + } Config::Delete('procid', $key); diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 43aae4b25..3589653c1 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -2,6 +2,7 @@ use Zotlabs\Lib\Cache; use Zotlabs\Lib\Config; +use Zotlabs\Daemon\Master; function findpeople_widget() { @@ -71,7 +72,9 @@ function categories_widget($baseurl,$selected = '') { $item_normal = item_normal(); - $key = __FUNCTION__ . "-" . App::$profile['profile_uid']; + $observer = get_observer_hash(); + + $key = __FUNCTION__ . '_' . md5(App::$profile['profile_uid'] . $observer); $content = Cache::get($key, '5 MINUTE'); if (! $content) { @@ -97,7 +100,7 @@ function categories_widget($baseurl,$selected = '') { dbesc(ACTIVITY_UPDATE) ]; - \Zotlabs\Daemon\Master::Summon([ 'Cache_query', $key, base64_encode(json_encode($arr)) ]); + Master::Summon([ 'Cache_query', $key, base64_encode(json_encode($arr)) ]); } if (!$content) { diff --git a/include/taxonomy.php b/include/taxonomy.php index 49b364154..45287fa63 100644 --- a/include/taxonomy.php +++ b/include/taxonomy.php @@ -7,6 +7,7 @@ use Zotlabs\Lib\Cache; use Zotlabs\Lib\Config; +use Zotlabs\Daemon\Master; function file_tag_encode($s) { @@ -358,7 +359,7 @@ function pub_tagadelic($net, $site, $limit, $recent, $safemode, $type) { } } - $key = __FUNCTION__ . "-" . md5($site . $recent . $safemode . $limit . $type); + $key = __FUNCTION__ . '_' . md5($site . $recent . $safemode . $limit . $type); $content = Cache::get($key, '5 MINUTE'); if(! $content) { @@ -378,7 +379,7 @@ function pub_tagadelic($net, $site, $limit, $recent, $safemode, $type) { (intval($count) ? "LIMIT $count" : '') ]; - \Zotlabs\Daemon\Master::Summon([ 'Cache_query', $key, base64_encode(json_encode($arr)) ]); + Master::Summon([ 'Cache_query', $key, base64_encode(json_encode($arr)) ]); } $r = unserialize($content); -- cgit v1.2.3 From 637f39f2828a70bc053e8c0f8f2253dc04ae358c Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 17:15:05 +0000 Subject: tilt the piin --- view/theme/redbasic/css/style.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 30b9ba64c..56194c735 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -996,6 +996,10 @@ img.mail-conv-sender-photo { margin-top: 2em; } +.wall-item-pinned i { + transform: rotate(45deg); +} + .wall-item-content-wrapper { background-color: var(--bs-tertiary-bg); } -- cgit v1.2.3 From 9ecd38911e6094e2867d490e2da5f65ecedf0370 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 17:31:53 +0000 Subject: add observer to the permissions query. this should not be necessary but it makes it clear why it should be included in the cache key (cherry picked from commit 57e32a79125072d27ebc76ca26acac64db5cb4fc) --- include/contact_widgets.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 3589653c1..84f688d36 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -68,12 +68,11 @@ function categories_widget($baseurl,$selected = '') { require_once('include/security.php'); - $sql_extra = item_permissions_sql(App::$profile['profile_uid']); + $observer = get_observer_hash(); + $sql_extra = item_permissions_sql(App::$profile['profile_uid'], $observer); $item_normal = item_normal(); - $observer = get_observer_hash(); - $key = __FUNCTION__ . '_' . md5(App::$profile['profile_uid'] . $observer); $content = Cache::get($key, '5 MINUTE'); -- cgit v1.2.3 From c052b7fa9982e82fa25fe0e84ee3462da30ac157 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 19:47:17 +0000 Subject: allow to run additional site specific commands at the end of util/udall --- util/udall | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/util/udall b/util/udall index 44f37e86e..50ef56bfe 100755 --- a/util/udall +++ b/util/udall @@ -5,7 +5,7 @@ if [ ! -d .git ]; then fi git pull -if [ -d extend ] ; then +if [ -d extend ]; then for a in theme addon widget ; do if [ -d extend/$a ]; then for b in `ls extend/$a` ; do @@ -15,3 +15,8 @@ if [ -d extend ] ; then fi done fi + +# Allow to run additional site specific commands +if [ -f util/udall_extra ]; then + source util/udall_extra +fi -- cgit v1.2.3 From 53354a19304c932beea484e387d2c9536786e258 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 21:42:50 +0100 Subject: more remove additional linebreaks after block element plus test --- include/bbcode.php | 5 +++++ tests/unit/includes/BBCodeTest.php | 4 ++++ vendor/composer/installed.php | 4 ++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index 1ced24ec3..844717572 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -1287,6 +1287,11 @@ function bbcode($text, $options = []) { if (strpos($text,'[pre]') !== false) { $text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", 'bb_spacefy',$text); } + + if (strpos($text,'') !== false) { + $text = str_replace(["\r", "\n"], '', $text); + } + if (strpos($text,'[summary]') !== false) { $text = preg_replace_callback("/\[summary\](.*?)\[\/summary\]/ism", 'bb_spacefy',$text); } diff --git a/tests/unit/includes/BBCodeTest.php b/tests/unit/includes/BBCodeTest.php index a6c798992..a8aa8ee2b 100644 --- a/tests/unit/includes/BBCodeTest.php +++ b/tests/unit/includes/BBCodeTest.php @@ -107,6 +107,10 @@ class BBCodeTest extends UnitTestCase { "[code]\ntestvar = \"this is a test\"\necho \"the message is \$testvar\"\n[/code]", '
testvar = "this is a test"
echo "the message is $testvar"
', ], + 'code block with surroundin linebreaks \n' => [ + "some text\n[code]\ntestvar = \"this is a test\"\necho \"the message is \$testvar\"\n[/code]\nsome more text", + 'some text
testvar = "this is a test"
echo "the message is $testvar"
some more text', + ], 'list with linebreaks \n' => [ "some text\n[list]\n[*] item1\n[*] item2\n[/list]\nsome more text", 'some text
  • item1
  • item2
some more text' diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index dd4bccc71..1ab0e12b9 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'zotlabs/hubzilla', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'a0cfe22501dc9daa7dd8cff86803cf494a1f5ec3', + 'reference' => '3c0d6339bb12bd7fbf65ba7a79078e39737b4387', 'type' => 'application', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -340,7 +340,7 @@ 'zotlabs/hubzilla' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'a0cfe22501dc9daa7dd8cff86803cf494a1f5ec3', + 'reference' => '3c0d6339bb12bd7fbf65ba7a79078e39737b4387', 'type' => 'application', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), -- cgit v1.2.3 From a5d483fb5d622bf0bc35c02bb569ea8f1ef58f6a Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 20:44:22 +0000 Subject: more bootstrap override --- view/css/bootstrap-red.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/css/bootstrap-red.css b/view/css/bootstrap-red.css index ff38da7bc..8e273dfdb 100644 --- a/view/css/bootstrap-red.css +++ b/view/css/bootstrap-red.css @@ -62,6 +62,6 @@ a { text-decoration: none !important; } -ol, ul, dl { +ol, ul, dl, pre { margin-bottom: 0; } -- cgit v1.2.3 From f72f5c7321398881243bb509211958414708e43e Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 21:42:32 +0000 Subject: wrong dreport link in blog mode --- view/tpl/conv_list.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/tpl/conv_list.tpl b/view/tpl/conv_list.tpl index fe9167a88..2d6c6fe8e 100644 --- a/view/tpl/conv_list.tpl +++ b/view/tpl/conv_list.tpl @@ -205,7 +205,7 @@ {{/if}} {{if $item.edpost && $item.dreport}} - {{$item.dreport}} + {{$item.dreport}} {{/if}} {{if $item.settings}} -- cgit v1.2.3 From 80d1e0790852c4df4768820cad8a4557dcfecd73 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Mar 2024 21:48:25 +0000 Subject: deprecated bootstrap namespace in list mode --- view/tpl/conv_list.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/tpl/conv_list.tpl b/view/tpl/conv_list.tpl index 2d6c6fe8e..374c3f53f 100644 --- a/view/tpl/conv_list.tpl +++ b/view/tpl/conv_list.tpl @@ -209,7 +209,7 @@ {{/if}} {{if $item.settings}} - {{$item.settings}} + {{$item.settings}} {{/if}} -- cgit v1.2.3 From e0ac7b7f9ffb3e2602c23f893d75aba706a234e5 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 26 Mar 2024 09:26:18 +0000 Subject: if the updated item contains an open modal, the modal we be replaced with the new data but the backdrop will stay because it is attached to the end of the page -> remove it --- view/js/main.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/view/js/main.js b/view/js/main.js index ba863b111..c9798dede 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -1046,6 +1046,8 @@ function liveUpdate(notify_id) { in_progress = false; $('#image_counter').html(''); + // remove modal backdrop in case the update was triggered from a modal + $('.modal-backdrop').remove(); }) .done( function( instance ) { //console.log('all images successfully loaded'); -- cgit v1.2.3 From 418b1eaf78418cf0bbc97577a0db8d4696920e9b Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 26 Mar 2024 09:51:09 +0000 Subject: changelog --- CHANGELOG | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index dcc4e5d08..67f6783a9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,15 @@ +Hubzilla 9.0.1 (2024-03-26) + - Fix an issue where after an update initiated from a modal the modal backdrop would remain + - Fix bootstrap namespace in conv list templates + - Fix link to delivery report in conv list templates + - Slightly improved handling of linefeeds in some bbcode block elements and added tests + - Fix categories_widget() cache not being observer aware + - Allow to run additional site specific commands at the end of util/udall in util/udall_extra + - Fix linefeeds in table and list content removed + - Pubcrawl: do not attrmpt to sign wall to wall messages - they will appear misattributed in mastodons + - Pubcrawl: default to Note activity type for now + + Hubzilla 9.0 (2024-03-22) - Refactor browser to browser encryption based on sodium plus library - Added developer docs for the refactored test system -- cgit v1.2.3 From 3859c010f09ecdb8ed543638d435d026e5e1efc2 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 26 Mar 2024 10:06:49 +0000 Subject: bump version --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index cdfa15855..dcdcdda01 100644 --- a/boot.php +++ b/boot.php @@ -64,7 +64,7 @@ require_once('include/selectors.php'); require_once('include/activities.php'); define('PLATFORM_NAME', 'hubzilla'); -define('STD_VERSION', '9.1'); +define('STD_VERSION', '9.1.1'); define('ZOT_REVISION', '6.0'); define('DB_UPDATE_VERSION', 1263); -- cgit v1.2.3 From f85d2d3423fdb6a140e0df5f2df751ac9183a2f7 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 26 Mar 2024 14:48:16 +0000 Subject: reduce default directory result set --- Zotlabs/Module/Directory.php | 2 +- Zotlabs/Module/Dirsearch.php | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php index 88e2dd59b..05aa735c8 100644 --- a/Zotlabs/Module/Directory.php +++ b/Zotlabs/Module/Directory.php @@ -118,7 +118,7 @@ class Directory extends Controller { $safe_mode = 1; $type = 0; - $r = suggestion_query(local_channel(),get_observer_hash(),0,60); + $r = suggestion_query(local_channel(), get_observer_hash(), 0, 30); if(! $r) { notice( t('No default suggestions were found.') . EOL); diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php index a90c2104a..d27b195e4 100644 --- a/Zotlabs/Module/Dirsearch.php +++ b/Zotlabs/Module/Dirsearch.php @@ -154,9 +154,13 @@ class Dirsearch extends Controller { } - $perpage = $_REQUEST['n'] ?? 60; - $page = ((isset($_REQUEST['p']) && $_REQUEST['p']) ? intval($_REQUEST['p'] - 1) : 0); - $startrec = (($page+1) * $perpage) - $perpage; + $perpage = $_REQUEST['n'] ?? 30; + if ($perpage > 30) { + $perpage = 30; + } + + $page = ((isset($_REQUEST['p']) && $_REQUEST['p']) ? intval($_REQUEST['p'] - 1) : 0); + $startrec = (($page+1) * $perpage) - $perpage; $limit = $_REQUEST['limit'] ?? 0; $return_total = $_REQUEST['return_total'] ?? 0; -- cgit v1.2.3 From fe43e0994f3bc3d5b629942bb4c56b65524e8e79 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 27 Mar 2024 10:00:18 +0000 Subject: add pdl for mod home --- view/pdl/mod_home.pdl | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 view/pdl/mod_home.pdl diff --git a/view/pdl/mod_home.pdl b/view/pdl/mod_home.pdl new file mode 100644 index 000000000..8b3ff52f8 --- /dev/null +++ b/view/pdl/mod_home.pdl @@ -0,0 +1,4 @@ +[region=content] +$content +[/region] + -- cgit v1.2.3 From 0b2781f42ef7fc211d048eaf7381bff42b3fd77b Mon Sep 17 00:00:00 2001 From: "mjfriaza:4GF~eYj,-iAv" Date: Sat, 30 Mar 2024 12:31:54 +0100 Subject: Update Spanish (cherry picked from commit 4e5c6f9bbaa702d9ccd5606a166c8e65224b8d8f) --- view/es-es/hmessages.po | 3148 ++++++++++++++++++++--------------------------- view/es-es/hstrings.php | 234 +--- 2 files changed, 1412 insertions(+), 1970 deletions(-) diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po index 3af7a30ab..38fa42fda 100644 --- a/view/es-es/hmessages.po +++ b/view/es-es/hmessages.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: hubzilla\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-11-10 08:15+0000\n" +"POT-Creation-Date: 2024-03-15 18:45+0000\n" "PO-Revision-Date: 2015-09-27 06:48+0000\n" "Last-Translator: Manuel Jiménez Friaza , 2017-2024\n" "Language-Team: Spanish (Spain) (http://app.transifex.com/Friendica/hubzilla/language/es_ES/)\n" @@ -29,22 +29,23 @@ msgstr "" msgid "Source channel not found." msgstr "No se ha encontrado el canal de origen." -#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3509 +#: ../../view/theme/redbasic/php/config.php:18 ../../include/text.php:3514 #: ../../addon/cart/submodules/orderoptions.php:335 #: ../../addon/cart/submodules/orderoptions.php:359 #: ../../addon/cart/submodules/orderoptions.php:435 #: ../../addon/cart/submodules/orderoptions.php:459 -#: ../../Zotlabs/Module/Admin/Site.php:245 +#: ../../Zotlabs/Module/Admin/Site.php:231 msgid "Default" msgstr "Predeterminado" -#: ../../view/theme/redbasic/php/config.php:16 #: ../../view/theme/redbasic/php/config.php:19 +#: ../../view/theme/redbasic/php/config.php:22 msgid "Focus (Hubzilla default)" msgstr "Focus (predefinido)" -#: ../../view/theme/redbasic/php/config.php:98 ../../include/js_strings.php:23 -#: ../../addon/irc/irc.php:45 ../../addon/smileybutton/Mod_Smileybutton.php:53 +#: ../../view/theme/redbasic/php/config.php:188 +#: ../../include/js_strings.php:23 ../../addon/irc/irc.php:45 +#: ../../addon/smileybutton/Mod_Smileybutton.php:53 #: ../../addon/socialauth/Mod_SocialAuth.php:341 #: ../../addon/hubwall/hubwall.php:95 #: ../../addon/openclipatar/openclipatar.php:54 @@ -54,14 +55,14 @@ msgstr "Focus (predefinido)" #: ../../addon/ijpost/Mod_Ijpost.php:72 ../../addon/redred/Mod_Redred.php:88 #: ../../addon/startpage/Mod_Startpage.php:71 #: ../../addon/libertree/Mod_Libertree.php:68 ../../addon/logrot/logrot.php:35 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:61 #: ../../addon/dwpost/Mod_Dwpost.php:78 ../../addon/diaspora/diaspora.php:90 #: ../../addon/diaspora/Mod_Diaspora.php:101 #: ../../addon/fuzzloc/Mod_Fuzzloc.php:54 #: ../../addon/mailtest/mailtest.php:100 ../../addon/nsfw/Mod_Nsfw.php:59 #: ../../addon/pumpio/Mod_Pumpio.php:113 ../../addon/wppost/Mod_Wppost.php:107 #: ../../addon/wiki/Mod_Wiki.php:218 ../../addon/wiki/Mod_Wiki.php:907 -#: ../../addon/wiki/Widget/Wiki_pages.php:69 ../../addon/xmpp/Mod_Xmpp.php:70 +#: ../../addon/wiki/Widget/Wiki_pages.php:72 ../../addon/xmpp/Mod_Xmpp.php:70 #: ../../addon/statusnet/statusnet.php:602 #: ../../addon/statusnet/Mod_Statusnet.php:191 #: ../../addon/statusnet/Mod_Statusnet.php:249 @@ -73,7 +74,7 @@ msgstr "Focus (predefinido)" #: ../../addon/cart/submodules/manualcat.php:248 #: ../../addon/cart/submodules/orderoptions.php:312 #: ../../addon/cart/submodules/orderoptions.php:412 -#: ../../addon/cart/cart.php:1425 ../../addon/cart/Settings/Cart.php:132 +#: ../../addon/cart/cart.php:1424 ../../addon/cart/Settings/Cart.php:132 #: ../../addon/cart/Settings/Cart.php:142 #: ../../addon/twitter/Mod_Twitter.php:182 #: ../../addon/redfiles/redfiles.php:124 @@ -88,16 +89,16 @@ msgstr "Focus (predefinido)" #: ../../addon/rtof/Mod_Rtof.php:70 ../../addon/nofed/Mod_Nofed.php:51 #: ../../addon/photocache/Mod_Photocache.php:63 #: ../../addon/likebanner/likebanner.php:57 -#: ../../Zotlabs/Lib/ThreadItem.php:832 ../../Zotlabs/Storage/Browser.php:385 +#: ../../Zotlabs/Lib/ThreadItem.php:862 ../../Zotlabs/Storage/Browser.php:385 #: ../../Zotlabs/Module/Oauth.php:109 #: ../../Zotlabs/Module/Import_items.php:125 -#: ../../Zotlabs/Module/Thing.php:328 ../../Zotlabs/Module/Thing.php:381 +#: ../../Zotlabs/Module/Thing.php:357 ../../Zotlabs/Module/Thing.php:409 #: ../../Zotlabs/Module/Tokens.php:294 ../../Zotlabs/Module/Pdledit.php:137 #: ../../Zotlabs/Module/Connect.php:107 #: ../../Zotlabs/Module/Filestorage.php:208 -#: ../../Zotlabs/Module/Contactedit.php:429 -#: ../../Zotlabs/Module/Contactedit.php:462 ../../Zotlabs/Module/Mood.php:156 -#: ../../Zotlabs/Module/Pconfig.php:117 ../../Zotlabs/Module/Appman.php:220 +#: ../../Zotlabs/Module/Contactedit.php:415 +#: ../../Zotlabs/Module/Contactedit.php:448 +#: ../../Zotlabs/Module/Pconfig.php:117 ../../Zotlabs/Module/Appman.php:230 #: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Defperms.php:262 #: ../../Zotlabs/Module/Locs.php:125 #: ../../Zotlabs/Module/Admin/Accounts.php:309 @@ -108,19 +109,18 @@ msgstr "Focus (predefinido)" #: ../../Zotlabs/Module/Admin/Channels.php:147 #: ../../Zotlabs/Module/Admin/Account_edit.php:73 #: ../../Zotlabs/Module/Admin/Logs.php:84 -#: ../../Zotlabs/Module/Admin/Site.php:415 +#: ../../Zotlabs/Module/Admin/Site.php:401 #: ../../Zotlabs/Module/Admin/Security.php:129 -#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Module/Affinity.php:84 -#: ../../Zotlabs/Module/Permcats.php:257 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Module/Group.php:150 ../../Zotlabs/Module/Group.php:159 -#: ../../Zotlabs/Module/Invite.php:563 ../../Zotlabs/Module/Mitem.php:259 -#: ../../Zotlabs/Module/Photos.php:1056 ../../Zotlabs/Module/Photos.php:1095 -#: ../../Zotlabs/Module/Photos.php:1208 ../../Zotlabs/Module/Sources.php:123 -#: ../../Zotlabs/Module/Sources.php:160 ../../Zotlabs/Module/Profiles.php:739 -#: ../../Zotlabs/Module/Chat.php:208 ../../Zotlabs/Module/Chat.php:247 -#: ../../Zotlabs/Module/Regate.php:407 ../../Zotlabs/Module/Setup.php:316 -#: ../../Zotlabs/Module/Setup.php:356 ../../Zotlabs/Module/Editpost.php:88 -#: ../../Zotlabs/Module/Oauth2.php:114 +#: ../../Zotlabs/Module/Affinity.php:84 ../../Zotlabs/Module/Permcats.php:257 +#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Group.php:150 +#: ../../Zotlabs/Module/Group.php:159 ../../Zotlabs/Module/Invite.php:563 +#: ../../Zotlabs/Module/Mitem.php:259 ../../Zotlabs/Module/Photos.php:1056 +#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1208 +#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:160 +#: ../../Zotlabs/Module/Profiles.php:735 ../../Zotlabs/Module/Chat.php:208 +#: ../../Zotlabs/Module/Chat.php:247 ../../Zotlabs/Module/Regate.php:407 +#: ../../Zotlabs/Module/Setup.php:316 ../../Zotlabs/Module/Setup.php:356 +#: ../../Zotlabs/Module/Editpost.php:88 ../../Zotlabs/Module/Oauth2.php:114 #: ../../Zotlabs/Module/Settings/Display.php:187 #: ../../Zotlabs/Module/Settings/Network.php:62 #: ../../Zotlabs/Module/Settings/Channel_home.php:91 @@ -143,36 +143,64 @@ msgstr "Focus (predefinido)" msgid "Submit" msgstr "Enviar" -#: ../../view/theme/redbasic/php/config.php:102 +#: ../../view/theme/redbasic/php/config.php:192 msgid "Theme settings" msgstr "Ajustes del tema" -#: ../../view/theme/redbasic/php/config.php:103 +#: ../../view/theme/redbasic/php/config.php:193 msgid "Dark style" msgstr "Estilo oscuro" -#: ../../view/theme/redbasic/php/config.php:104 +#: ../../view/theme/redbasic/php/config.php:194 msgid "Light style" msgstr "Estilo claro" -#: ../../view/theme/redbasic/php/config.php:105 +#: ../../view/theme/redbasic/php/config.php:195 msgid "Common settings" msgstr "Ajustes comunes" -#: ../../view/theme/redbasic/php/config.php:106 +#: ../../view/theme/redbasic/php/config.php:196 +msgid "Primary theme color" +msgstr "Color del tema principal" + +#: ../../view/theme/redbasic/php/config.php:196 +#: ../../view/theme/redbasic/php/config.php:197 +#: ../../view/theme/redbasic/php/config.php:198 +#: ../../view/theme/redbasic/php/config.php:199 +#: ../../view/theme/redbasic/php/config.php:200 +msgid "Current color, leave empty for default" +msgstr "Color actual, dejar vacío por defecto" + +#: ../../view/theme/redbasic/php/config.php:197 +msgid "Success theme color" +msgstr "Éxito en el color del tema" + +#: ../../view/theme/redbasic/php/config.php:198 +msgid "Info theme color" +msgstr "Información del color del tema" + +#: ../../view/theme/redbasic/php/config.php:199 +msgid "Warning theme color" +msgstr "Advertencia sobre el color del tema" + +#: ../../view/theme/redbasic/php/config.php:200 +msgid "Danger theme color" +msgstr "Peligro en el color del tema" + +#: ../../view/theme/redbasic/php/config.php:201 msgid "Default to dark mode" msgstr "Modo oscuro por defecto" -#: ../../view/theme/redbasic/php/config.php:106 -#: ../../view/theme/redbasic/php/config.php:107 -#: ../../view/theme/redbasic/php/config.php:108 -#: ../../view/theme/redbasic/php/config.php:124 -#: ../../include/conversation.php:1492 +#: ../../view/theme/redbasic/php/config.php:201 +#: ../../view/theme/redbasic/php/config.php:202 +#: ../../view/theme/redbasic/php/config.php:203 +#: ../../view/theme/redbasic/php/config.php:215 +#: ../../include/conversation.php:1265 #: ../../addon/smileybutton/Mod_Smileybutton.php:42 #: ../../addon/socialauth/Mod_SocialAuth.php:218 #: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/redred/Mod_Redred.php:61 #: ../../addon/libertree/Mod_Libertree.php:57 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:42 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 #: ../../addon/dwpost/Mod_Dwpost.php:59 ../../addon/dwpost/Mod_Dwpost.php:63 #: ../../addon/diaspora/Mod_Diaspora.php:70 #: ../../addon/pumpio/Mod_Pumpio.php:92 ../../addon/pumpio/Mod_Pumpio.php:96 @@ -201,26 +229,26 @@ msgstr "Modo oscuro por defecto" #: ../../addon/cart/submodules/orderoptions.php:362 #: ../../addon/cart/submodules/orderoptions.php:438 #: ../../addon/cart/submodules/orderoptions.php:462 -#: ../../addon/cart/cart.php:1419 ../../addon/cart/Settings/Cart.php:61 +#: ../../addon/cart/cart.php:1418 ../../addon/cart/Settings/Cart.php:61 #: ../../addon/cart/Settings/Cart.php:73 #: ../../addon/twitter/Mod_Twitter.php:160 #: ../../addon/twitter/Mod_Twitter.php:169 #: ../../addon/content_import/Mod_content_import.php:135 #: ../../addon/content_import/Mod_content_import.php:136 #: ../../addon/rtof/Mod_Rtof.php:47 ../../addon/nofed/Mod_Nofed.php:40 -#: ../../boot.php:1753 ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../boot.php:1751 ../../Zotlabs/Lib/Libzotdir.php:165 #: ../../Zotlabs/Lib/Libzotdir.php:166 ../../Zotlabs/Lib/Libzotdir.php:168 #: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:310 #: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:392 #: ../../Zotlabs/Storage/Browser.php:394 ../../Zotlabs/Storage/Browser.php:558 #: ../../Zotlabs/Module/Filestorage.php:203 #: ../../Zotlabs/Module/Filestorage.php:211 -#: ../../Zotlabs/Module/Contactedit.php:284 -#: ../../Zotlabs/Module/Contactedit.php:329 +#: ../../Zotlabs/Module/Contactedit.php:270 +#: ../../Zotlabs/Module/Contactedit.php:315 #: ../../Zotlabs/Module/Register.php:512 ../../Zotlabs/Module/Connedit.php:622 #: ../../Zotlabs/Module/Defperms.php:195 ../../Zotlabs/Module/Api.php:99 #: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../Zotlabs/Module/Admin/Site.php:305 #: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:137 #: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:147 #: ../../Zotlabs/Module/Group.php:249 ../../Zotlabs/Module/Group.php:301 @@ -228,8 +256,8 @@ msgstr "Modo oscuro por defecto" #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 #: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Photos.php:666 #: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:157 -#: ../../Zotlabs/Module/Profiles.php:675 ../../Zotlabs/Module/Profiles.php:685 -#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:697 +#: ../../Zotlabs/Module/Profiles.php:671 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:693 #: ../../Zotlabs/Module/Settings/Display.php:86 #: ../../Zotlabs/Module/Settings/Privacy.php:132 #: ../../Zotlabs/Module/Settings/Privacy.php:133 @@ -244,16 +272,16 @@ msgstr "Modo oscuro por defecto" msgid "No" msgstr "No" -#: ../../view/theme/redbasic/php/config.php:106 -#: ../../view/theme/redbasic/php/config.php:107 -#: ../../view/theme/redbasic/php/config.php:108 -#: ../../view/theme/redbasic/php/config.php:124 -#: ../../include/conversation.php:1492 +#: ../../view/theme/redbasic/php/config.php:201 +#: ../../view/theme/redbasic/php/config.php:202 +#: ../../view/theme/redbasic/php/config.php:203 +#: ../../view/theme/redbasic/php/config.php:215 +#: ../../include/conversation.php:1265 #: ../../addon/smileybutton/Mod_Smileybutton.php:42 #: ../../addon/socialauth/Mod_SocialAuth.php:218 #: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/redred/Mod_Redred.php:61 #: ../../addon/libertree/Mod_Libertree.php:57 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:42 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 #: ../../addon/dwpost/Mod_Dwpost.php:59 ../../addon/dwpost/Mod_Dwpost.php:63 #: ../../addon/diaspora/Mod_Diaspora.php:70 #: ../../addon/pumpio/Mod_Pumpio.php:92 ../../addon/pumpio/Mod_Pumpio.php:96 @@ -282,24 +310,24 @@ msgstr "No" #: ../../addon/cart/submodules/orderoptions.php:361 #: ../../addon/cart/submodules/orderoptions.php:437 #: ../../addon/cart/submodules/orderoptions.php:461 -#: ../../addon/cart/cart.php:1419 ../../addon/cart/Settings/Cart.php:61 +#: ../../addon/cart/cart.php:1418 ../../addon/cart/Settings/Cart.php:61 #: ../../addon/cart/Settings/Cart.php:73 #: ../../addon/twitter/Mod_Twitter.php:160 #: ../../addon/twitter/Mod_Twitter.php:169 #: ../../addon/content_import/Mod_content_import.php:135 #: ../../addon/content_import/Mod_content_import.php:136 #: ../../addon/rtof/Mod_Rtof.php:47 ../../addon/nofed/Mod_Nofed.php:40 -#: ../../boot.php:1753 ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../boot.php:1751 ../../Zotlabs/Lib/Libzotdir.php:165 #: ../../Zotlabs/Lib/Libzotdir.php:166 ../../Zotlabs/Lib/Libzotdir.php:168 #: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:310 #: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:392 #: ../../Zotlabs/Storage/Browser.php:394 ../../Zotlabs/Storage/Browser.php:558 #: ../../Zotlabs/Module/Filestorage.php:203 #: ../../Zotlabs/Module/Filestorage.php:211 -#: ../../Zotlabs/Module/Contactedit.php:284 +#: ../../Zotlabs/Module/Contactedit.php:270 #: ../../Zotlabs/Module/Register.php:512 ../../Zotlabs/Module/Defperms.php:195 #: ../../Zotlabs/Module/Api.php:98 ../../Zotlabs/Module/Menu.php:163 -#: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Admin/Site.php:321 +#: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Admin/Site.php:307 #: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:137 #: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:147 #: ../../Zotlabs/Module/Group.php:249 ../../Zotlabs/Module/Group.php:301 @@ -307,8 +335,8 @@ msgstr "No" #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 #: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Photos.php:666 #: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:157 -#: ../../Zotlabs/Module/Profiles.php:675 ../../Zotlabs/Module/Profiles.php:685 -#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:697 +#: ../../Zotlabs/Module/Profiles.php:671 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:693 #: ../../Zotlabs/Module/Settings/Display.php:86 #: ../../Zotlabs/Module/Settings/Privacy.php:132 #: ../../Zotlabs/Module/Settings/Privacy.php:133 @@ -323,91 +351,80 @@ msgstr "No" msgid "Yes" msgstr "Sí" -#: ../../view/theme/redbasic/php/config.php:107 +#: ../../view/theme/redbasic/php/config.php:202 msgid "Always use light icons for navbar" msgstr "Utilizar siempre iconos claros para la barra de navegación" -#: ../../view/theme/redbasic/php/config.php:107 +#: ../../view/theme/redbasic/php/config.php:202 msgid "Enable this option if you use a dark navbar color in light mode" msgstr "Active esta opción si utiliza un color oscuro para la barra de navegación en el modo claro." -#: ../../view/theme/redbasic/php/config.php:108 +#: ../../view/theme/redbasic/php/config.php:203 msgid "Narrow navbar" msgstr "Estrechar la barra de navegación" -#: ../../view/theme/redbasic/php/config.php:109 +#: ../../view/theme/redbasic/php/config.php:204 msgid "Navigation bar background color" msgstr "Color de fondo de la barra de navegación" -#: ../../view/theme/redbasic/php/config.php:110 +#: ../../view/theme/redbasic/php/config.php:205 msgid "Dark navigation bar background color" msgstr "Color de fondo oscuro de la barra de navegación" -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Link color" -msgstr "Color del enlace" - -#: ../../view/theme/redbasic/php/config.php:112 -msgid "Dark link color" -msgstr "Color oscuro del enlace" - -#: ../../view/theme/redbasic/php/config.php:113 -msgid "Link hover color" -msgstr "Color de los enlaces al pasar por encima" - -#: ../../view/theme/redbasic/php/config.php:114 -msgid "Dark link hover color" -msgstr "Color oscuro del enlace flotante" - -#: ../../view/theme/redbasic/php/config.php:115 +#: ../../view/theme/redbasic/php/config.php:206 msgid "Set the background color" msgstr "Ajustar el color de fondo" -#: ../../view/theme/redbasic/php/config.php:116 +#: ../../view/theme/redbasic/php/config.php:207 msgid "Set the dark background color" msgstr "Establecer el color de fondo oscuro" -#: ../../view/theme/redbasic/php/config.php:117 +#: ../../view/theme/redbasic/php/config.php:208 msgid "Set the background image" msgstr "Ajustar la imagen de fondo" -#: ../../view/theme/redbasic/php/config.php:118 +#: ../../view/theme/redbasic/php/config.php:209 msgid "Set the dark background image" msgstr "Establecer la imagen de fondo oscuro" -#: ../../view/theme/redbasic/php/config.php:119 +#: ../../view/theme/redbasic/php/config.php:210 msgid "Set font-size for the entire application" msgstr "Ajustar el tamaño de letra para toda la aplicación" -#: ../../view/theme/redbasic/php/config.php:119 +#: ../../view/theme/redbasic/php/config.php:210 msgid "Examples: 1rem, 100%, 16px" msgstr "Ejemplos: 1rem, 100%, 16px" -#: ../../view/theme/redbasic/php/config.php:120 -msgid "Set radius of corners" -msgstr "Establecer el radio de curvatura de las esquinas" +#: ../../view/theme/redbasic/php/config.php:211 +msgid "Set radius of corners in rem" +msgstr "Fijar el radio de las esquinas en rem" -#: ../../view/theme/redbasic/php/config.php:120 -msgid "Example: 4px" -msgstr "Ejemplo: 4px" +#: ../../view/theme/redbasic/php/config.php:211 +msgid "Leave empty for default radius" +msgstr "Dejar vacío para el radio por defecto" -#: ../../view/theme/redbasic/php/config.php:121 +#: ../../view/theme/redbasic/php/config.php:212 msgid "Set maximum width of content region in rem" msgstr "Ajustar la anchura máxima de la región de contenido, en rem" -#: ../../view/theme/redbasic/php/config.php:121 +#: ../../view/theme/redbasic/php/config.php:212 msgid "Leave empty for default width" msgstr "Dejar en blanco para la anchura predeterminada" -#: ../../view/theme/redbasic/php/config.php:122 +#: ../../view/theme/redbasic/php/config.php:213 msgid "Set size of conversation author photo" msgstr "Ajustar el tamaño de la foto del autor de la conversación" -#: ../../view/theme/redbasic/php/config.php:123 +#: ../../view/theme/redbasic/php/config.php:213 +#: ../../view/theme/redbasic/php/config.php:214 +msgid "Leave empty for default size" +msgstr "Dejar vacío para el tamaño por defecto" + +#: ../../view/theme/redbasic/php/config.php:214 msgid "Set size of followup author photos" msgstr "Ajustar el tamaño de foto de los seguidores del autor" -#: ../../view/theme/redbasic/php/config.php:124 +#: ../../view/theme/redbasic/php/config.php:215 msgid "Show advanced settings" msgstr "Mostrar ajustes avanzados" @@ -453,15 +470,15 @@ msgstr "por" msgid " on " msgstr "en" -#: ../../include/oembed.php:421 +#: ../../include/oembed.php:425 msgid "Embedded content" msgstr "Contenido incorporado" -#: ../../include/oembed.php:430 +#: ../../include/oembed.php:434 msgid "Embedding disabled" msgstr "Incrustación deshabilitada" -#: ../../include/event.php:34 ../../include/event.php:129 +#: ../../include/event.php:34 ../../include/event.php:132 msgid "l F d, Y \\@ g:i A" msgstr "l d de F, Y \\@ G:i" @@ -473,91 +490,91 @@ msgstr "Comienza:" msgid "Finishes:" msgstr "Finaliza:" -#: ../../include/event.php:64 ../../include/event.php:154 -#: ../../include/channel.php:1631 ../../Zotlabs/Module/Directory.php:354 +#: ../../include/event.php:66 ../../include/event.php:157 +#: ../../include/channel.php:1639 ../../Zotlabs/Module/Directory.php:354 msgid "Location:" msgstr "Ubicación:" -#: ../../include/event.php:129 +#: ../../include/event.php:132 msgid "l F d, Y" msgstr "l F d, Y" -#: ../../include/event.php:133 +#: ../../include/event.php:136 msgid "Start:" msgstr "Iniciar: " -#: ../../include/event.php:137 +#: ../../include/event.php:140 msgid "End:" msgstr "Finalizar: " -#: ../../include/event.php:142 ../../addon/openid/MysqlProvider.php:67 +#: ../../include/event.php:145 ../../addon/openid/MysqlProvider.php:67 msgid "Timezone" msgstr "Zona horaria" -#: ../../include/event.php:1242 +#: ../../include/event.php:1245 msgid "This event has been added to your calendar." msgstr "Este evento ha sido añadido a su calendario." -#: ../../include/event.php:1396 ../../include/conversation.php:151 +#: ../../include/event.php:1399 ../../include/conversation.php:151 #: ../../include/text.php:2355 ../../Zotlabs/Module/Tagger.php:75 -#: ../../Zotlabs/Module/Like.php:455 +#: ../../Zotlabs/Module/Like.php:450 #: ../../Zotlabs/Module/Channel_calendar.php:221 msgid "event" msgstr "el/su evento" -#: ../../include/event.php:1475 +#: ../../include/event.php:1478 msgid "Not specified" msgstr "Sin especificar" -#: ../../include/event.php:1476 +#: ../../include/event.php:1479 msgid "Needs Action" msgstr "Necesita de una intervención" -#: ../../include/event.php:1477 +#: ../../include/event.php:1480 msgid "Completed" msgstr "Completado/a" -#: ../../include/event.php:1478 +#: ../../include/event.php:1481 msgid "In Process" msgstr "En proceso" -#: ../../include/event.php:1479 +#: ../../include/event.php:1482 msgid "Cancelled" msgstr "Cancelado/a" -#: ../../include/event.php:1560 ../../include/connections.php:781 +#: ../../include/event.php:1563 ../../include/connections.php:781 #: ../../Zotlabs/Module/Connedit.php:741 ../../Zotlabs/Module/Cdav.php:1377 msgid "Mobile" msgstr "Móvil" -#: ../../include/event.php:1561 ../../include/connections.php:782 +#: ../../include/event.php:1564 ../../include/connections.php:782 #: ../../Zotlabs/Widget/Notifications.php:43 #: ../../Zotlabs/Module/Connedit.php:742 ../../Zotlabs/Module/Cdav.php:1378 msgid "Home" msgstr "Inicio" -#: ../../include/event.php:1562 ../../include/connections.php:783 +#: ../../include/event.php:1565 ../../include/connections.php:783 msgid "Home, Voice" msgstr "Llamadas particulares" -#: ../../include/event.php:1563 ../../include/connections.php:784 +#: ../../include/event.php:1566 ../../include/connections.php:784 msgid "Home, Fax" msgstr "Fax particular" -#: ../../include/event.php:1564 ../../include/connections.php:785 +#: ../../include/event.php:1567 ../../include/connections.php:785 #: ../../Zotlabs/Module/Connedit.php:743 ../../Zotlabs/Module/Cdav.php:1379 msgid "Work" msgstr "Trabajo" -#: ../../include/event.php:1565 ../../include/connections.php:786 +#: ../../include/event.php:1568 ../../include/connections.php:786 msgid "Work, Voice" msgstr "Llamadas de trabajo" -#: ../../include/event.php:1566 ../../include/connections.php:787 +#: ../../include/event.php:1569 ../../include/connections.php:787 msgid "Work, Fax" msgstr "Fax de trabajo" -#: ../../include/event.php:1567 ../../include/event.php:1574 +#: ../../include/event.php:1570 ../../include/event.php:1577 #: ../../include/selectors.php:64 ../../include/selectors.php:81 #: ../../include/selectors.php:119 ../../include/selectors.php:155 #: ../../include/connections.php:788 ../../include/connections.php:795 @@ -566,70 +583,71 @@ msgstr "Fax de trabajo" msgid "Other" msgstr "Otro" -#: ../../include/feedutils.php:871 ../../include/text.php:1581 +#: ../../include/feedutils.php:849 ../../include/text.php:1579 msgid "unknown" msgstr "desconocido" #: ../../include/items.php:448 ../../addon/hzfiles/hzfiles.php:75 #: ../../addon/redphotos/redphotos.php:119 -#: ../../addon/redfiles/redfiles.php:109 ../../Zotlabs/Module/Share.php:78 +#: ../../addon/redfiles/redfiles.php:109 #: ../../Zotlabs/Module/Import_items.php:116 -#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:55 +#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:54 #: ../../Zotlabs/Module/Subthread.php:89 ../../Zotlabs/Module/Group.php:108 -#: ../../Zotlabs/Module/Like.php:348 ../../Zotlabs/Module/Profperm.php:28 +#: ../../Zotlabs/Module/Like.php:344 ../../Zotlabs/Module/Profperm.php:28 #: ../../Zotlabs/Web/WebServer.php:118 msgid "Permission denied" msgstr "Permiso denegado" -#: ../../include/items.php:1235 +#: ../../include/items.php:1233 msgid "Visible to anybody on the internet." msgstr "Visible para cualquiera en internet." -#: ../../include/items.php:1237 +#: ../../include/items.php:1235 msgid "Visible to you only." msgstr "Visible sólo para usted." -#: ../../include/items.php:1239 +#: ../../include/items.php:1237 msgid "Visible to anybody in this network." msgstr "Visible para cualquiera en esta red." -#: ../../include/items.php:1241 +#: ../../include/items.php:1239 msgid "Visible to anybody authenticated." msgstr "Visible para cualquiera que esté autenticado." -#: ../../include/items.php:1243 +#: ../../include/items.php:1241 #, php-format msgid "Visible to anybody on %s." msgstr "Visible para cualquiera en %s." -#: ../../include/items.php:1245 +#: ../../include/items.php:1243 msgid "Visible to all connections." msgstr "Visible para todas las conexiones." -#: ../../include/items.php:1247 +#: ../../include/items.php:1245 msgid "Visible to approved connections." msgstr "Visible para las conexiones permitidas." -#: ../../include/items.php:1249 +#: ../../include/items.php:1247 msgid "Visible to specific connections." msgstr "Visible para conexiones específicas." -#: ../../include/items.php:3374 ../../Zotlabs/Module/Share.php:110 +#: ../../include/items.php:3340 ../../Zotlabs/Lib/Activity.php:2177 +#: ../../Zotlabs/Module/Share.php:118 #, php-format msgid "🔁 Repeated %1$s's %2$s" msgstr "🔁 Repetidos %2$sde %1$s" -#: ../../include/items.php:3877 ../../addon/flashcards/Mod_Flashcards.php:291 +#: ../../include/items.php:3843 ../../addon/flashcards/Mod_Flashcards.php:291 #: ../../addon/flashcards/Mod_Flashcards.php:292 -#: ../../Zotlabs/Module/Display.php:51 ../../Zotlabs/Module/Display.php:112 -#: ../../Zotlabs/Module/Display.php:390 ../../Zotlabs/Module/Thing.php:96 +#: ../../Zotlabs/Module/Display.php:58 ../../Zotlabs/Module/Display.php:119 +#: ../../Zotlabs/Module/Display.php:390 ../../Zotlabs/Module/Thing.php:113 #: ../../Zotlabs/Module/Filestorage.php:29 ../../Zotlabs/Module/Viewsrc.php:25 #: ../../Zotlabs/Module/Admin/Themes.php:72 #: ../../Zotlabs/Module/Admin/Addons.php:263 ../../Zotlabs/Module/Admin.php:61 msgid "Item not found." msgstr "Elemento no encontrado." -#: ../../include/items.php:3957 ../../include/attach.php:156 +#: ../../include/items.php:3923 ../../include/attach.php:156 #: ../../include/attach.php:205 ../../include/attach.php:278 #: ../../include/attach.php:329 ../../include/attach.php:431 #: ../../include/attach.php:445 ../../include/attach.php:452 @@ -643,29 +661,29 @@ msgstr "Elemento no encontrado." #: ../../addon/wiki/Mod_Wiki.php:288 ../../addon/wiki/Mod_Wiki.php:425 #: ../../Zotlabs/Lib/Chatroom.php:135 ../../Zotlabs/Module/Page.php:34 #: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Display.php:386 -#: ../../Zotlabs/Module/Cover_photo.php:341 -#: ../../Zotlabs/Module/Cover_photo.php:354 +#: ../../Zotlabs/Module/Cover_photo.php:298 +#: ../../Zotlabs/Module/Cover_photo.php:311 #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 #: ../../Zotlabs/Module/Editwebpage.php:107 #: ../../Zotlabs/Module/Editwebpage.php:121 #: ../../Zotlabs/Module/Webpages.php:131 ../../Zotlabs/Module/Network.php:18 #: ../../Zotlabs/Module/Service_limits.php:11 -#: ../../Zotlabs/Module/Thing.php:282 ../../Zotlabs/Module/Thing.php:302 -#: ../../Zotlabs/Module/Thing.php:343 ../../Zotlabs/Module/Pdledit.php:35 +#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:331 +#: ../../Zotlabs/Module/Thing.php:372 ../../Zotlabs/Module/Pdledit.php:35 #: ../../Zotlabs/Module/Filestorage.php:20 #: ../../Zotlabs/Module/Filestorage.php:78 #: ../../Zotlabs/Module/Filestorage.php:96 #: ../../Zotlabs/Module/Filestorage.php:119 -#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Mood.php:126 -#: ../../Zotlabs/Module/Register.php:200 ../../Zotlabs/Module/Appman.php:153 -#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Item.php:513 -#: ../../Zotlabs/Module/Item.php:532 ../../Zotlabs/Module/Item.php:542 -#: ../../Zotlabs/Module/Item.php:1443 ../../Zotlabs/Module/Achievements.php:34 +#: ../../Zotlabs/Module/Filestorage.php:165 +#: ../../Zotlabs/Module/Register.php:200 ../../Zotlabs/Module/Appman.php:163 +#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Item.php:512 +#: ../../Zotlabs/Module/Item.php:531 ../../Zotlabs/Module/Item.php:541 +#: ../../Zotlabs/Module/Item.php:1457 ../../Zotlabs/Module/Achievements.php:34 #: ../../Zotlabs/Module/Connedit.php:299 ../../Zotlabs/Module/Defperms.php:181 #: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Regmod.php:20 -#: ../../Zotlabs/Module/Profile_photo.php:390 -#: ../../Zotlabs/Module/Profile_photo.php:421 +#: ../../Zotlabs/Module/Profile_photo.php:389 +#: ../../Zotlabs/Module/Profile_photo.php:420 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 #: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74 @@ -673,21 +691,20 @@ msgstr "Elemento no encontrado." #: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89 #: ../../Zotlabs/Module/Common.php:38 ../../Zotlabs/Module/Locs.php:98 #: ../../Zotlabs/Module/Menu.php:130 ../../Zotlabs/Module/Menu.php:141 -#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Poke.php:141 -#: ../../Zotlabs/Module/Bookmarks.php:70 +#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Bookmarks.php:70 #: ../../Zotlabs/Module/Attach_edit.php:90 #: ../../Zotlabs/Module/Attach_edit.php:99 #: ../../Zotlabs/Module/Attach_edit.php:106 ../../Zotlabs/Module/Group.php:14 #: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Invite.php:64 -#: ../../Zotlabs/Module/Invite.php:315 ../../Zotlabs/Module/Like.php:248 +#: ../../Zotlabs/Module/Invite.php:315 ../../Zotlabs/Module/Like.php:242 #: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 #: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/New_channel.php:105 #: ../../Zotlabs/Module/New_channel.php:130 ../../Zotlabs/Module/Photos.php:71 -#: ../../Zotlabs/Module/Channel.php:222 ../../Zotlabs/Module/Channel.php:379 -#: ../../Zotlabs/Module/Channel.php:418 ../../Zotlabs/Module/Profile.php:99 +#: ../../Zotlabs/Module/Channel.php:233 ../../Zotlabs/Module/Channel.php:390 +#: ../../Zotlabs/Module/Channel.php:428 ../../Zotlabs/Module/Profile.php:99 #: ../../Zotlabs/Module/Profile.php:114 ../../Zotlabs/Module/Moderate.php:15 -#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Profiles.php:171 -#: ../../Zotlabs/Module/Profiles.php:614 +#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Profiles.php:167 +#: ../../Zotlabs/Module/Profiles.php:610 #: ../../Zotlabs/Module/Sharedwithme.php:19 #: ../../Zotlabs/Module/Authtest.php:13 #: ../../Zotlabs/Module/Channel_calendar.php:232 @@ -701,71 +718,29 @@ msgstr "Elemento no encontrado." msgid "Permission denied." msgstr "Acceso denegado." -#: ../../include/items.php:4459 ../../Zotlabs/Module/Group.php:62 +#: ../../include/items.php:4425 ../../Zotlabs/Module/Group.php:62 #: ../../Zotlabs/Module/Group.php:206 msgid "Privacy group not found." msgstr "Grupo de canales no encontrado." -#: ../../include/items.php:4475 +#: ../../include/items.php:4441 msgid "Privacy group is empty." msgstr "El grupo de canales está vacío." -#: ../../include/items.php:4482 +#: ../../include/items.php:4448 #, php-format msgid "Privacy group: %s" msgstr "Grupo de canales: %s" -#: ../../include/items.php:4492 +#: ../../include/items.php:4458 #, php-format msgid "Connection: %s" msgstr "Conexión: %s" -#: ../../include/items.php:4494 +#: ../../include/items.php:4460 msgid "Connection not found." msgstr "Conexión no encontrada" -#: ../../include/items.php:4841 ../../Zotlabs/Module/Cover_photo.php:297 -msgid "female" -msgstr "mujer" - -#: ../../include/items.php:4842 ../../Zotlabs/Module/Cover_photo.php:298 -#, php-format -msgid "%1$s updated her %2$s" -msgstr "%1$s ha actualizado su %2$s" - -#: ../../include/items.php:4843 ../../Zotlabs/Module/Cover_photo.php:299 -msgid "male" -msgstr "hombre" - -#: ../../include/items.php:4844 ../../Zotlabs/Module/Cover_photo.php:300 -#, php-format -msgid "%1$s updated his %2$s" -msgstr "%1$s ha actualizado su %2$s" - -#: ../../include/items.php:4846 ../../Zotlabs/Module/Cover_photo.php:302 -#, php-format -msgid "%1$s updated their %2$s" -msgstr "%1$s ha actualizado su %2$s" - -#: ../../include/items.php:4848 -msgid "profile photo" -msgstr "foto del perfil" - -#: ../../include/items.php:5175 -#, php-format -msgid "[Edited %s]" -msgstr "[se ha editado %s]" - -#: ../../include/items.php:5175 -msgctxt "edit_activity" -msgid "Post" -msgstr "Publicar" - -#: ../../include/items.php:5175 -msgctxt "edit_activity" -msgid "Comment" -msgstr "Comentar" - #: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 #: ../../Zotlabs/Module/Settings/Features.php:38 @@ -778,8 +753,8 @@ msgstr "Desactivado" msgid "On" msgstr "Activado" -#: ../../include/features.php:82 ../../include/nav.php:476 -#: ../../include/nav.php:479 ../../Zotlabs/Lib/Apps.php:351 +#: ../../include/features.php:82 ../../include/nav.php:488 +#: ../../include/nav.php:491 ../../Zotlabs/Lib/Apps.php:351 msgid "Calendar" msgstr "Calendario" @@ -827,7 +802,7 @@ msgstr "Usar el modo blog/lista" msgid "Comments will be displayed separately" msgstr "Los comentarios se mostrarán por separado" -#: ../../include/features.php:133 ../../include/text.php:1058 +#: ../../include/features.php:133 ../../include/text.php:1077 #: ../../Zotlabs/Lib/Apps.php:338 ../../Zotlabs/Module/Connections.php:399 msgid "Connections" msgstr "Conexiones" @@ -1048,7 +1023,7 @@ msgstr "Filtro de entradas personales" msgid "Ability to display only posts that you've interacted on" msgstr "Posibilidad de mostrar sólo los mensajes en los que usted haya interactuado" -#: ../../include/features.php:368 ../../include/nav.php:457 +#: ../../include/features.php:368 ../../include/nav.php:469 #: ../../Zotlabs/Lib/Apps.php:350 #: ../../Zotlabs/Widget/Channel_activities.php:93 #: ../../Zotlabs/Module/Fbrowser.php:29 @@ -1073,8 +1048,8 @@ msgid "" "view" msgstr "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada" -#: ../../include/features.php:390 ../../Zotlabs/Lib/Apps.php:368 -#: ../../Zotlabs/Module/Contactedit.php:444 +#: ../../include/features.php:390 ../../Zotlabs/Lib/Apps.php:366 +#: ../../Zotlabs/Module/Contactedit.php:430 msgid "Profiles" msgstr "Perfiles" @@ -1169,21 +1144,21 @@ msgstr "el almacenamiento en la base de datos ha fallado." msgid "Empty path" msgstr "Ruta vacía" -#: ../../include/attach.php:2147 +#: ../../include/attach.php:1984 #, php-format msgid "%s shared an %s with you" msgstr "%s ha compartido un/una %s con usted" -#: ../../include/attach.php:2147 +#: ../../include/attach.php:1984 #, php-format msgid "%s shared a %s with you" msgstr "%s ha compartido un/una %s con usted" -#: ../../include/attach.php:2147 +#: ../../include/attach.php:1984 ../../Zotlabs/Module/Like.php:447 msgid "image" msgstr "Imagen" -#: ../../include/attach.php:2147 ../../addon/redfiles/redfilehelper.php:64 +#: ../../include/attach.php:1984 ../../addon/redfiles/redfilehelper.php:64 msgid "file" msgstr "fichero" @@ -1216,12 +1191,12 @@ msgid "Monthly" msgstr "Mensualmente" #: ../../include/selectors.php:64 ../../include/selectors.php:81 -#: ../../include/channel.php:1720 ../../addon/openid/Mod_Id.php:85 +#: ../../include/channel.php:1728 ../../addon/openid/Mod_Id.php:85 msgid "Male" msgstr "Hombre" #: ../../include/selectors.php:64 ../../include/selectors.php:81 -#: ../../include/channel.php:1718 ../../addon/openid/Mod_Id.php:87 +#: ../../include/channel.php:1726 ../../addon/openid/Mod_Id.php:87 msgid "Female" msgstr "Mujer" @@ -1257,11 +1232,11 @@ msgstr "Transexual" msgid "Hermaphrodite" msgstr "Hermafrodita" -#: ../../include/selectors.php:64 ../../include/channel.php:1724 +#: ../../include/selectors.php:64 ../../include/channel.php:1732 msgid "Neuter" msgstr "Neutral" -#: ../../include/selectors.php:64 ../../include/channel.php:1726 +#: ../../include/selectors.php:64 ../../include/channel.php:1734 msgid "Non-specific" msgstr "No especificado" @@ -1357,9 +1332,9 @@ msgstr "Infiel" msgid "Sex Addict" msgstr "Con adicción al sexo" -#: ../../include/selectors.php:138 ../../include/channel.php:456 -#: ../../include/channel.php:459 ../../Zotlabs/Widget/Affinity.php:38 -#: ../../Zotlabs/Module/Contactedit.php:297 +#: ../../include/selectors.php:138 ../../include/channel.php:464 +#: ../../include/channel.php:467 ../../Zotlabs/Widget/Affinity.php:38 +#: ../../Zotlabs/Module/Contactedit.php:283 #: ../../Zotlabs/Module/Connedit.php:581 msgid "Friends" msgstr "Amigos/as" @@ -1448,28 +1423,41 @@ msgstr "No me importa" msgid "Ask me" msgstr "Pregúnteme" -#: ../../include/activities.php:42 +#: ../../include/activities.php:30 msgid " and " msgstr " y " -#: ../../include/activities.php:50 +#: ../../include/activities.php:32 +msgid ", " +msgstr ", " + +#: ../../include/activities.php:36 ../../include/activities.php:38 +#: ../../addon/openid/MysqlProvider.php:58 +#: ../../addon/openid/MysqlProvider.php:59 +#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:364 +#: ../../Zotlabs/Module/Profile_photo.php:226 +msgid "Profile Photo" +msgstr "Foto del perfil" + +#: ../../include/activities.php:36 +#: ../../store/[data]/smarty3/compiled/2cbde885645602969010e846a38817a1297aafb9_0.file.cover_photo.tpl.php:127 +#: ../../Zotlabs/Module/Cover_photo.php:229 +msgid "Cover Photo" +msgstr "Imagen de portada del perfil" + +#: ../../include/activities.php:45 msgid "public profile" msgstr "el perfil público" -#: ../../include/activities.php:59 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" -msgstr "%1$s ha cambiado %2$s a “%3$s”" - -#: ../../include/activities.php:60 +#: ../../include/activities.php:62 #, php-format -msgid "Visit %1$s's %2$s" -msgstr "Visitar %2$s de %1$s" +msgid "%1$s %2$s has been updated to %3$s." +msgstr "%1$s%2$sse ha actualizado a %3$s." -#: ../../include/activities.php:63 +#: ../../include/activities.php:65 #, php-format -msgid "%1$s has an updated %2$s, changing %3$s." -msgstr "%1$s ha actualizado %2$s, cambiando %3$s." +msgid "%1$s updated the %2$s. Changed %3$s." +msgstr "%1$sactualizó el %2$s. Ha cambiado %3$s." #: ../../include/contact_widgets.php:11 #, php-format @@ -1480,7 +1468,7 @@ msgstr[1] "%d invitaciones disponibles" msgstr[2] "%d invitaciones disponibles" #: ../../include/contact_widgets.php:16 ../../include/acl_selectors.php:145 -#: ../../Zotlabs/Module/Admin/Site.php:419 +#: ../../Zotlabs/Module/Admin/Site.php:405 msgid "Advanced" msgstr "Avanzado" @@ -1559,10 +1547,10 @@ msgid "Summary: " msgstr "Resumen: " #: ../../include/cdav.php:158 ../../include/cdav.php:159 -#: ../../include/cdav.php:167 ../../include/conversation.php:1226 -#: ../../Zotlabs/Lib/Apps.php:1169 ../../Zotlabs/Lib/Apps.php:1253 -#: ../../Zotlabs/Lib/Activity.php:1678 ../../Zotlabs/Widget/Album.php:90 -#: ../../Zotlabs/Widget/Pinned.php:275 ../../Zotlabs/Widget/Portfolio.php:99 +#: ../../include/cdav.php:167 ../../include/conversation.php:999 +#: ../../Zotlabs/Lib/Apps.php:1167 ../../Zotlabs/Lib/Apps.php:1251 +#: ../../Zotlabs/Lib/Activity.php:1675 ../../Zotlabs/Widget/Album.php:90 +#: ../../Zotlabs/Widget/Pinned.php:255 ../../Zotlabs/Widget/Portfolio.php:99 #: ../../Zotlabs/Module/Embedphotos.php:177 #: ../../Zotlabs/Module/Photos.php:788 ../../Zotlabs/Module/Photos.php:1246 msgid "Unknown" @@ -1600,7 +1588,7 @@ msgid "edit" msgstr "editar" #: ../../include/group.php:327 ../../include/acl_selectors.php:87 -#: ../../Zotlabs/Lib/Apps.php:369 ../../Zotlabs/Widget/Activity_filter.php:95 +#: ../../Zotlabs/Lib/Apps.php:367 ../../Zotlabs/Widget/Activity_filter.php:95 #: ../../Zotlabs/Module/Group.php:143 msgid "Privacy Groups" msgstr "Grupos de canales" @@ -1650,7 +1638,7 @@ msgstr "quiero" msgid "wants" msgstr "quiere" -#: ../../include/taxonomy.php:587 ../../Zotlabs/Lib/ThreadItem.php:310 +#: ../../include/taxonomy.php:587 ../../Zotlabs/Lib/ThreadItem.php:333 msgid "like" msgstr "me gusta" @@ -1658,7 +1646,7 @@ msgstr "me gusta" msgid "likes" msgstr "gusta de" -#: ../../include/taxonomy.php:588 ../../Zotlabs/Lib/ThreadItem.php:311 +#: ../../include/taxonomy.php:588 ../../Zotlabs/Lib/ThreadItem.php:334 msgid "dislike" msgstr "no me gusta" @@ -1666,9 +1654,8 @@ msgstr "no me gusta" msgid "dislikes" msgstr "no gusta de" -#: ../../include/taxonomy.php:675 ../../include/conversation.php:1777 -#: ../../include/channel.php:1779 ../../Zotlabs/Lib/ThreadItem.php:233 -#: ../../Zotlabs/Module/Photos.php:1130 +#: ../../include/taxonomy.php:675 ../../include/conversation.php:1550 +#: ../../Zotlabs/Module/Photos.php:1129 msgctxt "noun" msgid "Like" msgid_plural "Likes" @@ -1676,9 +1663,9 @@ msgstr[0] "Me gusta" msgstr[1] "Me gusta" msgstr[2] "Me gusta" -#: ../../include/photo/photo_driver.php:450 +#: ../../include/photo/photo_driver.php:457 #: ../../Zotlabs/Module/Profile_photo.php:167 -#: ../../Zotlabs/Module/Profile_photo.php:337 +#: ../../Zotlabs/Module/Profile_photo.php:336 msgid "Profile Photos" msgstr "Fotos del perfil" @@ -1783,7 +1770,7 @@ msgid "Help:" msgstr "Ayuda:" #: ../../include/help.php:119 ../../include/help.php:127 -#: ../../include/nav.php:181 ../../include/nav.php:328 +#: ../../include/nav.php:193 ../../include/nav.php:340 #: ../../Zotlabs/Lib/Apps.php:353 ../../Zotlabs/Module/Layouts.php:184 msgid "Help" msgstr "Ayuda" @@ -1795,7 +1782,7 @@ msgstr "No encontrado" #: ../../include/help.php:134 ../../addon/cards/cards.php:104 #: ../../addon/articles/articles.php:105 #: ../../addon/wiki/Lib/NativeWikiPage.php:545 -#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Display.php:147 +#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Display.php:154 #: ../../Zotlabs/Module/Block.php:77 ../../Zotlabs/Web/Router.php:186 msgid "Page not found." msgstr "Página no encontrada." @@ -1808,12 +1795,12 @@ msgstr "¿Borrar este elemento?" msgid "Item deleted" msgstr "Elemento eliminado" -#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:831 +#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:861 #: ../../Zotlabs/Module/Photos.php:1094 ../../Zotlabs/Module/Photos.php:1207 msgid "Comment" msgstr "Comentar" -#: ../../include/js_strings.php:8 ../../Zotlabs/Lib/ThreadItem.php:540 +#: ../../include/js_strings.php:8 ../../Zotlabs/Lib/ThreadItem.php:570 #, php-format msgid "%s show all" msgstr "%s mostrar todo" @@ -1886,8 +1873,8 @@ msgid "Unsaved changes. Are you sure you wish to leave this page?" msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?" #: ../../include/js_strings.php:26 ../../Zotlabs/Module/Locs.php:121 -#: ../../Zotlabs/Module/Pubsites.php:54 ../../Zotlabs/Module/Profiles.php:479 -#: ../../Zotlabs/Module/Profiles.php:750 ../../Zotlabs/Module/Cdav.php:1006 +#: ../../Zotlabs/Module/Pubsites.php:54 ../../Zotlabs/Module/Profiles.php:475 +#: ../../Zotlabs/Module/Profiles.php:746 ../../Zotlabs/Module/Cdav.php:1006 msgid "Location" msgstr "Ubicación" @@ -1941,12 +1928,12 @@ msgstr "Volver a la respuesta" msgid "Pinned" msgstr "Anclado/a" -#: ../../include/js_strings.php:39 ../../Zotlabs/Lib/ThreadItem.php:473 +#: ../../include/js_strings.php:39 ../../Zotlabs/Lib/ThreadItem.php:494 msgid "Pin to the top" msgstr "Anclar en la parte superior" -#: ../../include/js_strings.php:40 ../../Zotlabs/Lib/ThreadItem.php:473 -#: ../../Zotlabs/Widget/Pinned.php:160 +#: ../../include/js_strings.php:40 ../../Zotlabs/Lib/ThreadItem.php:494 +#: ../../Zotlabs/Widget/Pinned.php:149 msgid "Unpin from the top" msgstr "Desanclar de la parte superior" @@ -2038,19 +2025,19 @@ msgstr " " msgid "timeago.numbers" msgstr "timeago.numbers" -#: ../../include/js_strings.php:75 ../../include/text.php:1504 +#: ../../include/js_strings.php:75 ../../include/text.php:1502 msgid "January" msgstr "enero" -#: ../../include/js_strings.php:76 ../../include/text.php:1504 +#: ../../include/js_strings.php:76 ../../include/text.php:1502 msgid "February" msgstr "febrero" -#: ../../include/js_strings.php:77 ../../include/text.php:1504 +#: ../../include/js_strings.php:77 ../../include/text.php:1502 msgid "March" msgstr "marzo" -#: ../../include/js_strings.php:78 ../../include/text.php:1504 +#: ../../include/js_strings.php:78 ../../include/text.php:1502 msgid "April" msgstr "abril" @@ -2059,31 +2046,31 @@ msgctxt "long" msgid "May" msgstr "mayo" -#: ../../include/js_strings.php:80 ../../include/text.php:1504 +#: ../../include/js_strings.php:80 ../../include/text.php:1502 msgid "June" msgstr "junio" -#: ../../include/js_strings.php:81 ../../include/text.php:1504 +#: ../../include/js_strings.php:81 ../../include/text.php:1502 msgid "July" msgstr "julio" -#: ../../include/js_strings.php:82 ../../include/text.php:1504 +#: ../../include/js_strings.php:82 ../../include/text.php:1502 msgid "August" msgstr "agosto" -#: ../../include/js_strings.php:83 ../../include/text.php:1504 +#: ../../include/js_strings.php:83 ../../include/text.php:1502 msgid "September" msgstr "septiembre" -#: ../../include/js_strings.php:84 ../../include/text.php:1504 +#: ../../include/js_strings.php:84 ../../include/text.php:1502 msgid "October" msgstr "octubre" -#: ../../include/js_strings.php:85 ../../include/text.php:1504 +#: ../../include/js_strings.php:85 ../../include/text.php:1502 msgid "November" msgstr "noviembre" -#: ../../include/js_strings.php:86 ../../include/text.php:1504 +#: ../../include/js_strings.php:86 ../../include/text.php:1502 msgid "December" msgstr "diciembre" @@ -2136,31 +2123,31 @@ msgstr "nov" msgid "Dec" msgstr "dic" -#: ../../include/js_strings.php:99 ../../include/text.php:1500 +#: ../../include/js_strings.php:99 ../../include/text.php:1498 msgid "Sunday" msgstr "domingo" -#: ../../include/js_strings.php:100 ../../include/text.php:1500 +#: ../../include/js_strings.php:100 ../../include/text.php:1498 msgid "Monday" msgstr "lunes" -#: ../../include/js_strings.php:101 ../../include/text.php:1500 +#: ../../include/js_strings.php:101 ../../include/text.php:1498 msgid "Tuesday" msgstr "martes" -#: ../../include/js_strings.php:102 ../../include/text.php:1500 +#: ../../include/js_strings.php:102 ../../include/text.php:1498 msgid "Wednesday" msgstr "miércoles" -#: ../../include/js_strings.php:103 ../../include/text.php:1500 +#: ../../include/js_strings.php:103 ../../include/text.php:1498 msgid "Thursday" msgstr "jueves" -#: ../../include/js_strings.php:104 ../../include/text.php:1500 +#: ../../include/js_strings.php:104 ../../include/text.php:1498 msgid "Friday" msgstr "viernes" -#: ../../include/js_strings.php:105 ../../include/text.php:1500 +#: ../../include/js_strings.php:105 ../../include/text.php:1498 msgid "Saturday" msgstr "sábado" @@ -2230,9 +2217,9 @@ msgstr "Dirección de correo electrónica no válida" #: ../../addon/cart/submodules/orderoptions.php:358 #: ../../addon/cart/submodules/orderoptions.php:434 #: ../../addon/cart/submodules/orderoptions.php:458 -#: ../../Zotlabs/Module/Register.php:498 ../../Zotlabs/Module/Appman.php:208 -#: ../../Zotlabs/Module/Appman.php:209 ../../Zotlabs/Module/Profiles.php:761 -#: ../../Zotlabs/Module/Profiles.php:765 +#: ../../Zotlabs/Module/Register.php:498 ../../Zotlabs/Module/Appman.php:218 +#: ../../Zotlabs/Module/Appman.php:219 ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Profiles.php:761 #: ../../Zotlabs/Module/Settings/Multifactor.php:84 msgid "Required" msgstr "Obligatorio" @@ -2244,133 +2231,107 @@ msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s" #: ../../include/conversation.php:147 ../../include/text.php:2352 #: ../../addon/redphotos/redphotohelper.php:71 -#: ../../addon/pubcrawl/as.php:1958 ../../addon/diaspora/Receiver.php:1693 -#: ../../Zotlabs/Lib/Activity.php:3694 ../../Zotlabs/Module/Subthread.php:115 -#: ../../Zotlabs/Module/Tagger.php:71 ../../Zotlabs/Module/Like.php:453 +#: ../../addon/diaspora/Receiver.php:1693 +#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:71 msgid "photo" msgstr "foto" -#: ../../include/conversation.php:154 ../../Zotlabs/Module/Like.php:184 +#: ../../include/conversation.php:155 ../../Zotlabs/Module/Like.php:183 msgid "channel" msgstr "el canal" -#: ../../include/conversation.php:177 ../../include/markdown.php:208 -#: ../../include/text.php:2358 ../../include/bbcode.php:566 -#: ../../Zotlabs/Lib/Activity.php:3694 ../../Zotlabs/Module/Tagger.php:79 +#: ../../include/conversation.php:178 ../../include/markdown.php:208 +#: ../../include/text.php:2358 ../../include/bbcode.php:571 +#: ../../Zotlabs/Module/Tagger.php:79 msgid "post" msgstr "la entrada" -#: ../../include/conversation.php:179 ../../include/text.php:2360 +#: ../../include/conversation.php:180 ../../include/text.php:2360 #: ../../Zotlabs/Module/Tagger.php:81 msgid "comment" msgstr "el comentario" -#: ../../include/conversation.php:193 ../../addon/pubcrawl/as.php:1993 -#: ../../addon/diaspora/Receiver.php:1628 ../../Zotlabs/Lib/Activity.php:3727 -#: ../../Zotlabs/Module/Like.php:485 +#: ../../include/conversation.php:194 ../../addon/diaspora/Receiver.php:1628 +#: ../../Zotlabs/Module/Like.php:483 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "A %1$s le gusta %3$s de %2$s" -#: ../../include/conversation.php:196 ../../addon/pubcrawl/as.php:1995 -#: ../../Zotlabs/Lib/Activity.php:3729 ../../Zotlabs/Module/Like.php:487 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" -msgstr "A %1$s no le gusta %3$s de %2$s" - -#: ../../include/conversation.php:202 +#: ../../include/conversation.php:196 #, php-format msgid "likes %1$s's %2$s" msgstr "gusta de %2$s de %1$s" -#: ../../include/conversation.php:205 +#: ../../include/conversation.php:199 ../../Zotlabs/Module/Like.php:485 #, php-format -msgid "doesn't like %1$s's %2$s" -msgstr "no gusta de %2$s de %1$s" +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "A %1$s no le gusta %3$s de %2$s" -#: ../../include/conversation.php:245 ../../include/conversation.php:247 +#: ../../include/conversation.php:200 #, php-format -msgid "%1$s is now connected with %2$s" -msgstr "%1$s ahora está conectado/a con %2$s" +msgid "doesn't like %1$s's %2$s" +msgstr "no gusta de %2$s de %1$s" -#: ../../include/conversation.php:282 +#: ../../include/conversation.php:203 #, php-format -msgid "%1$s poked %2$s" -msgstr "%1$s ha dado un toque a %2$s" - -#: ../../include/conversation.php:286 ../../include/text.php:1262 -msgid "poked" -msgstr "ha dado un toque a" +msgid "%1$s repeated %2$s's %3$s" +msgstr "%1$scompartió %3$sde %2$s" -#: ../../include/conversation.php:305 ../../Zotlabs/Module/Mood.php:76 +#: ../../include/conversation.php:204 #, php-format -msgctxt "mood" -msgid "%1$s is %2$s" -msgstr "%1$s está %2$s" +msgid "repeated %1$s's %2$s" +msgstr "compartió %2$s de %1$s" -#: ../../include/conversation.php:535 ../../Zotlabs/Lib/ThreadItem.php:501 +#: ../../include/conversation.php:332 ../../Zotlabs/Lib/ThreadItem.php:532 msgid "This is an unsaved preview" msgstr "Esta es una previsualización sin guardar" -#: ../../include/conversation.php:667 ../../Zotlabs/Module/Photos.php:1110 +#: ../../include/conversation.php:464 ../../Zotlabs/Module/Photos.php:1110 msgctxt "title" msgid "Likes" msgstr "Me gusta" -#: ../../include/conversation.php:668 ../../Zotlabs/Module/Photos.php:1110 +#: ../../include/conversation.php:465 ../../Zotlabs/Module/Photos.php:1110 msgctxt "title" msgid "Dislikes" msgstr "No me gusta" -#: ../../include/conversation.php:669 ../../Zotlabs/Widget/Pinned.php:82 -#: ../../Zotlabs/Module/Photos.php:1111 -msgctxt "title" -msgid "Agree" -msgstr "De acuerdo" - -#: ../../include/conversation.php:670 ../../Zotlabs/Widget/Pinned.php:83 -#: ../../Zotlabs/Module/Photos.php:1111 -msgctxt "title" -msgid "Disagree" -msgstr "En desacuerdo" - -#: ../../include/conversation.php:671 ../../Zotlabs/Widget/Pinned.php:84 +#: ../../include/conversation.php:466 ../../Zotlabs/Widget/Pinned.php:71 #: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" -msgid "Abstain" -msgstr "Abstención" - -#: ../../include/conversation.php:672 ../../Zotlabs/Widget/Pinned.php:71 -#: ../../Zotlabs/Module/Photos.php:1112 -msgctxt "title" msgid "Attending" msgstr "Participaré" -#: ../../include/conversation.php:673 ../../Zotlabs/Widget/Pinned.php:72 -#: ../../Zotlabs/Module/Photos.php:1112 +#: ../../include/conversation.php:467 ../../Zotlabs/Widget/Pinned.php:72 +#: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Not attending" msgstr "No participaré" -#: ../../include/conversation.php:674 ../../Zotlabs/Widget/Pinned.php:73 -#: ../../Zotlabs/Module/Photos.php:1112 +#: ../../include/conversation.php:468 ../../Zotlabs/Widget/Pinned.php:73 +#: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Might attend" msgstr "Quizá participe" -#: ../../include/conversation.php:744 +#: ../../include/conversation.php:470 +msgctxt "title" +msgid "Repeats" +msgstr "Se repite" + +#: ../../include/conversation.php:539 msgid "Select" msgstr "Seleccionar" -#: ../../include/conversation.php:745 ../../include/conversation.php:808 +#: ../../include/conversation.php:540 ../../include/conversation.php:601 #: ../../addon/cards/Mod_Card_edit.php:130 #: ../../addon/articles/Mod_Article_edit.php:128 -#: ../../Zotlabs/Lib/Apps.php:619 ../../Zotlabs/Lib/ThreadItem.php:179 -#: ../../Zotlabs/Lib/ThreadItem.php:509 ../../Zotlabs/Storage/Browser.php:387 +#: ../../Zotlabs/Lib/Apps.php:617 ../../Zotlabs/Lib/ThreadItem.php:184 +#: ../../Zotlabs/Lib/ThreadItem.php:540 ../../Zotlabs/Storage/Browser.php:387 #: ../../Zotlabs/Module/Editwebpage.php:167 #: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Module/Oauth.php:172 -#: ../../Zotlabs/Module/Thing.php:269 ../../Zotlabs/Module/Tokens.php:295 -#: ../../Zotlabs/Module/Contactedit.php:667 +#: ../../Zotlabs/Module/Thing.php:295 ../../Zotlabs/Module/Tokens.php:295 +#: ../../Zotlabs/Module/Contactedit.php:651 #: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Connedit.php:749 #: ../../Zotlabs/Module/Admin/Accounts.php:320 #: ../../Zotlabs/Module/Admin/Profs.php:176 @@ -2383,146 +2344,141 @@ msgstr "Seleccionar" msgid "Delete" msgstr "Eliminar" -#: ../../include/conversation.php:751 ../../Zotlabs/Lib/ThreadItem.php:263 +#: ../../include/conversation.php:546 ../../Zotlabs/Lib/ThreadItem.php:286 msgid "Toggle Star Status" msgstr "Activar o desactivar el estado de entrada preferida" -#: ../../include/conversation.php:757 +#: ../../include/conversation.php:552 msgid "Private Message" msgstr "Mensaje Privado" -#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:273 -#: ../../Zotlabs/Widget/Pinned.php:93 +#: ../../include/conversation.php:561 ../../Zotlabs/Lib/ThreadItem.php:296 +#: ../../Zotlabs/Widget/Pinned.php:82 msgid "Message signature validated" msgstr "Firma de mensaje validada" -#: ../../include/conversation.php:767 ../../Zotlabs/Lib/ThreadItem.php:274 -#: ../../Zotlabs/Widget/Pinned.php:94 +#: ../../include/conversation.php:562 ../../Zotlabs/Lib/ThreadItem.php:297 +#: ../../Zotlabs/Widget/Pinned.php:83 msgid "Message signature incorrect" msgstr "Firma de mensaje incorrecta" -#: ../../include/conversation.php:807 ../../Zotlabs/Lib/ThreadItem.php:508 +#: ../../include/conversation.php:600 ../../Zotlabs/Lib/ThreadItem.php:539 #: ../../Zotlabs/Module/Admin/Accounts.php:318 #: ../../Zotlabs/Module/Connections.php:358 #: ../../Zotlabs/Module/Connections.php:409 msgid "Approve" msgstr "Aprobar" -#: ../../include/conversation.php:813 +#: ../../include/conversation.php:606 #, php-format msgid "View %s's profile @ %s" msgstr "Ver el perfil @ %s de %s" -#: ../../include/conversation.php:835 +#: ../../include/conversation.php:628 msgid "Categories:" msgstr "Temas:" -#: ../../include/conversation.php:836 +#: ../../include/conversation.php:629 msgid "Filed under:" msgstr "Archivado bajo:" -#: ../../include/conversation.php:842 ../../Zotlabs/Lib/ThreadItem.php:430 -#: ../../Zotlabs/Widget/Pinned.php:137 +#: ../../include/conversation.php:635 ../../Zotlabs/Lib/ThreadItem.php:451 +#: ../../Zotlabs/Widget/Pinned.php:126 #, php-format msgid "from %s" msgstr "desde %s" -#: ../../include/conversation.php:845 ../../Zotlabs/Lib/ThreadItem.php:433 -#: ../../Zotlabs/Widget/Pinned.php:140 +#: ../../include/conversation.php:638 ../../Zotlabs/Lib/ThreadItem.php:454 +#: ../../Zotlabs/Widget/Pinned.php:129 #, php-format msgid "last edited: %s" msgstr "último cambio: %s" -#: ../../include/conversation.php:846 ../../Zotlabs/Lib/ThreadItem.php:434 -#: ../../Zotlabs/Widget/Pinned.php:141 +#: ../../include/conversation.php:639 ../../Zotlabs/Lib/ThreadItem.php:455 +#: ../../Zotlabs/Widget/Pinned.php:130 #, php-format msgid "Expires: %s" msgstr "Caduca: %s" -#: ../../include/conversation.php:861 ../../addon/cards/cards.php:82 +#: ../../include/conversation.php:654 ../../addon/cards/cards.php:82 #: ../../addon/articles/articles.php:83 msgid "View in context" msgstr "Mostrar en su contexto" -#: ../../include/conversation.php:863 ../../Zotlabs/Lib/ThreadItem.php:502 +#: ../../include/conversation.php:656 ../../Zotlabs/Lib/ThreadItem.php:533 #: ../../Zotlabs/Module/Photos.php:1077 msgid "Please wait" msgstr "Espere por favor" -#: ../../include/conversation.php:964 +#: ../../include/conversation.php:757 msgid "remove" msgstr "eliminar" -#: ../../include/conversation.php:968 +#: ../../include/conversation.php:761 msgid "Loading..." msgstr "Cargando..." -#: ../../include/conversation.php:969 ../../Zotlabs/Lib/ThreadItem.php:290 +#: ../../include/conversation.php:762 ../../Zotlabs/Lib/ThreadItem.php:313 msgid "Conversation Features" msgstr "Funciones de conversación " -#: ../../include/conversation.php:970 +#: ../../include/conversation.php:763 msgid "Delete Selected Items" msgstr "Eliminar elementos seleccionados" -#: ../../include/conversation.php:1006 +#: ../../include/conversation.php:799 msgid "View Source" msgstr "Ver el código fuente de la entrada" -#: ../../include/conversation.php:1016 +#: ../../include/conversation.php:809 msgid "Follow Thread" msgstr "Seguir este hilo" -#: ../../include/conversation.php:1025 +#: ../../include/conversation.php:818 msgid "Unfollow Thread" msgstr "Dejar de seguir este hilo" -#: ../../include/conversation.php:1105 ../../include/nav.php:114 +#: ../../include/conversation.php:895 ../../include/nav.php:126 #: ../../addon/openclipatar/openclipatar.php:58 ../../Zotlabs/Lib/Apps.php:349 #: ../../Zotlabs/Module/Connedit.php:480 msgid "View Profile" msgstr "Ver el perfil" -#: ../../include/conversation.php:1117 ../../Zotlabs/Module/Connedit.php:501 +#: ../../include/conversation.php:907 ../../Zotlabs/Module/Connedit.php:501 msgid "Recent Activity" msgstr "Actividad reciente" -#: ../../include/conversation.php:1129 ../../include/connections.php:141 -#: ../../include/channel.php:1616 ../../Zotlabs/Widget/Suggestions.php:51 +#: ../../include/conversation.php:919 ../../include/connections.php:141 +#: ../../include/channel.php:1624 ../../Zotlabs/Widget/Suggestions.php:51 #: ../../Zotlabs/Widget/Follow.php:37 ../../Zotlabs/Module/Suggest.php:69 #: ../../Zotlabs/Module/Directory.php:371 #: ../../Zotlabs/Module/Connections.php:365 msgid "Connect" msgstr "Conectar" -#: ../../include/conversation.php:1141 +#: ../../include/conversation.php:931 msgid "Edit Connection" msgstr "Editar conexión" -#: ../../include/conversation.php:1153 ../../Zotlabs/Lib/Apps.php:356 -#: ../../Zotlabs/Module/Poke.php:181 ../../Zotlabs/Module/Poke.php:185 -msgid "Poke" -msgstr "Toques y otras cosas" - -#: ../../include/conversation.php:1228 +#: ../../include/conversation.php:1001 msgid "Approve this item" msgstr "Aprobar este elemento" -#: ../../include/conversation.php:1228 +#: ../../include/conversation.php:1001 msgid "Delete this item" msgstr "Borrar este elemento" -#: ../../include/conversation.php:1282 +#: ../../include/conversation.php:1055 #, php-format msgid "%s likes this." msgstr "A %s le gusta esto." -#: ../../include/conversation.php:1282 +#: ../../include/conversation.php:1055 #, php-format msgid "%s doesn't like this." msgstr "A %s no le gusta esto." -#: ../../include/conversation.php:1286 +#: ../../include/conversation.php:1059 #, php-format msgid "%2$d people like this." msgid_plural "%2$d people like this." @@ -2530,7 +2486,7 @@ msgstr[0] "a %2$d personas le gusta esto." msgstr[1] "A %2$d personas les gusta esto." msgstr[2] "A %2$d personas les gusta esto." -#: ../../include/conversation.php:1288 +#: ../../include/conversation.php:1061 #, php-format msgid "%2$d people don't like this." msgid_plural "%2$d people don't like this." @@ -2538,11 +2494,11 @@ msgstr[0] "a %2$d personas no les gusta esto." msgstr[1] "A %2$d personas no les gusta esto." msgstr[2] "A %2$d personas no les gusta esto." -#: ../../include/conversation.php:1294 +#: ../../include/conversation.php:1067 msgid "and" msgstr "y" -#: ../../include/conversation.php:1297 +#: ../../include/conversation.php:1070 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" @@ -2550,156 +2506,157 @@ msgstr[0] ", y %d persona más" msgstr[1] ", y %d personas más" msgstr[2] ", y %d personas más" -#: ../../include/conversation.php:1298 +#: ../../include/conversation.php:1071 #, php-format msgid "%s like this." msgstr "A %s le gusta esto." -#: ../../include/conversation.php:1298 +#: ../../include/conversation.php:1071 #, php-format msgid "%s don't like this." msgstr "A %s no le gusta esto." -#: ../../include/conversation.php:1349 ../../addon/hsse/hsse.php:82 +#: ../../include/conversation.php:1122 ../../addon/hsse/hsse.php:82 msgid "Set your location" msgstr "Establecer su ubicación" -#: ../../include/conversation.php:1350 ../../addon/hsse/hsse.php:83 +#: ../../include/conversation.php:1123 ../../addon/hsse/hsse.php:83 msgid "Clear browser location" msgstr "Eliminar los datos de localización geográfica del navegador" -#: ../../include/conversation.php:1362 ../../addon/cards/Mod_Card_edit.php:101 +#: ../../include/conversation.php:1135 ../../addon/cards/Mod_Card_edit.php:101 #: ../../addon/articles/Mod_Article_edit.php:99 ../../addon/hsse/hsse.php:95 #: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:219 #: ../../Zotlabs/Module/Editblock.php:116 msgid "Insert web link" msgstr "Insertar enlace web" -#: ../../include/conversation.php:1366 ../../addon/hsse/hsse.php:99 +#: ../../include/conversation.php:1139 ../../addon/hsse/hsse.php:99 msgid "Embed (existing) photo from your photo albums" msgstr "Insertar una foto (existente) de sus álbumes" -#: ../../include/conversation.php:1399 ../../addon/hsse/hsse.php:134 +#: ../../include/conversation.php:1172 ../../addon/hsse/hsse.php:134 #: ../../Zotlabs/Module/Chat.php:217 msgid "Please enter a link URL:" msgstr "Por favor, introduzca la dirección del enlace:" -#: ../../include/conversation.php:1400 ../../addon/hsse/hsse.php:135 +#: ../../include/conversation.php:1173 ../../addon/hsse/hsse.php:135 msgid "Tag term:" msgstr "Término de la etiqueta:" -#: ../../include/conversation.php:1401 ../../addon/hsse/hsse.php:136 +#: ../../include/conversation.php:1174 ../../addon/hsse/hsse.php:136 msgid "Where are you right now?" msgstr "¿Donde está ahora?" -#: ../../include/conversation.php:1404 ../../addon/wiki/Mod_Wiki.php:400 -#: ../../addon/hsse/hsse.php:139 ../../Zotlabs/Module/Cover_photo.php:430 -#: ../../Zotlabs/Module/Profile_photo.php:555 +#: ../../include/conversation.php:1177 ../../addon/wiki/Mod_Wiki.php:400 +#: ../../addon/hsse/hsse.php:139 ../../Zotlabs/Module/Cover_photo.php:387 +#: ../../Zotlabs/Module/Profile_photo.php:554 msgid "Choose images to embed" msgstr "Elegir imágenes para incluir" -#: ../../include/conversation.php:1405 ../../addon/wiki/Mod_Wiki.php:401 -#: ../../addon/hsse/hsse.php:140 ../../Zotlabs/Module/Cover_photo.php:431 -#: ../../Zotlabs/Module/Profile_photo.php:556 +#: ../../include/conversation.php:1178 ../../addon/wiki/Mod_Wiki.php:401 +#: ../../addon/hsse/hsse.php:140 ../../Zotlabs/Module/Cover_photo.php:388 +#: ../../Zotlabs/Module/Profile_photo.php:555 msgid "Choose an album" msgstr "Elegir un álbum" -#: ../../include/conversation.php:1406 ../../addon/hsse/hsse.php:141 +#: ../../include/conversation.php:1179 ../../addon/hsse/hsse.php:141 msgid "Choose a different album..." msgstr "Elegir un álbum diferente..." -#: ../../include/conversation.php:1407 ../../addon/wiki/Mod_Wiki.php:403 -#: ../../addon/hsse/hsse.php:142 ../../Zotlabs/Module/Cover_photo.php:433 -#: ../../Zotlabs/Module/Profile_photo.php:558 +#: ../../include/conversation.php:1180 ../../addon/wiki/Mod_Wiki.php:403 +#: ../../addon/hsse/hsse.php:142 ../../Zotlabs/Module/Cover_photo.php:390 +#: ../../Zotlabs/Module/Profile_photo.php:557 msgid "Error getting album list" msgstr "Error al obtener la lista de álbumes" -#: ../../include/conversation.php:1408 ../../addon/wiki/Mod_Wiki.php:404 -#: ../../addon/hsse/hsse.php:143 ../../Zotlabs/Module/Cover_photo.php:434 -#: ../../Zotlabs/Module/Profile_photo.php:559 +#: ../../include/conversation.php:1181 ../../addon/wiki/Mod_Wiki.php:404 +#: ../../addon/hsse/hsse.php:143 ../../Zotlabs/Module/Cover_photo.php:391 +#: ../../Zotlabs/Module/Profile_photo.php:558 msgid "Error getting photo link" msgstr "Error al obtener el enlace de la foto" -#: ../../include/conversation.php:1409 ../../addon/wiki/Mod_Wiki.php:405 -#: ../../addon/hsse/hsse.php:144 ../../Zotlabs/Module/Cover_photo.php:435 -#: ../../Zotlabs/Module/Profile_photo.php:560 +#: ../../include/conversation.php:1182 ../../addon/wiki/Mod_Wiki.php:405 +#: ../../addon/hsse/hsse.php:144 ../../Zotlabs/Module/Cover_photo.php:392 +#: ../../Zotlabs/Module/Profile_photo.php:559 msgid "Error getting album" msgstr "Error al obtener el álbum" -#: ../../include/conversation.php:1410 ../../addon/hsse/hsse.php:145 +#: ../../include/conversation.php:1183 ../../addon/hsse/hsse.php:145 msgid "Comments enabled" msgstr "Comentarios habilitados" -#: ../../include/conversation.php:1411 ../../addon/hsse/hsse.php:146 +#: ../../include/conversation.php:1184 ../../addon/hsse/hsse.php:146 msgid "Comments disabled" msgstr "Comentarios deshabilitados" -#: ../../include/conversation.php:1428 ../../addon/hsse/hsse.php:153 -#: ../../Zotlabs/Lib/ThreadItem.php:842 ../../Zotlabs/Module/Webpages.php:257 +#: ../../include/conversation.php:1201 ../../addon/hsse/hsse.php:153 +#: ../../Zotlabs/Lib/ThreadItem.php:872 ../../Zotlabs/Module/Webpages.php:257 #: ../../Zotlabs/Module/Photos.php:1096 msgid "Preview" msgstr "Previsualizar" -#: ../../include/conversation.php:1461 ../../addon/wiki/Mod_Wiki.php:304 -#: ../../addon/hsse/hsse.php:186 ../../Zotlabs/Widget/Cdav.php:142 -#: ../../Zotlabs/Module/Webpages.php:251 ../../Zotlabs/Module/Layouts.php:192 -#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Photos.php:1076 +#: ../../include/conversation.php:1234 ../../addon/wiki/Mod_Wiki.php:304 +#: ../../addon/hsse/hsse.php:186 ../../Zotlabs/Lib/ThreadItem.php:341 +#: ../../Zotlabs/Widget/Cdav.php:142 ../../Zotlabs/Module/Webpages.php:251 +#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Blocks.php:159 +#: ../../Zotlabs/Module/Photos.php:1076 msgid "Share" msgstr "Compartir" -#: ../../include/conversation.php:1470 ../../addon/hsse/hsse.php:195 +#: ../../include/conversation.php:1243 ../../addon/hsse/hsse.php:195 msgid "Page link name" msgstr "Nombre del enlace de la página" -#: ../../include/conversation.php:1473 ../../addon/hsse/hsse.php:198 +#: ../../include/conversation.php:1246 ../../addon/hsse/hsse.php:198 msgid "Post as" msgstr "Publicar como" -#: ../../include/conversation.php:1475 ../../addon/hsse/hsse.php:200 -#: ../../Zotlabs/Lib/ThreadItem.php:833 +#: ../../include/conversation.php:1248 ../../addon/hsse/hsse.php:200 +#: ../../Zotlabs/Lib/ThreadItem.php:863 msgid "Bold" msgstr "Negrita" -#: ../../include/conversation.php:1476 ../../addon/hsse/hsse.php:201 -#: ../../Zotlabs/Lib/ThreadItem.php:834 +#: ../../include/conversation.php:1249 ../../addon/hsse/hsse.php:201 +#: ../../Zotlabs/Lib/ThreadItem.php:864 msgid "Italic" msgstr "Itálico " -#: ../../include/conversation.php:1477 ../../addon/hsse/hsse.php:202 -#: ../../Zotlabs/Lib/ThreadItem.php:835 +#: ../../include/conversation.php:1250 ../../addon/hsse/hsse.php:202 +#: ../../Zotlabs/Lib/ThreadItem.php:865 msgid "Underline" msgstr "Subrayar" -#: ../../include/conversation.php:1478 ../../addon/hsse/hsse.php:203 -#: ../../Zotlabs/Lib/ThreadItem.php:836 +#: ../../include/conversation.php:1251 ../../addon/hsse/hsse.php:203 +#: ../../Zotlabs/Lib/ThreadItem.php:866 msgid "Quote" msgstr "Citar" -#: ../../include/conversation.php:1479 ../../addon/hsse/hsse.php:204 -#: ../../Zotlabs/Lib/ThreadItem.php:837 +#: ../../include/conversation.php:1252 ../../addon/hsse/hsse.php:204 +#: ../../Zotlabs/Lib/ThreadItem.php:867 msgid "Code" msgstr "Código" -#: ../../include/conversation.php:1480 ../../addon/hsse/hsse.php:205 -#: ../../Zotlabs/Lib/ThreadItem.php:839 +#: ../../include/conversation.php:1253 ../../addon/hsse/hsse.php:205 +#: ../../Zotlabs/Lib/ThreadItem.php:869 msgid "Attach/Upload file" msgstr "Adjuntar/cargar fichero" -#: ../../include/conversation.php:1483 ../../addon/wiki/Mod_Wiki.php:397 +#: ../../include/conversation.php:1256 ../../addon/wiki/Mod_Wiki.php:397 #: ../../addon/hsse/hsse.php:208 msgid "Embed an image from your albums" msgstr "Incluir una imagen de sus álbumes" -#: ../../include/conversation.php:1484 ../../include/conversation.php:1539 +#: ../../include/conversation.php:1257 ../../include/conversation.php:1312 #: ../../addon/cards/Mod_Card_edit.php:132 #: ../../addon/articles/Mod_Article_edit.php:130 #: ../../addon/wiki/Mod_Wiki.php:365 ../../addon/wiki/Mod_Wiki.php:398 #: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 #: ../../Zotlabs/Storage/Browser.php:386 -#: ../../Zotlabs/Module/Cover_photo.php:428 +#: ../../Zotlabs/Module/Cover_photo.php:385 #: ../../Zotlabs/Module/Editwebpage.php:169 ../../Zotlabs/Module/Oauth.php:110 #: ../../Zotlabs/Module/Oauth.php:136 ../../Zotlabs/Module/Connedit.php:750 -#: ../../Zotlabs/Module/Profile_photo.php:553 +#: ../../Zotlabs/Module/Profile_photo.php:552 #: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 #: ../../Zotlabs/Module/Admin/Addons.php:430 #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 @@ -2711,91 +2668,98 @@ msgstr "Incluir una imagen de sus álbumes" msgid "Cancel" msgstr "Cancelar" -#: ../../include/conversation.php:1485 ../../include/conversation.php:1538 +#: ../../include/conversation.php:1258 ../../include/conversation.php:1311 #: ../../addon/wiki/Mod_Wiki.php:399 ../../addon/hsse/hsse.php:210 -#: ../../addon/hsse/hsse.php:257 ../../Zotlabs/Module/Cover_photo.php:429 -#: ../../Zotlabs/Module/Profile_photo.php:554 +#: ../../addon/hsse/hsse.php:257 ../../Zotlabs/Module/Cover_photo.php:386 +#: ../../Zotlabs/Module/Profile_photo.php:553 msgid "OK" msgstr "OK" -#: ../../include/conversation.php:1487 ../../addon/hsse/hsse.php:212 +#: ../../include/conversation.php:1260 ../../addon/hsse/hsse.php:212 msgid "Toggle voting" msgstr "Cambiar votación" -#: ../../include/conversation.php:1488 +#: ../../include/conversation.php:1261 msgid "Toggle poll" msgstr "Activar o desactivar encuestas" -#: ../../include/conversation.php:1489 +#: ../../include/conversation.php:1262 msgid "Option" msgstr "Opción" -#: ../../include/conversation.php:1490 +#: ../../include/conversation.php:1263 msgid "Add option" msgstr "Añadir una opción" -#: ../../include/conversation.php:1491 +#: ../../include/conversation.php:1264 msgid "Minutes" msgstr "Minutos " -#: ../../include/conversation.php:1491 +#: ../../include/conversation.php:1264 msgid "Hours" msgstr "Horas " -#: ../../include/conversation.php:1491 +#: ../../include/conversation.php:1264 msgid "Days" msgstr "Días " -#: ../../include/conversation.php:1492 +#: ../../include/conversation.php:1265 msgid "Allow multiple answers" msgstr "Permitir respuestas múltiples" -#: ../../include/conversation.php:1494 ../../addon/hsse/hsse.php:215 +#: ../../include/conversation.php:1267 ../../addon/hsse/hsse.php:215 msgid "Disable comments" msgstr "Dehabilitar los comentarios" -#: ../../include/conversation.php:1495 ../../addon/hsse/hsse.php:216 +#: ../../include/conversation.php:1268 ../../addon/hsse/hsse.php:216 msgid "Toggle comments" msgstr "Activar o desactivar los comentarios" -#: ../../include/conversation.php:1501 ../../addon/cards/Mod_Card_edit.php:118 +#: ../../include/conversation.php:1274 ../../addon/cards/Mod_Card_edit.php:118 #: ../../addon/articles/Mod_Article_edit.php:116 ../../addon/hsse/hsse.php:221 #: ../../Zotlabs/Module/Photos.php:667 ../../Zotlabs/Module/Photos.php:1042 #: ../../Zotlabs/Module/Editblock.php:129 msgid "Title (optional)" msgstr "Título (opcional)" -#: ../../include/conversation.php:1502 +#: ../../include/conversation.php:1275 msgid "Summary (optional)" msgstr "Sumario (opcional)" -#: ../../include/conversation.php:1505 ../../addon/hsse/hsse.php:224 +#: ../../include/conversation.php:1278 ../../addon/hsse/hsse.php:224 msgid "Categories (optional, comma-separated list)" msgstr "Temas (opcional, lista separada por comas)" -#: ../../include/conversation.php:1506 ../../addon/hsse/hsse.php:225 +#: ../../include/conversation.php:1279 ../../addon/hsse/hsse.php:225 msgid "Permission settings" msgstr "Configuración de permisos" -#: ../../include/conversation.php:1528 ../../addon/hsse/hsse.php:247 +#: ../../include/conversation.php:1301 ../../addon/hsse/hsse.php:247 msgid "Other networks and post services" msgstr "Otras redes y servicios de publicación" -#: ../../include/conversation.php:1531 ../../addon/hsse/hsse.php:250 +#: ../../include/conversation.php:1304 ../../addon/hsse/hsse.php:250 msgid "Set expiration date" msgstr "Configurar fecha de caducidad" -#: ../../include/conversation.php:1534 ../../addon/hsse/hsse.php:253 +#: ../../include/conversation.php:1307 ../../addon/hsse/hsse.php:253 msgid "Set publish date" msgstr "Establecer la fecha de publicación" -#: ../../include/conversation.php:1536 ../../addon/hsse/hsse.php:255 -#: ../../Zotlabs/Lib/ThreadItem.php:845 ../../Zotlabs/Module/Chat.php:218 +#: ../../include/conversation.php:1309 ../../addon/hsse/hsse.php:255 +#: ../../Zotlabs/Lib/ThreadItem.php:875 ../../Zotlabs/Module/Chat.php:218 msgid "Encrypt text" msgstr "Cifrar texto" -#: ../../include/conversation.php:1780 ../../Zotlabs/Lib/ThreadItem.php:239 -#: ../../Zotlabs/Module/Photos.php:1135 +#: ../../include/conversation.php:1553 +msgctxt "noun" +msgid "Repeat" +msgid_plural "Repeats" +msgstr[0] "Se repite" +msgstr[1] "Se repite" +msgstr[2] "Se repite" + +#: ../../include/conversation.php:1556 ../../Zotlabs/Module/Photos.php:1134 msgctxt "noun" msgid "Dislike" msgid_plural "Dislikes" @@ -2803,7 +2767,7 @@ msgstr[0] "No me gusta" msgstr[1] "No me gusta" msgstr[2] "No me gusta" -#: ../../include/conversation.php:1783 +#: ../../include/conversation.php:1559 msgctxt "noun" msgid "Attending" msgid_plural "Attending" @@ -2811,7 +2775,7 @@ msgstr[0] "Participaré" msgstr[1] "Participaré" msgstr[2] "Participaré" -#: ../../include/conversation.php:1786 +#: ../../include/conversation.php:1562 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" @@ -2819,7 +2783,7 @@ msgstr[0] "No participaré" msgstr[1] "No participaré" msgstr[2] "No participaré" -#: ../../include/conversation.php:1789 +#: ../../include/conversation.php:1565 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" @@ -2827,50 +2791,26 @@ msgstr[0] "Indeciso/a" msgstr[1] "Indecisos/as" msgstr[2] "Indecisos/as" -#: ../../include/conversation.php:1792 -msgctxt "noun" -msgid "Agree" -msgid_plural "Agrees" -msgstr[0] "De acuerdo" -msgstr[1] "De acuerdo" -msgstr[2] "De acuerdo" - -#: ../../include/conversation.php:1795 -msgctxt "noun" -msgid "Disagree" -msgid_plural "Disagrees" -msgstr[0] "En desacuerdo" -msgstr[1] "En desacuerdo" -msgstr[2] "En desacuerdo" - -#: ../../include/conversation.php:1798 -msgctxt "noun" -msgid "Abstain" -msgid_plural "Abstains" -msgstr[0] "se abstiene" -msgstr[1] "Se abstienen" -msgstr[2] "Se abstienen" - -#: ../../include/nav.php:96 +#: ../../include/nav.php:108 msgid "Remote authentication" msgstr "Acceder desde su servidor" -#: ../../include/nav.php:96 +#: ../../include/nav.php:108 msgid "Click to authenticate to your home hub" msgstr "Pulsar para identificarse en su servidor de inicio" -#: ../../include/nav.php:102 ../../Zotlabs/Widget/Channel_activities.php:239 +#: ../../include/nav.php:114 ../../Zotlabs/Widget/Channel_activities.php:239 #: ../../Zotlabs/Widget/Admin.php:29 #: ../../Zotlabs/Module/Admin/Channels.php:146 #: ../../Zotlabs/Module/Manage.php:162 ../../Zotlabs/Module/Admin.php:116 msgid "Channels" msgstr "Canales" -#: ../../include/nav.php:102 +#: ../../include/nav.php:114 msgid "Manage your channels" msgstr "Gestionar sus canales" -#: ../../include/nav.php:105 ../../Zotlabs/Lib/Apps.php:344 +#: ../../include/nav.php:117 ../../Zotlabs/Lib/Apps.php:344 #: ../../Zotlabs/Widget/Newmember.php:58 #: ../../Zotlabs/Widget/Settings_menu.php:71 #: ../../Zotlabs/Module/Admin/Themes.php:140 @@ -2878,188 +2818,188 @@ msgstr "Gestionar sus canales" msgid "Settings" msgstr "Ajustes" -#: ../../include/nav.php:105 +#: ../../include/nav.php:117 msgid "Account/Channel Settings" msgstr "Ajustes de cuenta/canales" -#: ../../include/nav.php:111 ../../include/nav.php:141 -#: ../../include/nav.php:162 ../../boot.php:1747 +#: ../../include/nav.php:123 ../../include/nav.php:153 +#: ../../include/nav.php:174 ../../boot.php:1745 msgid "Logout" msgstr "Finalizar sesión" -#: ../../include/nav.php:111 ../../include/nav.php:141 +#: ../../include/nav.php:123 ../../include/nav.php:153 msgid "End this session" msgstr "Finalizar esta sesión" -#: ../../include/nav.php:114 +#: ../../include/nav.php:126 msgid "Your profile page" msgstr "Su página del perfil" -#: ../../include/nav.php:117 ../../include/channel.php:1530 -#: ../../Zotlabs/Module/Profiles.php:851 +#: ../../include/nav.php:129 ../../include/channel.php:1538 +#: ../../Zotlabs/Module/Profiles.php:847 msgid "Edit Profiles" msgstr "Editar perfiles" -#: ../../include/nav.php:117 +#: ../../include/nav.php:129 msgid "Manage/Edit profiles" msgstr "Administrar/editar perfiles" -#: ../../include/nav.php:119 ../../include/channel.php:1534 +#: ../../include/nav.php:131 ../../include/channel.php:1542 #: ../../addon/openclipatar/openclipatar.php:59 msgid "Edit Profile" msgstr "Editar el perfil" -#: ../../include/nav.php:119 ../../Zotlabs/Widget/Newmember.php:40 +#: ../../include/nav.php:131 ../../Zotlabs/Widget/Newmember.php:40 msgid "Edit your profile" msgstr "Editar su perfil" -#: ../../include/nav.php:126 ../../include/nav.php:130 ../../boot.php:1748 +#: ../../include/nav.php:138 ../../include/nav.php:142 ../../boot.php:1746 #: ../../Zotlabs/Lib/Apps.php:341 msgid "Login" msgstr "Iniciar sesión" -#: ../../include/nav.php:126 ../../include/nav.php:130 +#: ../../include/nav.php:138 ../../include/nav.php:142 msgid "Sign in" msgstr "Acceder" -#: ../../include/nav.php:160 +#: ../../include/nav.php:172 msgid "Take me home" msgstr "Volver a la página principal" -#: ../../include/nav.php:162 +#: ../../include/nav.php:174 msgid "Log me out of this site" msgstr "Salir de este sitio" -#: ../../include/nav.php:167 ../../boot.php:1725 +#: ../../include/nav.php:179 ../../boot.php:1723 #: ../../Zotlabs/Module/Register.php:542 msgid "Register" msgstr "Registrarse" -#: ../../include/nav.php:167 +#: ../../include/nav.php:179 msgid "Create an account" msgstr "Crear una cuenta" -#: ../../include/nav.php:181 +#: ../../include/nav.php:193 msgid "Help and documentation" msgstr "Ayuda y documentación" -#: ../../include/nav.php:195 ../../include/acl_selectors.php:149 -#: ../../include/text.php:1170 ../../include/text.php:1182 -#: ../../Zotlabs/Lib/Apps.php:358 ../../Zotlabs/Widget/Sitesearch.php:37 +#: ../../include/nav.php:207 ../../include/acl_selectors.php:149 +#: ../../include/text.php:1189 ../../include/text.php:1201 +#: ../../Zotlabs/Lib/Apps.php:356 ../../Zotlabs/Widget/Sitesearch.php:37 #: ../../Zotlabs/Widget/Activity_filter.php:210 #: ../../Zotlabs/Module/Search.php:46 ../../Zotlabs/Module/Connections.php:403 msgid "Search" msgstr "Buscar" -#: ../../include/nav.php:195 +#: ../../include/nav.php:207 msgid "Search site @name, !forum, #tag, ?docs, content" msgstr "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido" -#: ../../include/nav.php:201 ../../Zotlabs/Widget/Admin.php:61 +#: ../../include/nav.php:213 ../../Zotlabs/Widget/Admin.php:61 msgid "Admin" msgstr "Administrador" -#: ../../include/nav.php:201 +#: ../../include/nav.php:213 msgid "Site Setup and Configuration" msgstr "Ajustes y configuración del sitio" -#: ../../include/nav.php:332 ../../Zotlabs/Widget/Notifications.php:175 +#: ../../include/nav.php:344 ../../Zotlabs/Widget/Notifications.php:175 #: ../../Zotlabs/Widget/Messages.php:36 ../../Zotlabs/Module/Defperms.php:254 #: ../../Zotlabs/Module/New_channel.php:157 #: ../../Zotlabs/Module/New_channel.php:164 msgid "Loading" msgstr "Cargando" -#: ../../include/nav.php:337 +#: ../../include/nav.php:349 msgid "@name, #tag, ?doc, content" msgstr "@nombre, #etiqueta, ?ayuda, contenido" -#: ../../include/nav.php:338 +#: ../../include/nav.php:350 msgid "Please wait..." msgstr "Espere por favor…" -#: ../../include/nav.php:344 ../../Zotlabs/Lib/Apps.php:328 +#: ../../include/nav.php:356 ../../Zotlabs/Lib/Apps.php:328 msgid "Apps" msgstr "Aplicaciones (apps)" -#: ../../include/nav.php:345 +#: ../../include/nav.php:357 msgid "Channel Apps" msgstr "Apps del canal " -#: ../../include/nav.php:346 +#: ../../include/nav.php:358 msgid "System Apps" msgstr "Apps del sistema " -#: ../../include/nav.php:347 +#: ../../include/nav.php:359 msgid "Pinned Apps" msgstr "Apps ancladas " -#: ../../include/nav.php:348 +#: ../../include/nav.php:360 msgid "Featured Apps" msgstr "Apps destacadas " -#: ../../include/nav.php:434 ../../Zotlabs/Lib/Apps.php:348 +#: ../../include/nav.php:446 ../../Zotlabs/Lib/Apps.php:348 #: ../../Zotlabs/Module/Admin/Channels.php:154 msgid "Channel" msgstr "Canal" -#: ../../include/nav.php:437 +#: ../../include/nav.php:449 msgid "Status Messages and Posts" msgstr "Mensajes de estado y publicaciones" -#: ../../include/nav.php:447 ../../Zotlabs/Module/Help.php:85 +#: ../../include/nav.php:459 ../../Zotlabs/Module/Help.php:85 msgid "About" msgstr "Mi perfil" -#: ../../include/nav.php:450 +#: ../../include/nav.php:462 msgid "Profile Details" msgstr "Detalles del perfil" -#: ../../include/nav.php:460 ../../include/photos.php:721 +#: ../../include/nav.php:472 ../../include/photos.php:721 msgid "Photo Albums" msgstr "Álbumes de fotos" -#: ../../include/nav.php:465 ../../Zotlabs/Lib/Apps.php:345 +#: ../../include/nav.php:477 ../../Zotlabs/Lib/Apps.php:345 #: ../../Zotlabs/Widget/Notifications.php:108 #: ../../Zotlabs/Widget/Channel_activities.php:125 #: ../../Zotlabs/Storage/Browser.php:350 ../../Zotlabs/Module/Fbrowser.php:85 msgid "Files" msgstr "Ficheros" -#: ../../include/nav.php:468 +#: ../../include/nav.php:480 msgid "Files and Storage" msgstr "Ficheros y repositorio" -#: ../../include/nav.php:490 ../../include/nav.php:493 +#: ../../include/nav.php:502 ../../include/nav.php:505 #: ../../Zotlabs/Lib/Apps.php:335 ../../Zotlabs/Widget/Chatroom_list.php:22 msgid "Chatrooms" msgstr "Salas de chat" -#: ../../include/nav.php:503 ../../Zotlabs/Lib/Apps.php:334 +#: ../../include/nav.php:515 ../../Zotlabs/Lib/Apps.php:334 #: ../../Zotlabs/Module/Bookmarks.php:90 msgid "Bookmarks" msgstr "Marcadores" -#: ../../include/nav.php:506 +#: ../../include/nav.php:518 msgid "Saved Bookmarks" msgstr "Marcadores guardados" -#: ../../include/nav.php:514 ../../Zotlabs/Lib/Apps.php:346 +#: ../../include/nav.php:526 ../../Zotlabs/Lib/Apps.php:346 #: ../../Zotlabs/Widget/Channel_activities.php:168 #: ../../Zotlabs/Module/Webpages.php:247 msgid "Webpages" msgstr "Páginas web" -#: ../../include/nav.php:517 +#: ../../include/nav.php:529 msgid "View Webpages" msgstr "Ver páginas web" -#: ../../include/nav.php:525 ../../addon/wiki/Mod_Wiki.php:209 -#: ../../addon/wiki/Widget/Wiki_list.php:20 ../../addon/wiki/wiki.php:70 +#: ../../include/nav.php:537 ../../addon/wiki/Mod_Wiki.php:209 +#: ../../addon/wiki/Widget/Wiki_list.php:23 ../../addon/wiki/wiki.php:72 msgid "Wikis" msgstr "Wikis" -#: ../../include/nav.php:528 ../../Zotlabs/Lib/Apps.php:347 +#: ../../include/nav.php:540 ../../Zotlabs/Lib/Apps.php:347 msgid "Wiki" msgstr "Wiki" @@ -3070,7 +3010,7 @@ msgid "" msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado" #: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:56 -#: ../../Zotlabs/Module/Profiles.php:752 +#: ../../Zotlabs/Module/Profiles.php:748 msgid "Miscellaneous" msgstr "Varios" @@ -3086,7 +3026,7 @@ msgstr "Edad:" msgid "YYYY-MM-DD or MM-DD" msgstr "AAAA-MM-DD o MM-DD" -#: ../../include/datetime.php:238 ../../boot.php:2754 +#: ../../include/datetime.php:238 ../../boot.php:2752 msgid "never" msgstr "nunca" @@ -3175,8 +3115,8 @@ msgstr "La imagen excede el límite de %lu bytes del sitio" msgid "Image file is empty." msgstr "El fichero de imagen está vacío. " -#: ../../include/photos.php:197 ../../Zotlabs/Module/Cover_photo.php:241 -#: ../../Zotlabs/Module/Profile_photo.php:275 +#: ../../include/photos.php:197 ../../Zotlabs/Module/Cover_photo.php:239 +#: ../../Zotlabs/Module/Profile_photo.php:274 msgid "Unable to process image" msgstr "No ha sido posible procesar la imagen" @@ -3227,28 +3167,27 @@ msgstr "cadena_de_error: " msgid "content-type: " msgstr "tipo de contenido: " -#: ../../include/network.php:1768 ../../include/network.php:1769 +#: ../../include/network.php:1770 ../../include/network.php:1771 msgid "Friendica" msgstr "Friendica" -#: ../../include/network.php:1770 +#: ../../include/network.php:1772 msgid "OStatus" msgstr "OStatus" -#: ../../include/network.php:1771 +#: ../../include/network.php:1773 msgid "GNU-Social" msgstr "GNU Social" -#: ../../include/network.php:1772 +#: ../../include/network.php:1774 msgid "RSS/Atom" msgstr "RSS/Atom" -#: ../../include/network.php:1773 ../../addon/pubcrawl/as.php:1332 -#: ../../addon/pubcrawl/as.php:2002 ../../Zotlabs/Lib/Activity.php:3736 +#: ../../include/network.php:1775 msgid "ActivityPub" msgstr "ActivityPub" -#: ../../include/network.php:1774 ../../addon/openid/MysqlProvider.php:56 +#: ../../include/network.php:1776 ../../addon/openid/MysqlProvider.php:56 #: ../../addon/openid/MysqlProvider.php:57 #: ../../addon/redred/Mod_Redred.php:69 ../../addon/rtof/Mod_Rtof.php:55 #: ../../Zotlabs/Module/Connedit.php:736 @@ -3258,36 +3197,36 @@ msgstr "ActivityPub" msgid "Email" msgstr "Correo electrónico" -#: ../../include/network.php:1775 +#: ../../include/network.php:1777 msgid "Diaspora" msgstr "Diaspora" -#: ../../include/network.php:1776 +#: ../../include/network.php:1778 msgid "Facebook" msgstr "Facebook" -#: ../../include/network.php:1777 +#: ../../include/network.php:1779 msgid "Zot" msgstr "Zot" -#: ../../include/network.php:1778 +#: ../../include/network.php:1780 msgid "LinkedIn" msgstr "LinkedIn" -#: ../../include/network.php:1779 +#: ../../include/network.php:1781 msgid "XMPP/IM" msgstr "XMPP/IM" -#: ../../include/network.php:1780 +#: ../../include/network.php:1782 msgid "MySpace" msgstr "MySpace" -#: ../../include/markdown.php:206 ../../include/bbcode.php:570 +#: ../../include/markdown.php:206 ../../include/bbcode.php:575 #, php-format msgid "%1$s wrote the following %2$s %3$s" msgstr "%1$s escribió la/el %2$s siguiente %3$s" -#: ../../include/markdown.php:259 ../../include/bbcode.php:655 +#: ../../include/markdown.php:259 ../../include/bbcode.php:660 msgid "spoiler" msgstr "spoiler" @@ -3299,16 +3238,16 @@ msgstr "por defecto" msgid "Select an alternate language" msgstr "Seleccionar un idioma alternativo" -#: ../../include/menu.php:120 ../../include/channel.php:1530 -#: ../../include/channel.php:1534 ../../addon/cards/cards.php:74 +#: ../../include/menu.php:120 ../../include/channel.php:1538 +#: ../../include/channel.php:1542 ../../addon/cards/cards.php:74 #: ../../addon/cards/Mod_Card_edit.php:99 #: ../../addon/articles/Mod_Article_edit.php:97 #: ../../addon/articles/articles.php:75 ../../addon/wiki/Mod_Wiki.php:214 -#: ../../addon/wiki/Mod_Wiki.php:381 ../../Zotlabs/Lib/Apps.php:618 -#: ../../Zotlabs/Lib/ThreadItem.php:158 ../../Zotlabs/Widget/Cdav.php:144 +#: ../../addon/wiki/Mod_Wiki.php:381 ../../Zotlabs/Lib/Apps.php:616 +#: ../../Zotlabs/Lib/ThreadItem.php:163 ../../Zotlabs/Widget/Cdav.php:144 #: ../../Zotlabs/Widget/Cdav.php:181 ../../Zotlabs/Module/Editwebpage.php:142 #: ../../Zotlabs/Module/Webpages.php:250 ../../Zotlabs/Module/Oauth.php:171 -#: ../../Zotlabs/Module/Thing.php:268 ../../Zotlabs/Module/Layouts.php:191 +#: ../../Zotlabs/Module/Thing.php:294 ../../Zotlabs/Module/Layouts.php:191 #: ../../Zotlabs/Module/Menu.php:176 ../../Zotlabs/Module/Admin/Profs.php:175 #: ../../Zotlabs/Module/Group.php:245 ../../Zotlabs/Module/Blocks.php:158 #: ../../Zotlabs/Module/Editlayout.php:114 @@ -3370,15 +3309,15 @@ msgstr "No permitir" #: ../../include/acl_selectors.php:154 #: ../../addon/flashcards/Mod_Flashcards.php:261 -#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374 +#: ../../Zotlabs/Module/Thing.php:350 ../../Zotlabs/Module/Thing.php:402 #: ../../Zotlabs/Module/Filestorage.php:195 #: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045 #: ../../Zotlabs/Module/Chat.php:240 msgid "Permissions" msgstr "Permisos" -#: ../../include/acl_selectors.php:156 ../../Zotlabs/Lib/ThreadItem.php:496 -#: ../../Zotlabs/Widget/Pinned.php:163 ../../Zotlabs/Storage/Browser.php:414 +#: ../../include/acl_selectors.php:156 ../../Zotlabs/Lib/ThreadItem.php:527 +#: ../../Zotlabs/Widget/Pinned.php:152 ../../Zotlabs/Storage/Browser.php:414 #: ../../Zotlabs/Module/Photos.php:1266 msgid "Close" msgstr "Cerrar" @@ -3390,66 +3329,66 @@ msgid "" " permissions set who is allowed to view the post." msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.
Estos permisos establecen quién está autorizado para ver el mensaje." -#: ../../include/text.php:546 +#: ../../include/text.php:561 msgid "prev" msgstr "anterior" -#: ../../include/text.php:548 +#: ../../include/text.php:563 msgid "first" msgstr "primera" -#: ../../include/text.php:577 +#: ../../include/text.php:592 msgid "last" msgstr "última" -#: ../../include/text.php:580 +#: ../../include/text.php:595 msgid "next" msgstr "próxima" -#: ../../include/text.php:598 +#: ../../include/text.php:613 msgid "older" msgstr "más antiguas" -#: ../../include/text.php:600 +#: ../../include/text.php:615 msgid "newer" msgstr "más recientes" -#: ../../include/text.php:1066 ../../Zotlabs/Module/Viewconnections.php:80 +#: ../../include/text.php:1085 ../../Zotlabs/Module/Viewconnections.php:80 #: ../../Zotlabs/Module/Connections.php:306 msgid "Accepts" msgstr "Se acepta" -#: ../../include/text.php:1069 ../../Zotlabs/Module/Viewconnections.php:83 +#: ../../include/text.php:1088 ../../Zotlabs/Module/Viewconnections.php:83 #: ../../Zotlabs/Module/Connections.php:309 msgid "Comments" msgstr "Comentarios" -#: ../../include/text.php:1074 ../../Zotlabs/Module/Viewconnections.php:88 +#: ../../include/text.php:1093 ../../Zotlabs/Module/Viewconnections.php:88 #: ../../Zotlabs/Module/Connections.php:314 msgid "Stream items" msgstr "Elementos del stream" -#: ../../include/text.php:1079 ../../Zotlabs/Module/Viewconnections.php:93 +#: ../../include/text.php:1098 ../../Zotlabs/Module/Viewconnections.php:93 #: ../../Zotlabs/Module/Connections.php:319 msgid "Wall posts" msgstr "Entradas del Muro" -#: ../../include/text.php:1083 ../../Zotlabs/Module/Viewconnections.php:97 +#: ../../include/text.php:1102 ../../Zotlabs/Module/Viewconnections.php:97 #: ../../Zotlabs/Module/Connections.php:323 msgid "Nothing" msgstr "Nada" -#: ../../include/text.php:1096 +#: ../../include/text.php:1115 #, php-format msgid "View all %s connections" msgstr "Ver todas las %s conexiones" -#: ../../include/text.php:1159 +#: ../../include/text.php:1178 #, php-format msgid "Network: %s" msgstr "Red %s" -#: ../../include/text.php:1171 ../../include/text.php:1183 +#: ../../include/text.php:1190 ../../include/text.php:1202 #: ../../addon/cards/Mod_Cards.php:116 #: ../../addon/articles/Mod_Articles.php:120 #: ../../Zotlabs/Module/Admin/Queueworker.php:114 @@ -3459,116 +3398,20 @@ msgstr "Red %s" msgid "Save" msgstr "Guardar" -#: ../../include/text.php:1262 -msgid "poke" -msgstr "un toque" - -#: ../../include/text.php:1263 -msgid "ping" -msgstr "un \"ping\"" - -#: ../../include/text.php:1263 -msgid "pinged" -msgstr "ha enviado un \"ping\" a" - -#: ../../include/text.php:1292 -msgid "happy" -msgstr "feliz " - -#: ../../include/text.php:1293 -msgid "sad" -msgstr "triste " - -#: ../../include/text.php:1294 -msgid "mellow" -msgstr "tranquilo/a" - -#: ../../include/text.php:1295 -msgid "tired" -msgstr "cansado/a " - -#: ../../include/text.php:1296 -msgid "perky" -msgstr "vivaz" - -#: ../../include/text.php:1297 -msgid "angry" -msgstr "enfadado/a" - -#: ../../include/text.php:1298 -msgid "stupefied" -msgstr "asombrado/a" - -#: ../../include/text.php:1299 -msgid "puzzled" -msgstr "perplejo/a" - -#: ../../include/text.php:1300 -msgid "interested" -msgstr "interesado/a" - -#: ../../include/text.php:1301 -msgid "bitter" -msgstr "amargado/a" - -#: ../../include/text.php:1302 -msgid "cheerful" -msgstr "alegre" - -#: ../../include/text.php:1303 -msgid "alive" -msgstr "animado/a" - -#: ../../include/text.php:1304 -msgid "annoyed" -msgstr "molesto/a" - -#: ../../include/text.php:1305 -msgid "anxious" -msgstr "ansioso/a" - -#: ../../include/text.php:1306 -msgid "cranky" -msgstr "de mal humor" - -#: ../../include/text.php:1307 -msgid "disturbed" -msgstr "perturbado/a" - -#: ../../include/text.php:1308 -msgid "frustrated" -msgstr "frustrado/a" - -#: ../../include/text.php:1309 -msgid "depressed" -msgstr "deprimido/a" - -#: ../../include/text.php:1310 -msgid "motivated" -msgstr "motivado/a" - -#: ../../include/text.php:1311 -msgid "relaxed" -msgstr "relajado/a" - -#: ../../include/text.php:1312 -msgid "surprised" -msgstr "sorprendido/a" - -#: ../../include/text.php:1504 +#: ../../include/text.php:1502 msgid "May" msgstr "mayo" -#: ../../include/text.php:1578 +#: ../../include/text.php:1576 msgid "Unknown attachment" msgstr "Adjunto no reconocido" -#: ../../include/text.php:1581 ../../Zotlabs/Storage/Browser.php:382 +#: ../../include/text.php:1579 ../../Zotlabs/Storage/Browser.php:382 #: ../../Zotlabs/Module/Sharedwithme.php:109 msgid "Size" msgstr "Tamaño" -#: ../../include/text.php:1623 +#: ../../include/text.php:1622 msgid "remove category" msgstr "eliminar el tema" @@ -3608,7 +3451,7 @@ msgstr "La encuesta ha terminado" msgid "Poll ends in %s" msgstr "La encuesta termina en %s" -#: ../../include/text.php:2013 ../../Zotlabs/Lib/ThreadItem.php:446 +#: ../../include/text.php:2013 ../../Zotlabs/Lib/ThreadItem.php:467 msgid "Vote" msgstr "Votar" @@ -3626,7 +3469,7 @@ msgstr "Puede crear su propia disposición gráfica con la herramienta de planti #: ../../include/text.php:2211 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:368 ../../addon/wiki/Mod_Wiki.php:903 -#: ../../addon/wiki/Widget/Wiki_pages.php:65 +#: ../../addon/wiki/Widget/Wiki_pages.php:68 msgid "BBcode" msgstr "BBcode" @@ -3636,12 +3479,12 @@ msgstr "HTML" #: ../../include/text.php:2213 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:368 ../../addon/wiki/Mod_Wiki.php:903 -#: ../../addon/wiki/Widget/Wiki_pages.php:65 ../../addon/mdpost/mdpost.php:41 +#: ../../addon/wiki/Widget/Wiki_pages.php:68 ../../addon/mdpost/mdpost.php:41 msgid "Markdown" msgstr "Markdown" #: ../../include/text.php:2214 ../../addon/wiki/Mod_Wiki.php:220 -#: ../../addon/wiki/Mod_Wiki.php:903 ../../addon/wiki/Widget/Wiki_pages.php:65 +#: ../../addon/wiki/Mod_Wiki.php:903 ../../addon/wiki/Widget/Wiki_pages.php:68 msgid "Text" msgstr "Texto" @@ -3669,140 +3512,140 @@ msgstr "encuesta" msgid "a-z, 0-9, -, and _ only" msgstr "a-z, 0-9, -, and _ only" -#: ../../include/text.php:2786 +#: ../../include/text.php:2789 msgid "Design Tools" msgstr "Herramientas de diseño web" -#: ../../include/text.php:2789 ../../Zotlabs/Module/Blocks.php:152 +#: ../../include/text.php:2792 ../../Zotlabs/Module/Blocks.php:152 msgid "Blocks" msgstr "Bloques" -#: ../../include/text.php:2790 ../../Zotlabs/Module/Menu.php:171 +#: ../../include/text.php:2793 ../../Zotlabs/Module/Menu.php:171 msgid "Menus" msgstr "Menús" -#: ../../include/text.php:2791 ../../Zotlabs/Module/Layouts.php:182 +#: ../../include/text.php:2794 ../../Zotlabs/Module/Layouts.php:182 msgid "Layouts" msgstr "Plantillas" -#: ../../include/text.php:2792 +#: ../../include/text.php:2795 msgid "Pages" msgstr "Páginas" -#: ../../include/text.php:2804 +#: ../../include/text.php:2807 msgid "Import" msgstr "Importar" -#: ../../include/text.php:2805 +#: ../../include/text.php:2808 msgid "Import website..." msgstr "Importar un sitio web..." -#: ../../include/text.php:2806 +#: ../../include/text.php:2809 msgid "Select folder to import" msgstr "Seleccionar la carpeta que se va a importar" -#: ../../include/text.php:2807 +#: ../../include/text.php:2810 msgid "Import from a zipped folder:" msgstr "Importar desde una carpeta comprimida: " -#: ../../include/text.php:2808 +#: ../../include/text.php:2811 msgid "Import from cloud files:" msgstr "Importar desde los ficheros en la nube: " -#: ../../include/text.php:2809 +#: ../../include/text.php:2812 msgid "/cloud/channel/path/to/folder" msgstr "/cloud/canal/ruta/a la/carpeta" -#: ../../include/text.php:2810 +#: ../../include/text.php:2813 msgid "Enter path to website files" msgstr "Ruta a los ficheros del sitio web" -#: ../../include/text.php:2811 +#: ../../include/text.php:2814 msgid "Select folder" msgstr "Seleccionar la carpeta" -#: ../../include/text.php:2812 +#: ../../include/text.php:2815 msgid "Export website..." msgstr "Exportar un sitio web..." -#: ../../include/text.php:2813 +#: ../../include/text.php:2816 msgid "Export to a zip file" msgstr "Exportar a un fichero comprimido .zip" -#: ../../include/text.php:2814 +#: ../../include/text.php:2817 msgid "website.zip" msgstr "sitio_web.zip" -#: ../../include/text.php:2815 +#: ../../include/text.php:2818 msgid "Enter a name for the zip file." msgstr "Escriba un nombre para el fichero zip." -#: ../../include/text.php:2816 +#: ../../include/text.php:2819 msgid "Export to cloud files" msgstr "Exportar a la nube de ficheros" -#: ../../include/text.php:2817 +#: ../../include/text.php:2820 msgid "/path/to/export/folder" msgstr "/ruta/para/exportar/carpeta" -#: ../../include/text.php:2818 +#: ../../include/text.php:2821 msgid "Enter a path to a cloud files destination." msgstr "Escriba una ruta de destino a la nube de ficheros." -#: ../../include/text.php:2819 +#: ../../include/text.php:2822 msgid "Specify folder" msgstr "Especificar una carpeta" -#: ../../include/channel.php:48 +#: ../../include/channel.php:49 msgid "Unable to obtain identity information from database" msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos" -#: ../../include/channel.php:81 +#: ../../include/channel.php:82 msgid "Empty name" msgstr "Nombre vacío" -#: ../../include/channel.php:84 +#: ../../include/channel.php:85 msgid "Name too long" msgstr "Nombre demasiado largo" -#: ../../include/channel.php:201 +#: ../../include/channel.php:202 msgid "No account identifier" msgstr "Ningún identificador de la cuenta" -#: ../../include/channel.php:213 ../../Zotlabs/Module/Register.php:95 +#: ../../include/channel.php:214 ../../Zotlabs/Module/Register.php:95 msgid "Nickname is required." msgstr "Se requiere un sobrenombre (alias)." -#: ../../include/channel.php:227 ../../include/channel.php:659 +#: ../../include/channel.php:228 ../../include/channel.php:667 #: ../../Zotlabs/Module/Register.php:100 #: ../../Zotlabs/Module/Changeaddr.php:46 msgid "Reserved nickname. Please choose another." msgstr "Sobrenombre en uso. Por favor, elija otro." -#: ../../include/channel.php:232 ../../include/channel.php:664 +#: ../../include/channel.php:233 ../../include/channel.php:672 #: ../../Zotlabs/Module/Register.php:105 #: ../../Zotlabs/Module/Changeaddr.php:51 msgid "" "Nickname has unsupported characters or is already being used on this site." msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio." -#: ../../include/channel.php:292 +#: ../../include/channel.php:299 msgid "Unable to retrieve created identity" msgstr "No ha sido posible recuperar la identidad creada" -#: ../../include/channel.php:402 +#: ../../include/channel.php:410 msgid "Default Profile" msgstr "Perfil principal" -#: ../../include/channel.php:592 ../../include/channel.php:681 +#: ../../include/channel.php:600 ../../include/channel.php:689 msgid "Unable to retrieve modified identity" msgstr "No se puede recuperar la identidad modficada" -#: ../../include/channel.php:1373 +#: ../../include/channel.php:1381 msgid "Requested channel is not available" msgstr "El canal solicitado no está disponible" -#: ../../include/channel.php:1427 ../../addon/cards/Mod_Cards.php:42 +#: ../../include/channel.php:1435 ../../addon/cards/Mod_Cards.php:42 #: ../../addon/articles/Mod_Articles.php:46 #: ../../addon/gallery/Mod_Gallery.php:49 #: ../../Zotlabs/Module/Editwebpage.php:32 @@ -3816,255 +3659,251 @@ msgstr "El canal solicitado no está disponible" msgid "Requested profile is not available." msgstr "El perfil solicitado no está disponible." -#: ../../include/channel.php:1523 ../../Zotlabs/Module/Profiles.php:744 +#: ../../include/channel.php:1531 ../../Zotlabs/Module/Profiles.php:740 msgid "Change profile photo" msgstr "Cambiar la foto del perfil" -#: ../../include/channel.php:1531 +#: ../../include/channel.php:1539 msgid "Create New Profile" msgstr "Crear un nuevo perfil" -#: ../../include/channel.php:1549 ../../Zotlabs/Module/Profiles.php:841 +#: ../../include/channel.php:1557 ../../Zotlabs/Module/Profiles.php:837 msgid "Profile Image" msgstr "Imagen del perfil" -#: ../../include/channel.php:1552 +#: ../../include/channel.php:1560 msgid "Visible to everybody" msgstr "Visible para todos" -#: ../../include/channel.php:1553 ../../Zotlabs/Module/Profiles.php:741 -#: ../../Zotlabs/Module/Profiles.php:845 +#: ../../include/channel.php:1561 ../../Zotlabs/Module/Profiles.php:737 +#: ../../Zotlabs/Module/Profiles.php:841 msgid "Edit visibility" msgstr "Editar visibilidad" -#: ../../include/channel.php:1635 ../../include/channel.php:1763 +#: ../../include/channel.php:1643 ../../include/channel.php:1771 msgid "Gender:" msgstr "Género:" -#: ../../include/channel.php:1636 ../../include/channel.php:1807 +#: ../../include/channel.php:1644 ../../include/channel.php:1817 msgid "Status:" msgstr "Estado:" -#: ../../include/channel.php:1637 ../../include/channel.php:1831 +#: ../../include/channel.php:1645 ../../include/channel.php:1841 msgid "Homepage:" msgstr "Página personal:" -#: ../../include/channel.php:1638 ../../include/channel.php:1833 +#: ../../include/channel.php:1646 ../../include/channel.php:1843 #: ../../Zotlabs/Module/Directory.php:368 msgid "Hometown:" msgstr "Lugar de nacimiento:" -#: ../../include/channel.php:1639 +#: ../../include/channel.php:1647 msgid "Online Now" msgstr "Ahora en línea" -#: ../../include/channel.php:1688 +#: ../../include/channel.php:1696 msgid "This channel has not added a profile description yet" msgstr "Este canal aún no ha añadido una descripción de perfil" -#: ../../include/channel.php:1690 +#: ../../include/channel.php:1698 msgid "Change your profile photo" msgstr "Cambiar su foto del perfil" -#: ../../include/channel.php:1722 +#: ../../include/channel.php:1730 msgid "Trans" msgstr "Trans" -#: ../../include/channel.php:1761 +#: ../../include/channel.php:1769 msgid "Full Name:" msgstr "Nombre completo:" -#: ../../include/channel.php:1768 -msgid "Like this channel" -msgstr "Me gusta este canal" - -#: ../../include/channel.php:1792 +#: ../../include/channel.php:1802 msgid "j F, Y" msgstr "j F Y" -#: ../../include/channel.php:1793 +#: ../../include/channel.php:1803 msgid "j F" msgstr "j F" -#: ../../include/channel.php:1800 +#: ../../include/channel.php:1810 msgid "Birthday:" msgstr "Cumpleaños:" -#: ../../include/channel.php:1804 ../../Zotlabs/Module/Directory.php:349 +#: ../../include/channel.php:1814 ../../Zotlabs/Module/Directory.php:349 msgid "Age:" msgstr "Edad:" -#: ../../include/channel.php:1813 +#: ../../include/channel.php:1823 #, php-format msgid "for %1$d %2$s" msgstr "por %1$d %2$s" -#: ../../include/channel.php:1825 +#: ../../include/channel.php:1835 msgid "Tags:" msgstr "Etiquetas:" -#: ../../include/channel.php:1829 +#: ../../include/channel.php:1839 msgid "Sexual Preference:" msgstr "Orientación sexual:" -#: ../../include/channel.php:1835 +#: ../../include/channel.php:1845 msgid "Political Views:" msgstr "Posición política:" -#: ../../include/channel.php:1837 +#: ../../include/channel.php:1847 msgid "Religion:" msgstr "Religión:" -#: ../../include/channel.php:1839 ../../Zotlabs/Module/Directory.php:370 +#: ../../include/channel.php:1849 ../../Zotlabs/Module/Directory.php:370 msgid "About:" msgstr "Sobre mí:" -#: ../../include/channel.php:1841 +#: ../../include/channel.php:1851 msgid "Hobbies/Interests:" msgstr "Aficciones o intereses:" -#: ../../include/channel.php:1843 +#: ../../include/channel.php:1853 msgid "Likes:" msgstr "Me gusta:" -#: ../../include/channel.php:1845 +#: ../../include/channel.php:1855 msgid "Dislikes:" msgstr "No me gusta:" -#: ../../include/channel.php:1847 +#: ../../include/channel.php:1857 msgid "Contact information and Social Networks:" msgstr "Información de contacto y redes sociales:" -#: ../../include/channel.php:1849 +#: ../../include/channel.php:1859 msgid "My other channels:" msgstr "Mis otros canales:" -#: ../../include/channel.php:1851 +#: ../../include/channel.php:1861 msgid "Musical interests:" msgstr "Preferencias musicales:" -#: ../../include/channel.php:1853 +#: ../../include/channel.php:1863 msgid "Books, literature:" msgstr "Libros, literatura:" -#: ../../include/channel.php:1855 +#: ../../include/channel.php:1865 msgid "Television:" msgstr "Televisión:" -#: ../../include/channel.php:1857 +#: ../../include/channel.php:1867 msgid "Film/dance/culture/entertainment:" msgstr "Cine, danza, cultura, entretenimiento:" -#: ../../include/channel.php:1859 +#: ../../include/channel.php:1869 msgid "Love/Romance:" msgstr "Vida sentimental o amorosa:" -#: ../../include/channel.php:1861 +#: ../../include/channel.php:1871 msgid "Work/employment:" msgstr "Trabajo:" -#: ../../include/channel.php:1863 +#: ../../include/channel.php:1873 msgid "School/education:" msgstr "Estudios:" -#: ../../include/channel.php:1884 ../../Zotlabs/Lib/Apps.php:367 +#: ../../include/channel.php:1894 ../../Zotlabs/Lib/Apps.php:365 #: ../../Zotlabs/Module/Profperm.php:113 msgid "Profile" msgstr "Perfil" -#: ../../include/channel.php:1886 +#: ../../include/channel.php:1896 msgid "Like this thing" msgstr "Me gusta esto" -#: ../../include/channel.php:1887 +#: ../../include/channel.php:1897 msgid "Export" msgstr "Exportar" -#: ../../include/channel.php:2340 ../../Zotlabs/Module/Cover_photo.php:304 +#: ../../include/channel.php:2350 msgid "cover photo" msgstr "Imagen de portada del perfil" -#: ../../include/channel.php:2615 ../../boot.php:1749 +#: ../../include/channel.php:2631 ../../boot.php:1747 #: ../../Zotlabs/Module/Rmagic.php:96 msgid "Remote Authentication" msgstr "Acceso desde su servidor" -#: ../../include/channel.php:2616 ../../Zotlabs/Module/Rmagic.php:97 +#: ../../include/channel.php:2632 ../../Zotlabs/Module/Rmagic.php:97 msgid "Enter your channel address (e.g. channel@example.com)" msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)" -#: ../../include/channel.php:2617 ../../Zotlabs/Module/Rmagic.php:98 +#: ../../include/channel.php:2633 ../../Zotlabs/Module/Rmagic.php:98 msgid "Authenticate" msgstr "Acceder" -#: ../../include/channel.php:2775 ../../Zotlabs/Module/Admin/Accounts.php:184 +#: ../../include/channel.php:2793 ../../Zotlabs/Module/Admin/Accounts.php:184 #, php-format msgid "Account '%s' deleted" msgstr "La cuenta '%s' ha sido eliminada" -#: ../../include/bbcode.php:233 ../../include/bbcode.php:939 -#: ../../include/bbcode.php:1560 ../../include/bbcode.php:1568 +#: ../../include/bbcode.php:233 ../../include/bbcode.php:993 +#: ../../include/bbcode.php:1613 ../../include/bbcode.php:1621 msgid "Image/photo" msgstr "Imagen/foto" -#: ../../include/bbcode.php:280 ../../include/bbcode.php:1585 +#: ../../include/bbcode.php:285 msgid "Encrypted content" msgstr "Contenido cifrado" -#: ../../include/bbcode.php:336 +#: ../../include/bbcode.php:341 #, php-format msgid "Install %1$s element %2$s" msgstr "Instalar el elemento de%1$s%2$s" -#: ../../include/bbcode.php:340 +#: ../../include/bbcode.php:345 #, php-format msgid "" "This post contains an installable %s element, however you lack permissions " "to install it on this site." msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio." -#: ../../include/bbcode.php:350 ../../Zotlabs/Module/Impel.php:47 +#: ../../include/bbcode.php:355 ../../Zotlabs/Module/Impel.php:47 msgid "webpage" msgstr "página web" -#: ../../include/bbcode.php:353 ../../Zotlabs/Module/Impel.php:57 +#: ../../include/bbcode.php:358 ../../Zotlabs/Module/Impel.php:57 msgid "layout" msgstr "plantilla" -#: ../../include/bbcode.php:356 ../../Zotlabs/Module/Impel.php:52 +#: ../../include/bbcode.php:361 ../../Zotlabs/Module/Impel.php:52 msgid "block" msgstr "bloque" -#: ../../include/bbcode.php:359 ../../Zotlabs/Module/Impel.php:64 +#: ../../include/bbcode.php:364 ../../Zotlabs/Module/Impel.php:64 msgid "menu" msgstr "menú" -#: ../../include/bbcode.php:562 +#: ../../include/bbcode.php:567 msgid "card" msgstr "ficha" -#: ../../include/bbcode.php:564 +#: ../../include/bbcode.php:569 msgid "article" msgstr "el artículo" -#: ../../include/bbcode.php:647 ../../include/bbcode.php:655 +#: ../../include/bbcode.php:652 ../../include/bbcode.php:660 msgid "Click to open/close" msgstr "Pulsar para abrir/cerrar" -#: ../../include/bbcode.php:668 +#: ../../include/bbcode.php:673 msgid "View article" msgstr "Ver el artículo" -#: ../../include/bbcode.php:668 +#: ../../include/bbcode.php:673 msgid "View summary" msgstr "Ver sumario" -#: ../../include/bbcode.php:1061 ../../include/bbcode.php:1246 +#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1299 #: ../../addon/wiki/Lib/NativeWikiPage.php:630 msgid "Different viewers will see this text differently" msgstr "Visitantes diferentes verán este texto de forma distinta" -#: ../../include/bbcode.php:1536 +#: ../../include/bbcode.php:1589 msgid "$1 wrote:" msgstr "$1 escribió:" @@ -4081,7 +3920,7 @@ msgstr "No se ha podido crear un canal con un identificador que ya existe en est msgid "Unable to create a unique channel address. Import failed." msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación." -#: ../../include/import.php:122 +#: ../../include/import.php:128 msgid "Cloned channel not found. Import failed." msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado." @@ -4117,6 +3956,45 @@ msgstr "Ocultar el botón y mostrar los smilies directamente." msgid "Smileybutton Settings" msgstr "Ajustes de Smileybutton" +#: ../../addon/fediquest/fediquest.php:211 +msgid "ERROR: word length is not correct!" +msgstr "ERROR: ¡la longitud de la palabra no es correcta!" + +#: ../../addon/fediquest/Mod_Fediquest.php:22 +msgid "Fediquest App" +msgstr "Aplicación Fediquest" + +#: ../../addon/fediquest/Mod_Fediquest.php:23 +msgid "A distributed quest for a given word (game)." +msgstr "Una búsqueda distribuida de una palabra determinada (juego)." + +#: ../../addon/fediquest/Mod_Fediquest.php:24 +msgid "" +"To start a game, enter [fediquest]your_word[/fediquest] somewhere in a " +"toplevel post." +msgstr "Para empezar una partida, introduce [fediquest]tu_palabra[/fediquest] en algún lugar de un post de toplevel." + +#: ../../addon/fediquest/Mod_Fediquest.php:25 +msgid "Your contacts can post their guess in the comments." +msgstr "Sus contactos pueden publicar sus conjeturas en los comentarios." + +#: ../../addon/fediquest/Mod_Fediquest.php:26 +msgid "" +"Your channel will evaluate the guess and automatically post the response." +msgstr "Su canal evaluará la conjetura y publicará automáticamente la respuesta." + +#: ../../addon/fediquest/Mod_Fediquest.php:28 +msgid "Correct letters" +msgstr "Letras correctas" + +#: ../../addon/fediquest/Mod_Fediquest.php:29 +msgid "Letters contained in the word but at the wrong spot" +msgstr "Letras contenidas en la palabra pero en el lugar equivocado" + +#: ../../addon/fediquest/Mod_Fediquest.php:30 +msgid "Letters not contained in the word" +msgstr "Letras no contenidas en la palabra" + #: ../../addon/socialauth/Mod_SocialAuth.php:106 #: ../../addon/socialauth/Mod_SocialAuth.php:179 msgid "Network error" @@ -4214,45 +4092,6 @@ msgstr "PHP upload_max_filesize: " msgid "PHP post_max_size (must be larger than upload_max_filesize): " msgstr "PHP post_max_size (debe ser mayor que upload_max_filesize): " -#: ../../addon/fediwordle/fediwordle.php:211 -msgid "ERROR: word length is not correct!" -msgstr "ERROR: ¡la longitud de la palabra no es correcta!" - -#: ../../addon/fediwordle/Mod_Fediwordle.php:22 -msgid "Fediwordle App" -msgstr "App Fediwordle" - -#: ../../addon/fediwordle/Mod_Fediwordle.php:23 -msgid "A distributed word game inspired by wordle." -msgstr "Un juego de palabras distribuido inspirado en el wordle." - -#: ../../addon/fediwordle/Mod_Fediwordle.php:24 -msgid "" -"To start a game, enter [wordle]your_word[/wordle] somewhere in a toplevel " -"post." -msgstr "Para empezar una partida, introduzca [wordle]mi_palabra[/wordle] en algún lugar de un post de nivel superior." - -#: ../../addon/fediwordle/Mod_Fediwordle.php:25 -msgid "Your contacts can post their guess in the comments." -msgstr "Sus contactos pueden publicar sus conjeturas en los comentarios." - -#: ../../addon/fediwordle/Mod_Fediwordle.php:26 -msgid "" -"Your channel will evaluate the guess and automatically post the response." -msgstr "Su canal evaluará la conjetura y publicará automáticamente la respuesta." - -#: ../../addon/fediwordle/Mod_Fediwordle.php:28 -msgid "Correct letters" -msgstr "Letras correctas" - -#: ../../addon/fediwordle/Mod_Fediwordle.php:29 -msgid "Letters contained in the word but at the wrong spot" -msgstr "Letras contenidas en la palabra pero en el lugar equivocado" - -#: ../../addon/fediwordle/Mod_Fediwordle.php:30 -msgid "Letters not contained in the word" -msgstr "Letras no contenidas en la palabra" - #: ../../addon/sendzid/Mod_Sendzid.php:21 msgid "Send your identity to all websites" msgstr "Enviar su identidad a todos los sitios web" @@ -4335,7 +4174,7 @@ msgid "Last Name" msgstr "Apellido" #: ../../addon/openid/MysqlProvider.php:54 -#: ../../addon/redred/Mod_Redred.php:73 ../../boot.php:1742 +#: ../../addon/redred/Mod_Redred.php:73 ../../boot.php:1740 msgid "Nickname" msgstr "Alias" @@ -4343,12 +4182,6 @@ msgstr "Alias" msgid "Full Name" msgstr "Nombre completo" -#: ../../addon/openid/MysqlProvider.php:58 -#: ../../addon/openid/MysqlProvider.php:59 -#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:366 -msgid "Profile Photo" -msgstr "Foto del perfil" - #: ../../addon/openid/MysqlProvider.php:61 msgid "Profile Photo 16px" msgstr "Foto del perfil 16px" @@ -4374,11 +4207,11 @@ msgid "Profile Photo 128px" msgstr "Foto del perfil 128px" #: ../../addon/openid/MysqlProvider.php:68 -#: ../../Zotlabs/Module/Profiles.php:783 +#: ../../Zotlabs/Module/Profiles.php:779 msgid "Homepage URL" msgstr "Dirección de la página personal" -#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:364 +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:362 msgid "Language" msgstr "Idioma" @@ -4399,7 +4232,7 @@ msgid "Birthdate" msgstr "Fecha de nacimiento" #: ../../addon/openid/MysqlProvider.php:74 -#: ../../Zotlabs/Module/Profiles.php:456 +#: ../../Zotlabs/Module/Profiles.php:452 msgid "Gender" msgstr "Género" @@ -4819,7 +4652,7 @@ msgstr "Publicar por defecto en InsaneJournal" msgid "Insane Journal Crosspost Connector" msgstr "Conector de publicación cruzada de InsaneJournal" -#: ../../addon/wholikesme/wholikesme.php:29 +#: ../../addon/wholikesme/wholikesme.php:30 msgid "Who likes me?" msgstr "¿Quién me ha puesto \"Me gusta\"?" @@ -4967,46 +4800,43 @@ msgstr "Su cuenta en %s caducará en unos pocos días." msgid "Your test account is about to expire." msgstr "Su cuenta de prueba está a punto de expirar." -#: ../../addon/pubcrawl/as.php:1958 ../../addon/diaspora/Receiver.php:1693 -#: ../../Zotlabs/Module/Subthread.php:115 ../../Zotlabs/Module/Like.php:453 -msgid "status" -msgstr "el mensaje de estado " - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:28 msgid "ActivityPub Protocol Settings updated." msgstr "Se han actualizado los ajustes del protocolo ActivityPub." -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:41 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:44 msgid "" "The activitypub protocol does not support location independence. Connections" " you make within that network may be unreachable from alternate channel " "locations." msgstr "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos." -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:47 -msgid "Deliver to ActivityPub recipients in privacy groups" -msgstr "Entregar a los destinatarios de ActivityPub en grupos de canales" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +msgid "Send activities of type note instead of article" +msgstr "Enviar actividades de tipo nota en lugar de artículo" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:47 -msgid "" -"May result in a large number of mentions and expose all the members of your " -"privacy group" -msgstr "Puede resultar en un gran número de menciones y exponer a todos los miembros de su grupo de canales" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +msgid "Microblog services such as Mastodon do not properly support articles" +msgstr "Los servicios de microblog como Mastodon no soportan correctamente los artículos" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:51 -msgid "Send multi-media HTML articles" -msgstr "Enviar artículos multimedia en HTML" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:51 -msgid "Not supported by some microblog services such as Mastodon" -msgstr "No soportado por algunos servicios de microblog como Mastodon" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:59 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:58 msgid "Activitypub Protocol" msgstr "Protocolo Activitypub" +#: ../../addon/pubcrawl/pubcrawl.php:1073 +#: ../../addon/diaspora/diaspora.php:415 +#: ../../Zotlabs/Module/Contactedit.php:494 +msgid "Refresh failed" +msgstr "Error de actualización" + +#: ../../addon/pubcrawl/pubcrawl.php:1080 +#: ../../addon/diaspora/diaspora.php:420 +#: ../../Zotlabs/Module/Contactedit.php:491 +msgid "Refresh succeeded" +msgstr "Actualización con éxito" + #: ../../addon/bookmarker/bookmarker.php:38 -#: ../../Zotlabs/Lib/ThreadItem.php:474 +#: ../../Zotlabs/Lib/ThreadItem.php:495 msgid "Save Bookmarks" msgstr "Guardar en Marcadores" @@ -5024,7 +4854,7 @@ msgid "Post to Dreamwidth" msgstr "Publicar en Dreamwidth" #: ../../addon/dwpost/dwpost.php:134 ../../addon/dwpost/Mod_Dwpost.php:67 -#: ../../addon/wppost/wppost.php:174 ../../addon/wppost/Mod_Wppost.php:96 +#: ../../addon/wppost/wppost.php:175 ../../addon/wppost/Mod_Wppost.php:96 #: ../../addon/wiki/Mod_Wiki.php:381 ../../addon/ljpost/ljpost.php:134 msgid "Source" msgstr "Fuente" @@ -5075,7 +4905,7 @@ msgstr "La dirección de una transmisión de diaspora. Ejemplo: relay@diasporare msgid "Diaspora relay could not be imported" msgstr "El reenvío de Diaspora no ha podido ser importado" -#: ../../addon/diaspora/diaspora.php:1093 +#: ../../addon/diaspora/diaspora.php:1106 msgid "No subject" msgstr "Sin tema" @@ -5097,17 +4927,22 @@ msgstr "$projectname" msgid "%1$s dislikes %2$s's %3$s" msgstr "a %1$s no le gusta el %3$s de %2$s" -#: ../../addon/diaspora/Receiver.php:2251 ../../Zotlabs/Module/Like.php:495 +#: ../../addon/diaspora/Receiver.php:1693 +#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Like.php:456 +msgid "status" +msgstr "el mensaje de estado " + +#: ../../addon/diaspora/Receiver.php:2248 ../../Zotlabs/Module/Like.php:487 #, php-format msgid "%1$s is attending %2$s's %3$s" msgstr "%3$s de %2$s: %1$s participa" -#: ../../addon/diaspora/Receiver.php:2253 ../../Zotlabs/Module/Like.php:497 +#: ../../addon/diaspora/Receiver.php:2250 ../../Zotlabs/Module/Like.php:489 #, php-format msgid "%1$s is not attending %2$s's %3$s" msgstr "%3$s de %2$s: %1$s no participa" -#: ../../addon/diaspora/Receiver.php:2255 ../../Zotlabs/Module/Like.php:499 +#: ../../addon/diaspora/Receiver.php:2252 ../../Zotlabs/Module/Like.php:491 #, php-format msgid "%1$s may attend %2$s's %3$s" msgstr "%3$s de %2$s: %1$s quizá participe" @@ -5181,7 +5016,7 @@ msgid "No channels currently blocked" msgstr "No hay canales bloqueados actualmente" #: ../../addon/superblock/Mod_Superblock.php:90 -#: ../../Zotlabs/Module/Cover_photo.php:424 ../../Zotlabs/Module/Tagrm.php:137 +#: ../../Zotlabs/Module/Cover_photo.php:381 ../../Zotlabs/Module/Tagrm.php:137 #: ../../Zotlabs/Module/Admin/Addons.php:462 #: ../../Zotlabs/Module/Photos.php:994 msgid "Remove" @@ -5337,7 +5172,7 @@ msgstr "Nombre" #: ../../addon/rendezvous/rendezvous.php:173 #: ../../addon/cart/submodules/hzservices.php:657 #: ../../addon/cart/submodules/manualcat.php:260 -#: ../../Zotlabs/Module/Appman.php:210 ../../Zotlabs/Module/Rbmark.php:100 +#: ../../Zotlabs/Module/Appman.php:220 ../../Zotlabs/Module/Rbmark.php:100 #: ../../Zotlabs/Module/Cdav.php:1005 msgid "Description" msgstr "Descripción" @@ -5418,7 +5253,7 @@ msgid "You have no rendezvous. Press the button above to create a rendezvous!" msgstr "No tiene ninguna cita. ¡Presione el botón de arriba para crear una!" #: ../../addon/rendezvous/rendezvous.php:401 -#: ../../Zotlabs/Module/Setup.php:730 +#: ../../Zotlabs/Module/Setup.php:748 msgid "Errors encountered creating database tables." msgstr "Se han encontrado errores al crear las tablas de la base de datos." @@ -5541,14 +5376,14 @@ msgstr "Añadir un artículo" #: ../../addon/wiki/Mod_Wiki.php:36 #: ../../addon/flashcards/Mod_Flashcards.php:52 -#: ../../addon/faces/Mod_Faces.php:64 ../../addon/cart/cart.php:1459 +#: ../../addon/faces/Mod_Faces.php:64 ../../addon/cart/cart.php:1458 msgid "Profile Unavailable." msgstr "Perfil no disponible" #: ../../addon/wiki/Mod_Wiki.php:81 ../../addon/cart/manual_payments.php:93 #: ../../addon/cart/submodules/paypalbuttonV2.php:486 #: ../../addon/cart/submodules/paypalbutton.php:456 -#: ../../addon/cart/myshop.php:37 ../../addon/cart/cart.php:1610 +#: ../../addon/cart/myshop.php:37 ../../addon/cart/cart.php:1609 msgid "Invalid channel" msgstr "Canal no válido" @@ -5575,7 +5410,7 @@ msgid "View" msgstr "Ver" #: ../../addon/wiki/Mod_Wiki.php:217 ../../Zotlabs/Module/Manage.php:137 -#: ../../Zotlabs/Module/Profiles.php:852 +#: ../../Zotlabs/Module/Profiles.php:848 msgid "Create New" msgstr "Crear" @@ -5645,8 +5480,8 @@ msgstr "Nombre de la nueva página" msgid "Embed image from photo albums" msgstr "Incluir una imagen de los álbumes de fotos" -#: ../../addon/wiki/Mod_Wiki.php:402 ../../Zotlabs/Module/Cover_photo.php:432 -#: ../../Zotlabs/Module/Profile_photo.php:557 +#: ../../addon/wiki/Mod_Wiki.php:402 ../../Zotlabs/Module/Cover_photo.php:389 +#: ../../Zotlabs/Module/Profile_photo.php:556 msgid "Choose a different album" msgstr "Elegir un álbum diferente..." @@ -5706,12 +5541,12 @@ msgstr "Revisión seleccionada" msgid "You must be authenticated." msgstr "Debe estar autenticado." -#: ../../addon/wiki/Mod_Wiki.php:899 ../../addon/wiki/Widget/Wiki_pages.php:61 +#: ../../addon/wiki/Mod_Wiki.php:899 ../../addon/wiki/Widget/Wiki_pages.php:64 msgid "Add new page" msgstr "Añadir una nueva página" -#: ../../addon/wiki/Mod_Wiki.php:906 ../../addon/wiki/Widget/Wiki_pages.php:68 -#: ../../Zotlabs/Module/Dreport.php:133 +#: ../../addon/wiki/Mod_Wiki.php:906 ../../addon/wiki/Widget/Wiki_pages.php:71 +#: ../../Zotlabs/Module/Dreport.php:132 msgid "Options" msgstr "Opciones" @@ -5792,11 +5627,11 @@ msgstr "Fecha" msgid "Compare" msgstr "Comparar" -#: ../../addon/wiki/Widget/Wiki_pages.php:55 +#: ../../addon/wiki/Widget/Wiki_pages.php:58 msgid "Wiki Pages" msgstr "Páginas del wiki" -#: ../../addon/wiki/Widget/Wiki_pages.php:66 +#: ../../addon/wiki/Widget/Wiki_pages.php:69 msgid "Page name" msgstr "Nombre de la página" @@ -5933,7 +5768,7 @@ msgid "Post to GNU social" msgstr "Publicar en GNU social" #: ../../addon/statusnet/statusnet.php:593 -#: ../../Zotlabs/Module/Admin/Site.php:423 +#: ../../Zotlabs/Module/Admin/Site.php:409 msgid "Site name" msgstr "Nombre del sitio" @@ -6122,7 +5957,7 @@ msgstr "Los pagos manuales no están habilitados." #: ../../addon/cart/manual_payments.php:68 #: ../../addon/cart/submodules/paypalbuttonV2.php:417 #: ../../addon/cart/submodules/paypalbutton.php:392 -#: ../../addon/cart/cart.php:1632 +#: ../../addon/cart/cart.php:1631 msgid "Order not found." msgstr "El pedido no se ha encontrado." @@ -6321,7 +6156,7 @@ msgstr "Instrucciones" msgid "Access Denied." msgstr "Acceso denegado" -#: ../../addon/cart/myshop.php:113 ../../addon/cart/cart.php:1495 +#: ../../addon/cart/myshop.php:113 ../../addon/cart/cart.php:1494 msgid "Order Not Found" msgstr "No se ha encontrado el pedido" @@ -6348,47 +6183,47 @@ msgstr "[cesta] Artículo añadido" msgid "Order already checked out." msgstr "El pedido ya ha sido revisado" -#: ../../addon/cart/cart.php:1417 +#: ../../addon/cart/cart.php:1416 msgid "Drop database tables when uninstalling." msgstr "Eliminar tablas de la base de datos al desinstalar." -#: ../../addon/cart/cart.php:1424 ../../addon/cart/Settings/Cart.php:129 +#: ../../addon/cart/cart.php:1423 ../../addon/cart/Settings/Cart.php:129 msgid "Cart Settings" msgstr "Configuración del carro de la compra" -#: ../../addon/cart/cart.php:1436 ../../addon/cart/cart.php:1439 +#: ../../addon/cart/cart.php:1435 ../../addon/cart/cart.php:1438 msgid "Shop" msgstr "Comprar" -#: ../../addon/cart/cart.php:1599 +#: ../../addon/cart/cart.php:1598 msgid "You must be logged into the Grid to shop." msgstr "Debe iniciar sesión en la red para comprar." -#: ../../addon/cart/cart.php:1648 +#: ../../addon/cart/cart.php:1647 msgid "Access denied." msgstr "Acceso denegado" -#: ../../addon/cart/cart.php:1700 ../../addon/cart/cart.php:1843 +#: ../../addon/cart/cart.php:1699 ../../addon/cart/cart.php:1842 msgid "No Order Found" msgstr "No se ha encontrado ningún pedido" -#: ../../addon/cart/cart.php:1709 +#: ../../addon/cart/cart.php:1708 msgid "An unknown error has occurred Please start again." msgstr "Se ha producido un error desconocido Vuelva a empezar." -#: ../../addon/cart/cart.php:1852 +#: ../../addon/cart/cart.php:1851 msgid "Requirements not met." msgstr "No se cumplen los requisitos." -#: ../../addon/cart/cart.php:1852 +#: ../../addon/cart/cart.php:1851 msgid "Review your order and complete any needed requirements." msgstr "Revise su pedido y complete los requisitos necesarios." -#: ../../addon/cart/cart.php:1878 +#: ../../addon/cart/cart.php:1877 msgid "Invalid Payment Type. Please start again." msgstr "Tipo de pago no válido. Por favor, empiece de nuevo." -#: ../../addon/cart/cart.php:1885 +#: ../../addon/cart/cart.php:1884 msgid "Order not found" msgstr "El pedido no se ha encontrado" @@ -6465,94 +6300,6 @@ msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta de msgid "Twitter Crosspost Connector" msgstr "Twitter Crosspost Connector" -#: ../../addon/moremoods/moremoods.php:19 -msgid "lonely" -msgstr "Solo/a" - -#: ../../addon/moremoods/moremoods.php:20 -msgid "drunk" -msgstr "ebrio/a" - -#: ../../addon/moremoods/moremoods.php:21 -msgid "horny" -msgstr "caliente" - -#: ../../addon/moremoods/moremoods.php:22 -msgid "stoned" -msgstr "drogado/a" - -#: ../../addon/moremoods/moremoods.php:23 -msgid "fucked up" -msgstr "jodido/a" - -#: ../../addon/moremoods/moremoods.php:24 -msgid "clusterfucked" -msgstr "hecho/a polvo" - -#: ../../addon/moremoods/moremoods.php:25 -msgid "crazy" -msgstr "loco/a" - -#: ../../addon/moremoods/moremoods.php:26 -msgid "hurt" -msgstr "ofendido/a" - -#: ../../addon/moremoods/moremoods.php:27 -msgid "sleepy" -msgstr "soñoliento/a" - -#: ../../addon/moremoods/moremoods.php:28 -msgid "grumpy" -msgstr "gruñón/ona" - -#: ../../addon/moremoods/moremoods.php:29 -msgid "high" -msgstr "superior" - -#: ../../addon/moremoods/moremoods.php:30 -msgid "semi-conscious" -msgstr "semiconsciente" - -#: ../../addon/moremoods/moremoods.php:31 -msgid "in love" -msgstr "enamorado/a" - -#: ../../addon/moremoods/moremoods.php:32 -msgid "in lust" -msgstr "lujurioso/a" - -#: ../../addon/moremoods/moremoods.php:33 -msgid "naked" -msgstr "desnudo/a" - -#: ../../addon/moremoods/moremoods.php:34 -msgid "stinky" -msgstr "apestoso/a" - -#: ../../addon/moremoods/moremoods.php:35 -msgid "sweaty" -msgstr "sudoroso/a" - -#: ../../addon/moremoods/moremoods.php:36 -msgid "bleeding out" -msgstr "exánime" - -#: ../../addon/moremoods/moremoods.php:37 -msgid "victorious" -msgstr "victorioso/a" - -#: ../../addon/moremoods/moremoods.php:38 -msgid "defeated" -msgstr "derrotado/a" - -#: ../../addon/moremoods/moremoods.php:39 -msgid "envious" -msgstr "envidioso/a" - -#: ../../addon/moremoods/moremoods.php:40 -msgid "jealous" -msgstr "celoso/a" - #: ../../addon/gravatar/gravatar.php:123 msgid "generic profile image" msgstr "imagen del perfil general" @@ -6723,7 +6470,7 @@ msgstr "Título" msgid "Brief description or title" msgstr "Breve descripción o título" -#: ../../addon/workflow/workflow.php:2661 ../../Zotlabs/Lib/Apps.php:375 +#: ../../addon/workflow/workflow.php:2661 ../../Zotlabs/Lib/Apps.php:373 #: ../../Zotlabs/Widget/Notes.php:38 msgid "Notes" msgstr "Notas" @@ -6766,158 +6513,6 @@ msgstr "Un ajuste" msgid "Skeleton Settings" msgstr "Ajustes de Skeleton" -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslap" -msgstr "una bofetada humillante" - -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslapped" -msgstr "ha abofeteado de forma humillante a" - -#: ../../addon/morepokes/morepokes.php:20 -msgid "shag" -msgstr "un polvo" - -#: ../../addon/morepokes/morepokes.php:20 -msgid "shagged" -msgstr "ha dejado exhausto/a a" - -#: ../../addon/morepokes/morepokes.php:21 -msgid "patent" -msgstr "una patente" - -#: ../../addon/morepokes/morepokes.php:21 -msgid "patented" -msgstr "ha patentado a" - -#: ../../addon/morepokes/morepokes.php:22 -msgid "hug" -msgstr "un abrazo" - -#: ../../addon/morepokes/morepokes.php:22 -msgid "hugged" -msgstr "ha abrazado a" - -#: ../../addon/morepokes/morepokes.php:23 -msgid "murder" -msgstr "un asesinato" - -#: ../../addon/morepokes/morepokes.php:23 -msgid "murdered" -msgstr "ha asesinado a" - -#: ../../addon/morepokes/morepokes.php:24 -msgid "worship" -msgstr "una alabanza" - -#: ../../addon/morepokes/morepokes.php:24 -msgid "worshipped" -msgstr "ha elogiado a" - -#: ../../addon/morepokes/morepokes.php:25 -msgid "kiss" -msgstr "un beso" - -#: ../../addon/morepokes/morepokes.php:25 -msgid "kissed" -msgstr "ha besado a" - -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempt" -msgstr "una tentación" - -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempted" -msgstr "ha tentado a" - -#: ../../addon/morepokes/morepokes.php:27 -msgid "raise eyebrows at" -msgstr "un levantamiento de cejas" - -#: ../../addon/morepokes/morepokes.php:27 -msgid "raised their eyebrows at" -msgstr "ha levantado las cejas a" - -#: ../../addon/morepokes/morepokes.php:28 -msgid "insult" -msgstr "un insulto" - -#: ../../addon/morepokes/morepokes.php:28 -msgid "insulted" -msgstr "ha insultado a" - -#: ../../addon/morepokes/morepokes.php:29 -msgid "praise" -msgstr "un elogio" - -#: ../../addon/morepokes/morepokes.php:29 -msgid "praised" -msgstr "ha elogiado a" - -#: ../../addon/morepokes/morepokes.php:30 -msgid "be dubious of" -msgstr "una indecisión" - -#: ../../addon/morepokes/morepokes.php:30 -msgid "was dubious of" -msgstr "estaba dudoso de" - -#: ../../addon/morepokes/morepokes.php:31 -msgid "eat" -msgstr "una comida" - -#: ../../addon/morepokes/morepokes.php:31 -msgid "ate" -msgstr "ha comido" - -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggle and fawn at" -msgstr "una sonrisa aduladora" - -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggled and fawned at" -msgstr "ha sonreído y adulado a" - -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubt" -msgstr "una duda" - -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubted" -msgstr "ha dudado de" - -#: ../../addon/morepokes/morepokes.php:34 -msgid "glare" -msgstr "una mirada furiosa" - -#: ../../addon/morepokes/morepokes.php:34 -msgid "glared at" -msgstr "ha mirado con furia" - -#: ../../addon/morepokes/morepokes.php:35 -msgid "fuck" -msgstr "una mierda" - -#: ../../addon/morepokes/morepokes.php:35 -msgid "fucked" -msgstr "ha mandado a la mierda a" - -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonk" -msgstr "un golpe" - -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonked" -msgstr "ha golpeado a" - -#: ../../addon/morepokes/morepokes.php:37 -msgid "declare undying love for" -msgstr "una declaración de amor eterno" - -#: ../../addon/morepokes/morepokes.php:37 -msgid "declared undying love for" -msgstr "ha declarado amor eterno a" - #: ../../addon/authchoose/Mod_Authchoose.php:30 msgid "" "Allow magic authentication only to websites of your immediate connections" @@ -7131,45 +6726,45 @@ msgstr "¡El juego del \"gato\"!" msgid "I won!" msgstr "¡He ganado yo!" -#: ../../boot.php:1724 +#: ../../boot.php:1722 msgid "Create an account to access services and applications" msgstr "Crear una cuenta para acceder a los servicios y aplicaciones" -#: ../../boot.php:1742 +#: ../../boot.php:1740 msgid "Email or nickname" msgstr "Correo electrónico o apodo" -#: ../../boot.php:1752 +#: ../../boot.php:1750 msgid "Password" msgstr "Contraseña" -#: ../../boot.php:1753 +#: ../../boot.php:1751 msgid "Remember me" msgstr "Recordarme" -#: ../../boot.php:1756 +#: ../../boot.php:1754 msgid "Forgot your password?" msgstr "¿Olvidó su contraseña?" -#: ../../boot.php:1757 ../../Zotlabs/Module/Lostpass.php:91 +#: ../../boot.php:1755 ../../Zotlabs/Module/Lostpass.php:91 msgid "Password Reset" msgstr "Restablecer la contraseña" -#: ../../boot.php:2627 +#: ../../boot.php:2625 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "[$Projectname] Error SSL del sitio web en %s" -#: ../../boot.php:2632 +#: ../../boot.php:2630 msgid "Website SSL certificate is not valid. Please correct." msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema." -#: ../../boot.php:2748 +#: ../../boot.php:2746 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "[$Projectname] Las tareas de Cron no están funcionando en %s" -#: ../../boot.php:2753 +#: ../../boot.php:2751 msgid "Cron/Scheduled tasks not running." msgstr "Las tareas del Planificador/Cron no están funcionando." @@ -7240,262 +6835,251 @@ msgstr "solicita comentar sobre " msgid "commented on" msgstr "ha comentado sobre " -#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:314 +#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:317 msgid "requested to like" msgstr "solicita que se permita mostrar agrado " -#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:314 +#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:317 msgid "liked" msgstr "ha gustado de " -#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:320 msgid "requested to dislike" msgstr "solicita que se permita mostrar desagrado " -#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:320 msgid "disliked" msgstr "no ha gustado de " -#: ../../Zotlabs/Lib/Enotify.php:169 +#: ../../Zotlabs/Lib/Enotify.php:167 +msgid "repeated" +msgstr "repetido / compartido" + +#: ../../Zotlabs/Lib/Enotify.php:172 msgid "voted on" msgstr "votado en " -#: ../../Zotlabs/Lib/Enotify.php:212 +#: ../../Zotlabs/Lib/Enotify.php:215 #, php-format msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" msgstr "%1$s%2$s [zrl=%3$s ]un %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:220 +#: ../../Zotlabs/Lib/Enotify.php:223 #, php-format msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" msgstr "%1$s %2$s[zrl=%3$s]%5$s de %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:229 ../../Zotlabs/Lib/Enotify.php:321 +#: ../../Zotlabs/Lib/Enotify.php:232 ../../Zotlabs/Lib/Enotify.php:324 #, php-format msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" msgstr "%1$s %2$s [zrl=%3$s]su %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:241 +#: ../../Zotlabs/Lib/Enotify.php:244 #, php-format msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] Comentario moderado en la conversación #%1$d por %2$s" -#: ../../Zotlabs/Lib/Enotify.php:243 +#: ../../Zotlabs/Lib/Enotify.php:246 #, php-format msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] Nuevo comentario de %2$s en la conversación #%1$d" -#: ../../Zotlabs/Lib/Enotify.php:244 +#: ../../Zotlabs/Lib/Enotify.php:247 #, php-format msgid "%1$s commented on an item/conversation you have been following" msgstr "%1$sha comentado un elemento/conversación que ha estado siguiendo." -#: ../../Zotlabs/Lib/Enotify.php:247 ../../Zotlabs/Lib/Enotify.php:341 -#: ../../Zotlabs/Lib/Enotify.php:357 ../../Zotlabs/Lib/Enotify.php:381 -#: ../../Zotlabs/Lib/Enotify.php:398 ../../Zotlabs/Lib/Enotify.php:411 +#: ../../Zotlabs/Lib/Enotify.php:250 ../../Zotlabs/Lib/Enotify.php:344 +#: ../../Zotlabs/Lib/Enotify.php:360 ../../Zotlabs/Lib/Enotify.php:384 +#: ../../Zotlabs/Lib/Enotify.php:401 ../../Zotlabs/Lib/Enotify.php:414 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Para ver o comentar la conversación, visite %s" -#: ../../Zotlabs/Lib/Enotify.php:251 ../../Zotlabs/Lib/Enotify.php:252 +#: ../../Zotlabs/Lib/Enotify.php:254 ../../Zotlabs/Lib/Enotify.php:255 #, php-format msgid "Please visit %s to approve or reject this comment." msgstr "Por favor, visite %s para aprobar o rechazar este comentario." -#: ../../Zotlabs/Lib/Enotify.php:337 +#: ../../Zotlabs/Lib/Enotify.php:340 #, php-format msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] \"Me gusta\" de %2$s en la conversación #%1$d" -#: ../../Zotlabs/Lib/Enotify.php:338 +#: ../../Zotlabs/Lib/Enotify.php:341 #, php-format msgid "%1$s liked an item/conversation you created" msgstr "A %1$s le ha gustado un elemento o conversación que ha creado usted." -#: ../../Zotlabs/Lib/Enotify.php:349 +#: ../../Zotlabs/Lib/Enotify.php:352 #, php-format msgid "[$Projectname:Notify] %s posted to your profile wall" msgstr "[$Projectname:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")" -#: ../../Zotlabs/Lib/Enotify.php:351 +#: ../../Zotlabs/Lib/Enotify.php:354 #, php-format msgid "%1$s posted to your profile wall at %2$s" msgstr "%1$s ha publicado en su muro en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:353 +#: ../../Zotlabs/Lib/Enotify.php:356 #, php-format msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" msgstr "%1$sha publicado en [zrl=%2$s]su muro[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:375 +#: ../../Zotlabs/Lib/Enotify.php:378 #, php-format msgid "[$Projectname:Notify] %s tagged you" msgstr "[$Projectname:Aviso] %s le ha etiquetado" -#: ../../Zotlabs/Lib/Enotify.php:376 +#: ../../Zotlabs/Lib/Enotify.php:379 #, php-format msgid "%1$s tagged you at %2$s" msgstr "%1$sle ha etiquetado en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:377 +#: ../../Zotlabs/Lib/Enotify.php:380 #, php-format msgid "%1$s [zrl=%2$s]tagged you[/zrl]." msgstr "%1$s [zrl=%2$s]le ha etiquetado[/zrl]." -#: ../../Zotlabs/Lib/Enotify.php:388 +#: ../../Zotlabs/Lib/Enotify.php:391 #, php-format msgid "[$Projectname:Notify] %1$s poked you" msgstr "[$Projectname:Aviso] %1$s le ha dado un toque" -#: ../../Zotlabs/Lib/Enotify.php:389 +#: ../../Zotlabs/Lib/Enotify.php:392 #, php-format msgid "%1$s poked you at %2$s" msgstr "%1$sle ha dado un toque en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:390 +#: ../../Zotlabs/Lib/Enotify.php:393 #, php-format msgid "%1$s [zrl=%2$s]poked you[/zrl]." msgstr "%1$s [zrl=%2$s] le ha dado un toque[/zrl]." -#: ../../Zotlabs/Lib/Enotify.php:405 +#: ../../Zotlabs/Lib/Enotify.php:408 #, php-format msgid "[$Projectname:Notify] %s tagged your post" msgstr "[$Projectname:Aviso] %s ha etiquetado su entrada" -#: ../../Zotlabs/Lib/Enotify.php:406 +#: ../../Zotlabs/Lib/Enotify.php:409 #, php-format msgid "%1$s tagged your post at %2$s" msgstr "%1$sha etiquetado su entrada en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:407 +#: ../../Zotlabs/Lib/Enotify.php:410 #, php-format msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" msgstr "%1$s ha etiquetado [zrl=%2$s]su entrada[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:418 +#: ../../Zotlabs/Lib/Enotify.php:421 msgid "[$Projectname:Notify] Introduction received" msgstr "[$Projectname:Aviso] Ha recibido una solicitud de conexión" -#: ../../Zotlabs/Lib/Enotify.php:419 +#: ../../Zotlabs/Lib/Enotify.php:422 #, php-format msgid "You've received an new connection request from '%1$s' at %2$s" msgstr "Ha recibido una nueva solicitud de conexión de '%1$s' en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:420 +#: ../../Zotlabs/Lib/Enotify.php:423 #, php-format msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." msgstr "Ha recibido [zrl=%1$s]una nueva solicitud de conexión[/zrl] de %2$s." -#: ../../Zotlabs/Lib/Enotify.php:423 ../../Zotlabs/Lib/Enotify.php:441 +#: ../../Zotlabs/Lib/Enotify.php:426 ../../Zotlabs/Lib/Enotify.php:444 #, php-format msgid "You may visit their profile at %s" msgstr "Puede visitar su perfil en %s" -#: ../../Zotlabs/Lib/Enotify.php:425 +#: ../../Zotlabs/Lib/Enotify.php:428 #, php-format msgid "Please visit %s to approve or reject the connection request." msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión." -#: ../../Zotlabs/Lib/Enotify.php:432 +#: ../../Zotlabs/Lib/Enotify.php:435 msgid "[$Projectname:Notify] Friend suggestion received" msgstr "[$Projectname:Aviso] Ha recibido una sugerencia de conexión" -#: ../../Zotlabs/Lib/Enotify.php:433 +#: ../../Zotlabs/Lib/Enotify.php:436 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "Ha recibido una sugerencia de amistad de '%1$s' en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:434 +#: ../../Zotlabs/Lib/Enotify.php:437 #, php-format msgid "" "You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." msgstr "Ha recibido [zrl=%1$s]una sugerencia de amistad[/zrl] para %2$s de %3$s." -#: ../../Zotlabs/Lib/Enotify.php:439 +#: ../../Zotlabs/Lib/Enotify.php:442 msgid "Name:" msgstr "Nombre:" -#: ../../Zotlabs/Lib/Enotify.php:440 +#: ../../Zotlabs/Lib/Enotify.php:443 msgid "Photo:" msgstr "Foto:" -#: ../../Zotlabs/Lib/Enotify.php:443 +#: ../../Zotlabs/Lib/Enotify.php:446 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia." -#: ../../Zotlabs/Lib/Enotify.php:668 +#: ../../Zotlabs/Lib/Enotify.php:676 msgid "[$Projectname:Notify]" msgstr "[$Projectname:Aviso]" -#: ../../Zotlabs/Lib/Enotify.php:834 +#: ../../Zotlabs/Lib/Enotify.php:842 msgid "created a new poll" msgstr "se ha creado una nueva encuesta" -#: ../../Zotlabs/Lib/Enotify.php:834 +#: ../../Zotlabs/Lib/Enotify.php:842 msgid "created a new post" msgstr "ha creado una nueva entrada" -#: ../../Zotlabs/Lib/Enotify.php:835 +#: ../../Zotlabs/Lib/Enotify.php:843 #, php-format msgid "voted on %s's poll" msgstr "votado en la encuesta de %s" -#: ../../Zotlabs/Lib/Enotify.php:835 +#: ../../Zotlabs/Lib/Enotify.php:843 #, php-format msgid "commented on %s's post" msgstr "ha comentado la entrada de %s" -#: ../../Zotlabs/Lib/Enotify.php:839 -#, php-format -msgid "repeated %s's post" -msgstr "repetida la entrada de %s" - -#: ../../Zotlabs/Lib/Enotify.php:843 -#, php-format -msgid "liked %s's post" -msgstr "Le ha gustado la entrada de %s" - -#: ../../Zotlabs/Lib/Enotify.php:847 -#, php-format -msgid "disliked %s's post" -msgstr "No le ha gustado la entrada de %s" - -#: ../../Zotlabs/Lib/Enotify.php:851 ../../Zotlabs/Lib/Enotify.php:954 +#: ../../Zotlabs/Lib/Enotify.php:847 ../../Zotlabs/Lib/Enotify.php:947 msgid "shared a file with you" msgstr "compartió un archivo con usted" -#: ../../Zotlabs/Lib/Enotify.php:860 +#: ../../Zotlabs/Lib/Enotify.php:856 #, php-format msgid "edited a post dated %s" msgstr "ha editado una entrada %s" -#: ../../Zotlabs/Lib/Enotify.php:863 +#: ../../Zotlabs/Lib/Enotify.php:859 #, php-format msgid "edited a comment dated %s" msgstr "ha editado un comentario %s" -#: ../../Zotlabs/Lib/Enotify.php:939 +#: ../../Zotlabs/Lib/Enotify.php:932 msgid "added your channel" msgstr "añadió este canal a sus conexiones" -#: ../../Zotlabs/Lib/Enotify.php:969 +#: ../../Zotlabs/Lib/Enotify.php:962 msgid "sent you a direct message" msgstr "enviarle un mensaje directo" -#: ../../Zotlabs/Lib/Enotify.php:976 +#: ../../Zotlabs/Lib/Enotify.php:969 msgid "g A l F d" msgstr "g A l d F" -#: ../../Zotlabs/Lib/Enotify.php:979 +#: ../../Zotlabs/Lib/Enotify.php:972 msgid "[today]" msgstr "[hoy]" -#: ../../Zotlabs/Lib/Enotify.php:989 +#: ../../Zotlabs/Lib/Enotify.php:982 msgid "created an event" msgstr "se creó un evento" -#: ../../Zotlabs/Lib/Enotify.php:1004 +#: ../../Zotlabs/Lib/Enotify.php:997 msgid "status verified" msgstr "estado verificado" @@ -7531,88 +7115,84 @@ msgstr "Stream" msgid "Mail" msgstr "Correo" -#: ../../Zotlabs/Lib/Apps.php:355 ../../Zotlabs/Module/Mood.php:152 -msgid "Mood" -msgstr "Estado de ánimo" - -#: ../../Zotlabs/Lib/Apps.php:357 +#: ../../Zotlabs/Lib/Apps.php:355 msgid "Chat" msgstr "Chat" -#: ../../Zotlabs/Lib/Apps.php:359 +#: ../../Zotlabs/Lib/Apps.php:357 msgid "Probe" msgstr "Probar" -#: ../../Zotlabs/Lib/Apps.php:360 +#: ../../Zotlabs/Lib/Apps.php:358 msgid "Suggest" msgstr "Sugerir" -#: ../../Zotlabs/Lib/Apps.php:361 +#: ../../Zotlabs/Lib/Apps.php:359 msgid "Random Channel" msgstr "Canal aleatorio" -#: ../../Zotlabs/Lib/Apps.php:362 +#: ../../Zotlabs/Lib/Apps.php:360 msgid "Invite" msgstr "Invitar" -#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Widget/Admin.php:31 +#: ../../Zotlabs/Lib/Apps.php:361 ../../Zotlabs/Widget/Admin.php:31 msgid "Features" msgstr "Funcionalidades" -#: ../../Zotlabs/Lib/Apps.php:365 ../../Zotlabs/Storage/Browser.php:410 +#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Storage/Browser.php:410 msgid "Post" msgstr "Publicación" -#: ../../Zotlabs/Lib/Apps.php:370 +#: ../../Zotlabs/Lib/Apps.php:368 msgid "Notifications" msgstr "Notificaciones" -#: ../../Zotlabs/Lib/Apps.php:371 +#: ../../Zotlabs/Lib/Apps.php:369 msgid "Order Apps" msgstr "Ordenar las apps" -#: ../../Zotlabs/Lib/Apps.php:372 +#: ../../Zotlabs/Lib/Apps.php:370 msgid "CardDAV" msgstr "CardDAV" -#: ../../Zotlabs/Lib/Apps.php:373 ../../Zotlabs/Module/Sources.php:105 +#: ../../Zotlabs/Lib/Apps.php:371 ../../Zotlabs/Module/Sources.php:105 msgid "Channel Sources" msgstr "Orígenes de los contenidos del canal" -#: ../../Zotlabs/Lib/Apps.php:374 ../../Zotlabs/Module/Tokens.php:288 +#: ../../Zotlabs/Lib/Apps.php:372 ../../Zotlabs/Module/Tokens.php:288 msgid "Guest Access" msgstr "Acceso para invitados" -#: ../../Zotlabs/Lib/Apps.php:376 +#: ../../Zotlabs/Lib/Apps.php:374 msgid "OAuth Apps Manager" msgstr "Administrador de apps OAuth" -#: ../../Zotlabs/Lib/Apps.php:377 +#: ../../Zotlabs/Lib/Apps.php:375 msgid "OAuth2 Apps Manager" msgstr "Administrador de apps OAuth2" -#: ../../Zotlabs/Lib/Apps.php:378 +#: ../../Zotlabs/Lib/Apps.php:376 msgid "PDL Editor" msgstr "Editor PDL" -#: ../../Zotlabs/Lib/Apps.php:379 ../../Zotlabs/Module/Permcats.php:248 +#: ../../Zotlabs/Lib/Apps.php:377 ../../Zotlabs/Module/Permcats.php:248 msgid "Contact Roles" msgstr "Roles de contacto" -#: ../../Zotlabs/Lib/Apps.php:380 ../../Zotlabs/Widget/Notifications.php:154 -#: ../../Zotlabs/Module/Pubstream.php:100 +#: ../../Zotlabs/Lib/Apps.php:378 ../../Zotlabs/Widget/Notifications.php:154 +#: ../../Zotlabs/Module/Pubstream.php:108 msgid "Public Stream" msgstr "\"Stream\" público" -#: ../../Zotlabs/Lib/Apps.php:381 +#: ../../Zotlabs/Lib/Apps.php:379 msgid "My Chatrooms" msgstr "Mis salas de chat" -#: ../../Zotlabs/Lib/Apps.php:382 +#: ../../Zotlabs/Lib/Apps.php:380 msgid "Channel Export" msgstr "Exportar canal" -#: ../../Zotlabs/Lib/Apps.php:563 ../../Zotlabs/Module/Oauth.php:53 +#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Module/Oauth.php:53 #: ../../Zotlabs/Module/Oauth.php:135 ../../Zotlabs/Module/Connedit.php:748 #: ../../Zotlabs/Module/Admin/Addons.php:460 #: ../../Zotlabs/Module/Cdav.php:1044 ../../Zotlabs/Module/Cdav.php:1384 @@ -7620,31 +7200,31 @@ msgstr "Exportar canal" msgid "Update" msgstr "Actualizar" -#: ../../Zotlabs/Lib/Apps.php:563 ../../Zotlabs/Module/Admin/Addons.php:429 +#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Module/Admin/Addons.php:429 msgid "Install" msgstr "Instalar" -#: ../../Zotlabs/Lib/Apps.php:593 ../../Zotlabs/Lib/Apps.php:615 +#: ../../Zotlabs/Lib/Apps.php:591 ../../Zotlabs/Lib/Apps.php:613 msgid "Purchase" msgstr "Comprar" -#: ../../Zotlabs/Lib/Apps.php:620 +#: ../../Zotlabs/Lib/Apps.php:618 msgid "Undelete" msgstr "Recuperar" -#: ../../Zotlabs/Lib/Apps.php:628 +#: ../../Zotlabs/Lib/Apps.php:626 msgid "Add to app-tray" msgstr "Añadir a la bandeja de aplicaciones" -#: ../../Zotlabs/Lib/Apps.php:629 +#: ../../Zotlabs/Lib/Apps.php:627 msgid "Remove from app-tray" msgstr "Quitar de la bandeja de aplicaciones" -#: ../../Zotlabs/Lib/Apps.php:630 +#: ../../Zotlabs/Lib/Apps.php:628 msgid "Pin to navbar" msgstr "Fijar en la barra de navegación" -#: ../../Zotlabs/Lib/Apps.php:631 +#: ../../Zotlabs/Lib/Apps.php:629 msgid "Unpin from navbar" msgstr "Quitar de la barra de navegación" @@ -7749,216 +7329,204 @@ msgstr "No puede conectarse consigo mismo." msgid "error saving data" msgstr "error guardando los datos" -#: ../../Zotlabs/Lib/ThreadItem.php:108 +#: ../../Zotlabs/Lib/ThreadItem.php:111 msgid "Restricted message" msgstr "Mensaje restringido" -#: ../../Zotlabs/Lib/ThreadItem.php:115 +#: ../../Zotlabs/Lib/ThreadItem.php:118 msgid "Direct message" msgstr "Mensaje directo" -#: ../../Zotlabs/Lib/ThreadItem.php:120 +#: ../../Zotlabs/Lib/ThreadItem.php:123 msgid "Public Policy" msgstr "Política pública" -#: ../../Zotlabs/Lib/ThreadItem.php:152 +#: ../../Zotlabs/Lib/ThreadItem.php:157 msgid "Privacy conflict. Discretion advised." msgstr "Conflicto de privacidad. Se aconseja discreción." -#: ../../Zotlabs/Lib/ThreadItem.php:183 ../../Zotlabs/Storage/Browser.php:372 +#: ../../Zotlabs/Lib/ThreadItem.php:188 ../../Zotlabs/Storage/Browser.php:372 msgid "Admin Delete" msgstr "Eliminar admin" -#: ../../Zotlabs/Lib/ThreadItem.php:186 ../../Zotlabs/Module/Filer.php:55 +#: ../../Zotlabs/Lib/ThreadItem.php:191 ../../Zotlabs/Module/Filer.php:55 msgid "Save to Folder" msgstr "Guardar en carpeta" -#: ../../Zotlabs/Lib/ThreadItem.php:206 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 msgid "I will attend" msgstr "Participaré" -#: ../../Zotlabs/Lib/ThreadItem.php:206 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 msgid "I will not attend" msgstr "No participaré" -#: ../../Zotlabs/Lib/ThreadItem.php:206 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 msgid "I might attend" msgstr "Quizá participe" -#: ../../Zotlabs/Lib/ThreadItem.php:229 ../../Zotlabs/Lib/ThreadItem.php:242 -#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138 -msgid "View all" -msgstr "Ver todo" - -#: ../../Zotlabs/Lib/ThreadItem.php:310 ../../Zotlabs/Module/Photos.php:1074 +#: ../../Zotlabs/Lib/ThreadItem.php:333 ../../Zotlabs/Module/Photos.php:1074 msgid "I like this (toggle)" msgstr "Me gusta (cambiar)" -#: ../../Zotlabs/Lib/ThreadItem.php:311 ../../Zotlabs/Module/Photos.php:1075 +#: ../../Zotlabs/Lib/ThreadItem.php:334 ../../Zotlabs/Module/Photos.php:1075 msgid "I don't like this (toggle)" msgstr "No me gusta esto (cambiar)" -#: ../../Zotlabs/Lib/ThreadItem.php:312 +#: ../../Zotlabs/Lib/ThreadItem.php:335 msgid "Reply on this comment" msgstr "Responder a este comentario" -#: ../../Zotlabs/Lib/ThreadItem.php:312 +#: ../../Zotlabs/Lib/ThreadItem.php:335 msgid "reply" msgstr "responder" -#: ../../Zotlabs/Lib/ThreadItem.php:312 +#: ../../Zotlabs/Lib/ThreadItem.php:335 msgid "Reply to" msgstr "Responder a " -#: ../../Zotlabs/Lib/ThreadItem.php:324 ../../Zotlabs/Widget/Pinned.php:104 -msgid "Share This" -msgstr "Compartir esto" - -#: ../../Zotlabs/Lib/ThreadItem.php:324 ../../Zotlabs/Widget/Pinned.php:104 +#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../Zotlabs/Widget/Pinned.php:93 msgid "share" msgstr "compartir" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:345 +msgid "Repeat" +msgstr "Se repite" + +#: ../../Zotlabs/Lib/ThreadItem.php:345 +msgid "repeat" +msgstr "Se repite" + +#: ../../Zotlabs/Lib/ThreadItem.php:356 msgid "Delivery Report" msgstr "Informe de transmisión" -#: ../../Zotlabs/Lib/ThreadItem.php:355 +#: ../../Zotlabs/Lib/ThreadItem.php:376 #, php-format -msgid "%d Comment" -msgid_plural "%d Comments" +msgid "%d comment" +msgid_plural "%d comments" msgstr[0] "%d comentario" msgstr[1] "%d comentarios" msgstr[2] "%d comentarios" -#: ../../Zotlabs/Lib/ThreadItem.php:356 +#: ../../Zotlabs/Lib/ThreadItem.php:377 #, php-format msgid "%d unseen" msgstr "%dno visto/a vistos/as" -#: ../../Zotlabs/Lib/ThreadItem.php:406 +#: ../../Zotlabs/Lib/ThreadItem.php:427 msgid "Forum" msgstr "Foro" -#: ../../Zotlabs/Lib/ThreadItem.php:413 +#: ../../Zotlabs/Lib/ThreadItem.php:434 msgid "to" msgstr "a" -#: ../../Zotlabs/Lib/ThreadItem.php:414 ../../Zotlabs/Widget/Messages.php:148 -#: ../../Zotlabs/Widget/Pinned.php:132 +#: ../../Zotlabs/Lib/ThreadItem.php:435 ../../Zotlabs/Widget/Messages.php:146 +#: ../../Zotlabs/Widget/Messages.php:149 ../../Zotlabs/Widget/Pinned.php:121 msgid "via" msgstr "mediante" -#: ../../Zotlabs/Lib/ThreadItem.php:415 +#: ../../Zotlabs/Lib/ThreadItem.php:436 msgid "Wall-to-Wall" msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:416 +#: ../../Zotlabs/Lib/ThreadItem.php:437 msgid "via Wall-To-Wall:" msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:444 +#: ../../Zotlabs/Lib/ThreadItem.php:465 msgid "Attend" msgstr "Participar o asistir" -#: ../../Zotlabs/Lib/ThreadItem.php:445 ../../Zotlabs/Widget/Pinned.php:146 +#: ../../Zotlabs/Lib/ThreadItem.php:466 ../../Zotlabs/Widget/Pinned.php:135 msgid "Attendance Options" msgstr "Opciones de participación o asistencia" -#: ../../Zotlabs/Lib/ThreadItem.php:447 ../../Zotlabs/Widget/Pinned.php:147 +#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../Zotlabs/Widget/Pinned.php:136 msgid "Voting Options" msgstr "Opciones de votación" -#: ../../Zotlabs/Lib/ThreadItem.php:462 +#: ../../Zotlabs/Lib/ThreadItem.php:483 msgid "Go to previous comment" msgstr "Ir al comentario anterior" -#: ../../Zotlabs/Lib/ThreadItem.php:471 ../../Zotlabs/Widget/Pinned.php:159 +#: ../../Zotlabs/Lib/ThreadItem.php:492 ../../Zotlabs/Widget/Pinned.php:148 msgid "Pinned post" msgstr "Entradas ancladas" -#: ../../Zotlabs/Lib/ThreadItem.php:475 +#: ../../Zotlabs/Lib/ThreadItem.php:496 msgid "Add to Calendar" msgstr "Añadir al calendario" -#: ../../Zotlabs/Lib/ThreadItem.php:483 -#: ../../Zotlabs/Module/Notifications.php:111 -msgid "Mark all seen" -msgstr "Marcar todo como visto" - -#: ../../Zotlabs/Lib/ThreadItem.php:490 ../../Zotlabs/Module/Photos.php:1260 -msgctxt "noun" -msgid "Likes" -msgstr "Me gusta" +#: ../../Zotlabs/Lib/ThreadItem.php:504 +msgid "Mark all comments seen" +msgstr "Marcar como leídos todos los comentarios" -#: ../../Zotlabs/Lib/ThreadItem.php:491 ../../Zotlabs/Module/Photos.php:1261 -msgctxt "noun" -msgid "Dislikes" -msgstr "No me gusta" - -#: ../../Zotlabs/Lib/ThreadItem.php:829 ../../Zotlabs/Module/Photos.php:1092 +#: ../../Zotlabs/Lib/ThreadItem.php:859 ../../Zotlabs/Module/Photos.php:1092 #: ../../Zotlabs/Module/Photos.php:1205 msgid "This is you" msgstr "Este es usted" -#: ../../Zotlabs/Lib/ThreadItem.php:838 +#: ../../Zotlabs/Lib/ThreadItem.php:868 msgid "Image" msgstr "Imagen" -#: ../../Zotlabs/Lib/ThreadItem.php:840 +#: ../../Zotlabs/Lib/ThreadItem.php:870 msgid "Insert Link" msgstr "Insertar enlace" -#: ../../Zotlabs/Lib/ThreadItem.php:841 +#: ../../Zotlabs/Lib/ThreadItem.php:871 msgid "Video" msgstr "Vídeo" -#: ../../Zotlabs/Lib/ThreadItem.php:850 +#: ../../Zotlabs/Lib/ThreadItem.php:880 msgid "Your full name (required)" msgstr "Su nombre completo (requerido)" -#: ../../Zotlabs/Lib/ThreadItem.php:851 +#: ../../Zotlabs/Lib/ThreadItem.php:881 msgid "Your email address (required)" msgstr "Su dirección de correo electrónico (requerido)" -#: ../../Zotlabs/Lib/ThreadItem.php:852 +#: ../../Zotlabs/Lib/ThreadItem.php:882 msgid "Your website URL (optional)" msgstr "La URL de su sitio web (opcional)" -#: ../../Zotlabs/Lib/Libzot.php:686 +#: ../../Zotlabs/Lib/Libzot.php:687 msgid "Unable to verify channel signature" msgstr "No ha sido posible de verificar la firma del canal" -#: ../../Zotlabs/Lib/Activity.php:2395 +#: ../../Zotlabs/Lib/Activity.php:2154 #, php-format msgid "Likes %1$s's %2$s" msgstr "Gusta de %2$sde %1$s" -#: ../../Zotlabs/Lib/Activity.php:2398 +#: ../../Zotlabs/Lib/Activity.php:2157 #, php-format msgid "Doesn't like %1$s's %2$s" msgstr "No le gusta %2$sde %1$s" -#: ../../Zotlabs/Lib/Activity.php:2404 +#: ../../Zotlabs/Lib/Activity.php:2163 #, php-format msgid "Will attend %s's event" msgstr "Asistirá al evento de %s" -#: ../../Zotlabs/Lib/Activity.php:2407 +#: ../../Zotlabs/Lib/Activity.php:2166 #, php-format msgid "Will not attend %s's event" msgstr "No asistirá al evento de %s" -#: ../../Zotlabs/Lib/Activity.php:2410 +#: ../../Zotlabs/Lib/Activity.php:2169 #, php-format msgid "May attend %s's event" msgstr "Puede asistir al evento de %s" -#: ../../Zotlabs/Lib/Activity.php:2413 +#: ../../Zotlabs/Lib/Activity.php:2172 #, php-format msgid "May not attend %s's event" msgstr "Puede no asistir al evento de %s" -#: ../../Zotlabs/Lib/Libsync.php:819 +#: ../../Zotlabs/Lib/Libsync.php:823 #, php-format msgid "Unable to verify site signature for %s" msgstr "No ha sido posible de verificar la firma del sitio para %s" @@ -8473,31 +8041,23 @@ msgstr "Editar álbum" #: ../../Zotlabs/Widget/Album.php:103 ../../Zotlabs/Widget/Portfolio.php:114 #: ../../Zotlabs/Widget/Cdav.php:152 ../../Zotlabs/Widget/Cdav.php:188 #: ../../Zotlabs/Storage/Browser.php:546 -#: ../../Zotlabs/Module/Cover_photo.php:423 +#: ../../Zotlabs/Module/Cover_photo.php:380 #: ../../Zotlabs/Module/Embedphotos.php:189 -#: ../../Zotlabs/Module/Profile_photo.php:547 +#: ../../Zotlabs/Module/Profile_photo.php:546 #: ../../Zotlabs/Module/Photos.php:681 msgid "Upload" msgstr "Subir" -#: ../../Zotlabs/Widget/Pinned.php:86 -msgid "I agree" -msgstr "Estoy de acuerdo" - -#: ../../Zotlabs/Widget/Pinned.php:86 -msgid "I disagree" -msgstr "No estoy de acuerdo" - -#: ../../Zotlabs/Widget/Pinned.php:86 -msgid "I abstain" -msgstr "Me abstengo" +#: ../../Zotlabs/Widget/Pinned.php:93 +msgid "Share This" +msgstr "Compartir esto" -#: ../../Zotlabs/Widget/Pinned.php:127 ../../Zotlabs/Widget/Pinned.php:128 +#: ../../Zotlabs/Widget/Pinned.php:116 ../../Zotlabs/Widget/Pinned.php:117 #, php-format msgid "View %s's profile - %s" msgstr "Ver el perfil de %s - %s" -#: ../../Zotlabs/Widget/Pinned.php:161 +#: ../../Zotlabs/Widget/Pinned.php:150 msgid "Don't show" msgstr "No mostrar" @@ -8666,25 +8226,25 @@ msgstr[1] "avisos" msgstr[2] "avisos" #: ../../Zotlabs/Widget/Affinity.php:36 -#: ../../Zotlabs/Module/Contactedit.php:295 +#: ../../Zotlabs/Module/Contactedit.php:281 #: ../../Zotlabs/Module/Connedit.php:579 msgid "Me" msgstr "Yo" #: ../../Zotlabs/Widget/Affinity.php:37 -#: ../../Zotlabs/Module/Contactedit.php:296 +#: ../../Zotlabs/Module/Contactedit.php:282 #: ../../Zotlabs/Module/Connedit.php:580 msgid "Family" msgstr "Familia" #: ../../Zotlabs/Widget/Affinity.php:39 -#: ../../Zotlabs/Module/Contactedit.php:298 +#: ../../Zotlabs/Module/Contactedit.php:284 #: ../../Zotlabs/Module/Connedit.php:582 msgid "Acquaintances" msgstr "Conocidos/as" #: ../../Zotlabs/Widget/Affinity.php:40 -#: ../../Zotlabs/Module/Contactedit.php:299 +#: ../../Zotlabs/Module/Contactedit.php:285 #: ../../Zotlabs/Module/Connedit.php:583 #: ../../Zotlabs/Module/Connections.php:97 #: ../../Zotlabs/Module/Connections.php:111 @@ -8692,10 +8252,11 @@ msgid "All" msgstr "Todos/as" #: ../../Zotlabs/Widget/Affinity.php:60 +#: ../../Zotlabs/Module/Contactedit.php:618 msgid "Refresh" msgstr "Recargar" -#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Site.php:414 +#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Site.php:400 msgid "Site" msgstr "Sitio" @@ -8755,7 +8316,7 @@ msgid "Add new role" msgstr "Añadir nuevo rol" #: ../../Zotlabs/Widget/Permcats.php:92 -#: ../../Zotlabs/Module/Contactedit.php:409 +#: ../../Zotlabs/Module/Contactedit.php:395 msgid "Contact roles" msgstr "Roles del contacto" @@ -8912,7 +8473,7 @@ msgid "Add new group" msgstr "Añadir nuevo grupo" #: ../../Zotlabs/Widget/Privacygroups.php:54 -#: ../../Zotlabs/Module/Contactedit.php:443 +#: ../../Zotlabs/Module/Contactedit.php:429 msgid "Privacy groups" msgstr "Grupos de canales" @@ -9105,19 +8666,18 @@ msgstr "Sólo se reanuda si la sincronización se estanca." msgid "Public access denied." msgstr "Acceso público denegado." -#: ../../Zotlabs/Module/Display.php:45 ../../Zotlabs/Module/Hq.php:41 -#: ../../Zotlabs/Module/Oep.php:82 ../../Zotlabs/Module/Pubstream.php:46 -#: ../../Zotlabs/Module/Channel.php:161 ../../Zotlabs/Module/Channel.php:183 +#: ../../Zotlabs/Module/Display.php:52 ../../Zotlabs/Module/Oep.php:82 +#: ../../Zotlabs/Module/Pubstream.php:54 ../../Zotlabs/Module/Channel.php:194 msgid "Malformed message id." msgstr "ID de mensaje malformado." -#: ../../Zotlabs/Module/Display.php:87 ../../Zotlabs/Module/Network.php:213 -#: ../../Zotlabs/Module/Hq.php:104 ../../Zotlabs/Module/Pubstream.php:89 -#: ../../Zotlabs/Module/Channel.php:267 ../../Zotlabs/Module/Rpost.php:210 +#: ../../Zotlabs/Module/Display.php:94 ../../Zotlabs/Module/Network.php:213 +#: ../../Zotlabs/Module/Hq.php:108 ../../Zotlabs/Module/Pubstream.php:97 +#: ../../Zotlabs/Module/Channel.php:278 ../../Zotlabs/Module/Rpost.php:210 msgid "Reset form" msgstr "Reiniciar el formulario" -#: ../../Zotlabs/Module/Display.php:319 ../../Zotlabs/Module/Channel.php:494 +#: ../../Zotlabs/Module/Display.php:319 ../../Zotlabs/Module/Channel.php:500 msgid "" "You must enable javascript for your browser to be able to view this content." msgstr "Debe habilitar javascript para poder ver este contenido en su navegador." @@ -9135,71 +8695,71 @@ msgstr "Se ha eliminado el elemento." msgid "Image uploaded but image cropping failed." msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. " -#: ../../Zotlabs/Module/Cover_photo.php:196 -#: ../../Zotlabs/Module/Cover_photo.php:254 +#: ../../Zotlabs/Module/Cover_photo.php:194 +#: ../../Zotlabs/Module/Cover_photo.php:251 msgid "Cover Photos" msgstr "Imágenes de portada del perfil" -#: ../../Zotlabs/Module/Cover_photo.php:212 +#: ../../Zotlabs/Module/Cover_photo.php:210 #: ../../Zotlabs/Module/Profile_photo.php:184 msgid "Image resize failed." msgstr "El ajuste del tamaño de la imagen ha fallado." -#: ../../Zotlabs/Module/Cover_photo.php:265 -#: ../../Zotlabs/Module/Profile_photo.php:350 +#: ../../Zotlabs/Module/Cover_photo.php:262 +#: ../../Zotlabs/Module/Profile_photo.php:349 msgid "Image upload failed." msgstr "La carga de la imagen ha fallado." -#: ../../Zotlabs/Module/Cover_photo.php:282 -#: ../../Zotlabs/Module/Profile_photo.php:370 +#: ../../Zotlabs/Module/Cover_photo.php:279 +#: ../../Zotlabs/Module/Profile_photo.php:369 msgid "Unable to process image." msgstr "No ha sido posible procesar la imagen." -#: ../../Zotlabs/Module/Cover_photo.php:367 -#: ../../Zotlabs/Module/Cover_photo.php:382 -#: ../../Zotlabs/Module/Profile_photo.php:432 -#: ../../Zotlabs/Module/Profile_photo.php:497 +#: ../../Zotlabs/Module/Cover_photo.php:324 +#: ../../Zotlabs/Module/Cover_photo.php:339 +#: ../../Zotlabs/Module/Profile_photo.php:431 +#: ../../Zotlabs/Module/Profile_photo.php:496 msgid "Photo not available." msgstr "Foto no disponible." -#: ../../Zotlabs/Module/Cover_photo.php:418 +#: ../../Zotlabs/Module/Cover_photo.php:375 msgid "Your cover photo may be visible to anybody on the internet" msgstr "La foto de la portada puede ser visible para cualquiera en Internet" -#: ../../Zotlabs/Module/Cover_photo.php:420 +#: ../../Zotlabs/Module/Cover_photo.php:377 msgid "Upload File:" msgstr "Subir fichero:" -#: ../../Zotlabs/Module/Cover_photo.php:421 +#: ../../Zotlabs/Module/Cover_photo.php:378 msgid "Select a profile:" msgstr "Seleccionar un perfil:" -#: ../../Zotlabs/Module/Cover_photo.php:422 +#: ../../Zotlabs/Module/Cover_photo.php:379 msgid "Change Cover Photo" msgstr "Cambiar la foto de portada del perfil" -#: ../../Zotlabs/Module/Cover_photo.php:426 -#: ../../Zotlabs/Module/Cover_photo.php:427 +#: ../../Zotlabs/Module/Cover_photo.php:383 +#: ../../Zotlabs/Module/Cover_photo.php:384 +#: ../../Zotlabs/Module/Profile_photo.php:550 #: ../../Zotlabs/Module/Profile_photo.php:551 -#: ../../Zotlabs/Module/Profile_photo.php:552 msgid "Use a photo from your albums" msgstr "Usar una foto de sus álbumes" -#: ../../Zotlabs/Module/Cover_photo.php:438 +#: ../../Zotlabs/Module/Cover_photo.php:395 msgid "Select existing photo" msgstr "Seleccionar una foto" -#: ../../Zotlabs/Module/Cover_photo.php:455 -#: ../../Zotlabs/Module/Profile_photo.php:581 +#: ../../Zotlabs/Module/Cover_photo.php:412 +#: ../../Zotlabs/Module/Profile_photo.php:580 msgid "Crop Image" msgstr "Recortar imagen" -#: ../../Zotlabs/Module/Cover_photo.php:456 -#: ../../Zotlabs/Module/Profile_photo.php:582 +#: ../../Zotlabs/Module/Cover_photo.php:413 +#: ../../Zotlabs/Module/Profile_photo.php:581 msgid "Please adjust the image cropping for optimum viewing." msgstr "Por favor ajuste el recorte de la imagen para una visión óptima." -#: ../../Zotlabs/Module/Cover_photo.php:458 +#: ../../Zotlabs/Module/Cover_photo.php:415 msgid "Done Editing" msgstr "Edición completada" @@ -9211,11 +8771,11 @@ msgstr "Enlace de la página" msgid "Edit Webpage" msgstr "Editar la página web" -#: ../../Zotlabs/Module/Sse_bs.php:623 +#: ../../Zotlabs/Module/Sse_bs.php:626 msgid "Private forum" msgstr "Foro privado" -#: ../../Zotlabs/Module/Sse_bs.php:623 +#: ../../Zotlabs/Module/Sse_bs.php:626 msgid "Public forum" msgstr "Foro público" @@ -9360,7 +8920,7 @@ msgstr "No se encuentra el grupo" msgid "No such channel" msgstr "No se encuentra el canal" -#: ../../Zotlabs/Module/Network.php:172 ../../Zotlabs/Module/Channel.php:234 +#: ../../Zotlabs/Module/Network.php:172 ../../Zotlabs/Module/Channel.php:245 msgid "Search Results For:" msgstr "Buscar resultados para:" @@ -9384,10 +8944,6 @@ msgstr "Administrar apps" msgid "Create Custom App" msgstr "Crear una app personalizada" -#: ../../Zotlabs/Module/Share.php:126 -msgid "Post repeated" -msgstr "Entrada repetida" - #: ../../Zotlabs/Module/Service_limits.php:23 msgid "No service class restrictions found." msgstr "No se han encontrado restricciones sobre esta clase de servicio." @@ -9564,6 +9120,10 @@ msgstr "No hay más notificaciones del sistema" msgid "System Notifications" msgstr "Notificaciones del sistema" +#: ../../Zotlabs/Module/Notifications.php:111 +msgid "Mark all seen" +msgstr "Marcar todo como visto" + #: ../../Zotlabs/Module/Z6trans.php:19 msgid "Update to Hubzilla 5.0 step 2" msgstr "Actualizar a Hubzilla 5.0. Paso 2" @@ -9580,60 +9140,56 @@ msgstr "php util/z6convert.php" msgid "from the terminal." msgstr "desde la terminal." -#: ../../Zotlabs/Module/Thing.php:122 +#: ../../Zotlabs/Module/Thing.php:139 msgid "Thing updated" msgstr "Elemento actualizado." -#: ../../Zotlabs/Module/Thing.php:174 +#: ../../Zotlabs/Module/Thing.php:191 msgid "Object store: failed" msgstr "Guardar objeto: ha fallado" -#: ../../Zotlabs/Module/Thing.php:178 +#: ../../Zotlabs/Module/Thing.php:195 msgid "Thing added" msgstr "Elemento añadido" -#: ../../Zotlabs/Module/Thing.php:204 +#: ../../Zotlabs/Module/Thing.php:210 #, php-format msgid "OBJ: %1$s %2$s %3$s" msgstr "OBJ: %1$s %2$s %3$s" -#: ../../Zotlabs/Module/Thing.php:267 -msgid "Show Thing" -msgstr "Mostrar elemento" - -#: ../../Zotlabs/Module/Thing.php:274 +#: ../../Zotlabs/Module/Thing.php:277 ../../Zotlabs/Module/Thing.php:301 msgid "item not found." msgstr "elemento no encontrado." -#: ../../Zotlabs/Module/Thing.php:307 +#: ../../Zotlabs/Module/Thing.php:336 msgid "Edit Thing" msgstr "Editar elemento" -#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:366 +#: ../../Zotlabs/Module/Thing.php:338 ../../Zotlabs/Module/Thing.php:394 msgid "Select a profile" msgstr "Seleccionar un perfil" -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 +#: ../../Zotlabs/Module/Thing.php:342 ../../Zotlabs/Module/Thing.php:397 msgid "Post an activity" msgstr "Publicar una actividad" -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 +#: ../../Zotlabs/Module/Thing.php:342 ../../Zotlabs/Module/Thing.php:397 msgid "Only sends to viewers of the applicable profile" msgstr "Sólo enviar a espectadores del perfil pertinente." -#: ../../Zotlabs/Module/Thing.php:315 ../../Zotlabs/Module/Thing.php:371 +#: ../../Zotlabs/Module/Thing.php:344 ../../Zotlabs/Module/Thing.php:399 msgid "Name of thing e.g. something" msgstr "Nombre del elemento, p. ej.:. \"algo\"" -#: ../../Zotlabs/Module/Thing.php:317 ../../Zotlabs/Module/Thing.php:372 +#: ../../Zotlabs/Module/Thing.php:346 ../../Zotlabs/Module/Thing.php:400 msgid "URL of thing (optional)" msgstr "Dirección del elemento (opcional)" -#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:373 +#: ../../Zotlabs/Module/Thing.php:348 ../../Zotlabs/Module/Thing.php:401 msgid "URL for photo of thing (optional)" msgstr "Dirección para la foto o elemento (opcional)" -#: ../../Zotlabs/Module/Thing.php:364 +#: ../../Zotlabs/Module/Thing.php:392 msgid "Add Thing to your Profile" msgstr "Añadir alguna cosa a su perfil" @@ -9842,303 +9398,274 @@ msgstr "No se ha podido acceder al registro de contacto." msgid "Could not locate selected profile." msgstr "No se ha podido localizar el perfil seleccionado." -#: ../../Zotlabs/Module/Contactedit.php:192 +#: ../../Zotlabs/Module/Contactedit.php:180 #: ../../Zotlabs/Module/Connedit.php:215 msgid "is now connected to" msgstr "ahora está conectado/a" -#: ../../Zotlabs/Module/Contactedit.php:252 -#: ../../Zotlabs/Module/Contactedit.php:401 +#: ../../Zotlabs/Module/Contactedit.php:238 +#: ../../Zotlabs/Module/Contactedit.php:387 #: ../../Zotlabs/Module/Connedit.php:701 msgid "Contact Tools" msgstr "Gestión de contactos" -#: ../../Zotlabs/Module/Contactedit.php:329 +#: ../../Zotlabs/Module/Contactedit.php:315 #: ../../Zotlabs/Module/Connedit.php:622 msgid "Approve this contact" msgstr "Aprobar este contacto" -#: ../../Zotlabs/Module/Contactedit.php:329 +#: ../../Zotlabs/Module/Contactedit.php:315 #: ../../Zotlabs/Module/Connedit.php:622 msgid "Accept contact to allow communication" msgstr "Aceptar el contacto para permitir la comunicación" -#: ../../Zotlabs/Module/Contactedit.php:362 +#: ../../Zotlabs/Module/Contactedit.php:348 #: ../../Zotlabs/Module/Connedit.php:658 msgid "Please select a role for this contact!" msgstr "¡Por favor, seleccione un rol para este contacto!" -#: ../../Zotlabs/Module/Contactedit.php:382 +#: ../../Zotlabs/Module/Contactedit.php:368 #: ../../Zotlabs/Module/Connedit.php:678 msgid "This contact is unreachable from this location." msgstr "Este contacto es inaccesible desde esta ubicación." -#: ../../Zotlabs/Module/Contactedit.php:383 +#: ../../Zotlabs/Module/Contactedit.php:369 #: ../../Zotlabs/Module/Connedit.php:679 msgid "This contact may be unreachable from other channel locations." msgstr "Este contacto puede ser inaccesible desde otras ubicaciones del canal." -#: ../../Zotlabs/Module/Contactedit.php:385 +#: ../../Zotlabs/Module/Contactedit.php:371 #: ../../Zotlabs/Module/Connedit.php:681 msgid "Location independence is not supported by their network." msgstr "La independencia de ubicación no es compatible con su red." -#: ../../Zotlabs/Module/Contactedit.php:395 +#: ../../Zotlabs/Module/Contactedit.php:381 msgid "View profile" msgstr "Ver el perfil" -#: ../../Zotlabs/Module/Contactedit.php:397 +#: ../../Zotlabs/Module/Contactedit.php:383 #: ../../Zotlabs/Module/Connections.php:413 msgid "This is a group/forum channel" msgstr "Este es un canal de grupo/foro" -#: ../../Zotlabs/Module/Contactedit.php:408 +#: ../../Zotlabs/Module/Contactedit.php:394 msgid "Select a role for this contact" msgstr "Selecciones un rol para este contacto" -#: ../../Zotlabs/Module/Contactedit.php:420 +#: ../../Zotlabs/Module/Contactedit.php:406 #: ../../Zotlabs/Module/Connedit.php:703 msgid "Slide to adjust your degree of friendship" msgstr "Deslizar para ajustar el grado de amistad" -#: ../../Zotlabs/Module/Contactedit.php:422 +#: ../../Zotlabs/Module/Contactedit.php:408 #: ../../Zotlabs/Module/Connedit.php:705 msgid "Custom Filter" msgstr "Filtro personalizado" -#: ../../Zotlabs/Module/Contactedit.php:423 +#: ../../Zotlabs/Module/Contactedit.php:409 #: ../../Zotlabs/Module/Connedit.php:706 #: ../../Zotlabs/Module/Settings/Channel.php:286 msgid "Only import posts with this text" msgstr "Importar solo entradas que contengan este texto" -#: ../../Zotlabs/Module/Contactedit.php:423 -#: ../../Zotlabs/Module/Contactedit.php:424 +#: ../../Zotlabs/Module/Contactedit.php:409 +#: ../../Zotlabs/Module/Contactedit.php:410 #: ../../Zotlabs/Module/Connedit.php:706 ../../Zotlabs/Module/Connedit.php:707 -#: ../../Zotlabs/Module/Admin/Site.php:515 -#: ../../Zotlabs/Module/Admin/Site.php:516 +#: ../../Zotlabs/Module/Admin/Site.php:500 +#: ../../Zotlabs/Module/Admin/Site.php:501 msgid "" "words one per line or #tags or /patterns/ or lang=xx, leave blank to import " "all posts" msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo" -#: ../../Zotlabs/Module/Contactedit.php:424 +#: ../../Zotlabs/Module/Contactedit.php:410 #: ../../Zotlabs/Module/Connedit.php:707 #: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "Do not import posts with this text" msgstr "No importar entradas que contengan este texto" -#: ../../Zotlabs/Module/Contactedit.php:429 +#: ../../Zotlabs/Module/Contactedit.php:415 #: ../../Zotlabs/Module/Connedit.php:714 msgid "Approve contact" msgstr "Aprobar contacto" -#: ../../Zotlabs/Module/Contactedit.php:431 +#: ../../Zotlabs/Module/Contactedit.php:417 #: ../../Zotlabs/Module/Connedit.php:717 msgid "Their" msgstr "Su" -#: ../../Zotlabs/Module/Contactedit.php:432 +#: ../../Zotlabs/Module/Contactedit.php:418 #: ../../Zotlabs/Module/Connedit.php:718 msgid "My" msgstr "Mi" -#: ../../Zotlabs/Module/Contactedit.php:440 +#: ../../Zotlabs/Module/Contactedit.php:426 msgid "Roles" msgstr "Roles" -#: ../../Zotlabs/Module/Contactedit.php:441 +#: ../../Zotlabs/Module/Contactedit.php:427 msgid "Compare permissions" msgstr "Comparar permisos" -#: ../../Zotlabs/Module/Contactedit.php:442 +#: ../../Zotlabs/Module/Contactedit.php:428 msgid "Permission" msgstr "Permiso " -#: ../../Zotlabs/Module/Contactedit.php:445 +#: ../../Zotlabs/Module/Contactedit.php:431 #: ../../Zotlabs/Module/Connedit.php:572 msgid "Affinity" msgstr "Afinidad" -#: ../../Zotlabs/Module/Contactedit.php:446 +#: ../../Zotlabs/Module/Contactedit.php:432 msgid "Content filter" msgstr "Filtro de contenidos" -#: ../../Zotlabs/Module/Contactedit.php:456 +#: ../../Zotlabs/Module/Contactedit.php:442 msgid "Contact updated" msgstr "Contacto actualizado" -#: ../../Zotlabs/Module/Contactedit.php:456 +#: ../../Zotlabs/Module/Contactedit.php:442 msgid "Contact update failed" msgstr "Fallo en la actualización del contacto" -#: ../../Zotlabs/Module/Contactedit.php:462 +#: ../../Zotlabs/Module/Contactedit.php:448 #: ../../Zotlabs/Module/Connections.php:357 msgid "Approve connection" msgstr "Aprobar esta conexión" -#: ../../Zotlabs/Module/Contactedit.php:508 -#: ../../Zotlabs/Module/Contactedit.php:518 -msgid "Refresh succeeded" -msgstr "Actualización con éxito" - -#: ../../Zotlabs/Module/Contactedit.php:511 -msgid "Refresh failed - channel is currently unavailable" -msgstr "Error de actualización: el canal no está disponible en este momento" - -#: ../../Zotlabs/Module/Contactedit.php:530 +#: ../../Zotlabs/Module/Contactedit.php:520 msgid "Block status updated" msgstr "Estado del bloqueo actualizado" -#: ../../Zotlabs/Module/Contactedit.php:534 +#: ../../Zotlabs/Module/Contactedit.php:524 msgid "Block failed" msgstr "Bloqueo fallido" -#: ../../Zotlabs/Module/Contactedit.php:545 +#: ../../Zotlabs/Module/Contactedit.php:535 msgid "Ignore status updated" msgstr "Estado de ignorar actualizado" -#: ../../Zotlabs/Module/Contactedit.php:549 +#: ../../Zotlabs/Module/Contactedit.php:539 msgid "Ignore failed" msgstr "Ignorar falló" -#: ../../Zotlabs/Module/Contactedit.php:560 +#: ../../Zotlabs/Module/Contactedit.php:550 msgid "Archive status updated" msgstr "Estado de archivar actualizado" -#: ../../Zotlabs/Module/Contactedit.php:564 +#: ../../Zotlabs/Module/Contactedit.php:554 msgid "Archive failed" msgstr "Archivar falló" -#: ../../Zotlabs/Module/Contactedit.php:575 +#: ../../Zotlabs/Module/Contactedit.php:565 msgid "Hide status updated" msgstr "Estado de ocultación actualizado" -#: ../../Zotlabs/Module/Contactedit.php:579 +#: ../../Zotlabs/Module/Contactedit.php:569 msgid "Hide failed" msgstr "Ocultar falló" -#: ../../Zotlabs/Module/Contactedit.php:614 +#: ../../Zotlabs/Module/Contactedit.php:604 msgid "Contact removed" msgstr "Contacto eliminado" -#: ../../Zotlabs/Module/Contactedit.php:618 +#: ../../Zotlabs/Module/Contactedit.php:608 msgid "Delete failed" msgstr "Eliminar falló" -#: ../../Zotlabs/Module/Contactedit.php:628 -#: ../../Zotlabs/Module/Connedit.php:487 -msgid "Refresh Permissions" -msgstr "Recargar los permisos" - -#: ../../Zotlabs/Module/Contactedit.php:629 -#: ../../Zotlabs/Module/Connedit.php:490 -msgid "Fetch updated permissions" -msgstr "Obtener los permisos actualizados" - -#: ../../Zotlabs/Module/Contactedit.php:633 -#: ../../Zotlabs/Module/Connedit.php:494 -msgid "Refresh Photo" -msgstr "Actualizar la foto" +#: ../../Zotlabs/Module/Contactedit.php:619 +msgid "Refetch contact info" +msgstr "Recuperar información de contacto" -#: ../../Zotlabs/Module/Contactedit.php:634 -#: ../../Zotlabs/Module/Connedit.php:497 -msgid "Fetch updated photo" -msgstr "Obtener una foto actualizada" - -#: ../../Zotlabs/Module/Contactedit.php:639 +#: ../../Zotlabs/Module/Contactedit.php:623 #: ../../Zotlabs/Module/Connedit.php:508 #: ../../Zotlabs/Module/Admin/Accounts.php:322 msgid "Unblock" msgstr "Desbloquear" -#: ../../Zotlabs/Module/Contactedit.php:639 +#: ../../Zotlabs/Module/Contactedit.php:623 #: ../../Zotlabs/Module/Connedit.php:508 #: ../../Zotlabs/Module/Admin/Accounts.php:321 msgid "Block" msgstr "Bloquear" -#: ../../Zotlabs/Module/Contactedit.php:641 +#: ../../Zotlabs/Module/Contactedit.php:625 #: ../../Zotlabs/Module/Connedit.php:511 msgid "Block (or Unblock) all communications with this connection" msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión" -#: ../../Zotlabs/Module/Contactedit.php:642 +#: ../../Zotlabs/Module/Contactedit.php:626 #: ../../Zotlabs/Module/Connedit.php:512 msgid "This connection is blocked!" msgstr "¡Esta conexión está bloqueada!" -#: ../../Zotlabs/Module/Contactedit.php:646 +#: ../../Zotlabs/Module/Contactedit.php:630 #: ../../Zotlabs/Module/Connedit.php:516 msgid "Unignore" msgstr "Dejar de ignorar" -#: ../../Zotlabs/Module/Contactedit.php:646 +#: ../../Zotlabs/Module/Contactedit.php:630 #: ../../Zotlabs/Module/Connedit.php:516 #: ../../Zotlabs/Module/Connections.php:360 msgid "Ignore" msgstr "Ignorar" -#: ../../Zotlabs/Module/Contactedit.php:648 +#: ../../Zotlabs/Module/Contactedit.php:632 #: ../../Zotlabs/Module/Connedit.php:519 msgid "Ignore (or Unignore) all inbound communications from this connection" msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión" -#: ../../Zotlabs/Module/Contactedit.php:649 +#: ../../Zotlabs/Module/Contactedit.php:633 #: ../../Zotlabs/Module/Connedit.php:520 msgid "This connection is ignored!" msgstr "¡Esta conexión es ignorada!" -#: ../../Zotlabs/Module/Contactedit.php:653 +#: ../../Zotlabs/Module/Contactedit.php:637 #: ../../Zotlabs/Module/Connedit.php:524 msgid "Unarchive" msgstr "Desarchivar" -#: ../../Zotlabs/Module/Contactedit.php:653 +#: ../../Zotlabs/Module/Contactedit.php:637 #: ../../Zotlabs/Module/Connedit.php:524 msgid "Archive" msgstr "Archivar" -#: ../../Zotlabs/Module/Contactedit.php:655 +#: ../../Zotlabs/Module/Contactedit.php:639 #: ../../Zotlabs/Module/Connedit.php:527 msgid "" "Archive (or Unarchive) this connection - mark channel dead but keep content" msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos" -#: ../../Zotlabs/Module/Contactedit.php:656 +#: ../../Zotlabs/Module/Contactedit.php:640 #: ../../Zotlabs/Module/Connedit.php:528 msgid "This connection is archived!" msgstr "¡Esta conexión esta archivada!" -#: ../../Zotlabs/Module/Contactedit.php:660 +#: ../../Zotlabs/Module/Contactedit.php:644 #: ../../Zotlabs/Module/Connedit.php:532 msgid "Unhide" msgstr "Mostrar" -#: ../../Zotlabs/Module/Contactedit.php:660 +#: ../../Zotlabs/Module/Contactedit.php:644 #: ../../Zotlabs/Module/Connedit.php:532 msgid "Hide" msgstr "Ocultar" -#: ../../Zotlabs/Module/Contactedit.php:662 +#: ../../Zotlabs/Module/Contactedit.php:646 #: ../../Zotlabs/Module/Connedit.php:535 msgid "Hide or Unhide this connection from your other connections" msgstr "Ocultar o mostrar esta conexión a sus otras conexiones" -#: ../../Zotlabs/Module/Contactedit.php:663 +#: ../../Zotlabs/Module/Contactedit.php:647 #: ../../Zotlabs/Module/Connedit.php:536 msgid "This connection is hidden!" msgstr "¡Esta conexión está oculta!" -#: ../../Zotlabs/Module/Contactedit.php:669 +#: ../../Zotlabs/Module/Contactedit.php:653 #: ../../Zotlabs/Module/Connedit.php:543 msgid "Delete this connection" msgstr "Eliminar esta conexión" -#: ../../Zotlabs/Module/Mood.php:153 -msgid "Set your current mood and tell your friends" -msgstr "Describir su estado de ánimo para comunicárselo a sus amigos" - #: ../../Zotlabs/Module/Search.php:250 #, php-format msgid "Items tagged with: %s" @@ -10270,7 +9797,7 @@ msgid "This will help to review your registration" msgstr "Esto ayudará a revisar su registro" #: ../../Zotlabs/Module/Register.php:520 -#: ../../Zotlabs/Module/Admin/Site.php:416 +#: ../../Zotlabs/Module/Admin/Site.php:402 msgid "Registration" msgstr "Registro" @@ -10306,47 +9833,47 @@ msgstr "Aplicación instalada." msgid "Malformed app." msgstr "Aplicación con errores" -#: ../../Zotlabs/Module/Appman.php:198 +#: ../../Zotlabs/Module/Appman.php:208 msgid "Embed code" msgstr "Código incorporado" -#: ../../Zotlabs/Module/Appman.php:203 +#: ../../Zotlabs/Module/Appman.php:213 msgid "Edit App" msgstr "Modificar la aplicación" -#: ../../Zotlabs/Module/Appman.php:203 +#: ../../Zotlabs/Module/Appman.php:213 msgid "Create App" msgstr "Crear una aplicación" -#: ../../Zotlabs/Module/Appman.php:208 +#: ../../Zotlabs/Module/Appman.php:218 msgid "Name of app" msgstr "Nombre de la aplicación" -#: ../../Zotlabs/Module/Appman.php:209 +#: ../../Zotlabs/Module/Appman.php:219 msgid "Location (URL) of app" msgstr "Dirección (URL) de la aplicación" -#: ../../Zotlabs/Module/Appman.php:211 +#: ../../Zotlabs/Module/Appman.php:221 msgid "Photo icon URL" msgstr "Dirección del icono" -#: ../../Zotlabs/Module/Appman.php:211 +#: ../../Zotlabs/Module/Appman.php:221 msgid "80 x 80 pixels - optional" msgstr "80 x 80 pixels - opcional" -#: ../../Zotlabs/Module/Appman.php:212 +#: ../../Zotlabs/Module/Appman.php:222 msgid "Categories (optional, comma separated list)" msgstr "Temas (opcional, lista separada por comas)" -#: ../../Zotlabs/Module/Appman.php:213 +#: ../../Zotlabs/Module/Appman.php:223 msgid "Version ID" msgstr "Versión" -#: ../../Zotlabs/Module/Appman.php:214 +#: ../../Zotlabs/Module/Appman.php:224 msgid "Price of app" msgstr "Precio de la aplicación" -#: ../../Zotlabs/Module/Appman.php:215 +#: ../../Zotlabs/Module/Appman.php:225 msgid "Location (URL) to purchase app" msgstr "Dirección (URL) donde adquirir la aplicación" @@ -10354,36 +9881,36 @@ msgstr "Dirección (URL) donde adquirir la aplicación" msgid "item" msgstr "elemento" -#: ../../Zotlabs/Module/Item.php:478 ../../Zotlabs/Module/Pin.php:36 +#: ../../Zotlabs/Module/Item.php:477 ../../Zotlabs/Module/Pin.php:36 msgid "Unable to locate original post." msgstr "No ha sido posible encontrar la entrada original." -#: ../../Zotlabs/Module/Item.php:764 +#: ../../Zotlabs/Module/Item.php:763 msgid "Empty post discarded." msgstr "La entrada vacía ha sido desechada." -#: ../../Zotlabs/Module/Item.php:1179 +#: ../../Zotlabs/Module/Item.php:1205 msgid "Duplicate post suppressed." msgstr "Se ha suprimido la entrada duplicada." -#: ../../Zotlabs/Module/Item.php:1329 +#: ../../Zotlabs/Module/Item.php:1343 msgid "System error. Post not saved." msgstr "Error del sistema. La entrada no se ha podido salvar." -#: ../../Zotlabs/Module/Item.php:1363 +#: ../../Zotlabs/Module/Item.php:1377 msgid "Your comment is awaiting approval." msgstr "Su comentario está pendiente de aprobación." -#: ../../Zotlabs/Module/Item.php:1500 +#: ../../Zotlabs/Module/Item.php:1514 msgid "Unable to obtain post information from database." msgstr "No ha sido posible obtener información de la entrada en la base de datos." -#: ../../Zotlabs/Module/Item.php:1507 +#: ../../Zotlabs/Module/Item.php:1521 #, php-format msgid "You have reached your limit of %1$.0f top level posts." msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal." -#: ../../Zotlabs/Module/Item.php:1514 +#: ../../Zotlabs/Module/Item.php:1528 #, php-format msgid "You have reached your limit of %1$.0f webpages." msgstr "Ha alcanzado su límite de %1$.0f páginas web." @@ -10431,6 +9958,22 @@ msgstr "La conexión ha sido eliminada." msgid "View %s's profile" msgstr "Ver el perfil de %s" +#: ../../Zotlabs/Module/Connedit.php:487 +msgid "Refresh Permissions" +msgstr "Recargar los permisos" + +#: ../../Zotlabs/Module/Connedit.php:490 +msgid "Fetch updated permissions" +msgstr "Obtener los permisos actualizados" + +#: ../../Zotlabs/Module/Connedit.php:494 +msgid "Refresh Photo" +msgstr "Actualizar la foto" + +#: ../../Zotlabs/Module/Connedit.php:497 +msgid "Fetch updated photo" +msgstr "Obtener una foto actualizada" + #: ../../Zotlabs/Module/Connedit.php:504 msgid "View recent posts and comments" msgstr "Ver publicaciones y comentarios recientes" @@ -10557,7 +10100,7 @@ msgstr "Sitio web" #: ../../Zotlabs/Module/Connedit.php:739 ../../Zotlabs/Module/Locs.php:122 #: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Profiles.php:472 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Profiles.php:468 ../../Zotlabs/Module/Cdav.php:1375 msgid "Address" msgstr "Dirección" @@ -10597,7 +10140,7 @@ msgstr "Provincia, región o estado" msgid "ZIP Code" msgstr "Código postal" -#: ../../Zotlabs/Module/Connedit.php:757 ../../Zotlabs/Module/Profiles.php:773 +#: ../../Zotlabs/Module/Connedit.php:757 ../../Zotlabs/Module/Profiles.php:769 #: ../../Zotlabs/Module/Cdav.php:1393 msgid "Country" msgstr "País" @@ -10643,7 +10186,7 @@ msgid "" "hours." msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo." -#: ../../Zotlabs/Module/Follow.php:92 +#: ../../Zotlabs/Module/Follow.php:75 msgid "Connection added." msgstr "Se ha incorporado una conexión." @@ -10739,35 +10282,35 @@ msgstr "De más antiguo a más nuevo" msgid "No entries (some entries may be hidden)." msgstr "Sin entradas (algunas entradas pueden estar ocultas)." -#: ../../Zotlabs/Module/Profile_photo.php:544 +#: ../../Zotlabs/Module/Profile_photo.php:543 msgid "" "This profile photo will be visible to anybody on the internet and may be " "distributed to other websites." msgstr "Esta foto de perfil será visible para cualquier persona en Internet y podrá ser distribuida a otros sitios web." -#: ../../Zotlabs/Module/Profile_photo.php:544 +#: ../../Zotlabs/Module/Profile_photo.php:543 msgid "" "This profile photo will be visible only to channels with permission to view " "this profile." msgstr "Esta foto de perfil sólo será visible para los canales con permiso para ver este perfil." -#: ../../Zotlabs/Module/Profile_photo.php:546 +#: ../../Zotlabs/Module/Profile_photo.php:545 msgid "Use Photo for Profile" msgstr "Usar la fotografía para el perfil" -#: ../../Zotlabs/Module/Profile_photo.php:546 +#: ../../Zotlabs/Module/Profile_photo.php:545 msgid "Change Profile Photo" msgstr "Cambiar la foto del perfil" -#: ../../Zotlabs/Module/Profile_photo.php:548 +#: ../../Zotlabs/Module/Profile_photo.php:547 msgid "Reset to default" msgstr "Restablecer los valores por defecto" -#: ../../Zotlabs/Module/Profile_photo.php:562 +#: ../../Zotlabs/Module/Profile_photo.php:561 msgid "Select existing" msgstr "Seleccione lo que hay" -#: ../../Zotlabs/Module/Profile_photo.php:584 +#: ../../Zotlabs/Module/Profile_photo.php:583 msgid "Done editing" msgstr "Edición completada" @@ -11136,7 +10679,7 @@ msgstr "Caducado/a" #: ../../Zotlabs/Module/Admin/Addons.php:443 #: ../../Zotlabs/Module/Admin/Channels.php:145 #: ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Site.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:397 #: ../../Zotlabs/Module/Admin/Security.php:105 #: ../../Zotlabs/Module/Admin.php:140 msgid "Administration" @@ -11710,512 +11253,512 @@ msgstr "Errores" msgid "Site settings updated." msgstr "Ajustes del sitio actualizados." -#: ../../Zotlabs/Module/Admin/Site.php:256 +#: ../../Zotlabs/Module/Admin/Site.php:242 #: ../../Zotlabs/Module/Settings/Display.php:116 #, php-format msgid "%s - (Incompatible)" msgstr "%s - (Incompatible)" -#: ../../Zotlabs/Module/Admin/Site.php:263 +#: ../../Zotlabs/Module/Admin/Site.php:249 msgid "mobile" msgstr "móvil" -#: ../../Zotlabs/Module/Admin/Site.php:265 +#: ../../Zotlabs/Module/Admin/Site.php:251 msgid "experimental" msgstr "experimental" -#: ../../Zotlabs/Module/Admin/Site.php:267 +#: ../../Zotlabs/Module/Admin/Site.php:253 msgid "unsupported" msgstr "no soportado" -#: ../../Zotlabs/Module/Admin/Site.php:320 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "Yes - with approval" msgstr "Sí - con aprobación" -#: ../../Zotlabs/Module/Admin/Site.php:328 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "My site is not a public server" msgstr "Mi sitio no es un servidor público" -#: ../../Zotlabs/Module/Admin/Site.php:329 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "My site has paid access only" msgstr "Mi sitio es un servicio de pago" -#: ../../Zotlabs/Module/Admin/Site.php:330 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "My site has free access only" msgstr "Mi sitio es un servicio gratuito" -#: ../../Zotlabs/Module/Admin/Site.php:331 +#: ../../Zotlabs/Module/Admin/Site.php:317 msgid "My site offers free accounts with optional paid upgrades" msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:335 msgid "Default permission role for new accounts" msgstr "Permisos de rol por defecto para las nuevas cuentas" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:335 msgid "" "This role will be used for the first channel created after registration." msgstr "Este rol se utilizará para el primer canal creado después del registro." -#: ../../Zotlabs/Module/Admin/Site.php:356 ../../Zotlabs/Module/Invite.php:410 +#: ../../Zotlabs/Module/Admin/Site.php:342 ../../Zotlabs/Module/Invite.php:410 msgid "Minute(s)" msgstr "Minuto(s)" -#: ../../Zotlabs/Module/Admin/Site.php:357 ../../Zotlabs/Module/Invite.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:343 ../../Zotlabs/Module/Invite.php:411 msgid "Hour(s)" msgstr "Hora(s)" -#: ../../Zotlabs/Module/Admin/Site.php:358 ../../Zotlabs/Module/Invite.php:412 +#: ../../Zotlabs/Module/Admin/Site.php:344 ../../Zotlabs/Module/Invite.php:412 msgid "Day(s)" msgstr "Día(s)" -#: ../../Zotlabs/Module/Admin/Site.php:359 +#: ../../Zotlabs/Module/Admin/Site.php:345 msgid "Week(s)" msgstr "Semana(s)" -#: ../../Zotlabs/Module/Admin/Site.php:360 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "Month(s)" msgstr "Mes(Meses)" -#: ../../Zotlabs/Module/Admin/Site.php:361 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "Year(s)" msgstr "Año(s)" -#: ../../Zotlabs/Module/Admin/Site.php:369 +#: ../../Zotlabs/Module/Admin/Site.php:355 msgid "Register verification delay" msgstr "Retraso en la verificación del registro" -#: ../../Zotlabs/Module/Admin/Site.php:372 +#: ../../Zotlabs/Module/Admin/Site.php:358 msgid "Time to wait before a registration can be verified" msgstr "Tiempo de espera para verificar un registro " -#: ../../Zotlabs/Module/Admin/Site.php:375 -#: ../../Zotlabs/Module/Admin/Site.php:397 ../../Zotlabs/Module/Invite.php:421 +#: ../../Zotlabs/Module/Admin/Site.php:361 +#: ../../Zotlabs/Module/Admin/Site.php:383 ../../Zotlabs/Module/Invite.php:421 msgid "duration up from now" msgstr "duración a partir de ahora " -#: ../../Zotlabs/Module/Admin/Site.php:391 +#: ../../Zotlabs/Module/Admin/Site.php:377 msgid "Register verification expiration time" msgstr "Tiempo de caducidad de la verificación del registro " -#: ../../Zotlabs/Module/Admin/Site.php:394 +#: ../../Zotlabs/Module/Admin/Site.php:380 msgid "Time before an unverified registration will expire" msgstr "Tiempo antes de que caduque un registro no verificado " -#: ../../Zotlabs/Module/Admin/Site.php:417 +#: ../../Zotlabs/Module/Admin/Site.php:403 msgid "File upload" msgstr "Subir fichero" -#: ../../Zotlabs/Module/Admin/Site.php:418 +#: ../../Zotlabs/Module/Admin/Site.php:404 msgid "Policies" msgstr "Políticas" -#: ../../Zotlabs/Module/Admin/Site.php:425 +#: ../../Zotlabs/Module/Admin/Site.php:411 msgid "Banner/Logo" msgstr "Banner/Logo" -#: ../../Zotlabs/Module/Admin/Site.php:425 +#: ../../Zotlabs/Module/Admin/Site.php:411 msgid "Unfiltered HTML/CSS/JS is allowed" msgstr "Se permite HTML/CSS/JS sin filtrar" -#: ../../Zotlabs/Module/Admin/Site.php:426 +#: ../../Zotlabs/Module/Admin/Site.php:412 msgid "Administrator Information" msgstr "Información del Administrador" -#: ../../Zotlabs/Module/Admin/Site.php:426 +#: ../../Zotlabs/Module/Admin/Site.php:412 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../Zotlabs/Module/Admin/Site.php:427 +#: ../../Zotlabs/Module/Admin/Site.php:413 #: ../../Zotlabs/Module/Siteinfo.php:24 msgid "Site Information" msgstr "Información sobre el sitio" -#: ../../Zotlabs/Module/Admin/Site.php:427 +#: ../../Zotlabs/Module/Admin/Site.php:413 msgid "" "Publicly visible description of this site. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../Zotlabs/Module/Admin/Site.php:429 +#: ../../Zotlabs/Module/Admin/Site.php:414 msgid "System theme" msgstr "Tema gráfico del sistema" -#: ../../Zotlabs/Module/Admin/Site.php:429 +#: ../../Zotlabs/Module/Admin/Site.php:414 msgid "" "Default system theme - may be over-ridden by user profiles - change theme settings" msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - modificar los ajustes del tema" -#: ../../Zotlabs/Module/Admin/Site.php:432 +#: ../../Zotlabs/Module/Admin/Site.php:417 msgid "Allow Feeds as Connections" msgstr "Permitir contenidos RSS como conexiones" -#: ../../Zotlabs/Module/Admin/Site.php:432 +#: ../../Zotlabs/Module/Admin/Site.php:417 msgid "(Heavy system resource usage)" msgstr "(Uso intenso de los recursos del sistema)" -#: ../../Zotlabs/Module/Admin/Site.php:433 +#: ../../Zotlabs/Module/Admin/Site.php:418 msgid "Maximum image size" msgstr "Tamaño máximo de la imagen" -#: ../../Zotlabs/Module/Admin/Site.php:433 +#: ../../Zotlabs/Module/Admin/Site.php:418 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites." -#: ../../Zotlabs/Module/Admin/Site.php:434 +#: ../../Zotlabs/Module/Admin/Site.php:419 msgid "Minimum age" msgstr "Edad mínima" -#: ../../Zotlabs/Module/Admin/Site.php:434 +#: ../../Zotlabs/Module/Admin/Site.php:419 msgid "Minimum age (in years) for who may register on this site." msgstr "Edad mínima (en años) para poder registrarse en este sitio." -#: ../../Zotlabs/Module/Admin/Site.php:435 +#: ../../Zotlabs/Module/Admin/Site.php:420 msgid "Which best describes the types of account offered by this hub?" msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?" -#: ../../Zotlabs/Module/Admin/Site.php:435 +#: ../../Zotlabs/Module/Admin/Site.php:420 msgid "This is displayed on the public server site list." msgstr "Esto se muestra en la lista de sitios de servidores públicos." -#: ../../Zotlabs/Module/Admin/Site.php:441 +#: ../../Zotlabs/Module/Admin/Site.php:426 msgid "Register text" msgstr "Texto del registro" -#: ../../Zotlabs/Module/Admin/Site.php:443 +#: ../../Zotlabs/Module/Admin/Site.php:428 msgid "This text will be displayed prominently at the registration page" msgstr "Este texto se mostrará de forma destacada en la página de registro " -#: ../../Zotlabs/Module/Admin/Site.php:447 +#: ../../Zotlabs/Module/Admin/Site.php:432 msgid "Does this site allow new member registration?" msgstr "¿Debe este sitio permitir el registro de nuevos miembros?" -#: ../../Zotlabs/Module/Admin/Site.php:454 +#: ../../Zotlabs/Module/Admin/Site.php:439 msgid "Configure the registration open days/hours" msgstr "Configurar los días/horas de apertura del registro" -#: ../../Zotlabs/Module/Admin/Site.php:456 +#: ../../Zotlabs/Module/Admin/Site.php:441 msgid "Empty or '-:-' value will keep registration open 24/7 (default)" msgstr "El valor vacío o \"-:-\" mantendrá el registro abierto 24/7 (por defecto)" -#: ../../Zotlabs/Module/Admin/Site.php:457 +#: ../../Zotlabs/Module/Admin/Site.php:442 msgid "" "Weekdays and hours must be separated by colon ':', From-To ranges with a " "dash `-` example: 1:800-1200" msgstr "Los días de la semana y las horas deben separarse con dos puntos ':', los rangos Desde-Hasta con un guión `-` ejemplo: 1:800-1200" -#: ../../Zotlabs/Module/Admin/Site.php:458 +#: ../../Zotlabs/Module/Admin/Site.php:443 msgid "" "Weekday:Hour pairs must be separated by space ' ' example: 1:900-1700 " "2:900-1700" msgstr "Los pares día de la semana:hora deben estar separados por un espacio ' ' ejemplo: 1:900-1700 2:900-1700" -#: ../../Zotlabs/Module/Admin/Site.php:459 +#: ../../Zotlabs/Module/Admin/Site.php:444 msgid "" "From-To ranges must be separated by comma ',' example: 1:800-1200,1300-1700 " "or 1-2,4-5:900-1700" msgstr "Los rangos desde-hasta deben estar separados por comas ',' ejemplo: 1:800-1200,1300-1700 o 1-2,4-5:900-1700" -#: ../../Zotlabs/Module/Admin/Site.php:460 +#: ../../Zotlabs/Module/Admin/Site.php:445 msgid "Advanced examples:" msgstr "Ejemplos avanzados: " -#: ../../Zotlabs/Module/Admin/Site.php:460 +#: ../../Zotlabs/Module/Admin/Site.php:445 #: ../../Zotlabs/Module/Settings/Channel.php:183 msgid "or" msgstr "o" -#: ../../Zotlabs/Module/Admin/Site.php:461 +#: ../../Zotlabs/Module/Admin/Site.php:446 msgid "Check your configuration" msgstr "Compruebe su configuración" -#: ../../Zotlabs/Module/Admin/Site.php:465 +#: ../../Zotlabs/Module/Admin/Site.php:450 msgid "Max account registrations per day" msgstr "Máximo de registros de cuentas por día " -#: ../../Zotlabs/Module/Admin/Site.php:467 +#: ../../Zotlabs/Module/Admin/Site.php:452 msgid "Unlimited if zero or no value - default 50" msgstr "Ilimitado si es cero o sin valor - por defecto 50" -#: ../../Zotlabs/Module/Admin/Site.php:471 +#: ../../Zotlabs/Module/Admin/Site.php:456 msgid "Max account registrations from same IP" msgstr "Máximo de registros de cuentas desde la misma IP" -#: ../../Zotlabs/Module/Admin/Site.php:473 +#: ../../Zotlabs/Module/Admin/Site.php:458 msgid "Unlimited if zero or no value - default 3" msgstr "Ilimitado si es cero o sin valor - por defecto 3" -#: ../../Zotlabs/Module/Admin/Site.php:479 +#: ../../Zotlabs/Module/Admin/Site.php:464 msgid "Auto channel create" msgstr "Creación automática de canales" -#: ../../Zotlabs/Module/Admin/Site.php:481 +#: ../../Zotlabs/Module/Admin/Site.php:466 msgid "" "If disabled the channel will be created in a separate step during the " "registration process" msgstr "Si se desactiva, el canal se creará en un paso separado durante el proceso de registro" -#: ../../Zotlabs/Module/Admin/Site.php:485 +#: ../../Zotlabs/Module/Admin/Site.php:470 msgid "Require invite code" msgstr "Solicitar código de invitación" -#: ../../Zotlabs/Module/Admin/Site.php:490 +#: ../../Zotlabs/Module/Admin/Site.php:475 msgid "Allow invite code" msgstr "Permitir código de invitación" -#: ../../Zotlabs/Module/Admin/Site.php:495 +#: ../../Zotlabs/Module/Admin/Site.php:480 msgid "Require email address" msgstr "Solicitar dirección de correo electrónico" -#: ../../Zotlabs/Module/Admin/Site.php:497 +#: ../../Zotlabs/Module/Admin/Site.php:482 msgid "The provided email address will be verified (recommended)" msgstr "La dirección de correo electrónico proporcionada será verificada (recomendado)" -#: ../../Zotlabs/Module/Admin/Site.php:501 +#: ../../Zotlabs/Module/Admin/Site.php:486 msgid "Abandon account after x days" msgstr "Abandonar la cuenta después de x días" -#: ../../Zotlabs/Module/Admin/Site.php:503 +#: ../../Zotlabs/Module/Admin/Site.php:488 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo." -#: ../../Zotlabs/Module/Admin/Site.php:508 +#: ../../Zotlabs/Module/Admin/Site.php:493 msgid "Site homepage to show visitors (default: login box)" msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)" -#: ../../Zotlabs/Module/Admin/Site.php:508 +#: ../../Zotlabs/Module/Admin/Site.php:493 msgid "" "example: 'pubstream' to show public stream, 'page/sys/home' to show a system" " webpage called 'home' or 'include:home.html' to include a file." msgstr "ejemplo: 'pubstream' para mostrar el stream público, 'page/sys/home' para mostrar una página web del sistema llamada 'home' o 'include:home.html' para incluir un archivo." -#: ../../Zotlabs/Module/Admin/Site.php:509 +#: ../../Zotlabs/Module/Admin/Site.php:494 msgid "Preserve site homepage URL" msgstr "Preservar la dirección de la página personal" -#: ../../Zotlabs/Module/Admin/Site.php:509 +#: ../../Zotlabs/Module/Admin/Site.php:494 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla." -#: ../../Zotlabs/Module/Admin/Site.php:510 +#: ../../Zotlabs/Module/Admin/Site.php:495 msgid "Allowed friend domains" msgstr "Dominios amigos permitidos" -#: ../../Zotlabs/Module/Admin/Site.php:510 +#: ../../Zotlabs/Module/Admin/Site.php:495 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio." -#: ../../Zotlabs/Module/Admin/Site.php:511 +#: ../../Zotlabs/Module/Admin/Site.php:496 msgid "Force publish" msgstr "Forzar la publicación" -#: ../../Zotlabs/Module/Admin/Site.php:511 +#: ../../Zotlabs/Module/Admin/Site.php:496 msgid "" "Check to force all profiles on this site to be listed in the site directory" msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio." -#: ../../Zotlabs/Module/Admin/Site.php:512 +#: ../../Zotlabs/Module/Admin/Site.php:497 msgid "Enable public stream" msgstr "Habilitar el \"stream\" público" -#: ../../Zotlabs/Module/Admin/Site.php:512 +#: ../../Zotlabs/Module/Admin/Site.php:497 msgid "Enable the public stream. Warning: this content is unmoderated" msgstr "Habilitar el \"stream\" público. Advertencia: este contenido no está moderado" -#: ../../Zotlabs/Module/Admin/Site.php:513 +#: ../../Zotlabs/Module/Admin/Site.php:498 msgid "Site only public stream" msgstr "Solo contenido público en este sitio" -#: ../../Zotlabs/Module/Admin/Site.php:513 +#: ../../Zotlabs/Module/Admin/Site.php:498 msgid "Restrict the public stream to content originating at this site" msgstr "Restringir el \"stream\" público a los contenidos originados en este sitio" -#: ../../Zotlabs/Module/Admin/Site.php:514 +#: ../../Zotlabs/Module/Admin/Site.php:499 msgid "Allow anybody on the internet to access the public streams" msgstr "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos" -#: ../../Zotlabs/Module/Admin/Site.php:514 +#: ../../Zotlabs/Module/Admin/Site.php:499 msgid "Disable to require authentication before viewing" msgstr "Desactivar para requerir autenticación antes de ver" -#: ../../Zotlabs/Module/Admin/Site.php:515 +#: ../../Zotlabs/Module/Admin/Site.php:500 msgid "Only import Public stream posts with this text" msgstr "Importar solo entradas del stream púlbico con este texto " -#: ../../Zotlabs/Module/Admin/Site.php:516 +#: ../../Zotlabs/Module/Admin/Site.php:501 msgid "Do not import Public stream posts with this text" msgstr "No importar entradas del stream público con este texto " -#: ../../Zotlabs/Module/Admin/Site.php:519 +#: ../../Zotlabs/Module/Admin/Site.php:504 msgid "Login on Homepage" msgstr "Iniciar sesión en la página personal" -#: ../../Zotlabs/Module/Admin/Site.php:519 +#: ../../Zotlabs/Module/Admin/Site.php:504 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido." -#: ../../Zotlabs/Module/Admin/Site.php:520 +#: ../../Zotlabs/Module/Admin/Site.php:505 msgid "Enable context help" msgstr "Habilitar la ayuda contextual" -#: ../../Zotlabs/Module/Admin/Site.php:520 +#: ../../Zotlabs/Module/Admin/Site.php:505 msgid "" "Display contextual help for the current page when the help button is " "pressed." msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda." -#: ../../Zotlabs/Module/Admin/Site.php:522 +#: ../../Zotlabs/Module/Admin/Site.php:507 msgid "Reply-to email address for system generated email." msgstr "Dirección de respuesta para el correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:523 +#: ../../Zotlabs/Module/Admin/Site.php:508 msgid "Sender (From) email address for system generated email." msgstr "Dirección del remitente (From) para el correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:524 +#: ../../Zotlabs/Module/Admin/Site.php:509 msgid "Name of email sender for system generated email." msgstr "Nombre del remitente del correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:526 +#: ../../Zotlabs/Module/Admin/Site.php:511 msgid "Directory Server URL" msgstr "URL del servidor de directorio" -#: ../../Zotlabs/Module/Admin/Site.php:526 +#: ../../Zotlabs/Module/Admin/Site.php:511 msgid "Default directory server" msgstr "Servidor de directorio predeterminado" -#: ../../Zotlabs/Module/Admin/Site.php:528 +#: ../../Zotlabs/Module/Admin/Site.php:513 msgid "Enable SSE Notifications" msgstr "Habilitar notificaciones SSE" -#: ../../Zotlabs/Module/Admin/Site.php:528 +#: ../../Zotlabs/Module/Admin/Site.php:513 msgid "" "If disabled, traditional polling will be used. Warning: this setting might " "not be suited for shared hosting" msgstr "Si está desactivado, se usará el sistema de votación tradicional. Advertencia: esta configuración podría no ser adecuada para el alojamiento compartido" -#: ../../Zotlabs/Module/Admin/Site.php:530 +#: ../../Zotlabs/Module/Admin/Site.php:515 msgid "Proxy user" msgstr "Usuario del proxy" -#: ../../Zotlabs/Module/Admin/Site.php:531 +#: ../../Zotlabs/Module/Admin/Site.php:516 msgid "Proxy URL" msgstr "Dirección del proxy" -#: ../../Zotlabs/Module/Admin/Site.php:532 +#: ../../Zotlabs/Module/Admin/Site.php:517 msgid "Network timeout" msgstr "Tiempo de espera de la red" -#: ../../Zotlabs/Module/Admin/Site.php:532 +#: ../../Zotlabs/Module/Admin/Site.php:517 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)" -#: ../../Zotlabs/Module/Admin/Site.php:533 +#: ../../Zotlabs/Module/Admin/Site.php:518 msgid "Delivery interval" msgstr "Intervalo de entrega" -#: ../../Zotlabs/Module/Admin/Site.php:533 +#: ../../Zotlabs/Module/Admin/Site.php:518 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados." -#: ../../Zotlabs/Module/Admin/Site.php:534 +#: ../../Zotlabs/Module/Admin/Site.php:519 msgid "Deliveries per process" msgstr "Intentos de envío por proceso" -#: ../../Zotlabs/Module/Admin/Site.php:534 +#: ../../Zotlabs/Module/Admin/Site.php:519 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust" " if necessary to tune system performance. Recommend: 1-5." msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5." -#: ../../Zotlabs/Module/Admin/Site.php:536 +#: ../../Zotlabs/Module/Admin/Site.php:521 msgid "Poll interval" msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos" -#: ../../Zotlabs/Module/Admin/Site.php:536 +#: ../../Zotlabs/Module/Admin/Site.php:521 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega." -#: ../../Zotlabs/Module/Admin/Site.php:537 +#: ../../Zotlabs/Module/Admin/Site.php:522 msgid "Path to ImageMagick convert program" msgstr "Ruta al programa de conversión de ImageMagick" -#: ../../Zotlabs/Module/Admin/Site.php:537 +#: ../../Zotlabs/Module/Admin/Site.php:522 msgid "" "If set, use this program to generate photo thumbnails for huge images ( > " "4000 pixels in either dimension), otherwise memory exhaustion may occur. " "Example: /usr/bin/convert" msgstr "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert" -#: ../../Zotlabs/Module/Admin/Site.php:538 +#: ../../Zotlabs/Module/Admin/Site.php:523 msgid "Maximum Load Average" msgstr "Carga media máxima" -#: ../../Zotlabs/Module/Admin/Site.php:538 +#: ../../Zotlabs/Module/Admin/Site.php:523 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50." -#: ../../Zotlabs/Module/Admin/Site.php:539 +#: ../../Zotlabs/Module/Admin/Site.php:524 msgid "Expiration period in days for imported (grid/network) content" msgstr "Caducidad del contenido importado de otros sitios (en días)" -#: ../../Zotlabs/Module/Admin/Site.php:539 +#: ../../Zotlabs/Module/Admin/Site.php:524 msgid "0 for no expiration of imported content" msgstr "0 para que no caduque el contenido importado" -#: ../../Zotlabs/Module/Admin/Site.php:540 +#: ../../Zotlabs/Module/Admin/Site.php:525 msgid "" "Do not expire any posts which have comments less than this many days ago" msgstr "No caduque ningún mensaje que tenga menos comentarios que este hace muchos días" -#: ../../Zotlabs/Module/Admin/Site.php:541 +#: ../../Zotlabs/Module/Admin/Site.php:526 msgid "" "Public servers: Optional landing (marketing) webpage for new registrants" msgstr "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros" -#: ../../Zotlabs/Module/Admin/Site.php:541 +#: ../../Zotlabs/Module/Admin/Site.php:526 #, php-format msgid "Create this page first. Default is %s/register" msgstr "Crear esta página primero. Por defecto es %s/register" -#: ../../Zotlabs/Module/Admin/Site.php:542 +#: ../../Zotlabs/Module/Admin/Site.php:527 msgid "Page to display after creating a new channel" msgstr "Página a mostrar después de la creación de un nuevo canal" -#: ../../Zotlabs/Module/Admin/Site.php:542 +#: ../../Zotlabs/Module/Admin/Site.php:527 msgid "Default: profiles" msgstr "Perfiles predeterminados" -#: ../../Zotlabs/Module/Admin/Site.php:543 +#: ../../Zotlabs/Module/Admin/Site.php:528 msgid "Optional: site location" msgstr "Opcional: ubicación del sitio" -#: ../../Zotlabs/Module/Admin/Site.php:543 +#: ../../Zotlabs/Module/Admin/Site.php:528 msgid "Region or country" msgstr "Región o país" -#: ../../Zotlabs/Module/Admin/Site.php:628 -#: ../../Zotlabs/Module/Admin/Site.php:629 +#: ../../Zotlabs/Module/Admin/Site.php:613 +#: ../../Zotlabs/Module/Admin/Site.php:614 msgid "Invalid 24h time value (hhmm/hmm)" msgstr "Valor de tiempo de 24h no válido (hhmm/hmm)" @@ -12410,75 +11953,55 @@ msgstr "Reenvío del email de verificación" msgid "Unable to resend email verification message." msgstr "No se puede reenviar el mensaje de verificación por correo electrónico." -#: ../../Zotlabs/Module/Dreport.php:38 +#: ../../Zotlabs/Module/Dreport.php:37 msgid "Invalid message" msgstr "Mensaje no válido" -#: ../../Zotlabs/Module/Dreport.php:68 +#: ../../Zotlabs/Module/Dreport.php:67 msgid "no results" msgstr "sin resultados" -#: ../../Zotlabs/Module/Dreport.php:82 +#: ../../Zotlabs/Module/Dreport.php:81 msgid "channel sync processed" msgstr "se ha realizado la sincronización del canal" -#: ../../Zotlabs/Module/Dreport.php:86 +#: ../../Zotlabs/Module/Dreport.php:85 msgid "queued" msgstr "encolado" -#: ../../Zotlabs/Module/Dreport.php:90 +#: ../../Zotlabs/Module/Dreport.php:89 msgid "posted" msgstr "enviado" -#: ../../Zotlabs/Module/Dreport.php:94 +#: ../../Zotlabs/Module/Dreport.php:93 msgid "accepted for delivery" msgstr "aceptado para el envío" -#: ../../Zotlabs/Module/Dreport.php:98 +#: ../../Zotlabs/Module/Dreport.php:97 msgid "updated" msgstr "actualizado" -#: ../../Zotlabs/Module/Dreport.php:102 +#: ../../Zotlabs/Module/Dreport.php:101 msgid "update ignored" msgstr "actualización ignorada" -#: ../../Zotlabs/Module/Dreport.php:105 +#: ../../Zotlabs/Module/Dreport.php:104 msgid "permission denied" msgstr "permiso denegado" -#: ../../Zotlabs/Module/Dreport.php:109 +#: ../../Zotlabs/Module/Dreport.php:108 msgid "recipient not found" msgstr "destinatario no encontrado" -#: ../../Zotlabs/Module/Dreport.php:129 +#: ../../Zotlabs/Module/Dreport.php:128 #, php-format msgid "Delivery report for %1$s" msgstr "Informe de entrega para %1$s" -#: ../../Zotlabs/Module/Dreport.php:134 +#: ../../Zotlabs/Module/Dreport.php:133 msgid "Redeliver" msgstr "Volver a enviar" -#: ../../Zotlabs/Module/Poke.php:182 -msgid "Poke somebody" -msgstr "Dar un toque a alguien" - -#: ../../Zotlabs/Module/Poke.php:186 -msgid "Poke or ping somebody" -msgstr "Dar un toque o hacer ping a alguien" - -#: ../../Zotlabs/Module/Poke.php:193 -msgid "Recipient" -msgstr "Destinatario" - -#: ../../Zotlabs/Module/Poke.php:194 -msgid "Choose action" -msgstr "Elegir una acción" - -#: ../../Zotlabs/Module/Poke.php:197 ../../Zotlabs/Module/Poke.php:198 -msgid "Make this post private" -msgstr "Convertir en privado este envío" - #: ../../Zotlabs/Module/Chatsvc.php:131 msgid "Away" msgstr "Ausente" @@ -12487,12 +12010,12 @@ msgstr "Ausente" msgid "Online" msgstr "Conectado/a" -#: ../../Zotlabs/Module/Subthread.php:128 +#: ../../Zotlabs/Module/Subthread.php:125 #, php-format msgid "%1$s is following %2$s's %3$s" msgstr "%1$s está siguiendo %3$s de %2$s" -#: ../../Zotlabs/Module/Subthread.php:130 +#: ../../Zotlabs/Module/Subthread.php:127 #, php-format msgid "%1$s stopped following %2$s's %3$s" msgstr "%1$s ha dejado de seguir %3$s de %2$s" @@ -12605,7 +12128,7 @@ msgstr "Registros pendientes" msgid "Registered channels" msgstr "Canales registrados" -#: ../../Zotlabs/Module/Admin.php:147 +#: ../../Zotlabs/Module/Admin.php:147 ../../Zotlabs/Module/Siteinfo.php:41 msgid "Active addons" msgstr "Addons acivos" @@ -12947,6 +12470,10 @@ msgstr "Página principal del proyecto" msgid "Developer homepage" msgstr "Página principal del desarrollador" +#: ../../Zotlabs/Module/Siteinfo.php:42 +msgid "Blocked sites" +msgstr "Sitios bloqueados" + #: ../../Zotlabs/Module/Attach.php:68 msgid "Item not available." msgstr "Elemento no disponible" @@ -13020,57 +12547,46 @@ msgid "" "href=\"%1$s\">%2$s on any site containing your channel." msgstr "Esta exportación puede ser importada o restaurada visitando %2$s cualquier sitio que contenga su canal." -#: ../../Zotlabs/Module/Like.php:112 +#: ../../Zotlabs/Module/Like.php:111 msgid "Like/Dislike" msgstr "Me gusta/No me gusta" -#: ../../Zotlabs/Module/Like.php:118 +#: ../../Zotlabs/Module/Like.php:117 msgid "This action is restricted to members." msgstr "Esta acción está restringida solo para miembros." -#: ../../Zotlabs/Module/Like.php:119 +#: ../../Zotlabs/Module/Like.php:118 msgid "" "Please login with your $Projectname ID or register as a new $Projectname member to continue." msgstr "Por favor, identifíquese con su $Projectname ID o rregístrese como un nuevo $Projectname member para continuar." -#: ../../Zotlabs/Module/Like.php:172 ../../Zotlabs/Module/Like.php:198 -#: ../../Zotlabs/Module/Like.php:236 +#: ../../Zotlabs/Module/Like.php:171 ../../Zotlabs/Module/Like.php:197 +#: ../../Zotlabs/Module/Like.php:230 msgid "Invalid request." msgstr "Solicitud incorrecta." -#: ../../Zotlabs/Module/Like.php:213 +#: ../../Zotlabs/Module/Like.php:212 msgid "thing" msgstr "elemento" -#: ../../Zotlabs/Module/Like.php:259 +#: ../../Zotlabs/Module/Like.php:253 msgid "Channel unavailable." msgstr "Canal no disponible." -#: ../../Zotlabs/Module/Like.php:295 +#: ../../Zotlabs/Module/Like.php:289 msgid "Previous action reversed." msgstr "Acción anterior revocada." -#: ../../Zotlabs/Module/Like.php:489 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s está de acuerdo" - -#: ../../Zotlabs/Module/Like.php:491 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s no está de acuerdo" - -#: ../../Zotlabs/Module/Like.php:493 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s se abstiene" +#: ../../Zotlabs/Module/Like.php:453 +msgid "profile" +msgstr "perfil" -#: ../../Zotlabs/Module/Like.php:617 +#: ../../Zotlabs/Module/Like.php:610 msgid "Action completed." msgstr "Acción completada." -#: ../../Zotlabs/Module/Like.php:618 +#: ../../Zotlabs/Module/Like.php:611 msgid "Thank you." msgstr "Gracias." @@ -13394,6 +12910,10 @@ msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com" msgid "Flag as adult in album view" msgstr "Marcar como \"solo para adultos\" en el álbum" +#: ../../Zotlabs/Module/Photos.php:1125 ../../Zotlabs/Module/Photos.php:1137 +msgid "View all" +msgstr "Ver todo" + #: ../../Zotlabs/Module/Photos.php:1238 msgid "Photo Tools" msgstr "Gestión de las fotos" @@ -13406,21 +12926,31 @@ msgstr "En esta foto:" msgid "Map" msgstr "Mapa" +#: ../../Zotlabs/Module/Photos.php:1260 +msgctxt "noun" +msgid "Likes" +msgstr "Me gusta" + +#: ../../Zotlabs/Module/Photos.php:1261 +msgctxt "noun" +msgid "Dislikes" +msgstr "No me gusta" + #: ../../Zotlabs/Module/Ochannel.php:32 ../../Zotlabs/Module/Chat.php:29 msgid "You must be logged in to see this page." msgstr "Debe haber iniciado sesión para poder ver esta página." -#: ../../Zotlabs/Module/Hcard.php:37 ../../Zotlabs/Module/Channel.php:141 +#: ../../Zotlabs/Module/Hcard.php:37 ../../Zotlabs/Module/Channel.php:149 #: ../../Zotlabs/Module/Profile.php:62 msgid "Posts and comments" msgstr "Publicaciones y comentarios" -#: ../../Zotlabs/Module/Hcard.php:44 ../../Zotlabs/Module/Channel.php:148 +#: ../../Zotlabs/Module/Hcard.php:44 ../../Zotlabs/Module/Channel.php:156 #: ../../Zotlabs/Module/Profile.php:69 msgid "Only posts" msgstr "Solo publicaciones" -#: ../../Zotlabs/Module/Channel.php:219 +#: ../../Zotlabs/Module/Channel.php:230 msgid "Insufficient permissions. Request redirected to profile page." msgstr "Permisos insuficientes. Petición redirigida a la página del perfil." @@ -13508,260 +13038,260 @@ msgstr "Fuente eliminada" msgid "Unable to remove source." msgstr "No se puede eliminar la fuente." -#: ../../Zotlabs/Module/Profiles.php:26 ../../Zotlabs/Module/Profiles.php:214 -#: ../../Zotlabs/Module/Profiles.php:642 +#: ../../Zotlabs/Module/Profiles.php:22 ../../Zotlabs/Module/Profiles.php:210 +#: ../../Zotlabs/Module/Profiles.php:638 msgid "Profile not found." msgstr "Perfil no encontrado." -#: ../../Zotlabs/Module/Profiles.php:46 +#: ../../Zotlabs/Module/Profiles.php:42 msgid "Profile deleted." msgstr "Perfil eliminado." -#: ../../Zotlabs/Module/Profiles.php:70 ../../Zotlabs/Module/Profiles.php:107 +#: ../../Zotlabs/Module/Profiles.php:66 ../../Zotlabs/Module/Profiles.php:103 msgid "Profile-" msgstr "Perfil-" -#: ../../Zotlabs/Module/Profiles.php:92 ../../Zotlabs/Module/Profiles.php:129 +#: ../../Zotlabs/Module/Profiles.php:88 ../../Zotlabs/Module/Profiles.php:125 msgid "New profile created." msgstr "El nuevo perfil ha sido creado." -#: ../../Zotlabs/Module/Profiles.php:113 +#: ../../Zotlabs/Module/Profiles.php:109 msgid "Profile unavailable to clone." msgstr "Perfil no disponible para clonar." -#: ../../Zotlabs/Module/Profiles.php:148 +#: ../../Zotlabs/Module/Profiles.php:144 msgid "Profile unavailable to export." msgstr "Perfil no disponible para exportar." -#: ../../Zotlabs/Module/Profiles.php:224 +#: ../../Zotlabs/Module/Profiles.php:220 msgid "Profile Name is required." msgstr "Se necesita el nombre del perfil." -#: ../../Zotlabs/Module/Profiles.php:429 +#: ../../Zotlabs/Module/Profiles.php:425 msgid "Marital Status" msgstr "Estado civil" -#: ../../Zotlabs/Module/Profiles.php:433 +#: ../../Zotlabs/Module/Profiles.php:429 msgid "Romantic Partner" msgstr "Pareja sentimental" -#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Profiles.php:433 ../../Zotlabs/Module/Profiles.php:784 msgid "Likes" msgstr "Me gusta" -#: ../../Zotlabs/Module/Profiles.php:441 ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:785 msgid "Dislikes" msgstr "No me gusta" -#: ../../Zotlabs/Module/Profiles.php:445 ../../Zotlabs/Module/Profiles.php:796 +#: ../../Zotlabs/Module/Profiles.php:441 ../../Zotlabs/Module/Profiles.php:792 msgid "Work/Employment" msgstr "Trabajo:" -#: ../../Zotlabs/Module/Profiles.php:448 +#: ../../Zotlabs/Module/Profiles.php:444 msgid "Religion" msgstr "Religión" -#: ../../Zotlabs/Module/Profiles.php:452 +#: ../../Zotlabs/Module/Profiles.php:448 msgid "Political Views" msgstr "Ideas políticas" -#: ../../Zotlabs/Module/Profiles.php:460 +#: ../../Zotlabs/Module/Profiles.php:456 msgid "Sexual Preference" msgstr "Preferencia sexual" -#: ../../Zotlabs/Module/Profiles.php:464 +#: ../../Zotlabs/Module/Profiles.php:460 msgid "Homepage" msgstr "Página personal" -#: ../../Zotlabs/Module/Profiles.php:468 +#: ../../Zotlabs/Module/Profiles.php:464 msgid "Interests" msgstr "Intereses" -#: ../../Zotlabs/Module/Profiles.php:576 +#: ../../Zotlabs/Module/Profiles.php:572 msgid "Profile updated." msgstr "Perfil actualizado." -#: ../../Zotlabs/Module/Profiles.php:672 +#: ../../Zotlabs/Module/Profiles.php:668 msgid "Hide my connections from viewers of this profile" msgstr "Ocultar mis conexiones a los espectadores de este perfil" -#: ../../Zotlabs/Module/Profiles.php:685 +#: ../../Zotlabs/Module/Profiles.php:681 msgid "Publish my default profile in the network directory" msgstr "Publicar mi perfil por defecto en el directorio de la red" -#: ../../Zotlabs/Module/Profiles.php:693 +#: ../../Zotlabs/Module/Profiles.php:689 msgid "Suggest me as a potential contact to new members" msgstr "Sugerirme como contacto potencial a los nuevos miembros" -#: ../../Zotlabs/Module/Profiles.php:697 +#: ../../Zotlabs/Module/Profiles.php:693 msgid "Reveal my online status" msgstr "Revelar mi estado en línea" -#: ../../Zotlabs/Module/Profiles.php:738 +#: ../../Zotlabs/Module/Profiles.php:734 msgid "Edit Profile Details" msgstr "Modificar los detalles de este perfil" -#: ../../Zotlabs/Module/Profiles.php:740 +#: ../../Zotlabs/Module/Profiles.php:736 msgid "View this profile" msgstr "Ver este perfil" -#: ../../Zotlabs/Module/Profiles.php:742 +#: ../../Zotlabs/Module/Profiles.php:738 msgid "Profile Tools" msgstr "Gestión del perfil" -#: ../../Zotlabs/Module/Profiles.php:743 +#: ../../Zotlabs/Module/Profiles.php:739 msgid "Change cover photo" msgstr "Cambiar la imagen de portada del perfil" -#: ../../Zotlabs/Module/Profiles.php:745 +#: ../../Zotlabs/Module/Profiles.php:741 msgid "Create a new profile using these settings" msgstr "Crear un nuevo perfil usando estos ajustes" -#: ../../Zotlabs/Module/Profiles.php:746 +#: ../../Zotlabs/Module/Profiles.php:742 msgid "Clone this profile" msgstr "Clonar este perfil" -#: ../../Zotlabs/Module/Profiles.php:747 +#: ../../Zotlabs/Module/Profiles.php:743 msgid "Delete this profile" msgstr "Eliminar este perfil" -#: ../../Zotlabs/Module/Profiles.php:748 +#: ../../Zotlabs/Module/Profiles.php:744 msgid "Add profile things" msgstr "Añadir cosas al perfil" -#: ../../Zotlabs/Module/Profiles.php:749 +#: ../../Zotlabs/Module/Profiles.php:745 msgid "Basic" msgstr "Básico" -#: ../../Zotlabs/Module/Profiles.php:751 +#: ../../Zotlabs/Module/Profiles.php:747 msgid "Relationship" msgstr "Relación" -#: ../../Zotlabs/Module/Profiles.php:754 +#: ../../Zotlabs/Module/Profiles.php:750 msgid "Import profile from file" msgstr "Importar perfil desde un fichero" -#: ../../Zotlabs/Module/Profiles.php:755 +#: ../../Zotlabs/Module/Profiles.php:751 msgid "Export profile to file" msgstr "Exportar perfil a un fichero" -#: ../../Zotlabs/Module/Profiles.php:756 +#: ../../Zotlabs/Module/Profiles.php:752 msgid "Your gender" msgstr "Género" -#: ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Profiles.php:753 msgid "Marital status" msgstr "Estado civil" -#: ../../Zotlabs/Module/Profiles.php:758 +#: ../../Zotlabs/Module/Profiles.php:754 msgid "Sexual preference" msgstr "Preferencia sexual" -#: ../../Zotlabs/Module/Profiles.php:761 +#: ../../Zotlabs/Module/Profiles.php:757 msgid "Profile name" msgstr "Nombre del perfil" -#: ../../Zotlabs/Module/Profiles.php:763 +#: ../../Zotlabs/Module/Profiles.php:759 msgid "This is your default profile." msgstr "Este es su perfil principal." -#: ../../Zotlabs/Module/Profiles.php:765 +#: ../../Zotlabs/Module/Profiles.php:761 msgid "Your full name" msgstr "Nombre completo" -#: ../../Zotlabs/Module/Profiles.php:766 +#: ../../Zotlabs/Module/Profiles.php:762 msgid "Short title/description" msgstr "Breve título y descripción" -#: ../../Zotlabs/Module/Profiles.php:766 +#: ../../Zotlabs/Module/Profiles.php:762 msgid "Maximal 190 characters" msgstr "Máximo de 190 caracteres" -#: ../../Zotlabs/Module/Profiles.php:769 +#: ../../Zotlabs/Module/Profiles.php:765 msgid "Street address" msgstr "Dirección" -#: ../../Zotlabs/Module/Profiles.php:770 +#: ../../Zotlabs/Module/Profiles.php:766 msgid "Locality/City" msgstr "Ciudad" -#: ../../Zotlabs/Module/Profiles.php:771 +#: ../../Zotlabs/Module/Profiles.php:767 msgid "Region/State" msgstr "Región o Estado" -#: ../../Zotlabs/Module/Profiles.php:772 +#: ../../Zotlabs/Module/Profiles.php:768 msgid "Postal/Zip code" msgstr "Código postal" -#: ../../Zotlabs/Module/Profiles.php:778 +#: ../../Zotlabs/Module/Profiles.php:774 msgid "Who (if applicable)" msgstr "Quién (si es pertinente)" -#: ../../Zotlabs/Module/Profiles.php:778 +#: ../../Zotlabs/Module/Profiles.php:774 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com" -#: ../../Zotlabs/Module/Profiles.php:779 +#: ../../Zotlabs/Module/Profiles.php:775 msgid "Since (date)" msgstr "Desde (fecha)" -#: ../../Zotlabs/Module/Profiles.php:782 +#: ../../Zotlabs/Module/Profiles.php:778 msgid "Tell us about yourself" msgstr "Háblenos de usted" -#: ../../Zotlabs/Module/Profiles.php:784 +#: ../../Zotlabs/Module/Profiles.php:780 msgid "Hometown" msgstr "Lugar de nacimiento" -#: ../../Zotlabs/Module/Profiles.php:785 +#: ../../Zotlabs/Module/Profiles.php:781 msgid "Political views" msgstr "Ideas políticas" -#: ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Profiles.php:782 msgid "Religious views" msgstr "Creencias religiosas" -#: ../../Zotlabs/Module/Profiles.php:787 +#: ../../Zotlabs/Module/Profiles.php:783 msgid "Keywords used in directory listings" msgstr "Palabras clave utilizadas en los listados de directorios" -#: ../../Zotlabs/Module/Profiles.php:787 +#: ../../Zotlabs/Module/Profiles.php:783 msgid "Example: fishing photography software" msgstr "Por ejemplo: software de fotografía submarina" -#: ../../Zotlabs/Module/Profiles.php:790 +#: ../../Zotlabs/Module/Profiles.php:786 msgid "Musical interests" msgstr "Preferencias musicales" -#: ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Profiles.php:787 msgid "Books, literature" msgstr "Libros, literatura" -#: ../../Zotlabs/Module/Profiles.php:792 +#: ../../Zotlabs/Module/Profiles.php:788 msgid "Television" msgstr "Televisión" -#: ../../Zotlabs/Module/Profiles.php:793 +#: ../../Zotlabs/Module/Profiles.php:789 msgid "Film/Dance/Culture/Entertainment" msgstr "Cine, danza, cultura, entretenimiento" -#: ../../Zotlabs/Module/Profiles.php:794 +#: ../../Zotlabs/Module/Profiles.php:790 msgid "Hobbies/Interests" msgstr "Aficiones o intereses" -#: ../../Zotlabs/Module/Profiles.php:795 +#: ../../Zotlabs/Module/Profiles.php:791 msgid "Love/Romance" msgstr "Vida sentimental o amorosa" -#: ../../Zotlabs/Module/Profiles.php:797 +#: ../../Zotlabs/Module/Profiles.php:793 msgid "School/Education" msgstr "Estudios" -#: ../../Zotlabs/Module/Profiles.php:798 +#: ../../Zotlabs/Module/Profiles.php:794 msgid "Contact information and social networks" msgstr "Información de contacto y redes sociales" -#: ../../Zotlabs/Module/Profiles.php:799 +#: ../../Zotlabs/Module/Profiles.php:795 msgid "My other channels" msgstr "Mis otros canales" @@ -14139,7 +13669,7 @@ msgid "" msgstr "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos." #: ../../Zotlabs/Module/Setup.php:207 ../../Zotlabs/Module/Setup.php:271 -#: ../../Zotlabs/Module/Setup.php:778 +#: ../../Zotlabs/Module/Setup.php:796 msgid "Please see the file \"install/INSTALL.txt\"." msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"." @@ -14320,199 +13850,223 @@ msgstr "Si está en un servidor Windows, por favor, lea \"http://www.php.net/man msgid "Generate encryption keys" msgstr "Generar claves de cifrado" -#: ../../Zotlabs/Module/Setup.php:510 +#: ../../Zotlabs/Module/Setup.php:497 +msgid "Error: the sodium encryption library is not installed." +msgstr "Error: la biblioteca de encriptación sodium no está instalada." + +#: ../../Zotlabs/Module/Setup.php:499 +msgid "Generate ed25519 encryption keys" +msgstr "Generar claves de cifrado ed25519" + +#: ../../Zotlabs/Module/Setup.php:504 +msgid "Error: one of \"bcmath\" or \"gmp\" (bigmath library) extensions are required." +msgstr "Error: se requiere una de las extensiones \"bcmath\" o \"gmp\" (bigmath library)." + +#: ../../Zotlabs/Module/Setup.php:506 +msgid "Bigmath library (either bcmath or gmp)" +msgstr "Biblioteca Bigmath (bcmath o gmp)" + +#: ../../Zotlabs/Module/Setup.php:523 msgid "libCurl PHP module" msgstr "módulo libCurl PHP" -#: ../../Zotlabs/Module/Setup.php:511 +#: ../../Zotlabs/Module/Setup.php:524 msgid "GD graphics PHP module" msgstr "módulo PHP GD graphics" -#: ../../Zotlabs/Module/Setup.php:512 +#: ../../Zotlabs/Module/Setup.php:525 msgid "OpenSSL PHP module" msgstr "módulo PHP OpenSSL" -#: ../../Zotlabs/Module/Setup.php:513 +#: ../../Zotlabs/Module/Setup.php:526 msgid "PDO database PHP module" msgstr "Módulo PHP de la base de datos PDO " -#: ../../Zotlabs/Module/Setup.php:514 +#: ../../Zotlabs/Module/Setup.php:527 msgid "mb_string PHP module" msgstr "módulo PHP mb_string" -#: ../../Zotlabs/Module/Setup.php:515 +#: ../../Zotlabs/Module/Setup.php:528 msgid "xml PHP module" msgstr "módulo PHP xml" -#: ../../Zotlabs/Module/Setup.php:516 +#: ../../Zotlabs/Module/Setup.php:529 msgid "zip PHP module" msgstr "Módulo zip PHP" -#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:522 +#: ../../Zotlabs/Module/Setup.php:530 +msgid "intl PHP module" +msgstr "módulo intl PHP" + +#: ../../Zotlabs/Module/Setup.php:534 ../../Zotlabs/Module/Setup.php:536 msgid "Apache mod_rewrite module" msgstr "módulo Apache mod_rewrite " -#: ../../Zotlabs/Module/Setup.php:520 +#: ../../Zotlabs/Module/Setup.php:534 msgid "" "Error: Apache webserver mod-rewrite module is required but not installed." msgstr "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:526 ../../Zotlabs/Module/Setup.php:529 +#: ../../Zotlabs/Module/Setup.php:540 ../../Zotlabs/Module/Setup.php:543 msgid "exec" msgstr "ejecutable" -#: ../../Zotlabs/Module/Setup.php:526 +#: ../../Zotlabs/Module/Setup.php:540 msgid "" "Error: exec is required but is either not installed or has been disabled in " "php.ini" msgstr "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini" -#: ../../Zotlabs/Module/Setup.php:532 ../../Zotlabs/Module/Setup.php:535 +#: ../../Zotlabs/Module/Setup.php:546 ../../Zotlabs/Module/Setup.php:549 msgid "shell_exec" msgstr "shell_exec" -#: ../../Zotlabs/Module/Setup.php:532 +#: ../../Zotlabs/Module/Setup.php:546 msgid "" "Error: shell_exec is required but is either not installed or has been " "disabled in php.ini" msgstr "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini" -#: ../../Zotlabs/Module/Setup.php:540 +#: ../../Zotlabs/Module/Setup.php:554 msgid "Error: libCURL PHP module required but not installed." msgstr "Error: se necesita el módulo PHP libCURL pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:544 +#: ../../Zotlabs/Module/Setup.php:558 msgid "" "Error: GD PHP module with JPEG support or ImageMagick graphics library " "required but not installed." msgstr "Error: Se requiere el módulo GD PHP con soporte para JPEG o la biblioteca de gráficos ImageMagick, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:548 +#: ../../Zotlabs/Module/Setup.php:562 msgid "Error: openssl PHP module required but not installed." msgstr "Error: el módulo PHP openssl es necesario, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:554 +#: ../../Zotlabs/Module/Setup.php:568 msgid "" "Error: PDO database PHP module missing a driver for either mysql or pgsql." msgstr "Error: El módulo PHP de la base de datos PDO carece de un controlador para mysql o pgsql." -#: ../../Zotlabs/Module/Setup.php:559 +#: ../../Zotlabs/Module/Setup.php:573 msgid "Error: PDO database PHP module required but not installed." msgstr "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:563 +#: ../../Zotlabs/Module/Setup.php:577 msgid "Error: mb_string PHP module required but not installed." msgstr "Error: el módulo PHP mb_string es necesario, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:567 +#: ../../Zotlabs/Module/Setup.php:581 msgid "Error: xml PHP module required for DAV but not installed." msgstr "Error: el módulo PHP xml es necesario para DAV, pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:571 +#: ../../Zotlabs/Module/Setup.php:585 msgid "Error: zip PHP module required but not installed." msgstr "Error: se requiere el módulo zip PHP pero no está instalado." -#: ../../Zotlabs/Module/Setup.php:590 ../../Zotlabs/Module/Setup.php:599 +#: ../../Zotlabs/Module/Setup.php:589 +msgid "Error: intl PHP module required but not installed." +msgstr "Error: el módulo intl PHP es necesario pero no está instalado." + +#: ../../Zotlabs/Module/Setup.php:608 ../../Zotlabs/Module/Setup.php:617 msgid ".htconfig.php is writable" msgstr ".htconfig.php tiene permisos de escritura" -#: ../../Zotlabs/Module/Setup.php:595 +#: ../../Zotlabs/Module/Setup.php:613 msgid "" "The web installer needs to be able to create a file called \".htconfig.php\"" " in the top folder of your web server and it is unable to do so." msgstr "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor." -#: ../../Zotlabs/Module/Setup.php:596 +#: ../../Zotlabs/Module/Setup.php:614 msgid "" "This is most often a permission setting, as the web server may not be able " "to write files in your folder - even if you can." msgstr "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos." -#: ../../Zotlabs/Module/Setup.php:597 +#: ../../Zotlabs/Module/Setup.php:615 msgid "Please see install/INSTALL.txt for additional information." msgstr "Por favor, consulte install/INSTALL.txt para más información." -#: ../../Zotlabs/Module/Setup.php:613 +#: ../../Zotlabs/Module/Setup.php:631 msgid "" "This software uses the Smarty3 template engine to render its web views. " "Smarty3 compiles templates to PHP to speed up rendering." msgstr "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización." -#: ../../Zotlabs/Module/Setup.php:614 +#: ../../Zotlabs/Module/Setup.php:632 #, php-format msgid "" "In order to store these compiled templates, the web server needs to have " "write access to the directory %s under the top level web folder." msgstr "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal." -#: ../../Zotlabs/Module/Setup.php:615 ../../Zotlabs/Module/Setup.php:636 +#: ../../Zotlabs/Module/Setup.php:633 ../../Zotlabs/Module/Setup.php:654 msgid "" "Please ensure that the user that your web server runs as (e.g. www-data) has" " write access to this folder." msgstr "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)." -#: ../../Zotlabs/Module/Setup.php:616 +#: ../../Zotlabs/Module/Setup.php:634 #, php-format msgid "" "Note: as a security measure, you should give the web server write access to " "%s only--not the template files (.tpl) that it contains." msgstr "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene." -#: ../../Zotlabs/Module/Setup.php:619 +#: ../../Zotlabs/Module/Setup.php:637 #, php-format msgid "%s is writable" msgstr "%s tiene permisos de escritura" -#: ../../Zotlabs/Module/Setup.php:635 +#: ../../Zotlabs/Module/Setup.php:653 msgid "" "This software uses the store directory to save uploaded files. The web " "server needs to have write access to the store directory under the top level" " web folder" msgstr "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior" -#: ../../Zotlabs/Module/Setup.php:639 +#: ../../Zotlabs/Module/Setup.php:657 msgid "store is writable" msgstr "\"store\" tiene permisos de escritura" -#: ../../Zotlabs/Module/Setup.php:671 +#: ../../Zotlabs/Module/Setup.php:689 msgid "" "SSL certificate cannot be validated. Fix certificate or disable https access" " to this site." msgstr "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio." -#: ../../Zotlabs/Module/Setup.php:672 +#: ../../Zotlabs/Module/Setup.php:690 msgid "" "If you have https access to your website or allow connections to TCP port " "443 (the https: port), you MUST use a browser-valid certificate. You MUST " "NOT use self-signed certificates!" msgstr "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo." -#: ../../Zotlabs/Module/Setup.php:673 +#: ../../Zotlabs/Module/Setup.php:691 msgid "" "This restriction is incorporated because public posts from you may for " "example contain references to images on your own hub." msgstr "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor." -#: ../../Zotlabs/Module/Setup.php:674 +#: ../../Zotlabs/Module/Setup.php:692 msgid "" "If your certificate is not recognized, members of other sites (who may " "themselves have valid certificates) will get a warning message on their own " "site complaining about security issues." msgstr "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web." -#: ../../Zotlabs/Module/Setup.php:675 +#: ../../Zotlabs/Module/Setup.php:693 msgid "" "This can cause usability issues elsewhere (not just on your own site) so we " "must insist on this requirement." msgstr "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos." -#: ../../Zotlabs/Module/Setup.php:676 +#: ../../Zotlabs/Module/Setup.php:694 msgid "" "Providers are available that issue free certificates which are browser-" "valid." msgstr "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos." -#: ../../Zotlabs/Module/Setup.php:677 +#: ../../Zotlabs/Module/Setup.php:695 msgid "" "If you are confident that the certificate is valid and signed by a trusted " "authority, check to see if you have failed to install an intermediate cert. " @@ -14520,32 +14074,32 @@ msgid "" "server communications." msgstr "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor." -#: ../../Zotlabs/Module/Setup.php:679 +#: ../../Zotlabs/Module/Setup.php:697 msgid "SSL certificate validation" msgstr "validación del certificado SSL" -#: ../../Zotlabs/Module/Setup.php:685 +#: ../../Zotlabs/Module/Setup.php:703 msgid "" "Url rewrite in .htaccess is not working. Check your server " "configuration.Test: " msgstr "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:" -#: ../../Zotlabs/Module/Setup.php:688 +#: ../../Zotlabs/Module/Setup.php:706 msgid "Url rewrite is working" msgstr "La reescritura de las direcciones funciona correctamente" -#: ../../Zotlabs/Module/Setup.php:701 +#: ../../Zotlabs/Module/Setup.php:719 msgid "" "The database configuration file \".htconfig.php\" could not be written. " "Please use the enclosed text to create a configuration file in your web " "server root." msgstr "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor." -#: ../../Zotlabs/Module/Setup.php:776 +#: ../../Zotlabs/Module/Setup.php:794 msgid "

What next?

" msgstr "

¿Qué sigue?

" -#: ../../Zotlabs/Module/Setup.php:777 +#: ../../Zotlabs/Module/Setup.php:795 msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the " "poller." diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php index 5f449df83..6957ee3b7 100644 --- a/view/es-es/hstrings.php +++ b/view/es-es/hstrings.php @@ -2,7 +2,7 @@ if(! function_exists("string_plural_select_es_es")) { function string_plural_select_es_es($n){ - return ($n != 1 ? 1 : 0); + return ($n != 1 ? 1 : 0); }} App::$rtl = 0; App::$strings["plural_function_code"] = "(n != 1 ? 1 : 0)"; @@ -14,6 +14,12 @@ App::$strings["Theme settings"] = "Ajustes del tema"; App::$strings["Dark style"] = "Estilo oscuro"; App::$strings["Light style"] = "Estilo claro"; App::$strings["Common settings"] = "Ajustes comunes"; +App::$strings["Primary theme color"] = "Color del tema principal"; +App::$strings["Current color, leave empty for default"] = "Color actual, dejar vacío por defecto"; +App::$strings["Success theme color"] = "Éxito en el color del tema"; +App::$strings["Info theme color"] = "Información del color del tema"; +App::$strings["Warning theme color"] = "Advertencia sobre el color del tema"; +App::$strings["Danger theme color"] = "Peligro en el color del tema"; App::$strings["Default to dark mode"] = "Modo oscuro por defecto"; App::$strings["No"] = "No"; App::$strings["Yes"] = "Sí"; @@ -22,21 +28,18 @@ App::$strings["Enable this option if you use a dark navbar color in light mode"] App::$strings["Narrow navbar"] = "Estrechar la barra de navegación"; App::$strings["Navigation bar background color"] = "Color de fondo de la barra de navegación"; App::$strings["Dark navigation bar background color"] = "Color de fondo oscuro de la barra de navegación"; -App::$strings["Link color"] = "Color del enlace"; -App::$strings["Dark link color"] = "Color oscuro del enlace"; -App::$strings["Link hover color"] = "Color de los enlaces al pasar por encima"; -App::$strings["Dark link hover color"] = "Color oscuro del enlace flotante"; App::$strings["Set the background color"] = "Ajustar el color de fondo"; App::$strings["Set the dark background color"] = "Establecer el color de fondo oscuro"; App::$strings["Set the background image"] = "Ajustar la imagen de fondo"; App::$strings["Set the dark background image"] = "Establecer la imagen de fondo oscuro"; App::$strings["Set font-size for the entire application"] = "Ajustar el tamaño de letra para toda la aplicación"; App::$strings["Examples: 1rem, 100%, 16px"] = "Ejemplos: 1rem, 100%, 16px"; -App::$strings["Set radius of corners"] = "Establecer el radio de curvatura de las esquinas"; -App::$strings["Example: 4px"] = "Ejemplo: 4px"; +App::$strings["Set radius of corners in rem"] = "Fijar el radio de las esquinas en rem"; +App::$strings["Leave empty for default radius"] = "Dejar vacío para el radio por defecto"; App::$strings["Set maximum width of content region in rem"] = "Ajustar la anchura máxima de la región de contenido, en rem"; App::$strings["Leave empty for default width"] = "Dejar en blanco para la anchura predeterminada"; App::$strings["Set size of conversation author photo"] = "Ajustar el tamaño de la foto del autor de la conversación"; +App::$strings["Leave empty for default size"] = "Dejar vacío para el tamaño por defecto"; App::$strings["Set size of followup author photos"] = "Ajustar el tamaño de foto de los seguidores del autor"; App::$strings["Show advanced settings"] = "Mostrar ajustes avanzados"; App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s"; @@ -92,15 +95,6 @@ App::$strings["Privacy group is empty."] = "El grupo de canales está vacío."; App::$strings["Privacy group: %s"] = "Grupo de canales: %s"; App::$strings["Connection: %s"] = "Conexión: %s"; App::$strings["Connection not found."] = "Conexión no encontrada"; -App::$strings["female"] = "mujer"; -App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["male"] = "hombre"; -App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["profile photo"] = "foto del perfil"; -App::$strings["[Edited %s]"] = "[se ha editado %s]"; -App::$strings["__ctx:edit_activity__ Post"] = "Publicar"; -App::$strings["__ctx:edit_activity__ Comment"] = "Comentar"; App::$strings["Off"] = "Desactivado"; App::$strings["On"] = "Activado"; App::$strings["Calendar"] = "Calendario"; @@ -264,10 +258,12 @@ App::$strings["It's complicated"] = "Es complicado"; App::$strings["Don't care"] = "No me importa"; App::$strings["Ask me"] = "Pregúnteme"; App::$strings[" and "] = " y "; +App::$strings[", "] = ", "; +App::$strings["Profile Photo"] = "Foto del perfil"; +App::$strings["Cover Photo"] = "Imagen de portada del perfil"; App::$strings["public profile"] = "el perfil público"; -App::$strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s ha cambiado %2\$s a “%3\$s”"; -App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s"; -App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s."; +App::$strings["%1\$s %2\$s has been updated to %3\$s."] = "%1\$s%2\$sse ha actualizado a %3\$s."; +App::$strings["%1\$s updated the %2\$s. Changed %3\$s."] = "%1\$sactualizó el %2\$s. Ha cambiado %3\$s."; App::$strings["%d invitation available"] = array( 0 => "%d invitación pendiente", 1 => "%d invitaciones disponibles", @@ -469,22 +465,18 @@ App::$strings["channel"] = "el canal"; App::$strings["post"] = "la entrada"; App::$strings["comment"] = "el comentario"; App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; -App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; App::$strings["likes %1\$s's %2\$s"] = "gusta de %2\$s de %1\$s"; +App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; App::$strings["doesn't like %1\$s's %2\$s"] = "no gusta de %2\$s de %1\$s"; -App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado/a con %2\$s"; -App::$strings["%1\$s poked %2\$s"] = "%1\$s ha dado un toque a %2\$s"; -App::$strings["poked"] = "ha dado un toque a"; -App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s"; +App::$strings["%1\$s repeated %2\$s's %3\$s"] = "%1\$scompartió %3\$sde %2\$s"; +App::$strings["repeated %1\$s's %2\$s"] = "compartió %2\$s de %1\$s"; App::$strings["This is an unsaved preview"] = "Esta es una previsualización sin guardar"; App::$strings["__ctx:title__ Likes"] = "Me gusta"; App::$strings["__ctx:title__ Dislikes"] = "No me gusta"; -App::$strings["__ctx:title__ Agree"] = "De acuerdo"; -App::$strings["__ctx:title__ Disagree"] = "En desacuerdo"; -App::$strings["__ctx:title__ Abstain"] = "Abstención"; App::$strings["__ctx:title__ Attending"] = "Participaré"; App::$strings["__ctx:title__ Not attending"] = "No participaré"; App::$strings["__ctx:title__ Might attend"] = "Quizá participe"; +App::$strings["__ctx:title__ Repeats"] = "Se repite"; App::$strings["Select"] = "Seleccionar"; App::$strings["Delete"] = "Eliminar"; App::$strings["Toggle Star Status"] = "Activar o desactivar el estado de entrada preferida"; @@ -511,7 +503,6 @@ App::$strings["View Profile"] = "Ver el perfil"; App::$strings["Recent Activity"] = "Actividad reciente"; App::$strings["Connect"] = "Conectar"; App::$strings["Edit Connection"] = "Editar conexión"; -App::$strings["Poke"] = "Toques y otras cosas"; App::$strings["Approve this item"] = "Aprobar este elemento"; App::$strings["Delete this item"] = "Borrar este elemento"; App::$strings["%s likes this."] = "A %s le gusta esto."; @@ -580,6 +571,11 @@ App::$strings["Other networks and post services"] = "Otras redes y servicios de App::$strings["Set expiration date"] = "Configurar fecha de caducidad"; App::$strings["Set publish date"] = "Establecer la fecha de publicación"; App::$strings["Encrypt text"] = "Cifrar texto"; +App::$strings["__ctx:noun__ Repeat"] = array( + 0 => "Se repite", + 1 => "Se repite", + 2 => "Se repite", +); App::$strings["__ctx:noun__ Dislike"] = array( 0 => "No me gusta", 1 => "No me gusta", @@ -600,21 +596,6 @@ App::$strings["__ctx:noun__ Undecided"] = array( 1 => "Indecisos/as", 2 => "Indecisos/as", ); -App::$strings["__ctx:noun__ Agree"] = array( - 0 => "De acuerdo", - 1 => "De acuerdo", - 2 => "De acuerdo", -); -App::$strings["__ctx:noun__ Disagree"] = array( - 0 => "En desacuerdo", - 1 => "En desacuerdo", - 2 => "En desacuerdo", -); -App::$strings["__ctx:noun__ Abstain"] = array( - 0 => "se abstiene", - 1 => "Se abstienen", - 2 => "Se abstienen", -); App::$strings["Remote authentication"] = "Acceder desde su servidor"; App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio"; App::$strings["Channels"] = "Canales"; @@ -764,30 +745,6 @@ App::$strings["Nothing"] = "Nada"; App::$strings["View all %s connections"] = "Ver todas las %s conexiones"; App::$strings["Network: %s"] = "Red %s"; App::$strings["Save"] = "Guardar"; -App::$strings["poke"] = "un toque"; -App::$strings["ping"] = "un \"ping\""; -App::$strings["pinged"] = "ha enviado un \"ping\" a"; -App::$strings["happy"] = "feliz "; -App::$strings["sad"] = "triste "; -App::$strings["mellow"] = "tranquilo/a"; -App::$strings["tired"] = "cansado/a "; -App::$strings["perky"] = "vivaz"; -App::$strings["angry"] = "enfadado/a"; -App::$strings["stupefied"] = "asombrado/a"; -App::$strings["puzzled"] = "perplejo/a"; -App::$strings["interested"] = "interesado/a"; -App::$strings["bitter"] = "amargado/a"; -App::$strings["cheerful"] = "alegre"; -App::$strings["alive"] = "animado/a"; -App::$strings["annoyed"] = "molesto/a"; -App::$strings["anxious"] = "ansioso/a"; -App::$strings["cranky"] = "de mal humor"; -App::$strings["disturbed"] = "perturbado/a"; -App::$strings["frustrated"] = "frustrado/a"; -App::$strings["depressed"] = "deprimido/a"; -App::$strings["motivated"] = "motivado/a"; -App::$strings["relaxed"] = "relajado/a"; -App::$strings["surprised"] = "sorprendido/a"; App::$strings["May"] = "mayo"; App::$strings["Unknown attachment"] = "Adjunto no reconocido"; App::$strings["Size"] = "Tamaño"; @@ -867,7 +824,6 @@ App::$strings["This channel has not added a profile description yet"] = "Este ca App::$strings["Change your profile photo"] = "Cambiar su foto del perfil"; App::$strings["Trans"] = "Trans"; App::$strings["Full Name:"] = "Nombre completo:"; -App::$strings["Like this channel"] = "Me gusta este canal"; App::$strings["j F, Y"] = "j F Y"; App::$strings["j F"] = "j F"; App::$strings["Birthday:"] = "Cumpleaños:"; @@ -925,6 +881,15 @@ App::$strings["IRC settings saved."] = "Se han guardado los ajustes de IRC."; App::$strings["IRC Chatroom"] = "Sala de chat IRC"; App::$strings["Hide the button and show the smilies directly."] = "Ocultar el botón y mostrar los smilies directamente."; App::$strings["Smileybutton Settings"] = "Ajustes de Smileybutton"; +App::$strings["ERROR: word length is not correct!"] = "ERROR: ¡la longitud de la palabra no es correcta!"; +App::$strings["Fediquest App"] = "Aplicación Fediquest"; +App::$strings["A distributed quest for a given word (game)."] = "Una búsqueda distribuida de una palabra determinada (juego)."; +App::$strings["To start a game, enter [fediquest]your_word[/fediquest] somewhere in a toplevel post."] = "Para empezar una partida, introduce [fediquest]tu_palabra[/fediquest] en algún lugar de un post de toplevel."; +App::$strings["Your contacts can post their guess in the comments."] = "Sus contactos pueden publicar sus conjeturas en los comentarios."; +App::$strings["Your channel will evaluate the guess and automatically post the response."] = "Su canal evaluará la conjetura y publicará automáticamente la respuesta."; +App::$strings["Correct letters"] = "Letras correctas"; +App::$strings["Letters contained in the word but at the wrong spot"] = "Letras contenidas en la palabra pero en el lugar equivocado"; +App::$strings["Letters not contained in the word"] = "Letras no contenidas en la palabra"; App::$strings["Network error"] = "Error de red"; App::$strings["API error"] = "Error de API"; App::$strings["Unknown issue"] = "Problema desconocido"; @@ -947,15 +912,6 @@ App::$strings["Show Upload Limits"] = "Mostrar los límites de subida"; App::$strings["Hubzilla configured maximum size: "] = "Tamaño máximo configurado por Hubzilla: "; App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize: "; App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (debe ser mayor que upload_max_filesize): "; -App::$strings["ERROR: word length is not correct!"] = "ERROR: ¡la longitud de la palabra no es correcta!"; -App::$strings["Fediwordle App"] = "App Fediwordle"; -App::$strings["A distributed word game inspired by wordle."] = "Un juego de palabras distribuido inspirado en el wordle."; -App::$strings["To start a game, enter [wordle]your_word[/wordle] somewhere in a toplevel post."] = "Para empezar una partida, introduzca [wordle]mi_palabra[/wordle] en algún lugar de un post de nivel superior."; -App::$strings["Your contacts can post their guess in the comments."] = "Sus contactos pueden publicar sus conjeturas en los comentarios."; -App::$strings["Your channel will evaluate the guess and automatically post the response."] = "Su canal evaluará la conjetura y publicará automáticamente la respuesta."; -App::$strings["Correct letters"] = "Letras correctas"; -App::$strings["Letters contained in the word but at the wrong spot"] = "Letras contenidas en la palabra pero en el lugar equivocado"; -App::$strings["Letters not contained in the word"] = "Letras no contenidas en la palabra"; App::$strings["Send your identity to all websites"] = "Enviar su identidad a todos los sitios web"; App::$strings["Send ZID"] = "Enviar ZID"; App::$strings["Send email to all members"] = "Enviar un correo electrónico a todos los miembros"; @@ -977,7 +933,6 @@ App::$strings["First Name"] = "Nombre"; App::$strings["Last Name"] = "Apellido"; App::$strings["Nickname"] = "Alias"; App::$strings["Full Name"] = "Nombre completo"; -App::$strings["Profile Photo"] = "Foto del perfil"; App::$strings["Profile Photo 16px"] = "Foto del perfil 16px"; App::$strings["Profile Photo 32px"] = "Foto del perfil 32px"; App::$strings["Profile Photo 48px"] = "Foto del perfil 48px"; @@ -1119,14 +1074,13 @@ App::$strings["Logfile size in bytes before rotating"] = "Tamaño del fichero de App::$strings["Number of logfiles to retain"] = "Número de ficheros de informe que se deben retener"; App::$strings["Your account on %s will expire in a few days."] = "Su cuenta en %s caducará en unos pocos días."; App::$strings["Your test account is about to expire."] = "Su cuenta de prueba está a punto de expirar."; -App::$strings["status"] = "el mensaje de estado "; App::$strings["ActivityPub Protocol Settings updated."] = "Se han actualizado los ajustes del protocolo ActivityPub."; App::$strings["The activitypub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos."; -App::$strings["Deliver to ActivityPub recipients in privacy groups"] = "Entregar a los destinatarios de ActivityPub en grupos de canales"; -App::$strings["May result in a large number of mentions and expose all the members of your privacy group"] = "Puede resultar en un gran número de menciones y exponer a todos los miembros de su grupo de canales"; -App::$strings["Send multi-media HTML articles"] = "Enviar artículos multimedia en HTML"; -App::$strings["Not supported by some microblog services such as Mastodon"] = "No soportado por algunos servicios de microblog como Mastodon"; +App::$strings["Send activities of type note instead of article"] = "Enviar actividades de tipo nota en lugar de artículo"; +App::$strings["Microblog services such as Mastodon do not properly support articles"] = "Los servicios de microblog como Mastodon no soportan correctamente los artículos"; App::$strings["Activitypub Protocol"] = "Protocolo Activitypub"; +App::$strings["Refresh failed"] = "Error de actualización"; +App::$strings["Refresh succeeded"] = "Actualización con éxito"; App::$strings["Save Bookmarks"] = "Guardar en Marcadores"; App::$strings["Random Planet App"] = "App Random Planet"; App::$strings["Set a random planet from the Star Wars Empire as your location when posting"] = "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias como su ubicación cuando publique."; @@ -1148,6 +1102,7 @@ App::$strings["No username found in import file."] = "No se ha encontrado el nom App::$strings["Import completed."] = "Importación completada."; App::$strings["\$projectname"] = "\$projectname"; App::$strings["%1\$s dislikes %2\$s's %3\$s"] = "a %1\$s no le gusta el %3\$s de %2\$s"; +App::$strings["status"] = "el mensaje de estado "; App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s participa"; App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no participa"; App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s quizá participe"; @@ -1447,28 +1402,6 @@ App::$strings["Maximum tweet length"] = "Longitud máxima del tweet"; App::$strings["Send public postings to Twitter by default"] = "Enviar mensajes públicos a Twitter de forma predeterminada"; App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada."; App::$strings["Twitter Crosspost Connector"] = "Twitter Crosspost Connector"; -App::$strings["lonely"] = "Solo/a"; -App::$strings["drunk"] = "ebrio/a"; -App::$strings["horny"] = "caliente"; -App::$strings["stoned"] = "drogado/a"; -App::$strings["fucked up"] = "jodido/a"; -App::$strings["clusterfucked"] = "hecho/a polvo"; -App::$strings["crazy"] = "loco/a"; -App::$strings["hurt"] = "ofendido/a"; -App::$strings["sleepy"] = "soñoliento/a"; -App::$strings["grumpy"] = "gruñón/ona"; -App::$strings["high"] = "superior"; -App::$strings["semi-conscious"] = "semiconsciente"; -App::$strings["in love"] = "enamorado/a"; -App::$strings["in lust"] = "lujurioso/a"; -App::$strings["naked"] = "desnudo/a"; -App::$strings["stinky"] = "apestoso/a"; -App::$strings["sweaty"] = "sudoroso/a"; -App::$strings["bleeding out"] = "exánime"; -App::$strings["victorious"] = "victorioso/a"; -App::$strings["defeated"] = "derrotado/a"; -App::$strings["envious"] = "envidioso/a"; -App::$strings["jealous"] = "celoso/a"; App::$strings["generic profile image"] = "imagen del perfil general"; App::$strings["random geometric pattern"] = "patrón geométrico aleatorio"; App::$strings["monster face"] = "cara de monstruo"; @@ -1518,44 +1451,6 @@ App::$strings["Workflow settings"] = "Ajustes del flujo de trabajo"; App::$strings["Some setting"] = "Algunos ajustes"; App::$strings["A setting"] = "Un ajuste"; App::$strings["Skeleton Settings"] = "Ajustes de Skeleton"; -App::$strings["bitchslap"] = "una bofetada humillante"; -App::$strings["bitchslapped"] = "ha abofeteado de forma humillante a"; -App::$strings["shag"] = "un polvo"; -App::$strings["shagged"] = "ha dejado exhausto/a a"; -App::$strings["patent"] = "una patente"; -App::$strings["patented"] = "ha patentado a"; -App::$strings["hug"] = "un abrazo"; -App::$strings["hugged"] = "ha abrazado a"; -App::$strings["murder"] = "un asesinato"; -App::$strings["murdered"] = "ha asesinado a"; -App::$strings["worship"] = "una alabanza"; -App::$strings["worshipped"] = "ha elogiado a"; -App::$strings["kiss"] = "un beso"; -App::$strings["kissed"] = "ha besado a"; -App::$strings["tempt"] = "una tentación"; -App::$strings["tempted"] = "ha tentado a"; -App::$strings["raise eyebrows at"] = "un levantamiento de cejas"; -App::$strings["raised their eyebrows at"] = "ha levantado las cejas a"; -App::$strings["insult"] = "un insulto"; -App::$strings["insulted"] = "ha insultado a"; -App::$strings["praise"] = "un elogio"; -App::$strings["praised"] = "ha elogiado a"; -App::$strings["be dubious of"] = "una indecisión"; -App::$strings["was dubious of"] = "estaba dudoso de"; -App::$strings["eat"] = "una comida"; -App::$strings["ate"] = "ha comido"; -App::$strings["giggle and fawn at"] = "una sonrisa aduladora"; -App::$strings["giggled and fawned at"] = "ha sonreído y adulado a"; -App::$strings["doubt"] = "una duda"; -App::$strings["doubted"] = "ha dudado de"; -App::$strings["glare"] = "una mirada furiosa"; -App::$strings["glared at"] = "ha mirado con furia"; -App::$strings["fuck"] = "una mierda"; -App::$strings["fucked"] = "ha mandado a la mierda a"; -App::$strings["bonk"] = "un golpe"; -App::$strings["bonked"] = "ha golpeado a"; -App::$strings["declare undying love for"] = "una declaración de amor eterno"; -App::$strings["declared undying love for"] = "ha declarado amor eterno a"; App::$strings["Allow magic authentication only to websites of your immediate connections"] = "Permitir la autenticación mágica sólo a los sitios web de sus conexiones próximas"; App::$strings["Authchoose"] = "Autoseleccionar"; App::$strings["No server specified"] = "No se ha especificado ningún servidor"; @@ -1634,6 +1529,7 @@ App::$strings["requested to like"] = "solicita que se permita mostrar agrado "; App::$strings["liked"] = "ha gustado de "; App::$strings["requested to dislike"] = "solicita que se permita mostrar desagrado "; App::$strings["disliked"] = "no ha gustado de "; +App::$strings["repeated"] = "repetido / compartido"; App::$strings["voted on"] = "votado en "; App::$strings["%1\$s %2\$s [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s%2\$s [zrl=%3\$s ]un %4\$s[/zrl]"; App::$strings["%1\$s %2\$s [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s %2\$s[zrl=%3\$s]%5\$s de %4\$s[/zrl]"; @@ -1673,9 +1569,6 @@ App::$strings["created a new poll"] = "se ha creado una nueva encuesta"; App::$strings["created a new post"] = "ha creado una nueva entrada"; App::$strings["voted on %s's poll"] = "votado en la encuesta de %s"; App::$strings["commented on %s's post"] = "ha comentado la entrada de %s"; -App::$strings["repeated %s's post"] = "repetida la entrada de %s"; -App::$strings["liked %s's post"] = "Le ha gustado la entrada de %s"; -App::$strings["disliked %s's post"] = "No le ha gustado la entrada de %s"; App::$strings["shared a file with you"] = "compartió un archivo con usted"; App::$strings["edited a post dated %s"] = "ha editado una entrada %s"; App::$strings["edited a comment dated %s"] = "ha editado un comentario %s"; @@ -1693,7 +1586,6 @@ App::$strings["Suggest Channels"] = "Sugerir canales"; App::$strings["Channel Manager"] = "Administración de canales"; App::$strings["Stream"] = "Stream"; App::$strings["Mail"] = "Correo"; -App::$strings["Mood"] = "Estado de ánimo"; App::$strings["Chat"] = "Chat"; App::$strings["Probe"] = "Probar"; App::$strings["Suggest"] = "Sugerir"; @@ -1753,16 +1645,16 @@ App::$strings["Save to Folder"] = "Guardar en carpeta"; App::$strings["I will attend"] = "Participaré"; App::$strings["I will not attend"] = "No participaré"; App::$strings["I might attend"] = "Quizá participe"; -App::$strings["View all"] = "Ver todo"; App::$strings["I like this (toggle)"] = "Me gusta (cambiar)"; App::$strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)"; App::$strings["Reply on this comment"] = "Responder a este comentario"; App::$strings["reply"] = "responder"; App::$strings["Reply to"] = "Responder a "; -App::$strings["Share This"] = "Compartir esto"; App::$strings["share"] = "compartir"; +App::$strings["Repeat"] = "Se repite"; +App::$strings["repeat"] = "Se repite"; App::$strings["Delivery Report"] = "Informe de transmisión"; -App::$strings["%d Comment"] = array( +App::$strings["%d comment"] = array( 0 => "%d comentario", 1 => "%d comentarios", 2 => "%d comentarios", @@ -1779,9 +1671,7 @@ App::$strings["Voting Options"] = "Opciones de votación"; App::$strings["Go to previous comment"] = "Ir al comentario anterior"; App::$strings["Pinned post"] = "Entradas ancladas"; App::$strings["Add to Calendar"] = "Añadir al calendario"; -App::$strings["Mark all seen"] = "Marcar todo como visto"; -App::$strings["__ctx:noun__ Likes"] = "Me gusta"; -App::$strings["__ctx:noun__ Dislikes"] = "No me gusta"; +App::$strings["Mark all comments seen"] = "Marcar como leídos todos los comentarios"; App::$strings["This is you"] = "Este es usted"; App::$strings["Image"] = "Imagen"; App::$strings["Insert Link"] = "Insertar enlace"; @@ -1919,9 +1809,7 @@ App::$strings["Channel activities"] = "Actividades del canal"; App::$strings["View Photo"] = "Ver foto"; App::$strings["Edit Album"] = "Editar álbum"; App::$strings["Upload"] = "Subir"; -App::$strings["I agree"] = "Estoy de acuerdo"; -App::$strings["I disagree"] = "No estoy de acuerdo"; -App::$strings["I abstain"] = "Me abstengo"; +App::$strings["Share This"] = "Compartir esto"; App::$strings["View %s's profile - %s"] = "Ver el perfil de %s - %s"; App::$strings["Don't show"] = "No mostrar"; App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas."; @@ -2131,7 +2019,6 @@ App::$strings["Privacy group: "] = "Grupo de canales: "; App::$strings["Installed Apps"] = "Apps instaladas"; App::$strings["Manage Apps"] = "Administrar apps"; App::$strings["Create Custom App"] = "Crear una app personalizada"; -App::$strings["Post repeated"] = "Entrada repetida"; App::$strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio."; App::$strings["No valid account found."] = "No se ha encontrado una cuenta válida."; App::$strings["Password reset request issued. Check your email."] = "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."; @@ -2170,6 +2057,7 @@ App::$strings["This site is not a directory server"] = "Este sitio no es un serv App::$strings["New"] = "Nuevas"; App::$strings["No more system notifications."] = "No hay más notificaciones del sistema"; App::$strings["System Notifications"] = "Notificaciones del sistema"; +App::$strings["Mark all seen"] = "Marcar todo como visto"; App::$strings["Update to Hubzilla 5.0 step 2"] = "Actualizar a Hubzilla 5.0. Paso 2"; App::$strings["To complete the update please run"] = "Para completar la actualización, ejecutar "; App::$strings["php util/z6convert.php"] = "php util/z6convert.php"; @@ -2178,7 +2066,6 @@ App::$strings["Thing updated"] = "Elemento actualizado."; App::$strings["Object store: failed"] = "Guardar objeto: ha fallado"; App::$strings["Thing added"] = "Elemento añadido"; App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s"; -App::$strings["Show Thing"] = "Mostrar elemento"; App::$strings["item not found."] = "elemento no encontrado."; App::$strings["Edit Thing"] = "Editar elemento"; App::$strings["Select a profile"] = "Seleccionar un perfil"; @@ -2261,8 +2148,6 @@ App::$strings["Content filter"] = "Filtro de contenidos"; App::$strings["Contact updated"] = "Contacto actualizado"; App::$strings["Contact update failed"] = "Fallo en la actualización del contacto"; App::$strings["Approve connection"] = "Aprobar esta conexión"; -App::$strings["Refresh succeeded"] = "Actualización con éxito"; -App::$strings["Refresh failed - channel is currently unavailable"] = "Error de actualización: el canal no está disponible en este momento"; App::$strings["Block status updated"] = "Estado del bloqueo actualizado"; App::$strings["Block failed"] = "Bloqueo fallido"; App::$strings["Ignore status updated"] = "Estado de ignorar actualizado"; @@ -2273,10 +2158,7 @@ App::$strings["Hide status updated"] = "Estado de ocultación actualizado"; App::$strings["Hide failed"] = "Ocultar falló"; App::$strings["Contact removed"] = "Contacto eliminado"; App::$strings["Delete failed"] = "Eliminar falló"; -App::$strings["Refresh Permissions"] = "Recargar los permisos"; -App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados"; -App::$strings["Refresh Photo"] = "Actualizar la foto"; -App::$strings["Fetch updated photo"] = "Obtener una foto actualizada"; +App::$strings["Refetch contact info"] = "Recuperar información de contacto"; App::$strings["Unblock"] = "Desbloquear"; App::$strings["Block"] = "Bloquear"; App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquear (o desbloquear) todas las comunicaciones con esta conexión"; @@ -2294,7 +2176,6 @@ App::$strings["Hide"] = "Ocultar"; App::$strings["Hide or Unhide this connection from your other connections"] = "Ocultar o mostrar esta conexión a sus otras conexiones"; App::$strings["This connection is hidden!"] = "¡Esta conexión está oculta!"; App::$strings["Delete this connection"] = "Eliminar esta conexión"; -App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos"; App::$strings["Items tagged with: %s"] = "elementos etiquetados con: %s"; App::$strings["Search results for: %s"] = "Resultados de la búsqueda para: %s"; App::$strings["Email address required"] = "Dirección de correo electrónico requerida"; @@ -2364,6 +2245,10 @@ App::$strings["Refresh failed - channel is currently unavailable."] = "Recarga f App::$strings["Unable to set address book parameters."] = "No ha sido posible establecer los parámetros de la libreta de direcciones."; App::$strings["Connection has been removed."] = "La conexión ha sido eliminada."; App::$strings["View %s's profile"] = "Ver el perfil de %s"; +App::$strings["Refresh Permissions"] = "Recargar los permisos"; +App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados"; +App::$strings["Refresh Photo"] = "Actualizar la foto"; +App::$strings["Fetch updated photo"] = "Obtener una foto actualizada"; App::$strings["View recent posts and comments"] = "Ver publicaciones y comentarios recientes"; App::$strings["Fetch Vcard"] = "Obtener una vcard"; App::$strings["Fetch electronic calling card for this connection"] = "Obtener una tarjeta de llamada electrónica para esta conexión"; @@ -2840,11 +2725,6 @@ App::$strings["permission denied"] = "permiso denegado"; App::$strings["recipient not found"] = "destinatario no encontrado"; App::$strings["Delivery report for %1\$s"] = "Informe de entrega para %1\$s"; App::$strings["Redeliver"] = "Volver a enviar"; -App::$strings["Poke somebody"] = "Dar un toque a alguien"; -App::$strings["Poke or ping somebody"] = "Dar un toque o hacer ping a alguien"; -App::$strings["Recipient"] = "Destinatario"; -App::$strings["Choose action"] = "Elegir una acción"; -App::$strings["Make this post private"] = "Convertir en privado este envío"; App::$strings["Away"] = "Ausente"; App::$strings["Online"] = "Conectado/a"; App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %3\$s de %2\$s"; @@ -2956,6 +2836,7 @@ App::$strings["Additional federated transport protocols:"] = "Protocolos adicion App::$strings["Version %s"] = "Versión %s"; App::$strings["Project homepage"] = "Página principal del proyecto"; App::$strings["Developer homepage"] = "Página principal del desarrollador"; +App::$strings["Blocked sites"] = "Sitios bloqueados"; App::$strings["Item not available."] = "Elemento no disponible"; App::$strings["No content available for year"] = "No hay contenido disponible para el año"; App::$strings["Export Channel"] = "Exportar el canal"; @@ -2979,9 +2860,7 @@ App::$strings["Invalid request."] = "Solicitud incorrecta."; App::$strings["thing"] = "elemento"; App::$strings["Channel unavailable."] = "Canal no disponible."; App::$strings["Previous action reversed."] = "Acción anterior revocada."; -App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s está de acuerdo"; -App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no está de acuerdo"; -App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s se abstiene"; +App::$strings["profile"] = "perfil"; App::$strings["Action completed."] = "Acción completada."; App::$strings["Thank you."] = "Gracias."; App::$strings["Block Name"] = "Nombre del bloque"; @@ -3061,9 +2940,12 @@ App::$strings["or select an existing one (doubleclick)"] = "o seleccionar un ál App::$strings["Add a Tag"] = "Añadir una etiqueta"; App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com"; App::$strings["Flag as adult in album view"] = "Marcar como \"solo para adultos\" en el álbum"; +App::$strings["View all"] = "Ver todo"; App::$strings["Photo Tools"] = "Gestión de las fotos"; App::$strings["In This Photo:"] = "En esta foto:"; App::$strings["Map"] = "Mapa"; +App::$strings["__ctx:noun__ Likes"] = "Me gusta"; +App::$strings["__ctx:noun__ Dislikes"] = "No me gusta"; App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página."; App::$strings["Posts and comments"] = "Publicaciones y comentarios"; App::$strings["Only posts"] = "Solo publicaciones"; @@ -3280,6 +3162,10 @@ App::$strings["PHP upload limits"] = "Límites PHP de subida"; App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado."; App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"."; App::$strings["Generate encryption keys"] = "Generar claves de cifrado"; +App::$strings["Error: the sodium encryption library is not installed."] = "Error: la biblioteca de encriptación sodium no está instalada."; +App::$strings["Generate ed25519 encryption keys"] = "Generar claves de cifrado ed25519"; +App::$strings["Error: one of \"bcmath\" or \"gmp\" (bigmath library) extensions are required."] = "Error: se requiere una de las extensiones \"bcmath\" o \"gmp\" (bigmath library)."; +App::$strings["Bigmath library (either bcmath or gmp)"] = "Biblioteca Bigmath (bcmath o gmp)"; App::$strings["libCurl PHP module"] = "módulo libCurl PHP"; App::$strings["GD graphics PHP module"] = "módulo PHP GD graphics"; App::$strings["OpenSSL PHP module"] = "módulo PHP OpenSSL"; @@ -3287,6 +3173,7 @@ App::$strings["PDO database PHP module"] = "Módulo PHP de la base de datos PDO App::$strings["mb_string PHP module"] = "módulo PHP mb_string"; App::$strings["xml PHP module"] = "módulo PHP xml"; App::$strings["zip PHP module"] = "Módulo zip PHP"; +App::$strings["intl PHP module"] = "módulo intl PHP"; App::$strings["Apache mod_rewrite module"] = "módulo Apache mod_rewrite "; App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado."; App::$strings["exec"] = "ejecutable"; @@ -3301,6 +3188,7 @@ App::$strings["Error: PDO database PHP module required but not installed."] = "E App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el módulo PHP mb_string es necesario, pero no está instalado."; App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el módulo PHP xml es necesario para DAV, pero no está instalado."; App::$strings["Error: zip PHP module required but not installed."] = "Error: se requiere el módulo zip PHP pero no está instalado."; +App::$strings["Error: intl PHP module required but not installed."] = "Error: el módulo intl PHP es necesario pero no está instalado."; App::$strings[".htconfig.php is writable"] = ".htconfig.php tiene permisos de escritura"; App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor."; App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos."; -- cgit v1.2.3 From a56d727c2665a80965a1f331bc6423f314d79f6e Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 5 Apr 2024 10:40:16 +0000 Subject: allow to kick off sync process in case it did not start at all. requires import host to be set manually in pconfig for now. --- Zotlabs/Module/Import_progress.php | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/Zotlabs/Module/Import_progress.php b/Zotlabs/Module/Import_progress.php index 5c68f9ff1..d9b13e8a8 100644 --- a/Zotlabs/Module/Import_progress.php +++ b/Zotlabs/Module/Import_progress.php @@ -1,6 +1,7 @@ Date: Fri, 5 Apr 2024 11:09:15 +0000 Subject: minor refactor and store import host for possible later use --- Zotlabs/Module/Import.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php index e8968c6bd..24b7498dd 100644 --- a/Zotlabs/Module/Import.php +++ b/Zotlabs/Module/Import.php @@ -525,14 +525,21 @@ class Import extends Controller { // This will indirectly perform a refresh_all *and* update the directory Master::Summon(['Directory', $channel['channel_id']]); - $cf_api_compat = true; + if ($api_path) { + $parsed = parse_url($api_path); + unset($parsed['path']); - if ($api_path && $import_posts) { // we are importing from a server and not a file - if (version_compare($data['compatibility']['version'], '6.3.4', '>=')) { + // store the import host so we can manually kick off item/file sync later in case anything did not work out + set_pconfig($channel['channel_id'], 'import', 'host', $parsed['host']); + + $hz_server = unparse_url($parsed); + } - $m = parse_url($api_path); + $cf_api_compat = false; - $hz_server = $m['scheme'] . '://' . $m['host']; + if ($api_path && $hz_server && $import_posts) { // we are importing from a server and not a file + if (version_compare($data['compatibility']['version'], '6.3.4', '>=')) { + $cf_api_compat = true; $since = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), '0001-01-01 00:00'); $until = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), 'now + 1 day'); @@ -543,9 +550,6 @@ class Import extends Controller { Master::Summon(['Content_importer', sprintf('%d', $page), $since, $until, $channel['channel_address'], urlencode($hz_server)]); Master::Summon(['File_importer', sprintf('%d', $page), $channel['channel_address'], urlencode($hz_server)]); } - else { - $cf_api_compat = false; - } } change_channel($channel['channel_id']); -- cgit v1.2.3 From 7de629a8c325a02a62e43b3ad357feaac844564a Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 5 Apr 2024 12:56:51 +0000 Subject: update siteinfo --- Zotlabs/Module/Siteinfo.php | 4 ++-- view/tpl/siteinfo.tpl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Zotlabs/Module/Siteinfo.php b/Zotlabs/Module/Siteinfo.php index df6a334d8..3cad64a13 100644 --- a/Zotlabs/Module/Siteinfo.php +++ b/Zotlabs/Module/Siteinfo.php @@ -29,8 +29,8 @@ class Siteinfo extends \Zotlabs\Web\Controller { '$terms' => t('Terms of Service'), '$prj_header' => t('Software and Project information'), '$prj_name' => t('This site is powered by $Projectname'), - '$prj_transport' => t('Federated and decentralised networking and identity services provided by Zot'), - '$transport_link' => 'https://zotlabs.org', + '$prj_transport' => t('Federated and decentralised networking and identity services provided by'), + '$transport_link' => 'https://hubzilla.org', '$additional_text' => t('Additional federated transport protocols:'), '$additional_fed' => implode(', ', $federated), diff --git a/view/tpl/siteinfo.tpl b/view/tpl/siteinfo.tpl index 6cf7da756..08e4790f2 100644 --- a/view/tpl/siteinfo.tpl +++ b/view/tpl/siteinfo.tpl @@ -55,7 +55,7 @@
{{$prj_src}}


-
{{$prj_transport}} ({{$transport_link}})
+
{{$prj_transport}} {{$transport_link}}
{{if $additional_fed}}
{{$additional_text}} {{$additional_fed}}
-- cgit v1.2.3 From 1ca91c49aaa8565f9d97e2e354fa6851179ca4d8 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 17 Apr 2024 07:36:49 +0000 Subject: add some docu --- include/connections.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/connections.php b/include/connections.php index e5cc90411..efc531171 100644 --- a/include/connections.php +++ b/include/connections.php @@ -68,6 +68,14 @@ function rconnect_url($channel_id,$xchan) { } +/** + * @brief returns deliverable xchans for a channel. + * + * @param intval $channel_id + * @param array $filter (optional) + * @param boolean $flatten (optional) + */ + function deliverable_abook_xchans($channel_id, $filter = [], $flatten = true) { $filter_sql = ''; -- cgit v1.2.3 From 716013633ecb09b1c8fd950275f0cbf272b1fe43 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 17 Apr 2024 07:39:22 +0000 Subject: passing an empty filter to deliverable_abook_xchans() will return all deliverable abook xchans - we do not want this in this place. also add some docu --- include/items.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/include/items.php b/include/items.php index efc45db38..2300f70ef 100644 --- a/include/items.php +++ b/include/items.php @@ -36,10 +36,10 @@ require_once('include/permissions.php'); * @param boolean $include_groups * @return array containing the recipients */ -function collect_recipients($item, &$private_envelope,$include_groups = true) { +function collect_recipients($item, &$private_envelope, $include_groups = true) { $private_envelope = ((intval($item['item_private'])) ? true : false); - $recipients = array(); + $recipients = []; if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid']) { @@ -54,8 +54,15 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) { $allow_groups = []; } - $raw_recipients = array_unique(array_merge($allow_people, $allow_groups)); - $recipients = deliverable_abook_xchans($item['uid'], $raw_recipients); + $recipients = array_unique(array_merge($allow_people, $allow_groups)); + + if ($recipients) { + // deliverable_abook_xchans() will return all deliverable xchans + // if passed an empty array as 2nd argument (no filtering). + // Hence only call it if we do actually have any recipients. + $recipients = deliverable_abook_xchans($item['uid'], $recipients); + } + // if you specifically deny somebody but haven't allowed anybody, we'll allow everybody in your // address book minus the denied connections. The post is still private and can't be seen publicly @@ -201,6 +208,8 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) { $recipients[] = $item['owner_xchan']; } +hz_syslog(print_r($recipients, true)); + return $recipients; } -- cgit v1.2.3 From 2e15207d0bdbe147f9d1f21030f4c36b02c3dedf Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 17 Apr 2024 07:45:20 +0000 Subject: fix spacing issues in mod wall_attach and make save_chunk() deal with userfile and file array keys --- Zotlabs/Module/Wall_attach.php | 14 +++++++------- include/api_zot.php | 3 ++- include/attach.php | 14 ++++++++++---- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Zotlabs/Module/Wall_attach.php b/Zotlabs/Module/Wall_attach.php index 0d5c9e983..3c57d4b94 100644 --- a/Zotlabs/Module/Wall_attach.php +++ b/Zotlabs/Module/Wall_attach.php @@ -104,32 +104,32 @@ class Wall_attach extends \Zotlabs\Web\Controller { } if(intval($r['data']['is_photo'])) { - $s = "\n\n" . $r['body'] . "\n\n"; + $s = $r['body']; } else { - if(strpos($r['data']['filetype'],'video') === 0) { + if(strpos($r['data']['filetype'], 'video') === 0) { // give a wee bit of time for the background thumbnail processor to do its thing // or else we'll never see a video poster sleep(3); $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path']; $thumb = Linkinfo::get_video_poster($url); if($thumb) { - $s = "\n\n" . '[zvideo poster=\'' . $thumb . '\']' . $url . '[/zvideo]' . "\n\n"; + $s = '[zvideo poster=\'' . $thumb . '\']' . $url . '[/zvideo]'; } else { - $s = "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n"; + $s = '[zvideo]' . $url . '[/zvideo]'; } } if(strpos($r['data']['filetype'],'audio') === 0) { $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path']; - $s = "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n"; + $s = '[zaudio]' . $url . '[/zaudio]'; } if ($r['data']['filetype'] === 'image/svg+xml') { $x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); if ($x) { $bb = svg2bb($x); if ($bb) { - $s .= "\n\n" . $bb; + $s .= $bb; } else { logger('empty return from svgbb'); @@ -140,7 +140,7 @@ class Wall_attach extends \Zotlabs\Web\Controller { } } - $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; + $s .= '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]'; } $sync = attach_export_data($channel,$r['data']['hash']); diff --git a/include/api_zot.php b/include/api_zot.php index 22692b962..56cec005d 100644 --- a/include/api_zot.php +++ b/include/api_zot.php @@ -546,6 +546,7 @@ return false; } + logger('api_red_item_store: REQUEST ' . print_r($_REQUEST,true)); logger('api_red_item_store: FILES ' . print_r($_FILES,true)); @@ -561,7 +562,7 @@ $mod = new Zotlabs\Module\Wall_attach(); $media = $mod->post(); if($media) - $_REQUEST['body'] = $media . "\n\n" . $_REQUEST['body']; + $_REQUEST['body'] = $media . "\n" . $_REQUEST['body']; } $mod = new Zotlabs\Module\Item(); diff --git a/include/attach.php b/include/attach.php index efefc73a4..2283da1c6 100644 --- a/include/attach.php +++ b/include/attach.php @@ -2982,11 +2982,17 @@ function save_chunk($channel,$start,$end,$len) { $result = []; - $tmp_path = $_FILES['files']['tmp_name']; + $file = $_FILES['files'] ?? $_FILES['userfile'] ?? []; + + if (!$file) { + return $result; + } + + $tmp_path = $file['tmp_name']; $new_base = 'store/[data]/' . $channel['channel_address'] . '/tmp'; os_mkdir($new_base,STORAGE_DEFAULT_PERMISSIONS,true); - $new_path = $new_base . '/' . $_FILES['files']['name']; + $new_path = $new_base . '/' . $file['name']; if(file_exists($new_path) && intval($start) === 0) { $result['partial'] = true; @@ -3008,8 +3014,8 @@ function save_chunk($channel,$start,$end,$len) { } if(($len - 1) == $end) { unlink($tmp_path); - $result['name'] = $_FILES['files']['name']; - $result['type'] = $_FILES['files']['type']; + $result['name'] = $file['name']; + $result['type'] = $file['type']; $result['tmp_name'] = $new_path; $result['error'] = 0; $result['size'] = $len; -- cgit v1.2.3 From 3b812f25703a496c91fb92409db173b38d4cc115 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 17 Apr 2024 10:00:40 +0000 Subject: comment out deprecated way to find forum items and do not count announce activities --- Zotlabs/Module/Sse_bs.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Module/Sse_bs.php b/Zotlabs/Module/Sse_bs.php index a18301a1a..09c4ed614 100644 --- a/Zotlabs/Module/Sse_bs.php +++ b/Zotlabs/Module/Sse_bs.php @@ -590,6 +590,7 @@ class Sse_bs extends Controller { if($forums) { $item_normal = item_normal(); + $p_sql = ''; $sql_extra = ''; if(! (self::$vnotify & VNOTIFY_LIKE)) @@ -599,6 +600,7 @@ class Sse_bs extends Controller { $i = 0; for($x = 0; $x < $fcount; $x ++) { + /* $p = q("SELECT oid AS parent FROM term WHERE uid = %d AND ttype = %d AND term = '%s'", intval(self::$uid), intval(TERM_FORUM), @@ -607,14 +609,16 @@ class Sse_bs extends Controller { $p_str = ids_to_querystr($p, 'parent'); $p_sql = (($p_str) ? "OR parent IN ( $p_str )" : ''); + */ $r = q("select count(*) as total from item - where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and item_unseen = 1 $sql_extra $item_normal", + where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and verb != 'Announce' and item_unseen = 1 $sql_extra $item_normal", intval(self::$uid), dbesc($forums[$x]['xchan_hash']), dbesc($forums[$x]['xchan_hash']) ); + if($r[0]['total']) { $forums[$x]['notify_link'] = z_root() . '/network/?f=&pf=1&unseen=1&cid=' . $forums[$x]['abook_id']; -- cgit v1.2.3 From 26c1fa07c912547f7d55c19f34aad0912e5f3f29 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Thu, 18 Apr 2024 09:55:42 +0000 Subject: Reduce some global state and add some docs --- Zotlabs/Module/Setup.php | 6 ++--- Zotlabs/Web/Controller.php | 56 +++++++++++++++++++++++++++++++++++++++++----- Zotlabs/Web/Router.php | 33 ++++++++++++++------------- Zotlabs/Web/WebServer.php | 12 +++++----- boot.php | 18 ++++++++++++--- 5 files changed, 92 insertions(+), 33 deletions(-) diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index 74b10de25..65d4ec471 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -1,5 +1,4 @@ controller = new $modname; - App::$module_loaded = true; + $this->module_loaded = true; } } } @@ -70,15 +71,15 @@ class Router { // legacy plugins - this can be removed when they have all been converted - if(! (App::$module_loaded)) { + if(! ($this->module_loaded)) { if(is_array(App::$plugins) && in_array($module, App::$plugins) && file_exists("addon/{$module}/{$module}.php")) { include_once("addon/{$module}/{$module}.php"); if(class_exists($modname)) { $this->controller = new $modname; - App::$module_loaded = true; + $this->module_loaded = true; } elseif(function_exists($module . '_module')) { - App::$module_loaded = true; + $this->module_loaded = true; } } } @@ -88,40 +89,40 @@ class Router { * Otherwise, look for the standard program module */ - if(! (App::$module_loaded)) { + if(! ($this->module_loaded)) { try { $filename = 'Zotlabs/SiteModule/'. ucfirst($module). '.php'; if(file_exists($filename)) { // This won't be picked up by the autoloader, so load it explicitly require_once($filename); $this->controller = new $modname; - App::$module_loaded = true; + $this->module_loaded = true; } else { $filename = 'Zotlabs/Module/'. ucfirst($module). '.php'; if(file_exists($filename)) { $this->controller = new $modname; - App::$module_loaded = true; + $this->module_loaded = true; } } - if(! App::$module_loaded) + if(! $this->module_loaded) throw new Exception('Module not found'); } catch(Exception $e) { if(file_exists("mod/site/{$module}.php")) { include_once("mod/site/{$module}.php"); - App::$module_loaded = true; + $this->module_loaded = true; } elseif(file_exists("mod/{$module}.php")) { include_once("mod/{$module}.php"); - App::$module_loaded = true; + $this->module_loaded = true; } } } $x = [ 'module' => $module, - 'installed' => App::$module_loaded, + 'installed' => $this->module_loaded, 'controller' => $this->controller ]; /** @@ -138,7 +139,7 @@ class Router { */ call_hooks('module_loaded', $x); if($x['installed']) { - App::$module_loaded = true; + $this->module_loaded = true; $this->controller = $x['controller']; } @@ -146,7 +147,7 @@ class Router { * The URL provided does not resolve to a valid module. */ - if(! (App::$module_loaded)) { + if(! ($this->module_loaded)) { // undo the setting of a letsencrypt acme-challenge rewrite rule // which blocks access to our .well-known routes. @@ -162,7 +163,7 @@ class Router { $x = [ 'module' => $module, - 'installed' => App::$module_loaded, + 'installed' => $this->module_loaded, 'controller' => $this->controller ]; call_hooks('page_not_found',$x); @@ -189,7 +190,7 @@ class Router { // pretend this is a module so it will initialise the theme App::$module = '404'; - App::$module_loaded = true; + $this->module_loaded = true; App::$error = true; } } @@ -205,7 +206,7 @@ class Router { * Call module functions */ - if(App::$module_loaded) { + if($this->module_loaded) { App::$page['page_title'] = App::$module; $placeholder = ''; diff --git a/Zotlabs/Web/WebServer.php b/Zotlabs/Web/WebServer.php index f43ae10a4..6f8a4b956 100644 --- a/Zotlabs/Web/WebServer.php +++ b/Zotlabs/Web/WebServer.php @@ -13,11 +13,11 @@ class WebServer { require_once('boot.php'); - sys_boot(); + $installed = sys_boot(); \App::$language = get_best_language(); - load_translation_table(\App::$language,\App::$install); + load_translation_table(\App::$language, !$installed); /** @@ -56,7 +56,7 @@ class WebServer { load_translation_table(\App::$language); } - if((x($_GET,'zid')) && (! \App::$install)) { + if (x($_GET,'zid') && $installed) { \App::$query_string = strip_zids(\App::$query_string); if(! local_channel()) { if (!isset($_SESSION['my_address']) || $_SESSION['my_address'] != $_GET['zid']) { @@ -69,14 +69,14 @@ class WebServer { } } - if((x($_GET,'zat')) && (! \App::$install)) { + if (x($_GET,'zat') && $installed) { \App::$query_string = strip_zats(\App::$query_string); if(! local_channel()) { zat_init(); } } - if((x($_REQUEST,'owt')) && (! \App::$install)) { + if (x($_REQUEST,'owt') && $installed) { $token = $_REQUEST['owt']; \App::$query_string = strip_query_param(\App::$query_string,'owt'); owt_init($token); @@ -85,7 +85,7 @@ class WebServer { if((x($_SESSION, 'authenticated')) || (x($_POST, 'auth-params')) || (\App::$module === 'login')) require('include/auth.php'); - if(\App::$install) { + if (!$installed) { /* Allow an exception for the view module so that pcss will be interpreted during installation */ if(\App::$module != 'view') \App::$module = 'setup'; diff --git a/boot.php b/boot.php index dcdcdda01..862079276 100644 --- a/boot.php +++ b/boot.php @@ -602,8 +602,19 @@ define('DBTYPE_MYSQL', 0); define('DBTYPE_POSTGRES', 1); -function sys_boot() { - +/** + * Boot the app. + * + * Detects if the system is installed, and if it is, reads the basic configuration + * in `.htconfig`, conects to the database, and loads the system configuration stored + * in the db. + * + * As a side effect it also sets the App::$install flag to true if the system is _not_ + * installed yet. + * + * @return True if the system is installed, false otherwise. + */ +function sys_boot(): bool { // our central App object @@ -686,6 +697,8 @@ function sys_boot() { */ call_hooks('init_1'); } + + return !App::$install; } @@ -766,7 +779,6 @@ class App { public static $langsave; public static $rtl = false; public static $plugins_admin; - public static $module_loaded = false; public static $query_string; public static $page; public static $profile; -- cgit v1.2.3 From 80e124f53e00088dc6f9a3d77623740d039b0c87 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 20 Apr 2024 18:57:37 +0000 Subject: remove logging --- include/items.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/items.php b/include/items.php index 2300f70ef..dc9e9a7d9 100644 --- a/include/items.php +++ b/include/items.php @@ -208,8 +208,6 @@ function collect_recipients($item, &$private_envelope, $include_groups = true) { $recipients[] = $item['owner_xchan']; } -hz_syslog(print_r($recipients, true)); - return $recipients; } -- cgit v1.2.3 From 1c92c7476ba0952afd3d88a22ee7756ea3f6e25b Mon Sep 17 00:00:00 2001 From: "mjfriaza:4GF~eYj,-iAv" Date: Sun, 28 Apr 2024 16:18:29 +0200 Subject: Fix some errors in Spanish strings (cherry picked from commit 60cd7cc8d09240e1a3f7f7b3bde75115a61ce4de) --- view/es-es/hmessages.po | 16 ++++++++-------- view/es-es/hstrings.php | 19 +++++++++---------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po index 38fa42fda..20afa3ffc 100644 --- a/view/es-es/hmessages.po +++ b/view/es-es/hmessages.po @@ -635,7 +635,7 @@ msgstr "Visible para conexiones específicas." #: ../../Zotlabs/Module/Share.php:118 #, php-format msgid "🔁 Repeated %1$s's %2$s" -msgstr "🔁 Repetidos %2$sde %1$s" +msgstr "🔁 Repitió %2$sde %1$s" #: ../../include/items.php:3843 ../../addon/flashcards/Mod_Flashcards.php:291 #: ../../addon/flashcards/Mod_Flashcards.php:292 @@ -2275,12 +2275,12 @@ msgstr "no gusta de %2$s de %1$s" #: ../../include/conversation.php:203 #, php-format msgid "%1$s repeated %2$s's %3$s" -msgstr "%1$scompartió %3$sde %2$s" +msgstr "%1$s repitió %3$sde %2$s" #: ../../include/conversation.php:204 #, php-format msgid "repeated %1$s's %2$s" -msgstr "compartió %2$s de %1$s" +msgstr "repitió %2$s de %1$s" #: ../../include/conversation.php:332 ../../Zotlabs/Lib/ThreadItem.php:532 msgid "This is an unsaved preview" @@ -2317,7 +2317,7 @@ msgstr "Quizá participe" #: ../../include/conversation.php:470 msgctxt "title" msgid "Repeats" -msgstr "Se repite" +msgstr "Repite" #: ../../include/conversation.php:539 msgid "Select" @@ -2757,7 +2757,7 @@ msgid "Repeat" msgid_plural "Repeats" msgstr[0] "Se repite" msgstr[1] "Se repite" -msgstr[2] "Se repite" +msgstr[2] "Repite" #: ../../include/conversation.php:1556 ../../Zotlabs/Module/Photos.php:1134 msgctxt "noun" @@ -6853,7 +6853,7 @@ msgstr "no ha gustado de " #: ../../Zotlabs/Lib/Enotify.php:167 msgid "repeated" -msgstr "repetido / compartido" +msgstr "repitió" #: ../../Zotlabs/Lib/Enotify.php:172 msgid "voted on" @@ -7391,11 +7391,11 @@ msgstr "compartir" #: ../../Zotlabs/Lib/ThreadItem.php:345 msgid "Repeat" -msgstr "Se repite" +msgstr "Repetir" #: ../../Zotlabs/Lib/ThreadItem.php:345 msgid "repeat" -msgstr "Se repite" +msgstr "repetir" #: ../../Zotlabs/Lib/ThreadItem.php:356 msgid "Delivery Report" diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php index 6957ee3b7..31f5de315 100644 --- a/view/es-es/hstrings.php +++ b/view/es-es/hstrings.php @@ -2,8 +2,7 @@ if(! function_exists("string_plural_select_es_es")) { function string_plural_select_es_es($n){ - return ($n != 1 ? 1 : 0); -}} + return ($n != 1 ? 1 : 0)}} App::$rtl = 0; App::$strings["plural_function_code"] = "(n != 1 ? 1 : 0)"; App::$strings["Source channel not found."] = "No se ha encontrado el canal de origen."; @@ -87,7 +86,7 @@ App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s."; App::$strings["Visible to all connections."] = "Visible para todas las conexiones."; App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas."; App::$strings["Visible to specific connections."] = "Visible para conexiones específicas."; -App::$strings["🔁 Repeated %1\$s's %2\$s"] = "🔁 Repetidos %2\$sde %1\$s"; +App::$strings["🔁 Repeated %1\$s's %2\$s"] = "🔁 Repitió %2\$sde %1\$s"; App::$strings["Item not found."] = "Elemento no encontrado."; App::$strings["Permission denied."] = "Acceso denegado."; App::$strings["Privacy group not found."] = "Grupo de canales no encontrado."; @@ -468,15 +467,15 @@ App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; App::$strings["likes %1\$s's %2\$s"] = "gusta de %2\$s de %1\$s"; App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; App::$strings["doesn't like %1\$s's %2\$s"] = "no gusta de %2\$s de %1\$s"; -App::$strings["%1\$s repeated %2\$s's %3\$s"] = "%1\$scompartió %3\$sde %2\$s"; -App::$strings["repeated %1\$s's %2\$s"] = "compartió %2\$s de %1\$s"; +App::$strings["%1\$s repeated %2\$s's %3\$s"] = "%1\$s repitió %3\$sde %2\$s"; +App::$strings["repeated %1\$s's %2\$s"] = "repitió %2\$s de %1\$s"; App::$strings["This is an unsaved preview"] = "Esta es una previsualización sin guardar"; App::$strings["__ctx:title__ Likes"] = "Me gusta"; App::$strings["__ctx:title__ Dislikes"] = "No me gusta"; App::$strings["__ctx:title__ Attending"] = "Participaré"; App::$strings["__ctx:title__ Not attending"] = "No participaré"; App::$strings["__ctx:title__ Might attend"] = "Quizá participe"; -App::$strings["__ctx:title__ Repeats"] = "Se repite"; +App::$strings["__ctx:title__ Repeats"] = "Repite"; App::$strings["Select"] = "Seleccionar"; App::$strings["Delete"] = "Eliminar"; App::$strings["Toggle Star Status"] = "Activar o desactivar el estado de entrada preferida"; @@ -574,7 +573,7 @@ App::$strings["Encrypt text"] = "Cifrar texto"; App::$strings["__ctx:noun__ Repeat"] = array( 0 => "Se repite", 1 => "Se repite", - 2 => "Se repite", + 2 => "Repite", ); App::$strings["__ctx:noun__ Dislike"] = array( 0 => "No me gusta", @@ -1529,7 +1528,7 @@ App::$strings["requested to like"] = "solicita que se permita mostrar agrado "; App::$strings["liked"] = "ha gustado de "; App::$strings["requested to dislike"] = "solicita que se permita mostrar desagrado "; App::$strings["disliked"] = "no ha gustado de "; -App::$strings["repeated"] = "repetido / compartido"; +App::$strings["repeated"] = "repitió"; App::$strings["voted on"] = "votado en "; App::$strings["%1\$s %2\$s [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s%2\$s [zrl=%3\$s ]un %4\$s[/zrl]"; App::$strings["%1\$s %2\$s [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s %2\$s[zrl=%3\$s]%5\$s de %4\$s[/zrl]"; @@ -1651,8 +1650,8 @@ App::$strings["Reply on this comment"] = "Responder a este comentario"; App::$strings["reply"] = "responder"; App::$strings["Reply to"] = "Responder a "; App::$strings["share"] = "compartir"; -App::$strings["Repeat"] = "Se repite"; -App::$strings["repeat"] = "Se repite"; +App::$strings["Repeat"] = "Repetir"; +App::$strings["repeat"] = "repetir"; App::$strings["Delivery Report"] = "Informe de transmisión"; App::$strings["%d comment"] = array( 0 => "%d comentario", -- cgit v1.2.3 From 7c34a3676d294c9a1acc69f71ab3061074509160 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Tue, 30 Apr 2024 06:59:19 +0000 Subject: Rework Help module + begin tests for Setup module --- Zotlabs/Lib/Traits/HelpHelper.php | 68 ++ Zotlabs/Module/Help.php | 191 +++- Zotlabs/Widget/Helpindex.php | 63 +- doc/AdvancedSearch.md | 53 - doc/Comparison-of-activity-stream-networks.md | 23 - doc/Creating-Templates.md | 93 -- doc/DerivedTheme1.md | 101 -- doc/Developers.md | 54 - doc/Features.md | 108 -- doc/Hubzilla_on_OpenShift.bb | 105 -- doc/Plugins.md | 263 ----- doc/Primary-Directory.md | 47 - doc/Remove-Account.md | 26 - doc/Schema-development.md | 81 -- doc/TermsOfService.md | 11 - doc/Translations.md | 93 -- doc/Widgets.md | 174 ---- doc/Zot---A-High-Level-Overview.md | 109 -- doc/about/about.bb | 204 ---- doc/about/about_hub.bb | 7 - doc/about/project.bb | 186 ---- doc/accounts_profiles_channels_basics.bb | 19 - doc/acl_dialog_post.html | 16 - doc/addons.bb | 117 --- doc/addons_gnusocial.bb | 65 -- doc/admin/administrator_guide.md | 464 --------- doc/admin/hub_snapshots.md | 127 --- doc/admin/zarlog_msgs.md | 112 -- doc/admins.bb | 15 - doc/api/api_albums.md | 66 -- doc/api/api_filedata.md | 66 -- doc/api/api_files.md | 103 -- doc/api/api_functions.bb | 133 --- doc/api/api_group_members.md | 133 --- doc/api/api_item_update.md | 225 ----- doc/api/api_posting.bb | 24 - doc/api/api_xchan.md | 44 - doc/api/group.md | 41 - doc/api/statuses_update.bb | 23 - doc/bugs.bb | 32 - doc/campaign.bb | 237 ----- doc/checking_account_quota_usage.bb | 20 - doc/comanche.bb | 261 ----- doc/context/de/admin/logs/help.html | 8 - doc/context/de/admin/queue/help.html | 4 - doc/context/de/admin/security/help.html | 4 - doc/context/de/appman/help.html | 4 - doc/context/de/apps/edit/help.html | 4 - doc/context/de/apps/help.html | 6 - doc/context/de/channel/help.html | 8 - doc/context/de/chat/help.html | 8 - doc/context/de/cloud/help.html | 6 - doc/context/de/connections/help.html | 8 - doc/context/de/connections/ifpending/help.html | 8 - doc/context/de/events/help.html | 8 - doc/context/de/mail/help.html | 12 - doc/context/de/network/help.html | 10 - doc/context/de/photos/help.html | 6 - doc/context/de/profile/help.html | 6 - doc/context/de/register/help.html | 12 - doc/context/de/settings/account/help.html | 19 - doc/context/de/settings/channel/help.html | 19 - doc/context/de/settings/features/help.html | 12 - doc/context/de/settings/tokens/help.html | 20 - doc/context/de/wiki/help.html | 10 - .../en/admin/addons/assets/addon_repo_gui_1.png | Bin 16983 -> 0 bytes doc/context/en/admin/addons/help.html | 14 - doc/context/en/admin/logs/help.html | 8 - doc/context/en/admin/queue/help.html | 4 - doc/context/en/admin/security/help.html | 4 - doc/context/en/appman/help.html | 4 - doc/context/en/apps/edit/help.html | 4 - doc/context/en/apps/help.html | 6 - doc/context/en/cards/help.html | 20 - doc/context/en/channel/help.html | 6 - doc/context/en/chat/help.html | 8 - doc/context/en/cloud/help.html | 6 - doc/context/en/connections/help.html | 8 - doc/context/en/connections/ifpending/help.html | 8 - doc/context/en/connedit/help.html | 12 - doc/context/en/events/help.html | 8 - doc/context/en/mail/help.html | 10 - doc/context/en/network/help.html | 10 - doc/context/en/photos/help.html | 6 - doc/context/en/profile/help.html | 6 - doc/context/en/profiles/help.html | 35 - doc/context/en/register/help.html | 12 - doc/context/en/settings/account/help.html | 35 - doc/context/en/settings/channel/help.html | 35 - doc/context/en/settings/features/help.html | 12 - doc/context/en/settings/tokens/help.html | 23 - doc/context/en/webpages/help.html | 8 - doc/context/en/wiki/help.html | 10 - doc/context/es | 1 - .../es-es/admin/addons/assets/addon_repo_gui_1.png | Bin 16983 -> 0 bytes doc/context/es-es/admin/addons/help.html | 14 - doc/context/es-es/admin/logs/help.html | 9 - doc/context/es-es/admin/queue/help.html | 4 - doc/context/es-es/admin/security/help.html | 4 - doc/context/es-es/appman/help.html | 4 - doc/context/es-es/apps/edit/help.html | 4 - doc/context/es-es/apps/help.html | 6 - doc/context/es-es/articles/help.html | 20 - doc/context/es-es/cards/help.html | 19 - doc/context/es-es/channel/help.html | 8 - doc/context/es-es/chat/help.html | 8 - doc/context/es-es/cloud/help.html | 6 - doc/context/es-es/connections/help.html | 15 - doc/context/es-es/connections/ifpending/help.html | 15 - doc/context/es-es/connedit/help.html | 12 - doc/context/es-es/events/help.html | 8 - doc/context/es-es/mail/help.html | 10 - doc/context/es-es/network/help.html | 12 - doc/context/es-es/photos/help.html | 6 - doc/context/es-es/profile/help.html | 6 - doc/context/es-es/profiles/help.html | 35 - doc/context/es-es/settings/account/help.html | 35 - doc/context/es-es/settings/channel/help.html | 35 - doc/context/es-es/settings/features/help.html | 12 - doc/context/es-es/settings/tokens/help.html | 23 - doc/context/es-es/webpages/help.html | 8 - doc/context/es-es/wiki/help.html | 10 - doc/context/fr/admin/logs/help.html | 8 - doc/context/fr/admin/queue/help.html | 4 - doc/context/fr/appman/help.html | 5 - doc/context/fr/apps/edit/index.html | 4 - doc/context/fr/apps/help.html | 7 - doc/context/fr/cards/help.html | 20 - doc/context/fr/channel/help.html | 6 - doc/context/fr/chat/help.html | 8 - doc/context/fr/cloud/help.html | 7 - doc/context/fr/connections/help.html | 8 - doc/context/fr/connections/ifpending/help.html | 8 - doc/context/fr/connedit/help.html | 13 - doc/context/fr/events/help.html | 8 - doc/context/fr/mail/help.html | 10 - doc/context/fr/photos/help.html | 6 - doc/context/fr/profile/help.html | 6 - doc/context/fr/settings/account/help.html | 18 - doc/context/fr/settings/channel/help.html | 18 - doc/context/fr/settings/features/help.html | 12 - doc/context/fr/settings/tokens | 20 - doc/context/fr/webpages/help.html | 8 - doc/context/fr/wiki/help.html | 13 - doc/context/it/wiki/help.html | 10 - .../pl/admin/addons/assets/addon_repo_gui_1.png | Bin 16983 -> 0 bytes doc/context/pl/admin/addons/help.html | 14 - doc/context/pl/admin/logs/help.html | 20 - doc/context/pl/admin/queue/help.html | 7 - doc/context/pl/admin/security/help.html | 8 - doc/context/pl/appman/help.html | 10 - doc/context/pl/apps/edit/help.html | 7 - doc/context/pl/apps/help.html | 15 - doc/context/pl/cards/help.html | 31 - doc/context/pl/channel/help.html | 13 - doc/context/pl/chat/help.html | 19 - doc/context/pl/cloud/help.html | 17 - doc/context/pl/connections/help.html | 24 - doc/context/pl/connections/ifpending/help.html | 24 - doc/context/pl/connedit/help.html | 44 - doc/context/pl/events/help.html | 18 - doc/context/pl/mail/help.html | 25 - doc/context/pl/network/help.html | 36 - doc/context/pl/photos/help.html | 15 - doc/context/pl/profile/help.html | 17 - doc/context/pl/profiles/help.html | 49 - doc/context/pl/register/help.html | 54 - doc/context/pl/settings/account/help.html | 49 - doc/context/pl/settings/channel/help.html | 49 - doc/context/pl/settings/features/help.html | 50 - doc/context/pl/settings/tokens/help.html | 43 - doc/context/pl/webpages/help.html | 24 - doc/context/pl/wiki/help.html | 29 - doc/context/ru/cards/help.html | 16 - doc/context/ru/connections/help.html | 7 - doc/context/ru/network/help.html | 9 - doc/database.bb | 71 -- doc/database/db_abook.bb | 55 - doc/database/db_account.bb | 66 -- doc/database/db_addon.bb | 24 - doc/database/db_app.bb | 48 - doc/database/db_attach.bb | 54 - doc/database/db_auth_codes.bb | 19 - doc/database/db_cache.bb | 15 - doc/database/db_channel.bb | 104 -- doc/database/db_chat.bb | 16 - doc/database/db_chatpresence.bb | 18 - doc/database/db_chatroom.bb | 28 - doc/database/db_clients.bb | 18 - doc/database/db_config.bb | 14 - doc/database/db_conv.bb | 25 - doc/database/db_event.bb | 64 -- doc/database/db_fcontact.bb | 38 - doc/database/db_ffinder.bb | 14 - doc/database/db_fserver.bb | 14 - doc/database/db_fsuggest.bb | 24 - doc/database/db_hook.bb | 18 - doc/database/db_hubloc.bb | 38 - doc/database/db_issue.bb | 20 - doc/database/db_item.bb | 151 --- doc/database/db_item_id.bb | 16 - doc/database/db_likes.bb | 24 - doc/database/db_mail.bb | 34 - doc/database/db_menu.bb | 16 - doc/database/db_menu_item.bb | 28 - doc/database/db_notify.bb | 36 - doc/database/db_obj.bb | 26 - doc/database/db_outq.bb | 28 - doc/database/db_pconfig.bb | 16 - doc/database/db_pgrp.bb | 18 - doc/database/db_pgrp_member.bb | 14 - doc/database/db_photo.bb | 52 - doc/database/db_poll.bb | 16 - doc/database/db_poll_elm.bb | 16 - doc/database/db_profdef.bb | 18 - doc/database/db_profext.bb | 16 - doc/database/db_profile.bb | 94 -- doc/database/db_profile_check.bb | 18 - doc/database/db_register.bb | 18 - doc/database/db_session.bb | 14 - doc/database/db_shares.bb | 14 - doc/database/db_sign.bb | 18 - doc/database/db_site.bb | 28 - doc/database/db_source.bb | 16 - doc/database/db_spam.bb | 18 - doc/database/db_sys_perms.bb | 16 - doc/database/db_term.bb | 28 - doc/database/db_tokens.bb | 18 - doc/database/db_updates.bb | 20 - doc/database/db_verify.bb | 18 - doc/database/db_vote.bb | 16 - doc/database/db_xchan.bb | 59 -- doc/database/db_xchat.bb | 16 - doc/database/db_xconfig.bb | 16 - doc/database/db_xign.bb | 13 - doc/database/db_xlink.bb | 22 - doc/database/db_xprof.bb | 37 - doc/database/db_xtag.bb | 14 - doc/dev-function-overview.md | 51 - doc/dev_beginner.bb | 419 -------- doc/develop.bb | 31 - doc/developer/api_zot.bb | 766 -------------- doc/developer/covenant.bb | 47 - doc/developer/developer_guide.bb | 176 ---- doc/developer/testing.md | 130 --- doc/developer/unorganized.md | 73 -- doc/developer/zot_protocol.bb | 478 --------- doc/developer_function_primer.bb | 47 - doc/developers.bb | 71 -- doc/diaspora_compat.bb | 68 -- doc/directories.bb | 95 -- doc/dnt-policy.txt | 218 ---- doc/doco.bb | 33 - doc/en/AdvancedSearch.md | 53 + doc/en/Comparison-of-activity-stream-networks.md | 23 + doc/en/Creating-Templates.md | 93 ++ doc/en/DerivedTheme1.md | 101 ++ doc/en/Developers.md | 54 + doc/en/Features.md | 108 ++ doc/en/Hubzilla_on_OpenShift.bb | 105 ++ doc/en/Plugins.md | 263 +++++ doc/en/Primary-Directory.md | 47 + doc/en/Remove-Account.md | 26 + doc/en/Schema-development.md | 81 ++ doc/en/TermsOfService.md | 11 + doc/en/Translations.md | 93 ++ doc/en/Widgets.md | 174 ++++ doc/en/Zot---A-High-Level-Overview.md | 109 ++ doc/en/about/about.bb | 204 ++++ doc/en/about/about_hub.bb | 7 + doc/en/about/project.bb | 186 ++++ doc/en/accounts_profiles_channels_basics.bb | 19 + doc/en/acl_dialog_post.html | 16 + doc/en/addons.bb | 117 +++ doc/en/addons_gnusocial.bb | 65 ++ doc/en/admin/administrator_guide.md | 464 +++++++++ doc/en/admin/hub_snapshots.md | 127 +++ doc/en/admin/zarlog_msgs.md | 112 ++ doc/en/admins.bb | 15 + doc/en/api/api_albums.md | 66 ++ doc/en/api/api_filedata.md | 66 ++ doc/en/api/api_files.md | 103 ++ doc/en/api/api_functions.bb | 133 +++ doc/en/api/api_group_members.md | 133 +++ doc/en/api/api_item_update.md | 225 +++++ doc/en/api/api_posting.bb | 24 + doc/en/api/api_xchan.md | 44 + doc/en/api/group.md | 41 + doc/en/api/statuses_update.bb | 23 + doc/en/bugs.bb | 32 + doc/en/campaign.bb | 237 +++++ doc/en/checking_account_quota_usage.bb | 20 + doc/en/comanche.bb | 261 +++++ doc/en/context/de/admin/logs/help.html | 8 + doc/en/context/de/admin/queue/help.html | 4 + doc/en/context/de/admin/security/help.html | 4 + doc/en/context/de/appman/help.html | 4 + doc/en/context/de/channel/help.html | 8 + doc/en/context/de/chat/help.html | 8 + doc/en/context/de/cloud/help.html | 6 + doc/en/context/de/connections/help.html | 8 + doc/en/context/de/connections/ifpending/help.html | 8 + doc/en/context/de/events/help.html | 8 + doc/en/context/de/mail/help.html | 12 + doc/en/context/de/network/help.html | 10 + doc/en/context/de/photos/help.html | 6 + doc/en/context/de/profile/help.html | 6 + doc/en/context/de/register/help.html | 12 + doc/en/context/de/settings/account/help.html | 19 + doc/en/context/de/settings/channel/help.html | 19 + doc/en/context/de/settings/features/help.html | 12 + doc/en/context/de/settings/tokens/help.html | 20 + doc/en/context/de/wiki/help.html | 10 + .../en/admin/addons/assets/addon_repo_gui_1.png | Bin 0 -> 16983 bytes doc/en/context/en/admin/addons/help.html | 14 + doc/en/context/en/admin/logs/help.html | 8 + doc/en/context/en/admin/queue/help.html | 4 + doc/en/context/en/admin/security/help.html | 4 + doc/en/context/en/appman/help.html | 4 + doc/en/context/en/cards/help.html | 20 + doc/en/context/en/channel/help.html | 6 + doc/en/context/en/chat/help.html | 8 + doc/en/context/en/cloud/help.html | 6 + doc/en/context/en/connections/help.html | 8 + doc/en/context/en/connections/ifpending/help.html | 8 + doc/en/context/en/connedit/help.html | 12 + doc/en/context/en/events/help.html | 8 + doc/en/context/en/mail/help.html | 10 + doc/en/context/en/network/help.html | 10 + doc/en/context/en/photos/help.html | 6 + doc/en/context/en/profile/help.html | 6 + doc/en/context/en/profiles/help.html | 35 + doc/en/context/en/register/help.html | 12 + doc/en/context/en/settings/account/help.html | 35 + doc/en/context/en/settings/channel/help.html | 35 + doc/en/context/en/settings/features/help.html | 12 + doc/en/context/en/settings/tokens/help.html | 23 + doc/en/context/en/webpages/help.html | 8 + doc/en/context/en/wiki/help.html | 10 + doc/en/context/es | 1 + .../es-es/admin/addons/assets/addon_repo_gui_1.png | Bin 0 -> 16983 bytes doc/en/context/es-es/admin/addons/help.html | 14 + doc/en/context/es-es/admin/logs/help.html | 9 + doc/en/context/es-es/admin/queue/help.html | 4 + doc/en/context/es-es/admin/security/help.html | 4 + doc/en/context/es-es/appman/help.html | 4 + doc/en/context/es-es/articles/help.html | 20 + doc/en/context/es-es/cards/help.html | 19 + doc/en/context/es-es/channel/help.html | 8 + doc/en/context/es-es/chat/help.html | 8 + doc/en/context/es-es/cloud/help.html | 6 + doc/en/context/es-es/connections/help.html | 15 + .../context/es-es/connections/ifpending/help.html | 15 + doc/en/context/es-es/connedit/help.html | 12 + doc/en/context/es-es/events/help.html | 8 + doc/en/context/es-es/mail/help.html | 10 + doc/en/context/es-es/network/help.html | 12 + doc/en/context/es-es/photos/help.html | 6 + doc/en/context/es-es/profile/help.html | 6 + doc/en/context/es-es/profiles/help.html | 35 + doc/en/context/es-es/settings/account/help.html | 35 + doc/en/context/es-es/settings/channel/help.html | 35 + doc/en/context/es-es/settings/features/help.html | 12 + doc/en/context/es-es/settings/tokens/help.html | 23 + doc/en/context/es-es/webpages/help.html | 8 + doc/en/context/es-es/wiki/help.html | 10 + doc/en/context/fr/admin/logs/help.html | 8 + doc/en/context/fr/admin/queue/help.html | 4 + doc/en/context/fr/appman/help.html | 5 + doc/en/context/fr/cards/help.html | 20 + doc/en/context/fr/channel/help.html | 6 + doc/en/context/fr/chat/help.html | 8 + doc/en/context/fr/cloud/help.html | 7 + doc/en/context/fr/connections/help.html | 8 + doc/en/context/fr/connections/ifpending/help.html | 8 + doc/en/context/fr/connedit/help.html | 13 + doc/en/context/fr/events/help.html | 8 + doc/en/context/fr/mail/help.html | 10 + doc/en/context/fr/photos/help.html | 6 + doc/en/context/fr/profile/help.html | 6 + doc/en/context/fr/settings/account/help.html | 18 + doc/en/context/fr/settings/channel/help.html | 18 + doc/en/context/fr/settings/features/help.html | 12 + doc/en/context/fr/settings/tokens | 20 + doc/en/context/fr/webpages/help.html | 8 + doc/en/context/fr/wiki/help.html | 13 + doc/en/context/it/wiki/help.html | 10 + .../pl/admin/addons/assets/addon_repo_gui_1.png | Bin 0 -> 16983 bytes doc/en/context/pl/admin/addons/help.html | 14 + doc/en/context/pl/admin/logs/help.html | 20 + doc/en/context/pl/admin/queue/help.html | 7 + doc/en/context/pl/admin/security/help.html | 8 + doc/en/context/pl/appman/help.html | 10 + doc/en/context/pl/cards/help.html | 31 + doc/en/context/pl/channel/help.html | 13 + doc/en/context/pl/chat/help.html | 19 + doc/en/context/pl/cloud/help.html | 17 + doc/en/context/pl/connections/help.html | 24 + doc/en/context/pl/connections/ifpending/help.html | 24 + doc/en/context/pl/connedit/help.html | 44 + doc/en/context/pl/events/help.html | 18 + doc/en/context/pl/mail/help.html | 25 + doc/en/context/pl/network/help.html | 36 + doc/en/context/pl/photos/help.html | 15 + doc/en/context/pl/profile/help.html | 17 + doc/en/context/pl/profiles/help.html | 49 + doc/en/context/pl/register/help.html | 54 + doc/en/context/pl/settings/account/help.html | 49 + doc/en/context/pl/settings/channel/help.html | 49 + doc/en/context/pl/settings/features/help.html | 50 + doc/en/context/pl/settings/tokens/help.html | 43 + doc/en/context/pl/webpages/help.html | 24 + doc/en/context/pl/wiki/help.html | 29 + doc/en/context/ru/cards/help.html | 16 + doc/en/context/ru/connections/help.html | 7 + doc/en/context/ru/network/help.html | 9 + doc/en/database.bb | 71 ++ doc/en/database/db_abook.bb | 55 + doc/en/database/db_account.bb | 66 ++ doc/en/database/db_addon.bb | 24 + doc/en/database/db_app.bb | 48 + doc/en/database/db_attach.bb | 54 + doc/en/database/db_auth_codes.bb | 19 + doc/en/database/db_cache.bb | 15 + doc/en/database/db_channel.bb | 104 ++ doc/en/database/db_chat.bb | 16 + doc/en/database/db_chatpresence.bb | 18 + doc/en/database/db_chatroom.bb | 28 + doc/en/database/db_clients.bb | 18 + doc/en/database/db_config.bb | 14 + doc/en/database/db_conv.bb | 25 + doc/en/database/db_event.bb | 64 ++ doc/en/database/db_fcontact.bb | 38 + doc/en/database/db_ffinder.bb | 14 + doc/en/database/db_fserver.bb | 14 + doc/en/database/db_fsuggest.bb | 24 + doc/en/database/db_hook.bb | 18 + doc/en/database/db_hubloc.bb | 38 + doc/en/database/db_issue.bb | 20 + doc/en/database/db_item.bb | 151 +++ doc/en/database/db_item_id.bb | 16 + doc/en/database/db_likes.bb | 24 + doc/en/database/db_mail.bb | 34 + doc/en/database/db_menu.bb | 16 + doc/en/database/db_menu_item.bb | 28 + doc/en/database/db_notify.bb | 36 + doc/en/database/db_obj.bb | 26 + doc/en/database/db_outq.bb | 28 + doc/en/database/db_pconfig.bb | 16 + doc/en/database/db_pgrp.bb | 18 + doc/en/database/db_pgrp_member.bb | 14 + doc/en/database/db_photo.bb | 52 + doc/en/database/db_poll.bb | 16 + doc/en/database/db_poll_elm.bb | 16 + doc/en/database/db_profdef.bb | 18 + doc/en/database/db_profext.bb | 16 + doc/en/database/db_profile.bb | 94 ++ doc/en/database/db_profile_check.bb | 18 + doc/en/database/db_register.bb | 18 + doc/en/database/db_session.bb | 14 + doc/en/database/db_shares.bb | 14 + doc/en/database/db_sign.bb | 18 + doc/en/database/db_site.bb | 28 + doc/en/database/db_source.bb | 16 + doc/en/database/db_spam.bb | 18 + doc/en/database/db_sys_perms.bb | 16 + doc/en/database/db_term.bb | 28 + doc/en/database/db_tokens.bb | 18 + doc/en/database/db_updates.bb | 20 + doc/en/database/db_verify.bb | 18 + doc/en/database/db_vote.bb | 16 + doc/en/database/db_xchan.bb | 59 ++ doc/en/database/db_xchat.bb | 16 + doc/en/database/db_xconfig.bb | 16 + doc/en/database/db_xign.bb | 13 + doc/en/database/db_xlink.bb | 22 + doc/en/database/db_xprof.bb | 37 + doc/en/database/db_xtag.bb | 14 + doc/en/dev-function-overview.md | 51 + doc/en/dev_beginner.bb | 419 ++++++++ doc/en/develop.bb | 31 + doc/en/developer/api_zot.bb | 766 ++++++++++++++ doc/en/developer/covenant.bb | 47 + doc/en/developer/developer_guide.bb | 176 ++++ doc/en/developer/testing.md | 130 +++ doc/en/developer/unorganized.md | 73 ++ doc/en/developer/zot_protocol.bb | 478 +++++++++ doc/en/developer_function_primer.bb | 47 + doc/en/developers.bb | 71 ++ doc/en/diaspora_compat.bb | 68 ++ doc/en/directories.bb | 95 ++ doc/en/dnt-policy.txt | 218 ++++ doc/en/doco.bb | 33 + doc/en/encryption.bb | 18 + doc/en/external-resource-links.bb | 21 + doc/en/extra_features.bb | 98 ++ doc/en/faq_admins.bb | 78 ++ doc/en/feature/access_tokens.bb | 47 + doc/en/feature/additional/access.md | 41 + doc/en/feature/additional/composition.md | 67 ++ doc/en/feature/additional/filtering.md | 57 ++ doc/en/feature/additional/general.md | 130 +++ doc/en/feature/additional/overview.md | 33 + doc/en/feature/additional/posts.md | 57 ++ doc/en/federate.bb | 71 ++ doc/en/filesync.md | 61 ++ doc/en/first-post.bb | 3 + doc/en/gdpr1.md | 114 +++ doc/en/general.bb | 18 + doc/en/git_for_non_developers.bb | 71 ++ doc/en/hidden_configs.bb | 127 +++ doc/en/hook/about_hook.bb | 1 + doc/en/hook/accept_follow.bb | 1 + doc/en/hook/account_downgrade.bb | 1 + doc/en/hook/account_settings.bb | 1 + doc/en/hook/account_settings_post.bb | 1 + doc/en/hook/activity_decode_mapper.bb | 1 + doc/en/hook/activity_filter.bb | 1 + doc/en/hook/activity_mapper.bb | 1 + doc/en/hook/activity_obj_decode_mapper.bb | 1 + doc/en/hook/activity_obj_mapper.bb | 1 + doc/en/hook/activity_order.bb | 1 + doc/en/hook/activity_received.bb | 1 + doc/en/hook/addon_app_installed_filter.bb | 18 + doc/en/hook/affinity_labels.bb | 1 + doc/en/hook/api_perm_is_allowed.bb | 1 + doc/en/hook/app_destroy.bb | 4 + doc/en/hook/app_installed_filter.bb | 17 + doc/en/hook/atom_author.bb | 1 + doc/en/hook/atom_entry.bb | 1 + doc/en/hook/atom_feed.bb | 1 + doc/en/hook/atom_feed_end.bb | 1 + doc/en/hook/attach_delete.bb | 11 + doc/en/hook/attach_upload_file.bb | 1 + doc/en/hook/authenticate.bb | 29 + doc/en/hook/author_is_pmable.bb | 14 + doc/en/hook/bb2diaspora.bb | 1 + doc/en/hook/bbcode.bb | 6 + doc/en/hook/bbcode_filter.bb | 7 + doc/en/hook/build_pagehead.bb | 2 + doc/en/hook/can_comment_on_post.bb | 13 + doc/en/hook/change_channel.bb | 11 + doc/en/hook/channel_links.bb | 12 + doc/en/hook/channel_remove.bb | 1 + doc/en/hook/chat_message.bb | 1 + doc/en/hook/chat_post.bb | 1 + doc/en/hook/check_account_email.bb | 1 + doc/en/hook/check_account_invite.bb | 1 + doc/en/hook/check_account_password.bb | 17 + doc/en/hook/check_channelallowed.bb | 11 + doc/en/hook/check_siteallowed.bb | 10 + doc/en/hook/collect_public_recipients.bb | 42 + doc/en/hook/comments_are_now_closed.bb | 11 + doc/en/hook/connect_premium.bb | 1 + doc/en/hook/connection_remove.bb | 9 + doc/en/hook/connector_settings.bb | 1 + doc/en/hook/construct_page.bb | 1 + doc/en/hook/contact_block_end.bb | 1 + doc/en/hook/contact_edit.bb | 1 + doc/en/hook/contact_edit_post.bb | 1 + doc/en/hook/contact_select_options.bb | 1 + doc/en/hook/content_security_policy.bb | 39 + doc/en/hook/conversation_start.bb | 1 + doc/en/hook/create_identity.bb | 1 + doc/en/hook/cron.bb | 5 + doc/en/hook/cron_daily.bb | 3 + doc/en/hook/cron_weekly.bb | 3 + doc/en/hook/crypto_methods.bb | 5 + doc/en/hook/daemon_addon.bb | 15 + doc/en/hook/daemon_master_release.bb | 5 + doc/en/hook/directory_item.bb | 1 + doc/en/hook/discover_channel_webfinger.bb | 14 + doc/en/hook/display_item.bb | 1 + doc/en/hook/display_settings.bb | 1 + doc/en/hook/display_settings_post.bb | 1 + doc/en/hook/donate_contributors.bb | 1 + doc/en/hook/donate_plugin.bb | 1 + doc/en/hook/donate_sponsors.bb | 1 + doc/en/hook/dreport_is_storable.bb | 1 + doc/en/hook/dreport_process.bb | 7 + doc/en/hook/drop_item.bb | 1 + doc/en/hook/dropdown_extras.bb | 17 + doc/en/hook/encode_object.bb | 1 + doc/en/hook/enotify.bb | 1 + doc/en/hook/enotify_mail.bb | 1 + doc/en/hook/enotify_store.bb | 1 + doc/en/hook/event_created.bb | 1 + doc/en/hook/event_store_event.bb | 11 + doc/en/hook/event_updated.bb | 1 + doc/en/hook/externals_url_select.bb | 1 + doc/en/hook/feature_enabled.bb | 1 + doc/en/hook/feature_settings.bb | 1 + doc/en/hook/feature_settings_post.bb | 1 + doc/en/hook/fetch_and_store.bb | 1 + doc/en/hook/follow.bb | 1 + doc/en/hook/follow_allow.bb | 1 + doc/en/hook/gender_selector.bb | 1 + doc/en/hook/gender_selector_min.bb | 1 + doc/en/hook/generate_map.bb | 1 + doc/en/hook/generate_named_map.bb | 1 + doc/en/hook/get_all_api_perms.bb | 1 + doc/en/hook/get_all_perms.bb | 1 + doc/en/hook/get_default_export_sections | 10 + doc/en/hook/get_features.bb | 1 + doc/en/hook/get_photo.bb | 14 + doc/en/hook/get_profile_photo.bb | 18 + doc/en/hook/get_role_perms.bb | 1 + doc/en/hook/global_permissions.bb | 1 + doc/en/hook/home_content.bb | 1 + doc/en/hook/home_init.bb | 1 + doc/en/hook/hostxrd.bb | 1 + doc/en/hook/html2bbcode.bb | 1 + doc/en/hook/identity_basic_export.bb | 10 + doc/en/hook/import_author_xchan.bb | 1 + doc/en/hook/import_channel.bb | 1 + doc/en/hook/import_directory_profile.bb | 1 + doc/en/hook/import_xchan.bb | 1 + doc/en/hook/item_custom.bb | 24 + doc/en/hook/item_photo_menu.bb | 1 + doc/en/hook/item_store.bb | 1 + doc/en/hook/item_store_update.bb | 1 + doc/en/hook/item_stored.bb | 18 + doc/en/hook/item_stored_update.bb | 15 + doc/en/hook/item_translate.bb | 1 + doc/en/hook/jot_header_tpl_filter.bb | 5 + doc/en/hook/jot_networks.bb | 1 + doc/en/hook/jot_tool.bb | 1 + doc/en/hook/jot_tpl_filter.bb | 5 + doc/en/hook/legal_webbie.bb | 10 + doc/en/hook/legal_webbie_text.bb | 7 + doc/en/hook/load_pdl.bb | 1 + doc/en/hook/local_dir_update.bb | 1 + doc/en/hook/logged_in.bb | 1 + doc/en/hook/logger.bb | 16 + doc/en/hook/logging_out.bb | 1 + doc/en/hook/login_hook.bb | 1 + doc/en/hook/magic_auth.bb | 1 + doc/en/hook/magic_auth_openid_success.bb | 1 + doc/en/hook/magic_auth_success.bb | 1 + doc/en/hook/main_slider.bb | 1 + doc/en/hook/marital_selector.bb | 1 + doc/en/hook/marital_selector_min.bb | 1 + doc/en/hook/markdown_to_bb.bb | 5 + doc/en/hook/module_loaded.bb | 1 + doc/en/hook/module_mod_aftercontent.bb | 12 + doc/en/hook/module_mod_content.bb | 10 + doc/en/hook/module_mod_init.bb | 1 + doc/en/hook/module_mod_post.bb | 1 + doc/en/hook/mood_verbs.bb | 1 + doc/en/hook/nav.bb | 28 + doc/en/hook/network_content_init.bb | 1 + doc/en/hook/network_ping.bb | 1 + doc/en/hook/network_to_name.bb | 1 + doc/en/hook/notifier_end.bb | 1 + doc/en/hook/notifier_hub.bb | 1 + doc/en/hook/notifier_normal.bb | 1 + doc/en/hook/obj_verbs.bb | 1 + doc/en/hook/oembed_probe.bb | 1 + doc/en/hook/other_encapsulate.bb | 7 + doc/en/hook/other_unencapsulate.bb | 5 + doc/en/hook/page_content_top.bb | 1 + doc/en/hook/page_end.bb | 1 + doc/en/hook/page_header.bb | 1 + doc/en/hook/page_meta.bb | 13 + doc/en/hook/parse_atom.bb | 1 + doc/en/hook/parse_link.bb | 1 + doc/en/hook/pdl_selector.bb | 1 + doc/en/hook/perm_is_allowed.bb | 1 + doc/en/hook/permissions_create.bb | 1 + doc/en/hook/permissions_update.bb | 1 + doc/en/hook/permit_hook.bb | 0 doc/en/hook/personal_xrd.bb | 1 + doc/en/hook/photo_post_end.bb | 1 + doc/en/hook/photo_upload_begin.bb | 1 + doc/en/hook/photo_upload_end.bb | 1 + doc/en/hook/photo_upload_file.bb | 1 + doc/en/hook/photo_upload_form.bb | 1 + doc/en/hook/photo_view_filter.bb | 1 + doc/en/hook/poke_verbs.bb | 1 + doc/en/hook/post_local.bb | 1 + doc/en/hook/post_local_end.bb | 1 + doc/en/hook/post_local_start.bb | 1 + doc/en/hook/post_mail.bb | 1 + doc/en/hook/post_mail_end.bb | 1 + doc/en/hook/post_remote.bb | 1 + doc/en/hook/post_remote_end.bb | 1 + doc/en/hook/post_remote_update.bb | 1 + doc/en/hook/post_remote_update_end.bb | 1 + doc/en/hook/prepare_body.bb | 1 + doc/en/hook/prepare_body_final.bb | 1 + doc/en/hook/prepare_body_init.bb | 1 + doc/en/hook/privacygroup_extras.bb | 12 + doc/en/hook/privacygroup_extras_drop.bb | 11 + doc/en/hook/privacygroup_extras_post.bb | 11 + doc/en/hook/proc_run.bb | 1 + doc/en/hook/process_channel_sync_delivery.bb | 1 + doc/en/hook/profile_advanced.bb | 1 + doc/en/hook/profile_edit.bb | 1 + doc/en/hook/profile_photo_content_end.bb | 1 + doc/en/hook/profile_post.bb | 1 + doc/en/hook/profile_sidebar.bb | 1 + doc/en/hook/profile_sidebar_enter.bb | 1 + doc/en/hook/register_account.bb | 1 + doc/en/hook/render_location.bb | 1 + doc/en/hook/replace_macros.bb | 1 + doc/en/hook/reverse_magic_auth.bb | 1 + doc/en/hook/settings_form.bb | 1 + doc/en/hook/settings_post.bb | 1 + doc/en/hook/sexpref_selector.bb | 1 + doc/en/hook/sexpref_selector_min.bb | 1 + doc/en/hook/smilie.bb | 19 + doc/en/hook/status_editor.bb | 31 + doc/en/hook/stream_item.bb | 13 + doc/en/hook/system_app_installed_filter.bb | 18 + doc/en/hook/tagged.bb | 16 + doc/en/hook/update_unseen.bb | 9 + doc/en/hook/validate_channelname.bb | 23 + doc/en/hook/webfinger.bb | 1 + doc/en/hook/well_known.bb | 1 + doc/en/hook/wiki_preprocess.bb | 11 + doc/en/hook/zid.bb | 1 + doc/en/hook/zid_init.bb | 1 + doc/en/hook/zot_best_algorithm.bb | 3 + doc/en/hook/zot_finger.bb | 1 + doc/en/hooklist.bb | 698 +++++++++++++ doc/en/hooks.html | 1 + doc/en/intro_for_developers.bb | 113 +++ doc/en/macros/addons_footer.bb | 2 + doc/en/macros/cloud_footer.bb | 2 + doc/en/macros/de/addons_footer.bb | 2 + doc/en/macros/de/cloud_footer.bb | 2 + doc/en/macros/de/main_footer.bb | 1 + doc/en/macros/de/troubleshooting_footer.bb | 2 + doc/en/macros/main_footer.bb | 1 + doc/en/macros/pl/addons_footer.bb | 2 + doc/en/macros/pl/cloud_footer.bb | 2 + doc/en/macros/pl/main_footer.bb | 1 + doc/en/macros/pl/troubleshooting_footer.bb | 2 + doc/en/macros/troubleshooting_footer.bb | 2 + doc/en/member/assets/qr_text_to_post.png | Bin 0 -> 273 bytes doc/en/member/assets/zat_dialog.png | Bin 0 -> 81837 bytes doc/en/member/bbcode.html | 337 ++++++ doc/en/member/member_faq.bb | 10 + doc/en/member/member_guide.bb | 1068 ++++++++++++++++++++ doc/en/plugins.bb | 312 ++++++ doc/en/problems-following-an-update.bb | 38 + doc/en/red2pi.bb | 342 +++++++ doc/en/roadmap.bb | 28 + doc/en/schema_development.bb | 78 ++ doc/en/schemaspy_hubzilla/zot.meta.xml | 283 ++++++ doc/en/sql_conventions.bb | 91 ++ doc/en/toc.html | 75 ++ ...38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png | Bin 0 -> 249151 bytes ...035c441631745d16acdb7a44e50d148256c8ad26a67.png | Bin 0 -> 293314 bytes ...7cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png | Bin 0 -> 178913 bytes ...1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png | Bin 0 -> 43797 bytes ...dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png | Bin 0 -> 46752 bytes ...0329db6c3814e2975979aff12f873f43d81724c5e61.png | Bin 0 -> 257211 bytes ...4fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png | Bin 0 -> 91478 bytes ...515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png | Bin 0 -> 293611 bytes ...7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png | Bin 0 -> 318766 bytes ...999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png | Bin 0 -> 298857 bytes ...f5630e921756f825ee00f8ee464d3ef9fed971d2852.png | Bin 0 -> 532838 bytes ...d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png | Bin 0 -> 137827 bytes ...3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png | Bin 0 -> 466641 bytes ...2d2a849412044cc6a0f8aebeac289d28786f2649d24.png | Bin 0 -> 240495 bytes ...e665961d35affbd053368056f562c58200fb41027b0.png | Bin 0 -> 665755 bytes ...7bb6092c3240b291eca8afa73133b3ac03b86f3302d.png | Bin 0 -> 324092 bytes ...915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png | Bin 0 -> 466584 bytes ...24af42055f0f24ed5e81ba622aca8cac576ccf5930e.png | Bin 0 -> 155763 bytes ...37f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png | Bin 0 -> 134643 bytes ...27df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png | Bin 0 -> 306069 bytes ...2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png | Bin 0 -> 57185 bytes ...3fa39b2084c16a8410de1f7a6559633435817444aef.png | Bin 0 -> 255688 bytes ...4bde52432fdc7b39692a094559aa504de99352940b1.png | Bin 0 -> 83265 bytes ...ce90a60fc416415271d9c51b81ad2a950fb0157222a.png | Bin 0 -> 264916 bytes ...6f353514c907b3fdfe019918fc5553bb3f31388a36f.png | Bin 0 -> 68194 bytes ...de9048cd14b417c0d76de17af476be5f296b78d70e9.png | Bin 0 -> 99210 bytes doc/en/tutorials/personal_channel.html | 162 +++ doc/encryption.bb | 18 - doc/external-resource-links.bb | 21 - doc/extra_features.bb | 98 -- doc/faq_admins.bb | 78 -- doc/feature/access_tokens.bb | 47 - doc/feature/additional/access.md | 41 - doc/feature/additional/composition.md | 67 -- doc/feature/additional/filtering.md | 57 -- doc/feature/additional/general.md | 130 --- doc/feature/additional/overview.md | 33 - doc/feature/additional/posts.md | 57 -- doc/federate.bb | 71 -- doc/filesync.md | 61 -- doc/first-post.bb | 3 - doc/gdpr1.md | 114 --- doc/general.bb | 18 - doc/git_for_non_developers.bb | 71 -- doc/hidden_configs.bb | 127 --- doc/hook/about_hook.bb | 1 - doc/hook/accept_follow.bb | 1 - doc/hook/account_downgrade.bb | 1 - doc/hook/account_settings.bb | 1 - doc/hook/account_settings_post.bb | 1 - doc/hook/activity_decode_mapper.bb | 1 - doc/hook/activity_filter.bb | 1 - doc/hook/activity_mapper.bb | 1 - doc/hook/activity_obj_decode_mapper.bb | 1 - doc/hook/activity_obj_mapper.bb | 1 - doc/hook/activity_order.bb | 1 - doc/hook/activity_received.bb | 1 - doc/hook/addon_app_installed_filter.bb | 18 - doc/hook/affinity_labels.bb | 1 - doc/hook/api_perm_is_allowed.bb | 1 - doc/hook/app_destroy.bb | 4 - doc/hook/app_installed_filter.bb | 17 - doc/hook/atom_author.bb | 1 - doc/hook/atom_entry.bb | 1 - doc/hook/atom_feed.bb | 1 - doc/hook/atom_feed_end.bb | 1 - doc/hook/attach_delete.bb | 11 - doc/hook/attach_upload_file.bb | 1 - doc/hook/authenticate.bb | 29 - doc/hook/author_is_pmable.bb | 14 - doc/hook/bb2diaspora.bb | 1 - doc/hook/bbcode.bb | 6 - doc/hook/bbcode_filter.bb | 7 - doc/hook/build_pagehead.bb | 2 - doc/hook/can_comment_on_post.bb | 13 - doc/hook/change_channel.bb | 11 - doc/hook/channel_links.bb | 12 - doc/hook/channel_remove.bb | 1 - doc/hook/chat_message.bb | 1 - doc/hook/chat_post.bb | 1 - doc/hook/check_account_email.bb | 1 - doc/hook/check_account_invite.bb | 1 - doc/hook/check_account_password.bb | 17 - doc/hook/check_channelallowed.bb | 11 - doc/hook/check_siteallowed.bb | 10 - doc/hook/collect_public_recipients.bb | 42 - doc/hook/comments_are_now_closed.bb | 11 - doc/hook/connect_premium.bb | 1 - doc/hook/connection_remove.bb | 9 - doc/hook/connector_settings.bb | 1 - doc/hook/construct_page.bb | 1 - doc/hook/contact_block_end.bb | 1 - doc/hook/contact_edit.bb | 1 - doc/hook/contact_edit_post.bb | 1 - doc/hook/contact_select_options.bb | 1 - doc/hook/content_security_policy.bb | 39 - doc/hook/conversation_start.bb | 1 - doc/hook/create_identity.bb | 1 - doc/hook/cron.bb | 5 - doc/hook/cron_daily.bb | 3 - doc/hook/cron_weekly.bb | 3 - doc/hook/crypto_methods.bb | 5 - doc/hook/daemon_addon.bb | 15 - doc/hook/daemon_master_release.bb | 5 - doc/hook/directory_item.bb | 1 - doc/hook/discover_channel_webfinger.bb | 14 - doc/hook/display_item.bb | 1 - doc/hook/display_settings.bb | 1 - doc/hook/display_settings_post.bb | 1 - doc/hook/donate_contributors.bb | 1 - doc/hook/donate_plugin.bb | 1 - doc/hook/donate_sponsors.bb | 1 - doc/hook/dreport_is_storable.bb | 1 - doc/hook/dreport_process.bb | 7 - doc/hook/drop_item.bb | 1 - doc/hook/dropdown_extras.bb | 17 - doc/hook/encode_object.bb | 1 - doc/hook/enotify.bb | 1 - doc/hook/enotify_mail.bb | 1 - doc/hook/enotify_store.bb | 1 - doc/hook/event_created.bb | 1 - doc/hook/event_store_event.bb | 11 - doc/hook/event_updated.bb | 1 - doc/hook/externals_url_select.bb | 1 - doc/hook/feature_enabled.bb | 1 - doc/hook/feature_settings.bb | 1 - doc/hook/feature_settings_post.bb | 1 - doc/hook/fetch_and_store.bb | 1 - doc/hook/follow.bb | 1 - doc/hook/follow_allow.bb | 1 - doc/hook/gender_selector.bb | 1 - doc/hook/gender_selector_min.bb | 1 - doc/hook/generate_map.bb | 1 - doc/hook/generate_named_map.bb | 1 - doc/hook/get_all_api_perms.bb | 1 - doc/hook/get_all_perms.bb | 1 - doc/hook/get_default_export_sections | 10 - doc/hook/get_features.bb | 1 - doc/hook/get_photo.bb | 14 - doc/hook/get_profile_photo.bb | 18 - doc/hook/get_role_perms.bb | 1 - doc/hook/global_permissions.bb | 1 - doc/hook/home_content.bb | 1 - doc/hook/home_init.bb | 1 - doc/hook/hostxrd.bb | 1 - doc/hook/html2bbcode.bb | 1 - doc/hook/identity_basic_export.bb | 10 - doc/hook/import_author_xchan.bb | 1 - doc/hook/import_channel.bb | 1 - doc/hook/import_directory_profile.bb | 1 - doc/hook/import_xchan.bb | 1 - doc/hook/item_custom.bb | 24 - doc/hook/item_photo_menu.bb | 1 - doc/hook/item_store.bb | 1 - doc/hook/item_store_update.bb | 1 - doc/hook/item_stored.bb | 18 - doc/hook/item_stored_update.bb | 15 - doc/hook/item_translate.bb | 1 - doc/hook/jot_header_tpl_filter.bb | 5 - doc/hook/jot_networks.bb | 1 - doc/hook/jot_tool.bb | 1 - doc/hook/jot_tpl_filter.bb | 5 - doc/hook/legal_webbie.bb | 10 - doc/hook/legal_webbie_text.bb | 7 - doc/hook/load_pdl.bb | 1 - doc/hook/local_dir_update.bb | 1 - doc/hook/logged_in.bb | 1 - doc/hook/logger.bb | 16 - doc/hook/logging_out.bb | 1 - doc/hook/login_hook.bb | 1 - doc/hook/magic_auth.bb | 1 - doc/hook/magic_auth_openid_success.bb | 1 - doc/hook/magic_auth_success.bb | 1 - doc/hook/main_slider.bb | 1 - doc/hook/marital_selector.bb | 1 - doc/hook/marital_selector_min.bb | 1 - doc/hook/markdown_to_bb.bb | 5 - doc/hook/module_loaded.bb | 1 - doc/hook/module_mod_aftercontent.bb | 12 - doc/hook/module_mod_content.bb | 10 - doc/hook/module_mod_init.bb | 1 - doc/hook/module_mod_post.bb | 1 - doc/hook/mood_verbs.bb | 1 - doc/hook/nav.bb | 28 - doc/hook/network_content_init.bb | 1 - doc/hook/network_ping.bb | 1 - doc/hook/network_to_name.bb | 1 - doc/hook/notifier_end.bb | 1 - doc/hook/notifier_hub.bb | 1 - doc/hook/notifier_normal.bb | 1 - doc/hook/obj_verbs.bb | 1 - doc/hook/oembed_probe.bb | 1 - doc/hook/other_encapsulate.bb | 7 - doc/hook/other_unencapsulate.bb | 5 - doc/hook/page_content_top.bb | 1 - doc/hook/page_end.bb | 1 - doc/hook/page_header.bb | 1 - doc/hook/page_meta.bb | 13 - doc/hook/parse_atom.bb | 1 - doc/hook/parse_link.bb | 1 - doc/hook/pdl_selector.bb | 1 - doc/hook/perm_is_allowed.bb | 1 - doc/hook/permissions_create.bb | 1 - doc/hook/permissions_update.bb | 1 - doc/hook/permit_hook.bb | 0 doc/hook/personal_xrd.bb | 1 - doc/hook/photo_post_end.bb | 1 - doc/hook/photo_upload_begin.bb | 1 - doc/hook/photo_upload_end.bb | 1 - doc/hook/photo_upload_file.bb | 1 - doc/hook/photo_upload_form.bb | 1 - doc/hook/photo_view_filter.bb | 1 - doc/hook/poke_verbs.bb | 1 - doc/hook/post_local.bb | 1 - doc/hook/post_local_end.bb | 1 - doc/hook/post_local_start.bb | 1 - doc/hook/post_mail.bb | 1 - doc/hook/post_mail_end.bb | 1 - doc/hook/post_remote.bb | 1 - doc/hook/post_remote_end.bb | 1 - doc/hook/post_remote_update.bb | 1 - doc/hook/post_remote_update_end.bb | 1 - doc/hook/prepare_body.bb | 1 - doc/hook/prepare_body_final.bb | 1 - doc/hook/prepare_body_init.bb | 1 - doc/hook/privacygroup_extras.bb | 12 - doc/hook/privacygroup_extras_drop.bb | 11 - doc/hook/privacygroup_extras_post.bb | 11 - doc/hook/proc_run.bb | 1 - doc/hook/process_channel_sync_delivery.bb | 1 - doc/hook/profile_advanced.bb | 1 - doc/hook/profile_edit.bb | 1 - doc/hook/profile_photo_content_end.bb | 1 - doc/hook/profile_post.bb | 1 - doc/hook/profile_sidebar.bb | 1 - doc/hook/profile_sidebar_enter.bb | 1 - doc/hook/register_account.bb | 1 - doc/hook/render_location.bb | 1 - doc/hook/replace_macros.bb | 1 - doc/hook/reverse_magic_auth.bb | 1 - doc/hook/settings_form.bb | 1 - doc/hook/settings_post.bb | 1 - doc/hook/sexpref_selector.bb | 1 - doc/hook/sexpref_selector_min.bb | 1 - doc/hook/smilie.bb | 19 - doc/hook/status_editor.bb | 31 - doc/hook/stream_item.bb | 13 - doc/hook/system_app_installed_filter.bb | 18 - doc/hook/tagged.bb | 16 - doc/hook/update_unseen.bb | 9 - doc/hook/validate_channelname.bb | 23 - doc/hook/webfinger.bb | 1 - doc/hook/well_known.bb | 1 - doc/hook/wiki_preprocess.bb | 11 - doc/hook/zid.bb | 1 - doc/hook/zid_init.bb | 1 - doc/hook/zot_best_algorithm.bb | 3 - doc/hook/zot_finger.bb | 1 - doc/hooklist.bb | 698 ------------- doc/hooks.html | 1 - doc/intro_for_developers.bb | 113 --- doc/macros/addons_footer.bb | 2 - doc/macros/cloud_footer.bb | 2 - doc/macros/de/addons_footer.bb | 2 - doc/macros/de/cloud_footer.bb | 2 - doc/macros/de/main_footer.bb | 1 - doc/macros/de/troubleshooting_footer.bb | 2 - doc/macros/main_footer.bb | 1 - doc/macros/pl/addons_footer.bb | 2 - doc/macros/pl/cloud_footer.bb | 2 - doc/macros/pl/main_footer.bb | 1 - doc/macros/pl/troubleshooting_footer.bb | 2 - doc/macros/troubleshooting_footer.bb | 2 - doc/member/assets/qr_text_to_post.png | Bin 273 -> 0 bytes doc/member/assets/zat_dialog.png | Bin 81837 -> 0 bytes doc/member/bbcode.html | 337 ------ doc/member/member_faq.bb | 10 - doc/member/member_guide.bb | 1068 -------------------- doc/plugins.bb | 312 ------ doc/problems-following-an-update.bb | 38 - doc/red2pi.bb | 342 ------- doc/roadmap.bb | 28 - doc/schema_development.bb | 78 -- doc/schemaspy_hubzilla/zot.meta.xml | 283 ------ doc/sql_conventions.bb | 91 -- doc/toc.html | 75 -- ...38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png | Bin 249151 -> 0 bytes ...035c441631745d16acdb7a44e50d148256c8ad26a67.png | Bin 293314 -> 0 bytes ...7cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png | Bin 178913 -> 0 bytes ...1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png | Bin 43797 -> 0 bytes ...dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png | Bin 46752 -> 0 bytes ...0329db6c3814e2975979aff12f873f43d81724c5e61.png | Bin 257211 -> 0 bytes ...4fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png | Bin 91478 -> 0 bytes ...515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png | Bin 293611 -> 0 bytes ...7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png | Bin 318766 -> 0 bytes ...999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png | Bin 298857 -> 0 bytes ...f5630e921756f825ee00f8ee464d3ef9fed971d2852.png | Bin 532838 -> 0 bytes ...d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png | Bin 137827 -> 0 bytes ...3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png | Bin 466641 -> 0 bytes ...2d2a849412044cc6a0f8aebeac289d28786f2649d24.png | Bin 240495 -> 0 bytes ...e665961d35affbd053368056f562c58200fb41027b0.png | Bin 665755 -> 0 bytes ...7bb6092c3240b291eca8afa73133b3ac03b86f3302d.png | Bin 324092 -> 0 bytes ...915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png | Bin 466584 -> 0 bytes ...24af42055f0f24ed5e81ba622aca8cac576ccf5930e.png | Bin 155763 -> 0 bytes ...37f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png | Bin 134643 -> 0 bytes ...27df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png | Bin 306069 -> 0 bytes ...2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png | Bin 57185 -> 0 bytes ...3fa39b2084c16a8410de1f7a6559633435817444aef.png | Bin 255688 -> 0 bytes ...4bde52432fdc7b39692a094559aa504de99352940b1.png | Bin 83265 -> 0 bytes ...ce90a60fc416415271d9c51b81ad2a950fb0157222a.png | Bin 264916 -> 0 bytes ...6f353514c907b3fdfe019918fc5553bb3f31388a36f.png | Bin 68194 -> 0 bytes ...de9048cd14b417c0d76de17af476be5f296b78d70e9.png | Bin 99210 -> 0 bytes doc/tutorials/personal_channel.html | 162 --- include/help.php | 197 ---- tests/unit/Module/HelpTest.php | 188 ++++ tests/unit/Module/SetupTest.php | 74 ++ tests/unit/Module/TestCase.php | 74 ++ tests/unit/Widget/HelpindexTest.php | 80 ++ tests/unit/includes/LanguageTest.php | 48 - view/tpl/help.tpl | 8 +- view/tpl/widget.tpl | 10 + 1073 files changed, 16815 insertions(+), 16495 deletions(-) create mode 100644 Zotlabs/Lib/Traits/HelpHelper.php delete mode 100644 doc/AdvancedSearch.md delete mode 100644 doc/Comparison-of-activity-stream-networks.md delete mode 100644 doc/Creating-Templates.md delete mode 100644 doc/DerivedTheme1.md delete mode 100644 doc/Developers.md delete mode 100644 doc/Features.md delete mode 100644 doc/Hubzilla_on_OpenShift.bb delete mode 100644 doc/Plugins.md delete mode 100644 doc/Primary-Directory.md delete mode 100644 doc/Remove-Account.md delete mode 100644 doc/Schema-development.md delete mode 100644 doc/TermsOfService.md delete mode 100644 doc/Translations.md delete mode 100644 doc/Widgets.md delete mode 100644 doc/Zot---A-High-Level-Overview.md delete mode 100644 doc/about/about.bb delete mode 100644 doc/about/about_hub.bb delete mode 100644 doc/about/project.bb delete mode 100644 doc/accounts_profiles_channels_basics.bb delete mode 100644 doc/acl_dialog_post.html delete mode 100644 doc/addons.bb delete mode 100644 doc/addons_gnusocial.bb delete mode 100644 doc/admin/administrator_guide.md delete mode 100644 doc/admin/hub_snapshots.md delete mode 100644 doc/admin/zarlog_msgs.md delete mode 100644 doc/admins.bb delete mode 100644 doc/api/api_albums.md delete mode 100644 doc/api/api_filedata.md delete mode 100644 doc/api/api_files.md delete mode 100644 doc/api/api_functions.bb delete mode 100644 doc/api/api_group_members.md delete mode 100644 doc/api/api_item_update.md delete mode 100644 doc/api/api_posting.bb delete mode 100644 doc/api/api_xchan.md delete mode 100644 doc/api/group.md delete mode 100644 doc/api/statuses_update.bb delete mode 100644 doc/bugs.bb delete mode 100644 doc/campaign.bb delete mode 100644 doc/checking_account_quota_usage.bb delete mode 100644 doc/comanche.bb delete mode 100644 doc/context/de/admin/logs/help.html delete mode 100644 doc/context/de/admin/queue/help.html delete mode 100644 doc/context/de/admin/security/help.html delete mode 100644 doc/context/de/appman/help.html delete mode 100644 doc/context/de/apps/edit/help.html delete mode 100644 doc/context/de/apps/help.html delete mode 100644 doc/context/de/channel/help.html delete mode 100644 doc/context/de/chat/help.html delete mode 100644 doc/context/de/cloud/help.html delete mode 100644 doc/context/de/connections/help.html delete mode 100644 doc/context/de/connections/ifpending/help.html delete mode 100644 doc/context/de/events/help.html delete mode 100644 doc/context/de/mail/help.html delete mode 100644 doc/context/de/network/help.html delete mode 100644 doc/context/de/photos/help.html delete mode 100644 doc/context/de/profile/help.html delete mode 100644 doc/context/de/register/help.html delete mode 100644 doc/context/de/settings/account/help.html delete mode 100644 doc/context/de/settings/channel/help.html delete mode 100644 doc/context/de/settings/features/help.html delete mode 100644 doc/context/de/settings/tokens/help.html delete mode 100644 doc/context/de/wiki/help.html delete mode 100644 doc/context/en/admin/addons/assets/addon_repo_gui_1.png delete mode 100644 doc/context/en/admin/addons/help.html delete mode 100644 doc/context/en/admin/logs/help.html delete mode 100644 doc/context/en/admin/queue/help.html delete mode 100644 doc/context/en/admin/security/help.html delete mode 100644 doc/context/en/appman/help.html delete mode 100644 doc/context/en/apps/edit/help.html delete mode 100644 doc/context/en/apps/help.html delete mode 100644 doc/context/en/cards/help.html delete mode 100644 doc/context/en/channel/help.html delete mode 100644 doc/context/en/chat/help.html delete mode 100644 doc/context/en/cloud/help.html delete mode 100644 doc/context/en/connections/help.html delete mode 100644 doc/context/en/connections/ifpending/help.html delete mode 100644 doc/context/en/connedit/help.html delete mode 100644 doc/context/en/events/help.html delete mode 100644 doc/context/en/mail/help.html delete mode 100644 doc/context/en/network/help.html delete mode 100644 doc/context/en/photos/help.html delete mode 100644 doc/context/en/profile/help.html delete mode 100644 doc/context/en/profiles/help.html delete mode 100644 doc/context/en/register/help.html delete mode 100644 doc/context/en/settings/account/help.html delete mode 100644 doc/context/en/settings/channel/help.html delete mode 100644 doc/context/en/settings/features/help.html delete mode 100644 doc/context/en/settings/tokens/help.html delete mode 100644 doc/context/en/webpages/help.html delete mode 100644 doc/context/en/wiki/help.html delete mode 120000 doc/context/es delete mode 100644 doc/context/es-es/admin/addons/assets/addon_repo_gui_1.png delete mode 100644 doc/context/es-es/admin/addons/help.html delete mode 100644 doc/context/es-es/admin/logs/help.html delete mode 100644 doc/context/es-es/admin/queue/help.html delete mode 100644 doc/context/es-es/admin/security/help.html delete mode 100644 doc/context/es-es/appman/help.html delete mode 100644 doc/context/es-es/apps/edit/help.html delete mode 100644 doc/context/es-es/apps/help.html delete mode 100644 doc/context/es-es/articles/help.html delete mode 100644 doc/context/es-es/cards/help.html delete mode 100644 doc/context/es-es/channel/help.html delete mode 100644 doc/context/es-es/chat/help.html delete mode 100644 doc/context/es-es/cloud/help.html delete mode 100644 doc/context/es-es/connections/help.html delete mode 100644 doc/context/es-es/connections/ifpending/help.html delete mode 100644 doc/context/es-es/connedit/help.html delete mode 100644 doc/context/es-es/events/help.html delete mode 100644 doc/context/es-es/mail/help.html delete mode 100644 doc/context/es-es/network/help.html delete mode 100644 doc/context/es-es/photos/help.html delete mode 100644 doc/context/es-es/profile/help.html delete mode 100644 doc/context/es-es/profiles/help.html delete mode 100644 doc/context/es-es/settings/account/help.html delete mode 100644 doc/context/es-es/settings/channel/help.html delete mode 100644 doc/context/es-es/settings/features/help.html delete mode 100644 doc/context/es-es/settings/tokens/help.html delete mode 100644 doc/context/es-es/webpages/help.html delete mode 100644 doc/context/es-es/wiki/help.html delete mode 100644 doc/context/fr/admin/logs/help.html delete mode 100644 doc/context/fr/admin/queue/help.html delete mode 100644 doc/context/fr/appman/help.html delete mode 100644 doc/context/fr/apps/edit/index.html delete mode 100644 doc/context/fr/apps/help.html delete mode 100644 doc/context/fr/cards/help.html delete mode 100644 doc/context/fr/channel/help.html delete mode 100644 doc/context/fr/chat/help.html delete mode 100644 doc/context/fr/cloud/help.html delete mode 100644 doc/context/fr/connections/help.html delete mode 100644 doc/context/fr/connections/ifpending/help.html delete mode 100644 doc/context/fr/connedit/help.html delete mode 100644 doc/context/fr/events/help.html delete mode 100644 doc/context/fr/mail/help.html delete mode 100644 doc/context/fr/photos/help.html delete mode 100644 doc/context/fr/profile/help.html delete mode 100644 doc/context/fr/settings/account/help.html delete mode 100644 doc/context/fr/settings/channel/help.html delete mode 100644 doc/context/fr/settings/features/help.html delete mode 100644 doc/context/fr/settings/tokens delete mode 100644 doc/context/fr/webpages/help.html delete mode 100644 doc/context/fr/wiki/help.html delete mode 100644 doc/context/it/wiki/help.html delete mode 100644 doc/context/pl/admin/addons/assets/addon_repo_gui_1.png delete mode 100644 doc/context/pl/admin/addons/help.html delete mode 100644 doc/context/pl/admin/logs/help.html delete mode 100644 doc/context/pl/admin/queue/help.html delete mode 100644 doc/context/pl/admin/security/help.html delete mode 100644 doc/context/pl/appman/help.html delete mode 100644 doc/context/pl/apps/edit/help.html delete mode 100644 doc/context/pl/apps/help.html delete mode 100644 doc/context/pl/cards/help.html delete mode 100644 doc/context/pl/channel/help.html delete mode 100644 doc/context/pl/chat/help.html delete mode 100644 doc/context/pl/cloud/help.html delete mode 100644 doc/context/pl/connections/help.html delete mode 100644 doc/context/pl/connections/ifpending/help.html delete mode 100644 doc/context/pl/connedit/help.html delete mode 100644 doc/context/pl/events/help.html delete mode 100644 doc/context/pl/mail/help.html delete mode 100644 doc/context/pl/network/help.html delete mode 100644 doc/context/pl/photos/help.html delete mode 100644 doc/context/pl/profile/help.html delete mode 100644 doc/context/pl/profiles/help.html delete mode 100644 doc/context/pl/register/help.html delete mode 100644 doc/context/pl/settings/account/help.html delete mode 100644 doc/context/pl/settings/channel/help.html delete mode 100644 doc/context/pl/settings/features/help.html delete mode 100644 doc/context/pl/settings/tokens/help.html delete mode 100644 doc/context/pl/webpages/help.html delete mode 100644 doc/context/pl/wiki/help.html delete mode 100644 doc/context/ru/cards/help.html delete mode 100644 doc/context/ru/connections/help.html delete mode 100644 doc/context/ru/network/help.html delete mode 100644 doc/database.bb delete mode 100644 doc/database/db_abook.bb delete mode 100644 doc/database/db_account.bb delete mode 100644 doc/database/db_addon.bb delete mode 100644 doc/database/db_app.bb delete mode 100644 doc/database/db_attach.bb delete mode 100644 doc/database/db_auth_codes.bb delete mode 100644 doc/database/db_cache.bb delete mode 100644 doc/database/db_channel.bb delete mode 100644 doc/database/db_chat.bb delete mode 100644 doc/database/db_chatpresence.bb delete mode 100644 doc/database/db_chatroom.bb delete mode 100644 doc/database/db_clients.bb delete mode 100644 doc/database/db_config.bb delete mode 100644 doc/database/db_conv.bb delete mode 100644 doc/database/db_event.bb delete mode 100644 doc/database/db_fcontact.bb delete mode 100644 doc/database/db_ffinder.bb delete mode 100644 doc/database/db_fserver.bb delete mode 100644 doc/database/db_fsuggest.bb delete mode 100644 doc/database/db_hook.bb delete mode 100644 doc/database/db_hubloc.bb delete mode 100644 doc/database/db_issue.bb delete mode 100644 doc/database/db_item.bb delete mode 100644 doc/database/db_item_id.bb delete mode 100644 doc/database/db_likes.bb delete mode 100644 doc/database/db_mail.bb delete mode 100644 doc/database/db_menu.bb delete mode 100644 doc/database/db_menu_item.bb delete mode 100644 doc/database/db_notify.bb delete mode 100644 doc/database/db_obj.bb delete mode 100644 doc/database/db_outq.bb delete mode 100644 doc/database/db_pconfig.bb delete mode 100644 doc/database/db_pgrp.bb delete mode 100644 doc/database/db_pgrp_member.bb delete mode 100644 doc/database/db_photo.bb delete mode 100644 doc/database/db_poll.bb delete mode 100644 doc/database/db_poll_elm.bb delete mode 100644 doc/database/db_profdef.bb delete mode 100644 doc/database/db_profext.bb delete mode 100644 doc/database/db_profile.bb delete mode 100644 doc/database/db_profile_check.bb delete mode 100644 doc/database/db_register.bb delete mode 100644 doc/database/db_session.bb delete mode 100644 doc/database/db_shares.bb delete mode 100644 doc/database/db_sign.bb delete mode 100644 doc/database/db_site.bb delete mode 100644 doc/database/db_source.bb delete mode 100644 doc/database/db_spam.bb delete mode 100644 doc/database/db_sys_perms.bb delete mode 100644 doc/database/db_term.bb delete mode 100644 doc/database/db_tokens.bb delete mode 100644 doc/database/db_updates.bb delete mode 100644 doc/database/db_verify.bb delete mode 100644 doc/database/db_vote.bb delete mode 100644 doc/database/db_xchan.bb delete mode 100644 doc/database/db_xchat.bb delete mode 100644 doc/database/db_xconfig.bb delete mode 100644 doc/database/db_xign.bb delete mode 100644 doc/database/db_xlink.bb delete mode 100644 doc/database/db_xprof.bb delete mode 100644 doc/database/db_xtag.bb delete mode 100644 doc/dev-function-overview.md delete mode 100644 doc/dev_beginner.bb delete mode 100644 doc/develop.bb delete mode 100644 doc/developer/api_zot.bb delete mode 100644 doc/developer/covenant.bb delete mode 100644 doc/developer/developer_guide.bb delete mode 100644 doc/developer/testing.md delete mode 100644 doc/developer/unorganized.md delete mode 100644 doc/developer/zot_protocol.bb delete mode 100644 doc/developer_function_primer.bb delete mode 100644 doc/developers.bb delete mode 100644 doc/diaspora_compat.bb delete mode 100644 doc/directories.bb delete mode 100644 doc/dnt-policy.txt delete mode 100644 doc/doco.bb create mode 100644 doc/en/AdvancedSearch.md create mode 100644 doc/en/Comparison-of-activity-stream-networks.md create mode 100644 doc/en/Creating-Templates.md create mode 100644 doc/en/DerivedTheme1.md create mode 100644 doc/en/Developers.md create mode 100644 doc/en/Features.md create mode 100644 doc/en/Hubzilla_on_OpenShift.bb create mode 100644 doc/en/Plugins.md create mode 100644 doc/en/Primary-Directory.md create mode 100644 doc/en/Remove-Account.md create mode 100644 doc/en/Schema-development.md create mode 100644 doc/en/TermsOfService.md create mode 100644 doc/en/Translations.md create mode 100644 doc/en/Widgets.md create mode 100644 doc/en/Zot---A-High-Level-Overview.md create mode 100644 doc/en/about/about.bb create mode 100644 doc/en/about/about_hub.bb create mode 100644 doc/en/about/project.bb create mode 100644 doc/en/accounts_profiles_channels_basics.bb create mode 100644 doc/en/acl_dialog_post.html create mode 100644 doc/en/addons.bb create mode 100644 doc/en/addons_gnusocial.bb create mode 100644 doc/en/admin/administrator_guide.md create mode 100644 doc/en/admin/hub_snapshots.md create mode 100644 doc/en/admin/zarlog_msgs.md create mode 100644 doc/en/admins.bb create mode 100644 doc/en/api/api_albums.md create mode 100644 doc/en/api/api_filedata.md create mode 100644 doc/en/api/api_files.md create mode 100644 doc/en/api/api_functions.bb create mode 100644 doc/en/api/api_group_members.md create mode 100644 doc/en/api/api_item_update.md create mode 100644 doc/en/api/api_posting.bb create mode 100644 doc/en/api/api_xchan.md create mode 100644 doc/en/api/group.md create mode 100644 doc/en/api/statuses_update.bb create mode 100644 doc/en/bugs.bb create mode 100644 doc/en/campaign.bb create mode 100644 doc/en/checking_account_quota_usage.bb create mode 100644 doc/en/comanche.bb create mode 100644 doc/en/context/de/admin/logs/help.html create mode 100644 doc/en/context/de/admin/queue/help.html create mode 100644 doc/en/context/de/admin/security/help.html create mode 100644 doc/en/context/de/appman/help.html create mode 100644 doc/en/context/de/channel/help.html create mode 100644 doc/en/context/de/chat/help.html create mode 100644 doc/en/context/de/cloud/help.html create mode 100644 doc/en/context/de/connections/help.html create mode 100644 doc/en/context/de/connections/ifpending/help.html create mode 100644 doc/en/context/de/events/help.html create mode 100644 doc/en/context/de/mail/help.html create mode 100644 doc/en/context/de/network/help.html create mode 100644 doc/en/context/de/photos/help.html create mode 100644 doc/en/context/de/profile/help.html create mode 100644 doc/en/context/de/register/help.html create mode 100644 doc/en/context/de/settings/account/help.html create mode 100644 doc/en/context/de/settings/channel/help.html create mode 100644 doc/en/context/de/settings/features/help.html create mode 100644 doc/en/context/de/settings/tokens/help.html create mode 100644 doc/en/context/de/wiki/help.html create mode 100644 doc/en/context/en/admin/addons/assets/addon_repo_gui_1.png create mode 100644 doc/en/context/en/admin/addons/help.html create mode 100644 doc/en/context/en/admin/logs/help.html create mode 100644 doc/en/context/en/admin/queue/help.html create mode 100644 doc/en/context/en/admin/security/help.html create mode 100644 doc/en/context/en/appman/help.html create mode 100644 doc/en/context/en/cards/help.html create mode 100644 doc/en/context/en/channel/help.html create mode 100644 doc/en/context/en/chat/help.html create mode 100644 doc/en/context/en/cloud/help.html create mode 100644 doc/en/context/en/connections/help.html create mode 100644 doc/en/context/en/connections/ifpending/help.html create mode 100644 doc/en/context/en/connedit/help.html create mode 100644 doc/en/context/en/events/help.html create mode 100644 doc/en/context/en/mail/help.html create mode 100644 doc/en/context/en/network/help.html create mode 100644 doc/en/context/en/photos/help.html create mode 100644 doc/en/context/en/profile/help.html create mode 100644 doc/en/context/en/profiles/help.html create mode 100644 doc/en/context/en/register/help.html create mode 100644 doc/en/context/en/settings/account/help.html create mode 100644 doc/en/context/en/settings/channel/help.html create mode 100644 doc/en/context/en/settings/features/help.html create mode 100644 doc/en/context/en/settings/tokens/help.html create mode 100644 doc/en/context/en/webpages/help.html create mode 100644 doc/en/context/en/wiki/help.html create mode 120000 doc/en/context/es create mode 100644 doc/en/context/es-es/admin/addons/assets/addon_repo_gui_1.png create mode 100644 doc/en/context/es-es/admin/addons/help.html create mode 100644 doc/en/context/es-es/admin/logs/help.html create mode 100644 doc/en/context/es-es/admin/queue/help.html create mode 100644 doc/en/context/es-es/admin/security/help.html create mode 100644 doc/en/context/es-es/appman/help.html create mode 100644 doc/en/context/es-es/articles/help.html create mode 100644 doc/en/context/es-es/cards/help.html create mode 100644 doc/en/context/es-es/channel/help.html create mode 100644 doc/en/context/es-es/chat/help.html create mode 100644 doc/en/context/es-es/cloud/help.html create mode 100644 doc/en/context/es-es/connections/help.html create mode 100644 doc/en/context/es-es/connections/ifpending/help.html create mode 100644 doc/en/context/es-es/connedit/help.html create mode 100644 doc/en/context/es-es/events/help.html create mode 100644 doc/en/context/es-es/mail/help.html create mode 100644 doc/en/context/es-es/network/help.html create mode 100644 doc/en/context/es-es/photos/help.html create mode 100644 doc/en/context/es-es/profile/help.html create mode 100644 doc/en/context/es-es/profiles/help.html create mode 100644 doc/en/context/es-es/settings/account/help.html create mode 100644 doc/en/context/es-es/settings/channel/help.html create mode 100644 doc/en/context/es-es/settings/features/help.html create mode 100644 doc/en/context/es-es/settings/tokens/help.html create mode 100644 doc/en/context/es-es/webpages/help.html create mode 100644 doc/en/context/es-es/wiki/help.html create mode 100644 doc/en/context/fr/admin/logs/help.html create mode 100644 doc/en/context/fr/admin/queue/help.html create mode 100644 doc/en/context/fr/appman/help.html create mode 100644 doc/en/context/fr/cards/help.html create mode 100644 doc/en/context/fr/channel/help.html create mode 100644 doc/en/context/fr/chat/help.html create mode 100644 doc/en/context/fr/cloud/help.html create mode 100644 doc/en/context/fr/connections/help.html create mode 100644 doc/en/context/fr/connections/ifpending/help.html create mode 100644 doc/en/context/fr/connedit/help.html create mode 100644 doc/en/context/fr/events/help.html create mode 100644 doc/en/context/fr/mail/help.html create mode 100644 doc/en/context/fr/photos/help.html create mode 100644 doc/en/context/fr/profile/help.html create mode 100644 doc/en/context/fr/settings/account/help.html create mode 100644 doc/en/context/fr/settings/channel/help.html create mode 100644 doc/en/context/fr/settings/features/help.html create mode 100644 doc/en/context/fr/settings/tokens create mode 100644 doc/en/context/fr/webpages/help.html create mode 100644 doc/en/context/fr/wiki/help.html create mode 100644 doc/en/context/it/wiki/help.html create mode 100644 doc/en/context/pl/admin/addons/assets/addon_repo_gui_1.png create mode 100644 doc/en/context/pl/admin/addons/help.html create mode 100644 doc/en/context/pl/admin/logs/help.html create mode 100644 doc/en/context/pl/admin/queue/help.html create mode 100644 doc/en/context/pl/admin/security/help.html create mode 100644 doc/en/context/pl/appman/help.html create mode 100644 doc/en/context/pl/cards/help.html create mode 100644 doc/en/context/pl/channel/help.html create mode 100644 doc/en/context/pl/chat/help.html create mode 100644 doc/en/context/pl/cloud/help.html create mode 100644 doc/en/context/pl/connections/help.html create mode 100644 doc/en/context/pl/connections/ifpending/help.html create mode 100644 doc/en/context/pl/connedit/help.html create mode 100644 doc/en/context/pl/events/help.html create mode 100644 doc/en/context/pl/mail/help.html create mode 100644 doc/en/context/pl/network/help.html create mode 100644 doc/en/context/pl/photos/help.html create mode 100644 doc/en/context/pl/profile/help.html create mode 100644 doc/en/context/pl/profiles/help.html create mode 100644 doc/en/context/pl/register/help.html create mode 100644 doc/en/context/pl/settings/account/help.html create mode 100644 doc/en/context/pl/settings/channel/help.html create mode 100644 doc/en/context/pl/settings/features/help.html create mode 100644 doc/en/context/pl/settings/tokens/help.html create mode 100644 doc/en/context/pl/webpages/help.html create mode 100644 doc/en/context/pl/wiki/help.html create mode 100644 doc/en/context/ru/cards/help.html create mode 100644 doc/en/context/ru/connections/help.html create mode 100644 doc/en/context/ru/network/help.html create mode 100644 doc/en/database.bb create mode 100644 doc/en/database/db_abook.bb create mode 100644 doc/en/database/db_account.bb create mode 100644 doc/en/database/db_addon.bb create mode 100644 doc/en/database/db_app.bb create mode 100644 doc/en/database/db_attach.bb create mode 100644 doc/en/database/db_auth_codes.bb create mode 100644 doc/en/database/db_cache.bb create mode 100644 doc/en/database/db_channel.bb create mode 100644 doc/en/database/db_chat.bb create mode 100644 doc/en/database/db_chatpresence.bb create mode 100644 doc/en/database/db_chatroom.bb create mode 100644 doc/en/database/db_clients.bb create mode 100644 doc/en/database/db_config.bb create mode 100644 doc/en/database/db_conv.bb create mode 100644 doc/en/database/db_event.bb create mode 100644 doc/en/database/db_fcontact.bb create mode 100644 doc/en/database/db_ffinder.bb create mode 100644 doc/en/database/db_fserver.bb create mode 100644 doc/en/database/db_fsuggest.bb create mode 100644 doc/en/database/db_hook.bb create mode 100644 doc/en/database/db_hubloc.bb create mode 100644 doc/en/database/db_issue.bb create mode 100644 doc/en/database/db_item.bb create mode 100644 doc/en/database/db_item_id.bb create mode 100644 doc/en/database/db_likes.bb create mode 100644 doc/en/database/db_mail.bb create mode 100644 doc/en/database/db_menu.bb create mode 100644 doc/en/database/db_menu_item.bb create mode 100644 doc/en/database/db_notify.bb create mode 100644 doc/en/database/db_obj.bb create mode 100644 doc/en/database/db_outq.bb create mode 100644 doc/en/database/db_pconfig.bb create mode 100644 doc/en/database/db_pgrp.bb create mode 100644 doc/en/database/db_pgrp_member.bb create mode 100644 doc/en/database/db_photo.bb create mode 100644 doc/en/database/db_poll.bb create mode 100644 doc/en/database/db_poll_elm.bb create mode 100644 doc/en/database/db_profdef.bb create mode 100644 doc/en/database/db_profext.bb create mode 100644 doc/en/database/db_profile.bb create mode 100644 doc/en/database/db_profile_check.bb create mode 100644 doc/en/database/db_register.bb create mode 100644 doc/en/database/db_session.bb create mode 100644 doc/en/database/db_shares.bb create mode 100644 doc/en/database/db_sign.bb create mode 100644 doc/en/database/db_site.bb create mode 100644 doc/en/database/db_source.bb create mode 100644 doc/en/database/db_spam.bb create mode 100644 doc/en/database/db_sys_perms.bb create mode 100644 doc/en/database/db_term.bb create mode 100644 doc/en/database/db_tokens.bb create mode 100644 doc/en/database/db_updates.bb create mode 100644 doc/en/database/db_verify.bb create mode 100644 doc/en/database/db_vote.bb create mode 100644 doc/en/database/db_xchan.bb create mode 100644 doc/en/database/db_xchat.bb create mode 100644 doc/en/database/db_xconfig.bb create mode 100644 doc/en/database/db_xign.bb create mode 100644 doc/en/database/db_xlink.bb create mode 100644 doc/en/database/db_xprof.bb create mode 100644 doc/en/database/db_xtag.bb create mode 100644 doc/en/dev-function-overview.md create mode 100644 doc/en/dev_beginner.bb create mode 100644 doc/en/develop.bb create mode 100644 doc/en/developer/api_zot.bb create mode 100644 doc/en/developer/covenant.bb create mode 100644 doc/en/developer/developer_guide.bb create mode 100644 doc/en/developer/testing.md create mode 100644 doc/en/developer/unorganized.md create mode 100644 doc/en/developer/zot_protocol.bb create mode 100644 doc/en/developer_function_primer.bb create mode 100644 doc/en/developers.bb create mode 100644 doc/en/diaspora_compat.bb create mode 100644 doc/en/directories.bb create mode 100644 doc/en/dnt-policy.txt create mode 100644 doc/en/doco.bb create mode 100644 doc/en/encryption.bb create mode 100644 doc/en/external-resource-links.bb create mode 100644 doc/en/extra_features.bb create mode 100644 doc/en/faq_admins.bb create mode 100644 doc/en/feature/access_tokens.bb create mode 100644 doc/en/feature/additional/access.md create mode 100644 doc/en/feature/additional/composition.md create mode 100644 doc/en/feature/additional/filtering.md create mode 100644 doc/en/feature/additional/general.md create mode 100644 doc/en/feature/additional/overview.md create mode 100644 doc/en/feature/additional/posts.md create mode 100644 doc/en/federate.bb create mode 100644 doc/en/filesync.md create mode 100644 doc/en/first-post.bb create mode 100644 doc/en/gdpr1.md create mode 100644 doc/en/general.bb create mode 100644 doc/en/git_for_non_developers.bb create mode 100644 doc/en/hidden_configs.bb create mode 100644 doc/en/hook/about_hook.bb create mode 100644 doc/en/hook/accept_follow.bb create mode 100644 doc/en/hook/account_downgrade.bb create mode 100644 doc/en/hook/account_settings.bb create mode 100644 doc/en/hook/account_settings_post.bb create mode 100644 doc/en/hook/activity_decode_mapper.bb create mode 100644 doc/en/hook/activity_filter.bb create mode 100644 doc/en/hook/activity_mapper.bb create mode 100644 doc/en/hook/activity_obj_decode_mapper.bb create mode 100644 doc/en/hook/activity_obj_mapper.bb create mode 100644 doc/en/hook/activity_order.bb create mode 100644 doc/en/hook/activity_received.bb create mode 100644 doc/en/hook/addon_app_installed_filter.bb create mode 100644 doc/en/hook/affinity_labels.bb create mode 100644 doc/en/hook/api_perm_is_allowed.bb create mode 100644 doc/en/hook/app_destroy.bb create mode 100644 doc/en/hook/app_installed_filter.bb create mode 100644 doc/en/hook/atom_author.bb create mode 100644 doc/en/hook/atom_entry.bb create mode 100644 doc/en/hook/atom_feed.bb create mode 100644 doc/en/hook/atom_feed_end.bb create mode 100644 doc/en/hook/attach_delete.bb create mode 100644 doc/en/hook/attach_upload_file.bb create mode 100644 doc/en/hook/authenticate.bb create mode 100644 doc/en/hook/author_is_pmable.bb create mode 100644 doc/en/hook/bb2diaspora.bb create mode 100644 doc/en/hook/bbcode.bb create mode 100644 doc/en/hook/bbcode_filter.bb create mode 100644 doc/en/hook/build_pagehead.bb create mode 100644 doc/en/hook/can_comment_on_post.bb create mode 100644 doc/en/hook/change_channel.bb create mode 100644 doc/en/hook/channel_links.bb create mode 100644 doc/en/hook/channel_remove.bb create mode 100644 doc/en/hook/chat_message.bb create mode 100644 doc/en/hook/chat_post.bb create mode 100644 doc/en/hook/check_account_email.bb create mode 100644 doc/en/hook/check_account_invite.bb create mode 100644 doc/en/hook/check_account_password.bb create mode 100644 doc/en/hook/check_channelallowed.bb create mode 100644 doc/en/hook/check_siteallowed.bb create mode 100644 doc/en/hook/collect_public_recipients.bb create mode 100644 doc/en/hook/comments_are_now_closed.bb create mode 100644 doc/en/hook/connect_premium.bb create mode 100644 doc/en/hook/connection_remove.bb create mode 100644 doc/en/hook/connector_settings.bb create mode 100644 doc/en/hook/construct_page.bb create mode 100644 doc/en/hook/contact_block_end.bb create mode 100644 doc/en/hook/contact_edit.bb create mode 100644 doc/en/hook/contact_edit_post.bb create mode 100644 doc/en/hook/contact_select_options.bb create mode 100644 doc/en/hook/content_security_policy.bb create mode 100644 doc/en/hook/conversation_start.bb create mode 100644 doc/en/hook/create_identity.bb create mode 100644 doc/en/hook/cron.bb create mode 100644 doc/en/hook/cron_daily.bb create mode 100644 doc/en/hook/cron_weekly.bb create mode 100644 doc/en/hook/crypto_methods.bb create mode 100644 doc/en/hook/daemon_addon.bb create mode 100644 doc/en/hook/daemon_master_release.bb create mode 100644 doc/en/hook/directory_item.bb create mode 100644 doc/en/hook/discover_channel_webfinger.bb create mode 100644 doc/en/hook/display_item.bb create mode 100644 doc/en/hook/display_settings.bb create mode 100644 doc/en/hook/display_settings_post.bb create mode 100644 doc/en/hook/donate_contributors.bb create mode 100644 doc/en/hook/donate_plugin.bb create mode 100644 doc/en/hook/donate_sponsors.bb create mode 100644 doc/en/hook/dreport_is_storable.bb create mode 100644 doc/en/hook/dreport_process.bb create mode 100644 doc/en/hook/drop_item.bb create mode 100644 doc/en/hook/dropdown_extras.bb create mode 100644 doc/en/hook/encode_object.bb create mode 100644 doc/en/hook/enotify.bb create mode 100644 doc/en/hook/enotify_mail.bb create mode 100644 doc/en/hook/enotify_store.bb create mode 100644 doc/en/hook/event_created.bb create mode 100644 doc/en/hook/event_store_event.bb create mode 100644 doc/en/hook/event_updated.bb create mode 100644 doc/en/hook/externals_url_select.bb create mode 100644 doc/en/hook/feature_enabled.bb create mode 100644 doc/en/hook/feature_settings.bb create mode 100644 doc/en/hook/feature_settings_post.bb create mode 100644 doc/en/hook/fetch_and_store.bb create mode 100644 doc/en/hook/follow.bb create mode 100644 doc/en/hook/follow_allow.bb create mode 100644 doc/en/hook/gender_selector.bb create mode 100644 doc/en/hook/gender_selector_min.bb create mode 100644 doc/en/hook/generate_map.bb create mode 100644 doc/en/hook/generate_named_map.bb create mode 100644 doc/en/hook/get_all_api_perms.bb create mode 100644 doc/en/hook/get_all_perms.bb create mode 100644 doc/en/hook/get_default_export_sections create mode 100644 doc/en/hook/get_features.bb create mode 100644 doc/en/hook/get_photo.bb create mode 100644 doc/en/hook/get_profile_photo.bb create mode 100644 doc/en/hook/get_role_perms.bb create mode 100644 doc/en/hook/global_permissions.bb create mode 100644 doc/en/hook/home_content.bb create mode 100644 doc/en/hook/home_init.bb create mode 100644 doc/en/hook/hostxrd.bb create mode 100644 doc/en/hook/html2bbcode.bb create mode 100644 doc/en/hook/identity_basic_export.bb create mode 100644 doc/en/hook/import_author_xchan.bb create mode 100644 doc/en/hook/import_channel.bb create mode 100644 doc/en/hook/import_directory_profile.bb create mode 100644 doc/en/hook/import_xchan.bb create mode 100644 doc/en/hook/item_custom.bb create mode 100644 doc/en/hook/item_photo_menu.bb create mode 100644 doc/en/hook/item_store.bb create mode 100644 doc/en/hook/item_store_update.bb create mode 100644 doc/en/hook/item_stored.bb create mode 100644 doc/en/hook/item_stored_update.bb create mode 100644 doc/en/hook/item_translate.bb create mode 100644 doc/en/hook/jot_header_tpl_filter.bb create mode 100644 doc/en/hook/jot_networks.bb create mode 100644 doc/en/hook/jot_tool.bb create mode 100644 doc/en/hook/jot_tpl_filter.bb create mode 100644 doc/en/hook/legal_webbie.bb create mode 100644 doc/en/hook/legal_webbie_text.bb create mode 100644 doc/en/hook/load_pdl.bb create mode 100644 doc/en/hook/local_dir_update.bb create mode 100644 doc/en/hook/logged_in.bb create mode 100644 doc/en/hook/logger.bb create mode 100644 doc/en/hook/logging_out.bb create mode 100644 doc/en/hook/login_hook.bb create mode 100644 doc/en/hook/magic_auth.bb create mode 100644 doc/en/hook/magic_auth_openid_success.bb create mode 100644 doc/en/hook/magic_auth_success.bb create mode 100644 doc/en/hook/main_slider.bb create mode 100644 doc/en/hook/marital_selector.bb create mode 100644 doc/en/hook/marital_selector_min.bb create mode 100644 doc/en/hook/markdown_to_bb.bb create mode 100644 doc/en/hook/module_loaded.bb create mode 100644 doc/en/hook/module_mod_aftercontent.bb create mode 100644 doc/en/hook/module_mod_content.bb create mode 100644 doc/en/hook/module_mod_init.bb create mode 100644 doc/en/hook/module_mod_post.bb create mode 100644 doc/en/hook/mood_verbs.bb create mode 100644 doc/en/hook/nav.bb create mode 100644 doc/en/hook/network_content_init.bb create mode 100644 doc/en/hook/network_ping.bb create mode 100644 doc/en/hook/network_to_name.bb create mode 100644 doc/en/hook/notifier_end.bb create mode 100644 doc/en/hook/notifier_hub.bb create mode 100644 doc/en/hook/notifier_normal.bb create mode 100644 doc/en/hook/obj_verbs.bb create mode 100644 doc/en/hook/oembed_probe.bb create mode 100644 doc/en/hook/other_encapsulate.bb create mode 100644 doc/en/hook/other_unencapsulate.bb create mode 100644 doc/en/hook/page_content_top.bb create mode 100644 doc/en/hook/page_end.bb create mode 100644 doc/en/hook/page_header.bb create mode 100644 doc/en/hook/page_meta.bb create mode 100644 doc/en/hook/parse_atom.bb create mode 100644 doc/en/hook/parse_link.bb create mode 100644 doc/en/hook/pdl_selector.bb create mode 100644 doc/en/hook/perm_is_allowed.bb create mode 100644 doc/en/hook/permissions_create.bb create mode 100644 doc/en/hook/permissions_update.bb create mode 100644 doc/en/hook/permit_hook.bb create mode 100644 doc/en/hook/personal_xrd.bb create mode 100644 doc/en/hook/photo_post_end.bb create mode 100644 doc/en/hook/photo_upload_begin.bb create mode 100644 doc/en/hook/photo_upload_end.bb create mode 100644 doc/en/hook/photo_upload_file.bb create mode 100644 doc/en/hook/photo_upload_form.bb create mode 100644 doc/en/hook/photo_view_filter.bb create mode 100644 doc/en/hook/poke_verbs.bb create mode 100644 doc/en/hook/post_local.bb create mode 100644 doc/en/hook/post_local_end.bb create mode 100644 doc/en/hook/post_local_start.bb create mode 100644 doc/en/hook/post_mail.bb create mode 100644 doc/en/hook/post_mail_end.bb create mode 100644 doc/en/hook/post_remote.bb create mode 100644 doc/en/hook/post_remote_end.bb create mode 100644 doc/en/hook/post_remote_update.bb create mode 100644 doc/en/hook/post_remote_update_end.bb create mode 100644 doc/en/hook/prepare_body.bb create mode 100644 doc/en/hook/prepare_body_final.bb create mode 100644 doc/en/hook/prepare_body_init.bb create mode 100644 doc/en/hook/privacygroup_extras.bb create mode 100644 doc/en/hook/privacygroup_extras_drop.bb create mode 100644 doc/en/hook/privacygroup_extras_post.bb create mode 100644 doc/en/hook/proc_run.bb create mode 100644 doc/en/hook/process_channel_sync_delivery.bb create mode 100644 doc/en/hook/profile_advanced.bb create mode 100644 doc/en/hook/profile_edit.bb create mode 100644 doc/en/hook/profile_photo_content_end.bb create mode 100644 doc/en/hook/profile_post.bb create mode 100644 doc/en/hook/profile_sidebar.bb create mode 100644 doc/en/hook/profile_sidebar_enter.bb create mode 100644 doc/en/hook/register_account.bb create mode 100644 doc/en/hook/render_location.bb create mode 100644 doc/en/hook/replace_macros.bb create mode 100644 doc/en/hook/reverse_magic_auth.bb create mode 100644 doc/en/hook/settings_form.bb create mode 100644 doc/en/hook/settings_post.bb create mode 100644 doc/en/hook/sexpref_selector.bb create mode 100644 doc/en/hook/sexpref_selector_min.bb create mode 100644 doc/en/hook/smilie.bb create mode 100644 doc/en/hook/status_editor.bb create mode 100644 doc/en/hook/stream_item.bb create mode 100644 doc/en/hook/system_app_installed_filter.bb create mode 100644 doc/en/hook/tagged.bb create mode 100644 doc/en/hook/update_unseen.bb create mode 100644 doc/en/hook/validate_channelname.bb create mode 100644 doc/en/hook/webfinger.bb create mode 100644 doc/en/hook/well_known.bb create mode 100644 doc/en/hook/wiki_preprocess.bb create mode 100644 doc/en/hook/zid.bb create mode 100644 doc/en/hook/zid_init.bb create mode 100644 doc/en/hook/zot_best_algorithm.bb create mode 100644 doc/en/hook/zot_finger.bb create mode 100644 doc/en/hooklist.bb create mode 100644 doc/en/hooks.html create mode 100644 doc/en/intro_for_developers.bb create mode 100644 doc/en/macros/addons_footer.bb create mode 100644 doc/en/macros/cloud_footer.bb create mode 100644 doc/en/macros/de/addons_footer.bb create mode 100644 doc/en/macros/de/cloud_footer.bb create mode 100644 doc/en/macros/de/main_footer.bb create mode 100644 doc/en/macros/de/troubleshooting_footer.bb create mode 100644 doc/en/macros/main_footer.bb create mode 100644 doc/en/macros/pl/addons_footer.bb create mode 100644 doc/en/macros/pl/cloud_footer.bb create mode 100644 doc/en/macros/pl/main_footer.bb create mode 100644 doc/en/macros/pl/troubleshooting_footer.bb create mode 100644 doc/en/macros/troubleshooting_footer.bb create mode 100644 doc/en/member/assets/qr_text_to_post.png create mode 100644 doc/en/member/assets/zat_dialog.png create mode 100644 doc/en/member/bbcode.html create mode 100644 doc/en/member/member_faq.bb create mode 100644 doc/en/member/member_guide.bb create mode 100644 doc/en/plugins.bb create mode 100644 doc/en/problems-following-an-update.bb create mode 100644 doc/en/red2pi.bb create mode 100644 doc/en/roadmap.bb create mode 100644 doc/en/schema_development.bb create mode 100644 doc/en/schemaspy_hubzilla/zot.meta.xml create mode 100644 doc/en/sql_conventions.bb create mode 100644 doc/en/toc.html create mode 100644 doc/en/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png create mode 100644 doc/en/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png create mode 100644 doc/en/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png create mode 100644 doc/en/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png create mode 100644 doc/en/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png create mode 100644 doc/en/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png create mode 100644 doc/en/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png create mode 100644 doc/en/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png create mode 100644 doc/en/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png create mode 100644 doc/en/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png create mode 100644 doc/en/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png create mode 100644 doc/en/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png create mode 100644 doc/en/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png create mode 100644 doc/en/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png create mode 100644 doc/en/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png create mode 100644 doc/en/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png create mode 100644 doc/en/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png create mode 100644 doc/en/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png create mode 100644 doc/en/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png create mode 100644 doc/en/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png create mode 100644 doc/en/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png create mode 100644 doc/en/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png create mode 100644 doc/en/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png create mode 100644 doc/en/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png create mode 100644 doc/en/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png create mode 100644 doc/en/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png create mode 100644 doc/en/tutorials/personal_channel.html delete mode 100644 doc/encryption.bb delete mode 100644 doc/external-resource-links.bb delete mode 100644 doc/extra_features.bb delete mode 100644 doc/faq_admins.bb delete mode 100644 doc/feature/access_tokens.bb delete mode 100644 doc/feature/additional/access.md delete mode 100644 doc/feature/additional/composition.md delete mode 100644 doc/feature/additional/filtering.md delete mode 100644 doc/feature/additional/general.md delete mode 100644 doc/feature/additional/overview.md delete mode 100644 doc/feature/additional/posts.md delete mode 100644 doc/federate.bb delete mode 100644 doc/filesync.md delete mode 100644 doc/first-post.bb delete mode 100644 doc/gdpr1.md delete mode 100644 doc/general.bb delete mode 100644 doc/git_for_non_developers.bb delete mode 100644 doc/hidden_configs.bb delete mode 100644 doc/hook/about_hook.bb delete mode 100644 doc/hook/accept_follow.bb delete mode 100644 doc/hook/account_downgrade.bb delete mode 100644 doc/hook/account_settings.bb delete mode 100644 doc/hook/account_settings_post.bb delete mode 100644 doc/hook/activity_decode_mapper.bb delete mode 100644 doc/hook/activity_filter.bb delete mode 100644 doc/hook/activity_mapper.bb delete mode 100644 doc/hook/activity_obj_decode_mapper.bb delete mode 100644 doc/hook/activity_obj_mapper.bb delete mode 100644 doc/hook/activity_order.bb delete mode 100644 doc/hook/activity_received.bb delete mode 100644 doc/hook/addon_app_installed_filter.bb delete mode 100644 doc/hook/affinity_labels.bb delete mode 100644 doc/hook/api_perm_is_allowed.bb delete mode 100644 doc/hook/app_destroy.bb delete mode 100644 doc/hook/app_installed_filter.bb delete mode 100644 doc/hook/atom_author.bb delete mode 100644 doc/hook/atom_entry.bb delete mode 100644 doc/hook/atom_feed.bb delete mode 100644 doc/hook/atom_feed_end.bb delete mode 100644 doc/hook/attach_delete.bb delete mode 100644 doc/hook/attach_upload_file.bb delete mode 100644 doc/hook/authenticate.bb delete mode 100644 doc/hook/author_is_pmable.bb delete mode 100644 doc/hook/bb2diaspora.bb delete mode 100644 doc/hook/bbcode.bb delete mode 100644 doc/hook/bbcode_filter.bb delete mode 100644 doc/hook/build_pagehead.bb delete mode 100644 doc/hook/can_comment_on_post.bb delete mode 100644 doc/hook/change_channel.bb delete mode 100644 doc/hook/channel_links.bb delete mode 100644 doc/hook/channel_remove.bb delete mode 100644 doc/hook/chat_message.bb delete mode 100644 doc/hook/chat_post.bb delete mode 100644 doc/hook/check_account_email.bb delete mode 100644 doc/hook/check_account_invite.bb delete mode 100644 doc/hook/check_account_password.bb delete mode 100644 doc/hook/check_channelallowed.bb delete mode 100644 doc/hook/check_siteallowed.bb delete mode 100644 doc/hook/collect_public_recipients.bb delete mode 100644 doc/hook/comments_are_now_closed.bb delete mode 100644 doc/hook/connect_premium.bb delete mode 100644 doc/hook/connection_remove.bb delete mode 100644 doc/hook/connector_settings.bb delete mode 100644 doc/hook/construct_page.bb delete mode 100644 doc/hook/contact_block_end.bb delete mode 100644 doc/hook/contact_edit.bb delete mode 100644 doc/hook/contact_edit_post.bb delete mode 100644 doc/hook/contact_select_options.bb delete mode 100644 doc/hook/content_security_policy.bb delete mode 100644 doc/hook/conversation_start.bb delete mode 100644 doc/hook/create_identity.bb delete mode 100644 doc/hook/cron.bb delete mode 100644 doc/hook/cron_daily.bb delete mode 100644 doc/hook/cron_weekly.bb delete mode 100644 doc/hook/crypto_methods.bb delete mode 100644 doc/hook/daemon_addon.bb delete mode 100644 doc/hook/daemon_master_release.bb delete mode 100644 doc/hook/directory_item.bb delete mode 100644 doc/hook/discover_channel_webfinger.bb delete mode 100644 doc/hook/display_item.bb delete mode 100644 doc/hook/display_settings.bb delete mode 100644 doc/hook/display_settings_post.bb delete mode 100644 doc/hook/donate_contributors.bb delete mode 100644 doc/hook/donate_plugin.bb delete mode 100644 doc/hook/donate_sponsors.bb delete mode 100644 doc/hook/dreport_is_storable.bb delete mode 100644 doc/hook/dreport_process.bb delete mode 100644 doc/hook/drop_item.bb delete mode 100644 doc/hook/dropdown_extras.bb delete mode 100644 doc/hook/encode_object.bb delete mode 100644 doc/hook/enotify.bb delete mode 100644 doc/hook/enotify_mail.bb delete mode 100644 doc/hook/enotify_store.bb delete mode 100644 doc/hook/event_created.bb delete mode 100644 doc/hook/event_store_event.bb delete mode 100644 doc/hook/event_updated.bb delete mode 100644 doc/hook/externals_url_select.bb delete mode 100644 doc/hook/feature_enabled.bb delete mode 100644 doc/hook/feature_settings.bb delete mode 100644 doc/hook/feature_settings_post.bb delete mode 100644 doc/hook/fetch_and_store.bb delete mode 100644 doc/hook/follow.bb delete mode 100644 doc/hook/follow_allow.bb delete mode 100644 doc/hook/gender_selector.bb delete mode 100644 doc/hook/gender_selector_min.bb delete mode 100644 doc/hook/generate_map.bb delete mode 100644 doc/hook/generate_named_map.bb delete mode 100644 doc/hook/get_all_api_perms.bb delete mode 100644 doc/hook/get_all_perms.bb delete mode 100644 doc/hook/get_default_export_sections delete mode 100644 doc/hook/get_features.bb delete mode 100644 doc/hook/get_photo.bb delete mode 100644 doc/hook/get_profile_photo.bb delete mode 100644 doc/hook/get_role_perms.bb delete mode 100644 doc/hook/global_permissions.bb delete mode 100644 doc/hook/home_content.bb delete mode 100644 doc/hook/home_init.bb delete mode 100644 doc/hook/hostxrd.bb delete mode 100644 doc/hook/html2bbcode.bb delete mode 100644 doc/hook/identity_basic_export.bb delete mode 100644 doc/hook/import_author_xchan.bb delete mode 100644 doc/hook/import_channel.bb delete mode 100644 doc/hook/import_directory_profile.bb delete mode 100644 doc/hook/import_xchan.bb delete mode 100644 doc/hook/item_custom.bb delete mode 100644 doc/hook/item_photo_menu.bb delete mode 100644 doc/hook/item_store.bb delete mode 100644 doc/hook/item_store_update.bb delete mode 100644 doc/hook/item_stored.bb delete mode 100644 doc/hook/item_stored_update.bb delete mode 100644 doc/hook/item_translate.bb delete mode 100644 doc/hook/jot_header_tpl_filter.bb delete mode 100644 doc/hook/jot_networks.bb delete mode 100644 doc/hook/jot_tool.bb delete mode 100644 doc/hook/jot_tpl_filter.bb delete mode 100644 doc/hook/legal_webbie.bb delete mode 100644 doc/hook/legal_webbie_text.bb delete mode 100644 doc/hook/load_pdl.bb delete mode 100644 doc/hook/local_dir_update.bb delete mode 100644 doc/hook/logged_in.bb delete mode 100644 doc/hook/logger.bb delete mode 100644 doc/hook/logging_out.bb delete mode 100644 doc/hook/login_hook.bb delete mode 100644 doc/hook/magic_auth.bb delete mode 100644 doc/hook/magic_auth_openid_success.bb delete mode 100644 doc/hook/magic_auth_success.bb delete mode 100644 doc/hook/main_slider.bb delete mode 100644 doc/hook/marital_selector.bb delete mode 100644 doc/hook/marital_selector_min.bb delete mode 100644 doc/hook/markdown_to_bb.bb delete mode 100644 doc/hook/module_loaded.bb delete mode 100644 doc/hook/module_mod_aftercontent.bb delete mode 100644 doc/hook/module_mod_content.bb delete mode 100644 doc/hook/module_mod_init.bb delete mode 100644 doc/hook/module_mod_post.bb delete mode 100644 doc/hook/mood_verbs.bb delete mode 100644 doc/hook/nav.bb delete mode 100644 doc/hook/network_content_init.bb delete mode 100644 doc/hook/network_ping.bb delete mode 100644 doc/hook/network_to_name.bb delete mode 100644 doc/hook/notifier_end.bb delete mode 100644 doc/hook/notifier_hub.bb delete mode 100644 doc/hook/notifier_normal.bb delete mode 100644 doc/hook/obj_verbs.bb delete mode 100644 doc/hook/oembed_probe.bb delete mode 100644 doc/hook/other_encapsulate.bb delete mode 100644 doc/hook/other_unencapsulate.bb delete mode 100644 doc/hook/page_content_top.bb delete mode 100644 doc/hook/page_end.bb delete mode 100644 doc/hook/page_header.bb delete mode 100644 doc/hook/page_meta.bb delete mode 100644 doc/hook/parse_atom.bb delete mode 100644 doc/hook/parse_link.bb delete mode 100644 doc/hook/pdl_selector.bb delete mode 100644 doc/hook/perm_is_allowed.bb delete mode 100644 doc/hook/permissions_create.bb delete mode 100644 doc/hook/permissions_update.bb delete mode 100644 doc/hook/permit_hook.bb delete mode 100644 doc/hook/personal_xrd.bb delete mode 100644 doc/hook/photo_post_end.bb delete mode 100644 doc/hook/photo_upload_begin.bb delete mode 100644 doc/hook/photo_upload_end.bb delete mode 100644 doc/hook/photo_upload_file.bb delete mode 100644 doc/hook/photo_upload_form.bb delete mode 100644 doc/hook/photo_view_filter.bb delete mode 100644 doc/hook/poke_verbs.bb delete mode 100644 doc/hook/post_local.bb delete mode 100644 doc/hook/post_local_end.bb delete mode 100644 doc/hook/post_local_start.bb delete mode 100644 doc/hook/post_mail.bb delete mode 100644 doc/hook/post_mail_end.bb delete mode 100644 doc/hook/post_remote.bb delete mode 100644 doc/hook/post_remote_end.bb delete mode 100644 doc/hook/post_remote_update.bb delete mode 100644 doc/hook/post_remote_update_end.bb delete mode 100644 doc/hook/prepare_body.bb delete mode 100644 doc/hook/prepare_body_final.bb delete mode 100644 doc/hook/prepare_body_init.bb delete mode 100644 doc/hook/privacygroup_extras.bb delete mode 100644 doc/hook/privacygroup_extras_drop.bb delete mode 100644 doc/hook/privacygroup_extras_post.bb delete mode 100644 doc/hook/proc_run.bb delete mode 100644 doc/hook/process_channel_sync_delivery.bb delete mode 100644 doc/hook/profile_advanced.bb delete mode 100644 doc/hook/profile_edit.bb delete mode 100644 doc/hook/profile_photo_content_end.bb delete mode 100644 doc/hook/profile_post.bb delete mode 100644 doc/hook/profile_sidebar.bb delete mode 100644 doc/hook/profile_sidebar_enter.bb delete mode 100644 doc/hook/register_account.bb delete mode 100644 doc/hook/render_location.bb delete mode 100644 doc/hook/replace_macros.bb delete mode 100644 doc/hook/reverse_magic_auth.bb delete mode 100644 doc/hook/settings_form.bb delete mode 100644 doc/hook/settings_post.bb delete mode 100644 doc/hook/sexpref_selector.bb delete mode 100644 doc/hook/sexpref_selector_min.bb delete mode 100644 doc/hook/smilie.bb delete mode 100644 doc/hook/status_editor.bb delete mode 100644 doc/hook/stream_item.bb delete mode 100644 doc/hook/system_app_installed_filter.bb delete mode 100644 doc/hook/tagged.bb delete mode 100644 doc/hook/update_unseen.bb delete mode 100644 doc/hook/validate_channelname.bb delete mode 100644 doc/hook/webfinger.bb delete mode 100644 doc/hook/well_known.bb delete mode 100644 doc/hook/wiki_preprocess.bb delete mode 100644 doc/hook/zid.bb delete mode 100644 doc/hook/zid_init.bb delete mode 100644 doc/hook/zot_best_algorithm.bb delete mode 100644 doc/hook/zot_finger.bb delete mode 100644 doc/hooklist.bb delete mode 100644 doc/hooks.html delete mode 100644 doc/intro_for_developers.bb delete mode 100644 doc/macros/addons_footer.bb delete mode 100644 doc/macros/cloud_footer.bb delete mode 100644 doc/macros/de/addons_footer.bb delete mode 100644 doc/macros/de/cloud_footer.bb delete mode 100644 doc/macros/de/main_footer.bb delete mode 100644 doc/macros/de/troubleshooting_footer.bb delete mode 100644 doc/macros/main_footer.bb delete mode 100644 doc/macros/pl/addons_footer.bb delete mode 100644 doc/macros/pl/cloud_footer.bb delete mode 100644 doc/macros/pl/main_footer.bb delete mode 100644 doc/macros/pl/troubleshooting_footer.bb delete mode 100644 doc/macros/troubleshooting_footer.bb delete mode 100644 doc/member/assets/qr_text_to_post.png delete mode 100644 doc/member/assets/zat_dialog.png delete mode 100644 doc/member/bbcode.html delete mode 100644 doc/member/member_faq.bb delete mode 100644 doc/member/member_guide.bb delete mode 100644 doc/plugins.bb delete mode 100644 doc/problems-following-an-update.bb delete mode 100644 doc/red2pi.bb delete mode 100644 doc/roadmap.bb delete mode 100644 doc/schema_development.bb delete mode 100644 doc/schemaspy_hubzilla/zot.meta.xml delete mode 100644 doc/sql_conventions.bb delete mode 100644 doc/toc.html delete mode 100644 doc/tutorials/assets/0965ace945f0c95ae38aa5bfedd230d2a7233d3915ac15d629f9dd845854.png delete mode 100644 doc/tutorials/assets/1ebe02c205962dd25035c441631745d16acdb7a44e50d148256c8ad26a67.png delete mode 100644 doc/tutorials/assets/2243e48ccea25bd907cce3dbd6fc9f7cd832a4c91a4c5dd294b7b219e7d8.png delete mode 100644 doc/tutorials/assets/25eaad2435200f72a1dd3a00ba17a76ca6db4c246b3c4fa286b390cae7c8.png delete mode 100644 doc/tutorials/assets/2b539d5a8474d6ec6dc91155b628d9be5f99ab04a78108ec404f53ec7bb5.png delete mode 100644 doc/tutorials/assets/31f42a02bdbae095e0329db6c3814e2975979aff12f873f43d81724c5e61.png delete mode 100644 doc/tutorials/assets/324247680b605fd214fd61aecd8f216fa8f5dfa0f16a04c8e968fdbc43d0.png delete mode 100644 doc/tutorials/assets/3656a67dce40a1fc2515e9089217f2e136d4fcf8babe77bac00ecaad43ce.png delete mode 100644 doc/tutorials/assets/458a842c2ea0fbe3b7869bb14dfffe1e5be098d1cd6e590bbead25b4cc05.png delete mode 100644 doc/tutorials/assets/4aaaf1e124514c8d6999a5fe1d07be5af460cda4ba6cde9106ebc1564bb0.png delete mode 100644 doc/tutorials/assets/4cf326152797a8ecdf5630e921756f825ee00f8ee464d3ef9fed971d2852.png delete mode 100644 doc/tutorials/assets/75d2927b7ad0d2043d4d3b6ba1364fac8ead173edd39340adaf78be11c9d.png delete mode 100644 doc/tutorials/assets/7c976a06662a1357b3da8ed0680d1a721c85f2ae2bdd5739a8def466010e.png delete mode 100644 doc/tutorials/assets/99a6efda4df631dfb2d2a849412044cc6a0f8aebeac289d28786f2649d24.png delete mode 100644 doc/tutorials/assets/9eae9fad774a4cd29e665961d35affbd053368056f562c58200fb41027b0.png delete mode 100644 doc/tutorials/assets/b0bfdf02aef3710a37bb6092c3240b291eca8afa73133b3ac03b86f3302d.png delete mode 100644 doc/tutorials/assets/b334915c03a665493915598c69c17a87c910a39db2cd3b5292e4623ea4c4.png delete mode 100644 doc/tutorials/assets/b3eece28e8db67f1024af42055f0f24ed5e81ba622aca8cac576ccf5930e.png delete mode 100644 doc/tutorials/assets/bdbcf0ffd9004657237f6b7b7863da5a8e39a5bc17d2c67fa160efef2056.png delete mode 100644 doc/tutorials/assets/c4cad3e4c356dd2a227df79bd4dc6d47edf1b66ea243f005b6b452ec366b.png delete mode 100644 doc/tutorials/assets/c9a880cc82ffa1f7c2f460397bb083bf7dc2a2b8f065e64da598b45b4a2b.png delete mode 100644 doc/tutorials/assets/d080e92d797af5e863fa39b2084c16a8410de1f7a6559633435817444aef.png delete mode 100644 doc/tutorials/assets/e05248fdc5688d6d24bde52432fdc7b39692a094559aa504de99352940b1.png delete mode 100644 doc/tutorials/assets/e5d5674a34e848e2cce90a60fc416415271d9c51b81ad2a950fb0157222a.png delete mode 100644 doc/tutorials/assets/ef78bc6aa3fafebd46f353514c907b3fdfe019918fc5553bb3f31388a36f.png delete mode 100644 doc/tutorials/assets/facb0bdfdecb4c779de9048cd14b417c0d76de17af476be5f296b78d70e9.png delete mode 100644 doc/tutorials/personal_channel.html create mode 100644 tests/unit/Module/HelpTest.php create mode 100644 tests/unit/Module/SetupTest.php create mode 100644 tests/unit/Module/TestCase.php create mode 100644 tests/unit/Widget/HelpindexTest.php create mode 100644 view/tpl/widget.tpl diff --git a/Zotlabs/Lib/Traits/HelpHelper.php b/Zotlabs/Lib/Traits/HelpHelper.php new file mode 100644 index 000000000..f0dca35d0 --- /dev/null +++ b/Zotlabs/Lib/Traits/HelpHelper.php @@ -0,0 +1,68 @@ +getList(); + + if(array_key_exists(argv(1), $languages)) { + $lang = argv(1); + $from_url = true; + } else { + $lang = \App::$language; + if(! isset($lang)) + $lang = 'en'; + + $from_url = false; + } + + $this->lang = array('language' => $lang, 'from_url' => $from_url); + } + + /** + * Find the full path name of the file, given it's base path and + * the language of the request. + * + * @param string $base_path The path of the file to find, relative to the + * doc root path, and without the extension. + */ + private function find_help_file(string $base_path, string $lang): void { + + // Use local variable until we can use trait constants. + $valid_file_ext = ['md', 'bb', 'html']; + + $base_path = "doc/{$lang}/${base_path}"; + + foreach ($valid_file_ext as $ext) { + $path = "{$base_path}.{$ext}"; + if (file_exists($path)) { + $this->file_name = $path; + $this->file_type = $ext; + + break; + } + } + } +} diff --git a/Zotlabs/Module/Help.php b/Zotlabs/Module/Help.php index 55ac80842..00946368f 100644 --- a/Zotlabs/Module/Help.php +++ b/Zotlabs/Module/Help.php @@ -1,7 +1,7 @@ 'en', //! Detected language, 2-letter ISO 639-1 code ("en") + 'from_url' => false, //! true if language from URL overrides browser default + ]; + + /** + * Pre-check before processing request. + * + * Determine language requested, and ensure that a topic was requested. + * If no topic was requested, redirect to the about page, and abort + * processing. + */ + public function init() { + $this->determine_help_language(); + + if (argc() === 1) { + goaway("/help/{$this->lang['language']}/about/about"); + killme(); + } + } + + /** + * Process get request for the help module. + * + * Loads the correct help file from the `doc/` directory, and passes it to + * the help template in `view/tpl/help.tpl`. + * + * If the requested help topic does not exist for the currently selected + * language, a 404 status is returned instead. + * + * This function currently also handles search and serving static assets + * that may be used by the help files. + * + * @return string The rendered help page or a 404 page if help topic was + * not found. + */ + public function get() { nav_set_selected('Help'); $o = ''; @@ -81,6 +124,119 @@ class Help extends \Zotlabs\Web\Controller { killme(); } + // + // The args to the module will be along this pattern: + // + // help/// + // + // Where `` is the language which we want to fetch the topic. This + // element is optional, but will be used to override the browser language + // preference if it exists. + // + // There may be zero or more `` elements. If there are any + // present, the first subdir will be used as the slug to find the + // heading of the help page. + // + // The `` should be the name of a file within the given language + // and subdirectory tree under the `doc/` directory of the site file + // system. The topic is given _without_ the file extension, which will be + // determined by the module. + // + // The valid file extensions for help topic are: + // + // - `.md` for markdown formatted source files. + // - `.bb` for bbcode formatted source files. + // - `.html` for help topics in html format. + // + + // Strip away the module name from the args + $args = array_slice(\App::$argv, 1); + + // Remove language if necessary + // + // The language was determined during pre-request processing in the + // `init` function. + if ($this->lang['from_url']) { + array_shift($args); + } + + // Keep the first remaining arg as the heading slug + $this->heading_slug = $args[0]; + + // Locate the file for the topic in the doc directory + $this->find_help_file(implode('/', $args), $this->lang['language']); + + $this->set_page_title(); + + if (empty($this->file_name)) { + header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found')); + $tpl = get_markup_template("404.tpl"); + return replace_macros($tpl, array( + '$message' => t('Page not found.') + )); + + } else { + $tpl = get_markup_template('help.tpl'); + return replace_macros($tpl, [ '$module' => $this ]); + } + } + + public function render_content(): string { + return $this->render_help_file($this->file_name, $this->file_type); + } + + public function render_help_file(string $file_name, string $file_type): string { + $raw_text = file_get_contents($file_name); + + switch ($file_type) { + case 'md': + // We need to escape the `#include` statements in the original file, + // to be sure it's not rendered as a heading by markdown. + $raw_text = preg_replace('/#include/ism', '%%include', $raw_text); + $content = MarkdownExtra::defaultTransform($raw_text); + $content = preg_replace('/%%include/ism', '#include', $content); + break; + + case 'bb': + $content = zidify_links(bbcode($raw_text)); + break; + + case 'html': + $content = parseIdentityAwareHTML($raw_text); + break; + } + + // Replace includes with the contents of the included file + $content = preg_replace_callback( + "/#include (.*?)\;/ism", + function ($matches) { + $sub_file_type = array_pop(explode('.', $matches[1])); + $included_content = $this->render_help_file($matches[1], $sub_file_type); + return str_replace($matches[0], $included_content, $matches[0]); + }, + $content + ); + + return translate_projectname($content); + } + + public function get_page_title(): string { + $title = t('$Projectname Documentation'); + $heading = $this->get_heading(); + + if (! empty($heading)) { + $title .= ': ' . $heading; + } + + return $title; + } + + public function get_toc_heading(): string { + return t('Contents'); + } + + + private function get_heading(): string { $headings = [ 'about' => t('About'), 'member' => t('Members'), @@ -89,21 +245,22 @@ class Help extends \Zotlabs\Web\Controller { 'tutorials' => t('Tutorials') ]; - $heading = ''; - if(array_key_exists(argv(1), $headings)) - $heading = $headings[argv(1)]; - - $content = get_help_content(); - - $language = determine_help_language()['language']; - - return replace_macros(get_markup_template('help.tpl'), array( - '$title' => t('$Projectname Documentation'), - '$tocHeading' => t('Contents'), - '$content' => $content, - '$heading' => $heading, - '$language' => $language - )); + if(array_key_exists($this->heading_slug, $headings)) { + return $headings[$this->heading_slug]; + } else { + return ''; + } } + /** + * Set the page title to an unslugified version of the file name. + * + * @Note This modifies the global `App::$page['title']` property. + */ + private function set_page_title(): void { + $title = basename($this->file_name, ".{$this->file_type}"); + \App::$page['title'] = + t('Help:') . ' ' + . ucwords(str_replace(['-', '_'],' ',notags($title))); + } } diff --git a/Zotlabs/Widget/Helpindex.php b/Zotlabs/Widget/Helpindex.php index 63e686d3a..a7120b47f 100644 --- a/Zotlabs/Widget/Helpindex.php +++ b/Zotlabs/Widget/Helpindex.php @@ -1,6 +1,9 @@ '; - - $level_0 = get_help_content('sitetoc'); - if(! $level_0) { - $path = 'toc'; - $x = determine_help_language(); - $lang = $x['language']; - if($lang !== 'en') { - $path = $lang . '/toc'; - } - $level_0 = get_help_content($path); - } + use \Zotlabs\Lib\Traits\HelpHelper; - $level_0 = preg_replace('/\/','', ''], '[/list]', $message); - $message = str_replace(['
  • ', '

  • '], '[*]', $message); - $message = str_replace(['

  • ', ''], '', $message); + $message = str_replace('', '', $message); if(!$message) return; -- cgit v1.2.3 From 605aa37ad35387cbd84d1efd7bd744b5f1eb166c Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 3 May 2024 11:50:29 +0000 Subject: apply li fixes to html2plain --- include/html2plain.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/html2plain.php b/include/html2plain.php index 5cb7ee35d..88dce577d 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -129,6 +129,8 @@ function html2plain($html, $wraplength = 75, $compact = false) if(!$message) return; + $message = preg_replace('/\/', "\n*", $message); + $message = str_replace('', '', $message); $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; @@ -178,7 +180,7 @@ function html2plain($html, $wraplength = 75, $compact = false) //node2bbcode($doc, 'ul', array(), "\n[list]", "[/list]\n"); //node2bbcode($doc, 'ol', array(), "\n[list=1]", "[/list]\n"); - node2bbcode($doc, 'li', array(), "\n* ", "\n"); + //node2bbcode($doc, 'li', array(), "\n* ", "\n"); node2bbcode($doc, 'hr', array(), "\n".str_repeat("-", 70)."\n", ""); -- cgit v1.2.3 From f74922db39df383d205fdcd0f25f6690af5b6c2f Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 7 May 2024 08:52:05 +0000 Subject: add bbcode support for the HTML5 del tag --- include/bbcode.php | 2 +- include/html2bbcode.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/bbcode.php b/include/bbcode.php index 844717572..5b97c1d9b 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -1408,7 +1408,7 @@ function bbcode($text, $options = []) { } // Check for strike-through text if (strpos($text,'[s]') !== false) { - $text = preg_replace("(\[s\](.*?)\[\/s\])ism", '$1', $text); + $text = preg_replace("(\[s\](.*?)\[\/s\])ism", '$1', $text); } // Check for over-line text if (strpos($text,'[o]') !== false) { diff --git a/include/html2bbcode.php b/include/html2bbcode.php index e0a9a630a..db8f3a8e0 100644 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -186,7 +186,11 @@ function html2bbcode($message) node2bbcode($doc, 'b', array(), '[b]', '[/b]'); node2bbcode($doc, 'i', array(), '[i]', '[/i]'); node2bbcode($doc, 'u', array(), '[u]', '[/u]'); + // The s tag is deprecated in HTML5 node2bbcode($doc, 's', array(), '[s]', '[/s]'); + node2bbcode($doc, 'del', [], '[s]', '[/s]'); + + node2bbcode($doc, 'mark', array(), '[mark]', '[/mark]'); node2bbcode($doc, 'span', array(), "", ""); -- cgit v1.2.3 From 9dd63db736819ba15fd75821a8ea520f68a54ee3 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 7 May 2024 08:56:25 +0000 Subject: add tests --- tests/unit/includes/BBCodeTest.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/unit/includes/BBCodeTest.php b/tests/unit/includes/BBCodeTest.php index 34e127a30..887374c13 100644 --- a/tests/unit/includes/BBCodeTest.php +++ b/tests/unit/includes/BBCodeTest.php @@ -134,6 +134,10 @@ class BBCodeTest extends UnitTestCase { 'list with linebreaks \r\n in text' => [ "some text\r\n[list]\r\n[*] item1\r\nsome text[*] item2\r\nsome text[/list]\r\nsome more text", 'some text
    • item1
      some text
    • item2
      some text
    some more text' + ], + 'del tag' => [ + 'some [s]strike through[/s] text', + 'some strike through text' ] ]; } @@ -254,6 +258,10 @@ class BBCodeTest extends UnitTestCase { 'double nested list without closing li' => [ '
    • list 1
    • list 2
    • list 3
      • list 1
      • list 2
      • list 3
        • list 1
        • list 2
        • list 3
    ', '[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[/list][/list][/list]' + ], + 'del tag' => [ + 'some strike through text', + 'some [s]strike through[/s] text' ] ]; } -- cgit v1.2.3 From 7a5bb99d87f85a4ea93c270beaa27ecee0c0b853 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Wed, 8 May 2024 12:18:00 +0200 Subject: make sure the hcard addon markup will be available even if other profile entries are missing --- view/tpl/profile_vcard.tpl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/view/tpl/profile_vcard.tpl b/view/tpl/profile_vcard.tpl index dd372beac..de08cfc19 100644 --- a/view/tpl/profile_vcard.tpl +++ b/view/tpl/profile_vcard.tpl @@ -99,8 +99,11 @@ {{/if}} + {{/if}} + {{if $details}}
    {{/if}} + {{if $details}} {{$chanmenu}} -- cgit v1.2.3 From 76ce4705e23f286cf6b568191840404e5cb94e9f Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 8 May 2024 14:34:44 +0000 Subject: more fixes for issue #1843 --- include/bbcode.php | 4 +--- include/oembed.php | 13 ++++++------- view/tpl/oembed_video.tpl | 5 +---- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index 5b97c1d9b..15a75ce3f 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -1745,10 +1745,8 @@ function bbcode($text, $options = []) { // oembed tag if (strpos($text,'[/embed]') !== false) { + $text = str_replace(["[/embed]\r", "[/embed]\n"], '[/embed]', $text); $text = oembed_bbcode2html($text); - - // Avoid triple linefeeds through oembed - $text = str_replace("


    ", "
    ", $text); } // If we found an event earlier, strip out all the event code and replace with a reformatted version. diff --git a/include/oembed.php b/include/oembed.php index 1b6157241..f52f73225 100644 --- a/include/oembed.php +++ b/include/oembed.php @@ -328,7 +328,7 @@ function oembed_format_object($j){ $jhtml = oembed_iframe($j['embedurl'],(isset($j['width']) ? $j['width'] : null), (isset($j['height']) ? $j['height'] : null)); - $ret=""; + $ret=""; switch ($j['type']) { case "video": { if (isset($j['thumbnail_url'])) { @@ -351,7 +351,6 @@ function oembed_format_object($j){ } else { $ret=$jhtml; } - $ret.="
    "; }; break; case "photo": { $ret.= ""; @@ -386,15 +385,15 @@ function oembed_format_object($j){ // add link to source if not present in "rich" type if ( $j['type'] != 'rich' || !strpos($j['html'],$embedurl) ){ $embedlink = (isset($j['title']))?$j['title'] : $embedurl; - $ret .= '
    ' . "$embedlink"; + $ret .= "$embedlink"; $ret .= "
    "; if (isset($j['author_name'])) $ret .= t(' by ') . $j['author_name']; if (isset($j['provider_name'])) $ret .= t(' on ') . $j['provider_name']; } else { // add for html2bbcode conversion - $ret .= "
    $embedurl"; + $ret .= "$embedurl"; } - $ret.="
    "; + $ret.="
    "; // mb_convert_encoding() is deprecated // return mb_convert_encoding($ret, 'HTML-ENTITIES', mb_detect_encoding($ret)); @@ -414,8 +413,8 @@ function oembed_iframe($src,$width,$height) { } // try and leave some room for the description line. - $height = intval($height) + 80; - $width = intval($width) + 40; + $height = intval($height); + $width = intval($width); $s = z_root() . '/oembed/' . base64url_encode($src); diff --git a/view/tpl/oembed_video.tpl b/view/tpl/oembed_video.tpl index d821ebdb2..f1513a5d5 100644 --- a/view/tpl/oembed_video.tpl +++ b/view/tpl/oembed_video.tpl @@ -1,4 +1 @@ - - -
    -
    + -- cgit v1.2.3 From 481e08b904313b768305d82b67f5f8602713b329 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 8 May 2024 15:41:54 +0000 Subject: remove p tags from li. otherwise we will get unwanted new lines in the list. add test. --- include/html2bbcode.php | 5 +++++ tests/unit/includes/BBCodeTest.php | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/include/html2bbcode.php b/include/html2bbcode.php index db8f3a8e0..8c35cdf03 100644 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -126,8 +126,13 @@ function html2bbcode($message) //$message = mb_convert_encoding($message, 'HTML-ENTITIES', "UTF-8"); $message = mb_encode_numericentity($message, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'); + // TODO: It would be better to do the list parsing with node2bbcode() but it has serious issues when + // parsing nested lists. Especially if the li tag has no closing tag (which is valid). + $message = preg_replace('/\/', '[list]', $message); $message = preg_replace('/\/', '[list=1]', $message); + + $message = str_replace(['
  • ', '

  • '], ['
  • ', '
  • '], $message); $message = preg_replace('/\/', '[*]', $message); $message = str_replace(['', ''], '[/list]', $message); $message = str_replace('', '', $message); diff --git a/tests/unit/includes/BBCodeTest.php b/tests/unit/includes/BBCodeTest.php index 887374c13..94cad1367 100644 --- a/tests/unit/includes/BBCodeTest.php +++ b/tests/unit/includes/BBCodeTest.php @@ -239,6 +239,10 @@ class BBCodeTest extends UnitTestCase { '
    • list 1
    • list 2
    • list 3
    ', '[list][*]list 1[*]list 2[*]list 3[/list]' ], + 'list with paragraph' => [ + '
    • list 1

    • list 2

    • list 3

    ', + '[list][*]list 1[*]list 2[*]list 3[/list]' + ], 'nested list' => [ '
    • list 1
    • list 2
    • list 3
      • list 1
      • list 2
      • list 3
    ', '[list][*]list 1[*]list 2[*]list 3[list][*]list 1[*]list 2[*]list 3[/list][/list]' -- cgit v1.2.3 From 960354b16cab06915a2f85fcc5e55d380765d858 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 8 May 2024 19:27:48 +0000 Subject: make mod regate return to system.workflow_channel_next and show register message field only if registration is set to register_approve --- Zotlabs/Module/Profiles.php | 11 +++++++---- Zotlabs/Module/Regate.php | 2 +- Zotlabs/Module/Register.php | 4 ++-- view/tpl/register.tpl | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php index 58e5857ed..a06193e12 100644 --- a/Zotlabs/Module/Profiles.php +++ b/Zotlabs/Module/Profiles.php @@ -620,14 +620,16 @@ class Profiles extends \Zotlabs\Web\Controller { $profile_fields_advanced = get_profile_fields_advanced(); if(((argc() > 1) && (intval(argv(1)))) || !feature_enabled(local_channel(),'multi_profiles')) { - if(feature_enabled(local_channel(),'multi_profiles')) + if (feature_enabled(local_channel(), 'multi_profiles')) { $id = \App::$argv[1]; + } else { $x = q("select id from profile where uid = %d and is_default = 1", intval(local_channel()) ); - if($x) + if ($x) { $id = $x[0]['id']; + } } $r = q("SELECT * FROM profile WHERE id = %d AND uid = %d LIMIT 1", @@ -635,7 +637,7 @@ class Profiles extends \Zotlabs\Web\Controller { intval(local_channel()) ); - if(! $r) { + if (!$r) { notice( t('Profile not found.') . EOL); return; } @@ -827,7 +829,8 @@ class Profiles extends \Zotlabs\Web\Controller { else { $r = q("SELECT * FROM profile WHERE uid = %d", - local_channel()); + intval(local_channel()) + ); if($r) { $tpl = get_markup_template('profile_entry.tpl'); diff --git a/Zotlabs/Module/Regate.php b/Zotlabs/Module/Regate.php index 8158416bd..c67f45a88 100644 --- a/Zotlabs/Module/Regate.php +++ b/Zotlabs/Module/Regate.php @@ -207,7 +207,7 @@ class Regate extends \Zotlabs\Web\Controller { } change_channel($channel_id); - $nextpage = 'profiles/' . $channel_id; + $nextpage = Config::Get('system', 'workflow_channel_next', 'profiles'); $msg_code = 'ZAR1239I'; $msg = t('Channel successfull created') . ' ' . $did2; } diff --git a/Zotlabs/Module/Register.php b/Zotlabs/Module/Register.php index 428b68178..f0163768c 100644 --- a/Zotlabs/Module/Register.php +++ b/Zotlabs/Module/Register.php @@ -429,6 +429,7 @@ class Register extends Controller { function get() { $registration_is = ''; + $register_msg = ''; $other_sites = ''; if(intval(Config::Get('system','register_policy')) === REGISTER_CLOSED) { @@ -442,6 +443,7 @@ class Register extends Controller { } if(intval(Config::Get('system','register_policy')) == REGISTER_APPROVE) { + $register_msg = ['register_msg', t('Why do you want to join this hub?'), ((x($_REQUEST,'register_msg')) ? $_REQUEST['register_msg'] : ''), t('This will help to review your registration')]; $registration_is = t('Registration on this hub is by approval only.'); $other_sites = '' . t('Register at another affiliated hub in case when prefered') . ''; } @@ -512,8 +514,6 @@ class Register extends Controller { $tos = array('tos', $label_tos, ((x($_REQUEST,'tos')) ? $_REQUEST['tos'] : ''), '', [t('No'),t('Yes')], $duty['atform']); - $register_msg = ['register_msg', t('Why do you want to join this hub?'), ((x($_REQUEST,'register_msg')) ? $_REQUEST['register_msg'] : ''), t('This will help to review your registration')]; - require_once('include/bbcode.php'); $o = replace_macros(get_markup_template('register.tpl'), array( diff --git a/view/tpl/register.tpl b/view/tpl/register.tpl index 8e1530eb4..cc2b8e47b 100644 --- a/view/tpl/register.tpl +++ b/view/tpl/register.tpl @@ -47,7 +47,7 @@ {{include file="field_input.tpl" field=$email}} {{include file="field_password.tpl" field=$pass1}} {{include file="field_password.tpl" field=$pass2}} - {{if $reg_is}} + {{if $register_msg}} {{include file="field_textarea.tpl" field=$register_msg}} {{/if}} {{if $enable_tos}} -- cgit v1.2.3 From 430347a2952e22f13ec1e05ef13618df456ad99f Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 13 May 2024 07:42:17 +0000 Subject: Remove unused Toggle_(safesearch|mobile) modules. --- Zotlabs/Module/Toggle_mobile.php | 23 ----------------------- Zotlabs/Module/Toggle_safesearch.php | 31 ------------------------------- 2 files changed, 54 deletions(-) delete mode 100644 Zotlabs/Module/Toggle_mobile.php delete mode 100644 Zotlabs/Module/Toggle_safesearch.php diff --git a/Zotlabs/Module/Toggle_mobile.php b/Zotlabs/Module/Toggle_mobile.php deleted file mode 100644 index 9d90c0821..000000000 --- a/Zotlabs/Module/Toggle_mobile.php +++ /dev/null @@ -1,23 +0,0 @@ - Date: Tue, 14 May 2024 09:00:43 +0000 Subject: php warnings/errors --- Zotlabs/Lib/Activity.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 75d2ffbe9..b819ef0f7 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -1727,9 +1727,12 @@ class Activity { foreach ($links as $link) { if (is_array($link) && array_key_exists('mediaType', $link) && $link['mediaType'] === 'text/html') { $profile = $link['href']; + } elseif (is_string($link)) { + $profile = $link; + break; } } - if (!$profile) { + if (!$profile && isset($links[0]['href'])) { $profile = $links[0]['href']; } } -- cgit v1.2.3 From f086dfd8ca2508816c688aaaf5e9b0633605b9d9 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 14 May 2024 09:05:02 +0000 Subject: missing semicolon and code readability --- view/es-es/hstrings.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php index 31f5de315..d10e40ed0 100644 --- a/view/es-es/hstrings.php +++ b/view/es-es/hstrings.php @@ -1,8 +1,11 @@ Date: Wed, 15 May 2024 07:38:07 +0000 Subject: deal with inReplyTo array --- Zotlabs/Lib/ActivityStreams.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Lib/ActivityStreams.php b/Zotlabs/Lib/ActivityStreams.php index 9f028bb46..55a1de5dd 100644 --- a/Zotlabs/Lib/ActivityStreams.php +++ b/Zotlabs/Lib/ActivityStreams.php @@ -148,7 +148,7 @@ class ActivityStreams { // Determine if this is a followup or response activity - $this->parent_id = $this->get_property_obj('inReplyTo'); + $this->parent_id = ((is_array($this->get_property_obj('inReplyTo'))) ? $this->get_property_obj('inReplyTo')['id'] : $this->get_property_obj('inReplyTo')); if (!$this->parent_id && isset($this->obj['inReplyTo'])) { $this->parent_id = ((is_array($this->obj['inReplyTo'])) ? $this->obj['inReplyTo']['id'] : $this->obj['inReplyTo']); -- cgit v1.2.3 From 5da0cc138f4330fd07e9c117b3f4261dc1bcbc19 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 15 May 2024 08:28:19 +0000 Subject: Refactor and cleanup Rbmark module + add tests --- Zotlabs/Module/Rbmark.php | 77 +++++++++++++++----------------------- tests/unit/Module/HelpTest.php | 9 ----- tests/unit/Module/RbmarkTest.php | 80 ++++++++++++++++++++++++++++++++++++++++ tests/unit/Module/TestCase.php | 20 +++++++++- view/tpl/field_input.tpl | 17 +++++++-- 5 files changed, 143 insertions(+), 60 deletions(-) create mode 100644 tests/unit/Module/RbmarkTest.php diff --git a/Zotlabs/Module/Rbmark.php b/Zotlabs/Module/Rbmark.php index 87b774495..b1aea2590 100644 --- a/Zotlabs/Module/Rbmark.php +++ b/Zotlabs/Module/Rbmark.php @@ -1,5 +1,5 @@ escape_tags($_REQUEST['url']),'term' => escape_tags($_REQUEST['title'])); + bookmark_add($channel,$channel,$t,((x($_REQUEST,'private')) ? intval($_REQUEST['private']) : 0), array('menu_id' => ((x($_REQUEST,'menu_id')) ? intval($_REQUEST['menu_id']) : 0), - 'menu_name' => ((x($_REQUEST,'menu_name')) ? escape_tags($_REQUEST['menu_name']) : ''), - 'ischat' => ((x($_REQUEST['ischat'])) ? intval($_REQUEST['ischat']) : 0) + 'menu_name' => ((x($_REQUEST,'menu_name')) ? escape_tags($_REQUEST['menu_name']) : ''), + 'ischat' => ((x($_REQUEST['ischat'])) ? intval($_REQUEST['ischat']) : 0) )); goaway(z_root() . '/bookmarks'); - } - function get() { + public function get(): string { - $o = ''; - - if(! local_channel()) { + $channel_id = local_channel(); + if($channel_id === false) { // The login procedure is going to bugger our $_REQUEST variables // so save them in the session. @@ -62,59 +59,45 @@ class Rbmark extends \Zotlabs\Web\Controller { return login(); } - // If we have saved rbmark session variables, but nothing in the current $_REQUEST, recover the saved variables + // If we have saved rbmark session variables, but nothing in the + // current $_REQUEST, recover the saved variables if((! array_key_exists('url',$_REQUEST)) && (array_key_exists('bookmark',$_SESSION))) { $_REQUEST = $_SESSION['bookmark']; unset($_SESSION['bookmark']); } - if($_REQUEST['remote_return']) { - $_SESSION['remote_return'] = $_REQUEST['remote_return']; - } - if(argc() > 1 && argv(1) === 'return') { - if($_SESSION['remote_return']) - goaway($_SESSION['remote_return']); - goaway(z_root() . '/bookmarks'); - } - - $channel = \App::get_channel(); - - - $m = menu_list($channel['channel_id'],'',MENU_BOOKMARK); - - $menus = array(); - if($m) { - $menus = array(0 => ''); - foreach($m as $n) { - $menus[$n['menu_id']] = $n['menu_name']; - } - } - $menu_select = array('menu_id',t('Select a bookmark folder'),false,'',$menus); - - - $o .= replace_macros(get_markup_template('rbmark.tpl'), array( + $menu_select = [ + 'menu_id', + t('Select a bookmark folder'), + false, + '', + $this->get_bookmark_folders(intval($channel_id)), + ]; + return replace_macros(get_markup_template('rbmark.tpl'), array( '$header' => t('Save Bookmark'), - '$url' => array('url',t('URL of bookmark'),escape_tags($_REQUEST['url'])), - '$title' => array('title',t('Description'),escape_tags($_REQUEST['title'])), + '$url' => array('url',t('URL of bookmark'),$_REQUEST['url']), + '$title' => array('title',t('Description'),$_REQUEST['title']), '$ischat' => ((x($_REQUEST,'ischat')) ? intval($_REQUEST['ischat']) : 0), '$private' => ((x($_REQUEST,'private')) ? intval($_REQUEST['private']) : 0), '$submit' => t('Save'), '$menu_name' => array('menu_name',t('Or enter new bookmark folder name'),'',''), '$menus' => $menu_select - )); + } + private function get_bookmark_folders(int $channel_id): array { + $menu_list = menu_list($channel_id, '', MENU_BOOKMARK); + $menus = [ 0 => '' ]; + if ($menu_list !== false) { + foreach($menu_list as $n) { + $menus[$n['menu_id']] = $n['menu_name']; + } + } - - - return $o; - + return $menus; } - - - } diff --git a/tests/unit/Module/HelpTest.php b/tests/unit/Module/HelpTest.php index 0f1610db5..3fb7687d3 100644 --- a/tests/unit/Module/HelpTest.php +++ b/tests/unit/Module/HelpTest.php @@ -176,13 +176,4 @@ class HelpTest extends \Zotlabs\Tests\Unit\Module\TestCase { $this->assertPageContains('

    This is the included file.

    '); } - - /** - * Helper to simplify asserting contents in the rendered page. - * - * @param string $needle The expected string to find. - */ - private function assertPageContains(string $needle): void { - $this->assertStringContainsString($needle, \App::$page['content']); - } } diff --git a/tests/unit/Module/RbmarkTest.php b/tests/unit/Module/RbmarkTest.php new file mode 100644 index 000000000..594e7369b --- /dev/null +++ b/tests/unit/Module/RbmarkTest.php @@ -0,0 +1,80 @@ +getFunctionMock('Zotlabs\Module', 'local_channel'); + $lc_stub + ->expects($this->once()) + ->willReturn(false); + + $this->get('rbmark', ['url' => 'https://bookmarked.url']); + + $this->assertPageContains('value="login" />'); + + // also check that the original query is saved in the session + $this->assertEquals('https://bookmarked.url', $_SESSION['bookmark']['url']); + $this->assertEquals('rbmark', $_SESSION['bookmark']['q']); + } + + public function test_authenticated_get_request_returns_save_bookmark_form(): void { + $lc_stub = $this->getFunctionMock('Zotlabs\Module', 'local_channel'); + $lc_stub + ->expects($this->once()) + ->willReturn(42); + + $this->get('rbmark', [ + 'url' => 'https://bookmarked.url', + 'title' => 'My bookmark', + ]); + + $this->assertPageContains('
    assertPageContains('URL of bookmark'); + $this->assertPageContains('value="https://bookmarked.url"'); + $this->assertPageContains('value="My bookmark"'); + } + + public function test_that_params_are_escaped_in_save_bookmark_form(): void { + $lc_stub = $this->getFunctionMock('Zotlabs\Module', 'local_channel'); + $lc_stub + ->expects($this->once()) + ->willReturn(42); + + $this->get('rbmark', [ + 'url' => 'https://bookmarked.url" onload="alert(/boom/)', + 'title' => 'My bookmark">", diff --git a/tests/unit/Lib/ActivityTest.php b/tests/unit/Lib/ActivityTest.php index c9ce79d8c..0e2703f2b 100644 --- a/tests/unit/Lib/ActivityTest.php +++ b/tests/unit/Lib/ActivityTest.php @@ -19,7 +19,7 @@ class ActivityTest extends UnitTestCase { /** * Dataprovider for test_get_textfield. */ - private function get_textfield_provider(): array { + public static function get_textfield_provider(): array { return [ 'get content field' => [ ['content' => 'Some content'], diff --git a/tests/unit/Lib/ZotlibTest.php b/tests/unit/Lib/ZotlibTest.php index 05522678f..0ab89dc2f 100644 --- a/tests/unit/Lib/ZotlibTest.php +++ b/tests/unit/Lib/ZotlibTest.php @@ -1,5 +1,9 @@ assertEquals($expected, \Zotlabs\Lib\Libzot::get_rpost_path($observer)); } - private function get_rpost_path_provider() : array { + public static function get_rpost_path_provider() : array { return [ 'xchan_url without port' => [ 'https://example.com/rpost?f=', diff --git a/tests/unit/Module/HelpTest.php b/tests/unit/Module/HelpTest.php index 3fb7687d3..c345d5e52 100644 --- a/tests/unit/Module/HelpTest.php +++ b/tests/unit/Module/HelpTest.php @@ -52,7 +52,7 @@ class HelpTest extends \Zotlabs\Tests\Unit\Module\TestCase { $fgc_stub = $this->getFunctionMock('Zotlabs\Module', 'file_get_contents'); $fgc_stub ->expects($this->once()) - ->willReturn($this->returnValueMap($file_content_map)); + ->willReturnMap($file_content_map); $this->get("help/about/help_topic"); diff --git a/tests/unit/Module/SetupTest.php b/tests/unit/Module/SetupTest.php index 96a5ef932..3575dd477 100644 --- a/tests/unit/Module/SetupTest.php +++ b/tests/unit/Module/SetupTest.php @@ -6,6 +6,8 @@ * SPDX-License-Identifier: MIT */ +namespace Zotlabs\Tests\Unit\Module; + /** * SetupModuleTest * @@ -16,7 +18,7 @@ * This is a complex module, so expect the tests to grow as more of it will be * covered. */ -class SetupModuleTest extends \Zotlabs\Tests\Unit\Module\TestCase { +class SetupTest extends TestCase { public function test_that_setup_is_available_if_no_accounts_in_db(): void { $this->with_no_accounts_in_db(); diff --git a/tests/unit/Module/TestCase.php b/tests/unit/Module/TestCase.php index 5ad213e81..e7051e001 100644 --- a/tests/unit/Module/TestCase.php +++ b/tests/unit/Module/TestCase.php @@ -24,6 +24,7 @@ class TestCase extends \Zotlabs\Tests\Unit\UnitTestCase { } $_SERVER['REQUEST_METHOD'] = 'GET'; + $_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.1'; $_REQUEST = $_GET; \App::init(); diff --git a/tests/unit/UnitTestCase.php b/tests/unit/UnitTestCase.php index 9ab6a534a..844746a51 100644 --- a/tests/unit/UnitTestCase.php +++ b/tests/unit/UnitTestCase.php @@ -22,8 +22,8 @@ namespace Zotlabs\Tests\Unit; +use PHPUnit\Framework\Attributes\{Before, After}; use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestResult; /* * Make sure global constants and the global App object is available to the @@ -46,33 +46,44 @@ require_once 'include/dba/dba_driver.php' ; */ class UnitTestCase extends TestCase { protected array $fixtures = array(); + protected ?\DbaTransaction $db_transacton = null; /** - * Override the run method, so we can wrap it in a database transaction. + * Connect to the test db, load fixtures and global config. * - * The transaction is automatically rolled back when the test completes, to - * leave the test database in a known pristine state. + * This function is executed before every test. * - * @SuppressWarnings(PHPMD.UnusedLocalVariable) + * The transaction is rolled back in the `cleanup_test_db()` function + * that's executed after every test. */ - public function run(TestResult $result = null): TestResult { + #[Before] + protected function setup_test_db(): void { if (! \DBA::$dba) { $this->connect_to_test_db(); } // The $transactuion variable is needed to hold the transaction until the // function returns. - $transaction = new \DbaTransaction(\DBA::$dba); + $this->db_transaction = new \DbaTransaction(\DBA::$dba); $this->loadFixtures(); // Make sure app config is reset and loaded from fixtures \App::$config = array(); \Zotlabs\Lib\Config::Load('system'); + } - $result = parent::run($result); - - return $result; + /** + * Roll back test database to it's original state, cleaning up + * any changes from the test. + * + * This function is executes after evert tests. + */ + #[After] + protected function cleanup_test_db(): void { + // Setting the transaction to `null`, runs the destructor + // which rolls backk the transacton. + $this->db_transaction = null; } /** diff --git a/tests/unit/Web/HttpSigTest.php b/tests/unit/Web/HttpSigTest.php index c01e4f6a3..d705be4ff 100644 --- a/tests/unit/Web/HttpSigTest.php +++ b/tests/unit/Web/HttpSigTest.php @@ -46,7 +46,7 @@ class HttpSigTest extends UnitTestCase { HTTPSig::generate_digest_header($text) ); } - public function generate_digestProvider() { + public static function generate_digestProvider() { return [ 'empty body text' => [ '', diff --git a/tests/unit/Widget/HelpindexTest.php b/tests/unit/Widget/HelpindexTest.php index 2d984985d..26aa34104 100644 --- a/tests/unit/Widget/HelpindexTest.php +++ b/tests/unit/Widget/HelpindexTest.php @@ -23,8 +23,8 @@ class HelpindexTest extends \Zotlabs\Tests\Unit\Module\TestCase { * @beforeClass */ public static function define_stubs(): void { - \phpmock\phpunit\PHPMock::defineFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); - \phpmock\phpunit\PHPMock::defineFunctionMock('Zotlabs\Widget', 'file_get_contents'); + self::defineFunctionMock('Zotlabs\Lib\Traits', 'file_exists'); + self::defineFunctionMock('Zotlabs\Widget', 'file_get_contents'); } public function test_loading_toc(): void { diff --git a/tests/unit/includes/AccountTest.php b/tests/unit/includes/AccountTest.php index af5bcd3c1..3978f9d04 100644 --- a/tests/unit/includes/AccountTest.php +++ b/tests/unit/includes/AccountTest.php @@ -19,7 +19,7 @@ class AccountTest extends Zotlabs\Tests\Unit\UnitTestCase { $this->assertEquals($expected, check_account_email($email)); } - function check_account_email_provider() : array { + public static function check_account_email_provider() : array { return [ // Empty and valid emails return the same result ['', ['error' => false, 'message' => '']], diff --git a/tests/unit/includes/BBCodeTest.php b/tests/unit/includes/BBCodeTest.php index 94cad1367..daa66bf72 100644 --- a/tests/unit/includes/BBCodeTest.php +++ b/tests/unit/includes/BBCodeTest.php @@ -101,7 +101,7 @@ class BBCodeTest extends UnitTestCase { * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) */ - private function bbcode_to_html_provider(): array { + public static function bbcode_to_html_provider(): array { return [ 'code block' => [ "[code]\ntestvar = \"this is a test\"\necho \"the message is \$testvar\"\n[/code]", @@ -153,7 +153,7 @@ class BBCodeTest extends UnitTestCase { * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) */ - private function bbcode_observer_provider(): array { + public static function bbcode_observer_provider(): array { return [ 'authenticated observer' => [ '[observer=1]This should be visible[/observer][observer=0]but not this[/observer]', @@ -205,7 +205,7 @@ class BBCodeTest extends UnitTestCase { * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) */ - private function html2bbcode_provider(): array { + public static function html2bbcode_provider(): array { return [ 'paragraph over multiple lines' => [ "

    A paragraph over\nmultiple lines\nshould be unwrapped

    ", diff --git a/tests/unit/includes/FeedutilsTest.php b/tests/unit/includes/FeedutilsTest.php index bda0bf425..05bff06a3 100644 --- a/tests/unit/includes/FeedutilsTest.php +++ b/tests/unit/includes/FeedutilsTest.php @@ -47,7 +47,7 @@ class FeedutilsTest extends UnitTestCase { public function test_atom_author() { $this->assertEquals('', atom_author('', 'nick', 'name', 'uri', 72, 72, 'png', 'photourl')); - $a = ' + $expected = ' uri nick uri @@ -57,7 +57,10 @@ class FeedutilsTest extends UnitTestCase { name '; - $this->assertXmlStringEqualsXmlString($a, atom_author('tag', 'nick', 'name', 'uri', 72, 72, 'png', 'http://photourl')); + $this->assertAtomAuthorMatches( + $expected, + atom_author('tag', 'nick', 'name', 'uri', 72, 72, 'png', 'http://photourl') + ); } /** @@ -86,6 +89,63 @@ class FeedutilsTest extends UnitTestCase { Chan '; - $this->assertXmlStringEqualsXmlString($a, atom_render_author('tag', $xchan)); + $this->assertAtomAuthorMatches($a, atom_render_author('tag', $xchan)); + } + + /** + * Helper method to assert that the generated author tag matches + * what we expect. + * + * Calling `assertXmlStringEqualsXmlString` directly on the fragments + * does not work anymore in PHPUnit >= 10.x, as t will throw an XMLException + * because of undefined namespaces. + * + * To overcome that we wrap the generated tags in the proper template, + * and compare the fully generated XML from the template instead. + * + * @param string $expected The expected author XML fragment. + * @param string $actual The actually generated authr XML fragment. + */ + private function assertAtomAuthorMatches(string $expected, string $actual): void { + + // Make sure the template engine is initialized before we try to render + // the template. + // + // This may be problematic, as it will compile the template into the same + // directory as the site. Assuming that nobody is crazy enough to run the + // test suite in a production server, it should probably be fine for now. + $smarty = new \Zotlabs\Render\SmartyTemplate(); + \App::register_template_engine(get_class($smarty)); + + $feed_template = get_markup_template('atom_feed.tpl'); + $expected_xml = replace_macros($feed_template, [ + '$version' => 42, + '$generator' => 'Hubzilla test', + '$generator_uri' => 'https://hubzilla.test', + '$feed_id' => 'test_channel', + '$feed_title' => 'Test channel', + '$feed_updated' => 'Sometime', + '$author' => $expected, + '$owner' => $expected, + '$profile_page' => xmlify('https://hubzilla.test/channel/test'), + ]); + + $expected_xml .= ''; + + $actual_xml = replace_macros($feed_template, [ + '$version' => 42, + '$generator' => 'Hubzilla test', + '$generator_uri' => 'https://hubzilla.test', + '$feed_id' => 'test_channel', + '$feed_title' => 'Test channel', + '$feed_updated' => 'Sometime', + '$author' => $actual, + '$owner' => $actual, + '$profile_page' => xmlify('https://hubzilla.test/channel/test'), + ]); + + $actual_xml .= ''; + + $this->assertXmlStringEqualsXmlString($expected_xml, $actual_xml); } } diff --git a/tests/unit/includes/LanguageTest.php b/tests/unit/includes/LanguageTest.php index 3367232f3..8f62e71e2 100644 --- a/tests/unit/includes/LanguageTest.php +++ b/tests/unit/includes/LanguageTest.php @@ -46,7 +46,7 @@ class LanguageTest extends UnitTestCase { } } - public function getLanguageNameProvider() { + public static function getLanguageNameProvider() { return [ 'empty language code' => [ '', diff --git a/tests/unit/includes/MarkdownTest.php b/tests/unit/includes/MarkdownTest.php index 960c15139..310130bf1 100644 --- a/tests/unit/includes/MarkdownTest.php +++ b/tests/unit/includes/MarkdownTest.php @@ -39,7 +39,7 @@ class MarkdownTest extends UnitTestCase { $this->assertEquals($expected, markdown_to_bb($src)); } - private function markdown_to_bbcode_provider(): array { + public static function markdown_to_bbcode_provider(): array { return [ 'empty text' => [ '', @@ -104,7 +104,7 @@ class MarkdownTest extends UnitTestCase { $this->assertEquals($markdown, html2markdown($html)); } - public function html2markdownProvider(): array { + public static function html2markdownProvider(): array { return [ 'empty text' => [ '', diff --git a/tests/unit/includes/NetworkTest.php b/tests/unit/includes/NetworkTest.php index 9fb00e9d3..5bf175953 100644 --- a/tests/unit/includes/NetworkTest.php +++ b/tests/unit/includes/NetworkTest.php @@ -20,7 +20,7 @@ class NetworkTest extends Zotlabs\Tests\Unit\UnitTestCase { $this->assertEquals($expected, is_local_url($url)); } - public function localUrlTestProvider() : array { + public static function localUrlTestProvider() : array { return [ [ '/some/path', true ], [ 'https://mytest.org/some/path', true ], @@ -47,7 +47,7 @@ class NetworkTest extends Zotlabs\Tests\Unit\UnitTestCase { $this->assertTrue(validate_email($email)); } - function validate_email_provider() : array { + public static function validate_email_provider() : array { return [ // First some invalid email addresses ['', false], diff --git a/tests/unit/includes/TextTest.php b/tests/unit/includes/TextTest.php index b76b15dcf..1e80d71d8 100644 --- a/tests/unit/includes/TextTest.php +++ b/tests/unit/includes/TextTest.php @@ -85,7 +85,7 @@ empty line above'; public function testNotags($string, $expected) { $this->assertEquals($expected, notags($string)); } - public function notagsProvider() { + public static function notagsProvider() { return [ 'empty string' => ['', ''], 'simple tag' => ['', '[value]'], @@ -102,7 +102,7 @@ empty line above'; sanitise_acl($string); $this->assertEquals($expected, $string); } - public function sanitise_aclProvider() { + public static function sanitise_aclProvider() { return [ 'text' => ['value', ''], 'text with angle bracket' => ['', '<[value]>'], diff --git a/tests/unit/includes/dba/TransactionTest.php b/tests/unit/includes/dba/TransactionTest.php index 99e3f459d..0b986c6aa 100644 --- a/tests/unit/includes/dba/TransactionTest.php +++ b/tests/unit/includes/dba/TransactionTest.php @@ -24,8 +24,8 @@ require_once 'tests/fakes/fake_dba.php'; require_once 'include/dba/dba_transaction.php'; -use \PHPUnit\Framework\TestCase; -use \Zotlabs\Tests\Fakes\FakeDba; +use PHPUnit\Framework\TestCase; +use Zotlabs\Tests\Fakes\FakeDba; /** * Test database transactions. @@ -39,7 +39,7 @@ class DbaTransactionTest extends TestCase { private $pdo_stub; public function setUp(): void { - $this->pdo_stub = $this->createStub(PDO::class); + $this->pdo_stub = $this->createMock(PDO::class); } -- cgit v1.2.3 From c009c5f43ae0291d0ce0e44b54cd82d50bd3d72b Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 29 May 2024 22:50:02 +0200 Subject: Fix default timeouts for z_(fetch|post)_url. When fetching the default timouts from config, the result is converted to an int via `intval()`, the result of that again is compared strictly to `false`. Since 0 !== false, the default values will never be used, and 0 (no timeout) is passed to curl. This cause requests to hang indefinitely (or until they are killed) when receiving actions that require a lookup or fetch to another site as part of the request processing. (E.g webfinger, or fetching objects that we received an announce action for.) This again cause the request never to return a useful status to the site sending the action, and could cause them to think the Hubzilla site is dead. This patch fixes this by comparing the fetched value from config to 0 instead of false, making the defaults work again if the config is not set (or set to 0). --- include/network.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/network.php b/include/network.php index a7a11ff6e..1978eb868 100644 --- a/include/network.php +++ b/include/network.php @@ -116,7 +116,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { } else { $curl_time = intval(@Config::Get('system','curl_timeout')); - @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); + @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== 0) ? $curl_time : 60)); } if(x($opts,'connecttimeout') && intval($opts['connecttimeout'])) { @@ -124,7 +124,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { } else { $curl_contime = intval(@Config::Get('system','curl_connecttimeout')); - @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (($curl_contime !== false) ? $curl_contime : 30)); + @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (($curl_contime !== 0) ? $curl_contime : 30)); } if(x($opts,'http_auth')) { @@ -298,7 +298,7 @@ function z_post_url($url, $params, $redirects = 0, $opts = array()) { } else { $curl_time = intval(@Config::Get('system','curl_timeout')); - @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== false) ? $curl_time : 60)); + @curl_setopt($ch, CURLOPT_TIMEOUT, (($curl_time !== 0) ? $curl_time : 60)); } if(x($opts,'http_auth')) { -- cgit v1.2.3 From a4d63ab9a35a3e3c5e128e266e5ddc3c2c6d2e8e Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 4 Jun 2024 09:05:34 +0000 Subject: hotfix to mitigate queueworker crash --- Zotlabs/Lib/Activity.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index b819ef0f7..b628221fb 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -762,7 +762,12 @@ class Activity { $ptr = [$ptr]; } foreach ($ptr as $att) { + if (!is_array($att)) { + continue; + } + $entry = []; + if (array_key_exists('href', $att) && $att['href']) { $entry['href'] = $att['href']; } elseif (array_key_exists('url', $att) && $att['url']) { @@ -1085,12 +1090,16 @@ class Activity { static function encode_person($p, $extended = true) { + $ret = (($extended) ? [] : ''); + + if (!is_array($p)) { + return $ret; + } + $c = ((array_key_exists('channel_id', $p)) ? $p : channelx_by_hash($p['xchan_hash'])); $id = (($c) ? channel_url($c) : ((filter_var($p['xchan_hash'], FILTER_VALIDATE_URL)) ? $p['xchan_hash'] : $p['xchan_url'])); - $ret = (($extended) ? [] : ''); - if (!$id) { return $ret; } -- cgit v1.2.3 From 350f84913a9390ac67f800a51f6c4d319331149c Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 5 Jun 2024 07:59:42 +0000 Subject: Skip checking MFA status for WebDAV and CardDAV requests. --- include/auth.php | 37 +++++++++++++- tests/unit/UnitTestCase.php | 1 + tests/unit/includes/AuthTest.php | 81 ++++++++++++++++++++++++++++++ tests/unit/includes/dba/_files/account.yml | 2 + 4 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 tests/unit/includes/AuthTest.php diff --git a/include/auth.php b/include/auth.php index 0cd48bce3..1fc2cc556 100644 --- a/include/auth.php +++ b/include/auth.php @@ -176,6 +176,40 @@ function log_failed_login($errormsg) { @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $errormsg . PHP_EOL, FILE_APPEND); } + +/** + * Determines if checking for multifactor authentication needs to be checked. + * + * Checks that multi factor authentication is enabled for the given account_id, + * and whether it's already authenticated or not. + * + * Some modules needs to be excluded from the mfa checks for various reasons: + * + * - `totp_check` is used by the mfa module itself. + * - `dav` provides WebDAV access, and has no way of providing a mfa code. + * - `cdav` is accessed both via CardDAV which has the same limitations as + * the `dav` module, but may also be accessed via a web browser over http. + * We only exclude it if it's not being accessed via a web browser. + * + * @param int $account_id The id of the account we're verifying. + * @param string $module The requested module. + * @param string $arg The first arg passed to the module (or empty if none.) + * + * @return bool `true` if mfa status needs to be checked, `false` otherwise. + */ +function requires_mfa_check(int $account_id, string $module, string $arg): bool { + if (in_array($module, ['totp_check', 'dav'], true)) { + return false; + } + + if ($module === 'cdav' && !in_array($arg, ['addressbook', 'calendar'], true)) { + return false; + } + + $multiFactor = AConfig::Get($account_id, 'system', 'mfa_enabled'); + return $multiFactor && empty($_SESSION['2FA_VERIFIED']); +} + /** * Inline - not a function * look for auth parameters or re-validate an existing session @@ -267,8 +301,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) && $login_refresh = true; } - $multiFactor = AConfig::Get(App::$account['account_id'], 'system', 'mfa_enabled'); - if ($multiFactor && empty($_SESSION['2FA_VERIFIED']) && App::$module !== 'totp_check') { + if (requires_mfa_check(App::$account['account_id'], App::$module, argv(1))) { $o = new Totp_check; echo $o->get(); killme(); diff --git a/tests/unit/UnitTestCase.php b/tests/unit/UnitTestCase.php index 844746a51..afc309205 100644 --- a/tests/unit/UnitTestCase.php +++ b/tests/unit/UnitTestCase.php @@ -31,6 +31,7 @@ use PHPUnit\Framework\TestCase; */ require_once __DIR__ . '/../../boot.php'; require_once 'include/dba/dba_driver.php' ; +require_once 'include/dba/dba_transaction.php'; /** * Base class for our Unit Tests. diff --git a/tests/unit/includes/AuthTest.php b/tests/unit/includes/AuthTest.php new file mode 100644 index 000000000..fa9726fe8 --- /dev/null +++ b/tests/unit/includes/AuthTest.php @@ -0,0 +1,81 @@ +fixtures['account']['0']['account_id']; + + $_SESSION = [ + 'authenticated' => true, + 'account_id' => $account_id, + + // Trick the code to not warn that $_SESSION['uid'] is not set, + // but also not trigger the code that tries to change to the + // given channel. *Remove when code is fixed!* + 'uid' => 0, + ]; + + $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; + + App::$session = $this->create_session_stub(); + App::$module = $module; + App::$argv = $args; + App::$argc = count($args); + + // Enable multi factor authentication for this account + AConfig::Set($account_id, 'system', 'mfa_enabled', true); + + require 'include/auth.php'; + + $this->assertEquals(1, $_SESSION['authenticated']); + } + + /** + * Data provider for testing modules excluded from mfa + * @SuppressWarnings(PHPMD.UnusedPrivateMethod) + */ + public static function modules_excluded_from_mfa(): array { + return [ + ['totp_check', []], + ['cdav', []], + ['cdav', ['calendar']], + ['cdav', ['addressbook']], + ['dav', []], + ]; + } + + private function create_session_stub(): \Zotlabs\Web\Session { + return $this->createStub('Zotlabs\Web\Session'); + } +} diff --git a/tests/unit/includes/dba/_files/account.yml b/tests/unit/includes/dba/_files/account.yml index 344bdb799..88e59056e 100644 --- a/tests/unit/includes/dba/_files/account.yml +++ b/tests/unit/includes/dba/_files/account.yml @@ -3,7 +3,9 @@ account: account_id: 42 account_email: "hubzilla@example.com" account_language: "no" + account_flags: 0 - account_id: 43 account_email: "hubzilla@example.org" account_language: "de" + account_flags: 1 -- cgit v1.2.3 From d0bb3a7354b91fc797b97f19032e014cbaaa350c Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 5 Jun 2024 08:01:04 +0000 Subject: Correct type annotation in comment for Config::Get. --- Zotlabs/Lib/Config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Lib/Config.php b/Zotlabs/Lib/Config.php index 95df8ed6f..cd8b08991 100644 --- a/Zotlabs/Lib/Config.php +++ b/Zotlabs/Lib/Config.php @@ -115,7 +115,7 @@ class Config { * The category of the configuration value * @param string $key * The configuration key to query - * @param string $default (optional) default false + * @param mixed $default (optional) default false * @return mixed Return value or false on error or if not set */ public static function Get($family, $key, $default = false) { -- cgit v1.2.3 From 5efc6bdd2f85497d0c863551f01236527cc7344f Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 5 Jun 2024 08:09:26 +0000 Subject: bump version --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index d8b2953e8..a52f27830 100644 --- a/boot.php +++ b/boot.php @@ -64,7 +64,7 @@ require_once('include/selectors.php'); require_once('include/activities.php'); define('PLATFORM_NAME', 'hubzilla'); -define('STD_VERSION', '9.1.3'); +define('STD_VERSION', '9.1.4'); define('ZOT_REVISION', '6.0'); define('DB_UPDATE_VERSION', 1263); -- cgit v1.2.3 From 494ff44a6984d2be3a40e276c728a33c124f5196 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 5 Jun 2024 10:04:16 +0000 Subject: adjusting to the wrong direction when exporting ical and do not use Z because timezone is attached --- include/event.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/event.php b/include/event.php index ef73fc9b5..3beb15b7a 100644 --- a/include/event.php +++ b/include/event.php @@ -272,9 +272,9 @@ function format_event_ical($ev) { if($ev['adjust']) { if($ev['dtstart']) - $o .= "\r\nDTSTART$tzid:" . datetime_convert($tz,'UTC', $ev['dtstart'],'Ymd\\THis\\Z'); + $o .= "\r\nDTSTART$tzid:" . datetime_convert('UTC', $tz, $ev['dtstart'],'Ymd\\THis'); if($ev['dtend'] && ! $ev['nofinish']) - $o .= "\r\nDTEND$tzid:" . datetime_convert($tz,'UTC', $ev['dtend'],'Ymd\\THis\\Z'); + $o .= "\r\nDTEND$tzid:" . datetime_convert('UTC', $tz, $ev['dtend'],'Ymd\\THis'); } else { if($ev['dtstart']) -- cgit v1.2.3 From 59b8c8ad487e9695d7d85f2529adc9e0b2cd6cc1 Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 7 Jun 2024 09:11:09 +0000 Subject: move button class to the right dom --- view/tpl/cal_event.tpl | 2 +- view/tpl/event.tpl | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/view/tpl/cal_event.tpl b/view/tpl/cal_event.tpl index d7662786b..0719d5262 100644 --- a/view/tpl/cal_event.tpl +++ b/view/tpl/cal_event.tpl @@ -6,7 +6,7 @@ {{$event.html}}
    - {{if $event.item.plink}}{{/if}} + {{if $event.item.plink}}{{/if}}
    diff --git a/view/tpl/event.tpl b/view/tpl/event.tpl index cc0bfc1c7..91dc53421 100644 --- a/view/tpl/event.tpl +++ b/view/tpl/event.tpl @@ -6,9 +6,9 @@ {{$event.html}}
    - {{if $event.item.plink}}{{/if}} - {{if $event.edit}}{{/if}} - {{if $event.drop}}{{/if}} + {{if $event.item.plink}}{{/if}} + {{if $event.edit}}{{/if}} + {{if $event.drop}}{{/if}}
    -- cgit v1.2.3 From d862a6f0753affa520e8108c9f6814f9ae16c174 Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 7 Jun 2024 09:19:50 +0000 Subject: update changelog --- CHANGELOG | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 67f6783a9..cd5c142e4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,12 @@ +Hubzilla 9.0.2 (2024-06-07) + - Fix buttons in event viewer + - Fix some PHP warnings and errors + - Fix issue when inReplyTo field is an array + - Fix possible queueworker crash + - Fix missing pdl file for mod home + - Reduced default directory result set + + Hubzilla 9.0.1 (2024-03-26) - Fix an issue where after an update initiated from a modal the modal backdrop would remain - Fix bootstrap namespace in conv list templates -- cgit v1.2.3 From bd5f77dbeb4ec92bdbe3aba3a8ef05c5296edbc0 Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 7 Jun 2024 09:21:43 +0000 Subject: update changelog --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index cd5c142e4..b5cd098a4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,8 @@ Hubzilla 9.0.2 (2024-06-07) - Fix possible queueworker crash - Fix missing pdl file for mod home - Reduced default directory result set + - Fix fatal error in likebanner addon + - Fix fatal error in hilite addon Hubzilla 9.0.1 (2024-03-26) -- cgit v1.2.3 From 9348bd6ea5bc8573201ed773c1de26949dd1b510 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 08:02:32 +0000 Subject: remove unused variable and superfluous backslash --- Zotlabs/Lib/ThreadItem.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index 290a7b0c2..eb1020cd2 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -44,8 +44,6 @@ class ThreadItem { $this->toplevel = ($this->get_id() == $this->get_data_value('parent')); $this->threaded = Config::Get('system','thread_allow'); - $observer = \App::get_observer(); - // Prepare the children if(isset($data['children'])) { @@ -875,7 +873,7 @@ class ThreadItem { '$feature_encrypt' => ((feature_enabled($conv->get_profile_owner(),'content_encrypt')) ? true : false), '$encrypt' => t('Encrypt text'), '$cipher' => $conv->get_cipher(), - '$sourceapp' => \App::$sourcename, + '$sourceapp' => App::$sourcename, '$observer' => get_observer_hash(), '$anoncomments' => ((in_array($conv->get_mode(), ['channel', 'display', 'cards', 'articles']) && perm_is_allowed($conv->get_profile_owner(),'','post_comments')) ? true : false), '$anonname' => [ 'anonname', t('Your full name (required)') ], -- cgit v1.2.3 From 388e7c88dff956dca9e3498076e9f3cf49a153c8 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 08:22:43 +0000 Subject: remove superfluous param, fix wrong var and declare types for unparse_url() --- Zotlabs/Lib/Activity.php | 4 ++-- include/network.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index b628221fb..5613e6bda 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -70,7 +70,7 @@ class Activity { } if ($items) { - return self::encode_item(array_shift($items), true); + return self::encode_item(array_shift($items)); } return null; @@ -2902,7 +2902,7 @@ class Activity { if (intval($parent[0]['item_private'])) { if (!intval($item['item_private'])) { - $item['item_private'] = intval($parent_item['item_private']); + $item['item_private'] = intval($parent[0]['item_private']); $item['allow_cid'] = '<' . $channel['channel_hash'] . '>'; $item['allow_gid'] = $item['deny_cid'] = $item['deny_gid'] = ''; } diff --git a/include/network.php b/include/network.php index 1978eb868..bb5bc1ce7 100644 --- a/include/network.php +++ b/include/network.php @@ -2146,9 +2146,9 @@ function get_request_string($url) { * * @param array $parsed_url An associative array as produced by `parse_url`. * - * @return The reassembled URL as a string. + * @return string The reassembled URL as a string. */ -function unparse_url($parsed_url) { +function unparse_url(array $parsed_url): string { $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : ''; $host = isset($parsed_url['host']) ? $parsed_url['host'] : ''; $port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : ''; @@ -2158,5 +2158,5 @@ function unparse_url($parsed_url) { $path = isset($parsed_url['path']) ? $parsed_url['path'] : ''; $query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : ''; $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : ''; - return "$scheme$user$pass$host$port$path$query$fragment"; + return $scheme . $user . $pass . $host . $port . $path . $query . $fragment; } -- cgit v1.2.3 From 69862bc6df3ab0a32edbb90ff0e60ffedd03cc4e Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 08:26:06 +0000 Subject: docu and declare return type for t() --- include/language.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/language.php b/include/language.php index 22f350aac..538f67d90 100644 --- a/include/language.php +++ b/include/language.php @@ -198,10 +198,10 @@ function load_translation_table($lang, $install = false) { * * @param string $s string that should get translated * @param string $ctx (optional) context to appear in po file - * @return translated string if exists, otherwise return $s + * @return string translated string if exists, otherwise return $s * */ -function t($s, $ctx = '') { +function t($s, $ctx = ''): string { $cs = $ctx ? '__ctx:' . $ctx . '__ ' . $s : $s; if (x(App::$strings, $cs)) { -- cgit v1.2.3 From 43a2c21d8784ed0a5a4968edb91fed818fd993f7 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 08:40:39 +0000 Subject: fix updated not supported in wrapper function --- Zotlabs/Lib/Libsync.php | 2 +- include/config.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Zotlabs/Lib/Libsync.php b/Zotlabs/Lib/Libsync.php index e68fd53f1..a7e33ba6b 100644 --- a/Zotlabs/Lib/Libsync.php +++ b/Zotlabs/Lib/Libsync.php @@ -267,7 +267,7 @@ class Libsync { } if ($cat !== 'hz_delpconfig') { - set_pconfig($channel['channel_id'],$cat,$k,$v,$pconfig_updated[$k]); + set_pconfig($channel['channel_id'], $cat, $k, $v, $pconfig_updated[$k]); } } } diff --git a/include/config.php b/include/config.php index 674d5afe4..4dd40eccf 100644 --- a/include/config.php +++ b/include/config.php @@ -120,8 +120,8 @@ function get_pconfig($uid, $family, $key, $default = false) { return Zlib\PConfig::Get($uid,$family,$key,$default); } -function set_pconfig($uid, $family, $key, $value) { - return Zlib\PConfig::Set($uid,$family,$key,$value); +function set_pconfig($uid, $family, $key, $value, $updated = NULL) { + return Zlib\PConfig::Set($uid, $family, $key, $value, $updated); } function del_pconfig($uid, $family, $key, $updated = NULL) { -- cgit v1.2.3 From 0428a97e00592e20f5a0b6369bd47bb7e10ab437 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 08:56:59 +0000 Subject: docu --- include/attach.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/attach.php b/include/attach.php index 2283da1c6..556fd362c 100644 --- a/include/attach.php +++ b/include/attach.php @@ -2668,8 +2668,8 @@ function attach_move($channel_id, $resource_id, $new_folder_hash, $newname = '', * @param int $channel_id * @param int $resource_id * @param string $new_folder_hash - * @param (optional) string $newname - * @param (optional) boolean $recurse + * @param string (optional) $newname + * @param boolean (optional) $recurse * @return array Associative array with: * * \e boolean \b success * * \e string \b resource_id of the new resource -- cgit v1.2.3 From 9c62514c1b6a4c320dc8dd0b7f235067f235b8c8 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 08:58:32 +0000 Subject: docu --- include/attach.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/attach.php b/include/attach.php index 556fd362c..6f474961a 100644 --- a/include/attach.php +++ b/include/attach.php @@ -2467,8 +2467,8 @@ function copy_folder_to_cloudfiles($channel, $observer_hash, $srcpath, $cloudpat * @param int $channel_id * @param int $resource_id * @param string $new_folder_hash - * @param (optional) string $newname - * @param (optional) boolean $recurse + * @param string (optional) $newname + * @param boolean (optional) $recurse * @return array Associative array with: * * \e boolean \b success * * \e string \b resource_id -- cgit v1.2.3 From c5cab3004f76abbd7ba59a3e588f83bdb3692b14 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 09:09:36 +0000 Subject: remove duplicate array key --- Zotlabs/Module/Hq.php | 1 - 1 file changed, 1 deletion(-) diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php index ae6a016fc..7b086b52c 100644 --- a/Zotlabs/Module/Hq.php +++ b/Zotlabs/Module/Hq.php @@ -98,7 +98,6 @@ class Hq extends \Zotlabs\Web\Controller { 'permissions' => $channel_acl, 'bang' => '', 'visitor' => true, - 'profile_uid' => local_channel(), 'return_path' => 'hq', 'expanded' => true, 'editor_autocomplete' => true, -- cgit v1.2.3 From 51fe071c5ee6e7bd6adf532b250f788d3cb2e9cc Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 09:16:21 +0000 Subject: =?UTF-8?q?=C3=83fix=20undefined=20variable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Zotlabs/Module/Item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index 0324bf662..0b46f2baf 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -1654,7 +1654,7 @@ class Item extends Controller { $listener = Libzot::zot_record_preferred($listener); $c = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s'", - intval($profile_uid), + intval($item['uid']), dbesc($listener['hubloc_hash']) ); -- cgit v1.2.3 From d9e97a7c1f24ab6f64d60adddb4ddce72105fa72 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 09:35:13 +0000 Subject: remove superfluous backslash --- Zotlabs/Render/SmartyInterface.php | 2 +- Zotlabs/Render/Theme.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Zotlabs/Render/SmartyInterface.php b/Zotlabs/Render/SmartyInterface.php index d80ea3f3a..64c6aa377 100644 --- a/Zotlabs/Render/SmartyInterface.php +++ b/Zotlabs/Render/SmartyInterface.php @@ -20,7 +20,7 @@ class SmartyInterface extends Smarty { $template_dirs = array('theme' => "view/theme/$thname/tpl/"); if ( x(App::$theme_info,"extends") ) { - $template_dirs = $template_dirs + array('extends' => "view/theme/" . \App::$theme_info["extends"] . "/tpl/"); + $template_dirs = $template_dirs + array('extends' => "view/theme/" . App::$theme_info["extends"] . "/tpl/"); } $template_dirs = $template_dirs + array('base' => 'view/tpl/'); $this->setTemplateDir($template_dirs); diff --git a/Zotlabs/Render/Theme.php b/Zotlabs/Render/Theme.php index 543bf7a3f..a42b65e03 100644 --- a/Zotlabs/Render/Theme.php +++ b/Zotlabs/Render/Theme.php @@ -24,7 +24,7 @@ class Theme { * * @return array */ - static public function current(){ + static public function current() { self::$system_theme = ((isset(App::$config['system']['theme'])) ? App::$config['system']['theme'] : ''); @@ -37,7 +37,7 @@ class Theme { if(App::$profile_uid) { $r = q("select channel_theme from channel where channel_id = %d limit 1", - intval(\App::$profile_uid) + intval(App::$profile_uid) ); if($r) { $page_theme = $r[0]['channel_theme']; @@ -46,7 +46,7 @@ class Theme { // Themes from Comanche layouts over-ride the channel theme - if(array_key_exists('theme', \App::$layout) && \App::$layout['theme']) { + if(array_key_exists('theme', App::$layout) && App::$layout['theme']) { $page_theme = App::$layout['theme']; } -- cgit v1.2.3 From 8f41d170a557dfd18caab7e7d8b2405b23b7b2e8 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 09:45:33 +0000 Subject: fix wrong variable --- include/event.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/event.php b/include/event.php index 3beb15b7a..f8511cbe2 100644 --- a/include/event.php +++ b/include/event.php @@ -797,7 +797,7 @@ function parse_event_object($event_object_json) { $tz = $object['timezone'] ?? 'UTC'; $ev['summary'] = $object['summary'] ?? $object['name'] ?? ''; - $ev['description'] = html2bbcode($content['content']) ?? ''; + $ev['description'] = html2bbcode($object['content']) ?? ''; $ev['dtstart'] = $object['startTime'] ? datetime_convert('UTC', 'UTC', $object['startTime']) : ''; $ev['dtend'] = $object['endTime'] ? datetime_convert('UTC', 'UTC', $object['endTime']) : $ev['dtstart']; $ev['location'] = $object['location']['name'] ?? ''; -- cgit v1.2.3 From 539ae375532a058496468093a88f0b9b20d4a601 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 09:50:06 +0000 Subject: too many args --- include/html2plain.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/html2plain.php b/include/html2plain.php index 88dce577d..69fb5193a 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -196,7 +196,7 @@ function html2plain($html, $wraplength = 75, $compact = false) // Problem: there is no reliable way to detect if it is a link to a tag or profile //node2bbcode($doc, 'a', array('href'=>'/(.+)/'), ' $1 ', '', true); - node2bbcode($doc, 'a', array('href'=>'/(.+)/', 'rel'=>'oembed'), ' $1 ', '', true); + node2bbcode($doc, 'a', array('href'=>'/(.+)/', 'rel'=>'oembed'), ' $1 ', ''); //node2bbcode($doc, 'img', array('alt'=>'/(.+)/'), '$1', ''); //node2bbcode($doc, 'img', array('title'=>'/(.+)/'), '$1', ''); //node2bbcode($doc, 'img', array(), '', ''); @@ -205,7 +205,7 @@ function html2plain($html, $wraplength = 75, $compact = false) else node2bbcode($doc, 'img', array('src'=>'/(.+)/'), '', ''); - node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), ' $1 ', '', true); + node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), ' $1 ', ''); $message = $doc->saveHTML(); -- cgit v1.2.3 From 06183ba01a9f95f905f3797f684526c4576046dc Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 10 Jun 2024 10:00:25 +0000 Subject: duplicate array key --- include/attach.php | 1 - 1 file changed, 1 deletion(-) diff --git a/include/attach.php b/include/attach.php index 6f474961a..449721793 100644 --- a/include/attach.php +++ b/include/attach.php @@ -113,7 +113,6 @@ function z_mime_content_type($filename) { 'odf' => 'application/vnd.oasis.opendocument.formula', 'odi' => 'application/vnd.oasis.opendocument.image', 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'odb' => 'application/vnd.oasis.opendocument.base', 'odb' => 'application/vnd.oasis.opendocument.database', 'ott' => 'application/vnd.oasis.opendocument.text-template', 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', -- cgit v1.2.3 From 4ba4b2976e71d3ba61148962eab35bedf50d140a Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 11 Jun 2024 07:42:43 +0000 Subject: pass the force argument to the xchan_photo daemon --- Zotlabs/Daemon/Xchan_photo.php | 9 ++++++--- Zotlabs/Lib/Activity.php | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Zotlabs/Daemon/Xchan_photo.php b/Zotlabs/Daemon/Xchan_photo.php index f90d1d726..662fc967c 100644 --- a/Zotlabs/Daemon/Xchan_photo.php +++ b/Zotlabs/Daemon/Xchan_photo.php @@ -8,14 +8,15 @@ class Xchan_photo { static public function run($argc, $argv) { - if ($argc != 3) { + if ($argc < 3) { return; } $url = hex2bin($argv[1]); $xchan = hex2bin($argv[2]); + $force = $argv[3]; - $photos = import_xchan_photo($url, $xchan); + $photos = import_xchan_photo($url, $xchan, false, $force); if ($photos) { $result = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'", dbescdate(datetime_convert()), @@ -27,8 +28,10 @@ class Xchan_photo { ); if (! $result) { - logger("xchan update failed for $url"); + logger("xchan photo update failed for $url"); } } + + return; } } diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 5613e6bda..9178dac39 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -1875,7 +1875,7 @@ class Activity { } if ($icon) { - Master::Summon(['Xchan_photo', bin2hex($icon), bin2hex($url)]); + Master::Summon(['Xchan_photo', bin2hex($icon), bin2hex($url), $force]); } } -- cgit v1.2.3 From 64748cf1f176c661e407b6bb2caf5a2cdff03e68 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 11 Jun 2024 08:52:10 +0000 Subject: cleanup unused code --- Zotlabs/Module/Hq.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php index 7b086b52c..f06900f83 100644 --- a/Zotlabs/Module/Hq.php +++ b/Zotlabs/Module/Hq.php @@ -116,17 +116,6 @@ class Hq extends \Zotlabs\Web\Controller { nav_set_selected('HQ'); - if($target_item) { - // if the target item is not a post (eg a like) we want to address its thread parent - //$mid = ((($target_item['verb'] == ACTIVITY_LIKE) || ($target_item['verb'] == ACTIVITY_DISLIKE)) ? $target_item['thr_parent'] : $target_item['mid']); - - // if we got a decoded hash we must encode it again before handing to javascript - // $mid = gen_link_id($target_item['mid']); - } - else { - $mid = ''; - } - $o .= '
    ' . "\r\n"; $o .= "\r\n"; -- cgit v1.2.3 From 5110dcb9126a0d21062537f0fb640c3078811f81 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 11 Jun 2024 08:58:35 +0000 Subject: remove not required includes and include security.php in boot.php --- Zotlabs/Module/Hq.php | 8 -------- boot.php | 2 ++ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php index f06900f83..c8e6efe38 100644 --- a/Zotlabs/Module/Hq.php +++ b/Zotlabs/Module/Hq.php @@ -4,14 +4,6 @@ namespace Zotlabs\Module; use App; use Zotlabs\Widget\Messages; - -require_once("include/bbcode.php"); -require_once('include/security.php'); -require_once('include/conversation.php'); -require_once('include/acl_selectors.php'); -require_once('include/items.php'); - - class Hq extends \Zotlabs\Web\Controller { function init() { diff --git a/boot.php b/boot.php index a52f27830..c56e4fabf 100644 --- a/boot.php +++ b/boot.php @@ -62,6 +62,8 @@ require_once('include/conversation.php'); require_once('include/acl_selectors.php'); require_once('include/selectors.php'); require_once('include/activities.php'); +require_once('include/security.php'); + define('PLATFORM_NAME', 'hubzilla'); define('STD_VERSION', '9.1.4'); -- cgit v1.2.3 From 088a87914f7bbe5bb45ea125ae3c1b1a8ef0ed80 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 11 Jun 2024 09:00:43 +0000 Subject: remove not needed namespace --- boot.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index c56e4fabf..032bfbc15 100644 --- a/boot.php +++ b/boot.php @@ -1648,7 +1648,7 @@ function fix_system_urls($oldurl, $newurl) { } } - Zotlabs\Daemon\Master::Summon(['Notifier', 'refresh_all', $c[0]['channel_id']]); + Master::Summon(['Notifier', 'refresh_all', $c[0]['channel_id']]); } } @@ -2725,7 +2725,7 @@ function check_cron_broken() { $d = Config::Get('system', 'lastcron'); if ((!$d) || ($d < datetime_convert('UTC', 'UTC', 'now - 4 hours'))) { - Zotlabs\Daemon\Master::Summon(['Cron']); + Master::Summon(['Cron']); Config::Set('system', 'lastcron', datetime_convert()); } -- cgit v1.2.3 From 13c074f8b8f8340efc7c5912c615b6cfa693409d Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 22 May 2024 19:20:57 +0200 Subject: Module\Setup: Pass all required params for the template. Non-existing keys in the array passed to the template causes a warning. Also make optional parts of the template actually optional by skipping them if the value is empty. --- Zotlabs/Module/Setup.php | 2 ++ view/tpl/install.tpl | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index 647415385..a4204afd7 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -215,9 +215,11 @@ class Setup extends \Zotlabs\Web\Controller { $tpl = get_markup_template('install.tpl'); return replace_macros($tpl, array( '$title' => $install_title, + '$icon' => null, '$pass' => '', '$status' => t('Permission denied.'), '$text' => '', + '$what_next' => null, )); } } diff --git a/view/tpl/install.tpl b/view/tpl/install.tpl index 5ab722b12..56faa0527 100644 --- a/view/tpl/install.tpl +++ b/view/tpl/install.tpl @@ -2,7 +2,9 @@

    {{$title}}


    + {{if $icon}}

      {{$pass}}

    + {{/if}}
    {{if $status}} @@ -11,5 +13,5 @@
    {{$text}}

    - {{$what_next}} + {{if $what_next}}{{$what_next}}{{/if}} -- cgit v1.2.3 From 4d5a7ec39f9d036ab6f68e3ca9f9919cc967109c Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 22 May 2024 19:59:52 +0200 Subject: includes/menu: Fix timestamp handling in menu_create. Referencing undefined array keys are not allowed anymore, so we need to check whether they exist first. --- include/menu.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/menu.php b/include/menu.php index 1f65f987d..2fcf88bca 100644 --- a/include/menu.php +++ b/include/menu.php @@ -166,7 +166,8 @@ function menu_create($arr) { if($r) return false; - $t = datetime_convert(); + $time_created = datetime_convert('UTC', 'UTC', empty($arr['menu_created']) ? 'now' : $arr['menu_created']); + $time_edited = empty($arr['menu_edited']) ? $time_created : datetime_convert('UTC', 'UTC', $arr['menu_edited']); $r = q("insert into menu ( menu_name, menu_desc, menu_flags, menu_channel_id, menu_created, menu_edited ) values( '%s', '%s', %d, %d, '%s', '%s' )", @@ -174,8 +175,8 @@ function menu_create($arr) { dbesc($menu_desc), intval($menu_flags), intval($menu_channel_id), - dbesc(datetime_convert('UTC','UTC',(($arr['menu_created']) ? $arr['menu_created'] : $t))), - dbesc(datetime_convert('UTC','UTC',(($arr['menu_edited']) ? $arr['menu_edited'] : $t))) + dbesc($time_created), + dbesc($time_edited) ); if(! $r) return false; -- cgit v1.2.3 From c7ec3159ead30c2306a84d060ecc63e60e5c9084 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 22 May 2024 20:01:34 +0200 Subject: Module\Rbmark: Specify all fields in the template. The `field_select` sub template wants five elements in the `field` array. --- Zotlabs/Module/Rbmark.php | 1 + 1 file changed, 1 insertion(+) diff --git a/Zotlabs/Module/Rbmark.php b/Zotlabs/Module/Rbmark.php index b1aea2590..8ac23a4e4 100644 --- a/Zotlabs/Module/Rbmark.php +++ b/Zotlabs/Module/Rbmark.php @@ -73,6 +73,7 @@ class Rbmark extends \Zotlabs\Web\Controller { false, '', $this->get_bookmark_folders(intval($channel_id)), + null, ]; return replace_macros(get_markup_template('rbmark.tpl'), array( -- cgit v1.2.3 From 0a818191c1a282768049ecb8f65180a75594afc1 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 22 May 2024 20:06:40 +0200 Subject: boot/login: Pass all expected args to sub templates. --- boot.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/boot.php b/boot.php index d8b2953e8..372c26763 100644 --- a/boot.php +++ b/boot.php @@ -1758,9 +1758,9 @@ function login($register = false, $form_id = 'main_login', $hiddens = false, $lo '$login' => t('Login'), '$remote_login' => t('Remote Authentication'), '$form_id' => $form_id, - '$lname' => [$form_id . '_username', $lname_label], - '$lpassword' => [$form_id . '_password', t('Password')], - '$remember_me' => [$form_id . '_remember', t('Remember me'), '', '', [t('No'), t('Yes')]], + '$lname' => [$form_id . '_username', $lname_label, null, null, null, null], + '$lpassword' => [$form_id . '_password', t('Password'), null, null, null, null], + '$remember_me' => [$form_id . '_remember', t('Remember me'), '', '', [t('No'), t('Yes')], null, null], '$hiddens' => $hiddens, '$register' => $reg, '$lostpass' => t('Forgot your password?'), -- cgit v1.2.3 From ffc2455bea61df2fb0ecf1b39bc596541cb84c40 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 22 May 2024 20:30:44 +0200 Subject: Module\Rbmark: Pass all fields to input field templates. --- Zotlabs/Module/Rbmark.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Zotlabs/Module/Rbmark.php b/Zotlabs/Module/Rbmark.php index 8ac23a4e4..df32a97c2 100644 --- a/Zotlabs/Module/Rbmark.php +++ b/Zotlabs/Module/Rbmark.php @@ -78,12 +78,12 @@ class Rbmark extends \Zotlabs\Web\Controller { return replace_macros(get_markup_template('rbmark.tpl'), array( '$header' => t('Save Bookmark'), - '$url' => array('url',t('URL of bookmark'),$_REQUEST['url']), - '$title' => array('title',t('Description'),$_REQUEST['title']), + '$url' => array('url',t('URL of bookmark'),$_REQUEST['url'], null, null, null), + '$title' => array('title',t('Description'),$_REQUEST['title'], null, null, null), '$ischat' => ((x($_REQUEST,'ischat')) ? intval($_REQUEST['ischat']) : 0), '$private' => ((x($_REQUEST,'private')) ? intval($_REQUEST['private']) : 0), '$submit' => t('Save'), - '$menu_name' => array('menu_name',t('Or enter new bookmark folder name'),'',''), + '$menu_name' => array('menu_name',t('Or enter new bookmark folder name'),'','', null, null), '$menus' => $menu_select )); } -- cgit v1.2.3 From ad9fb4d530d02c4e432f14626c1f08fe827255c5 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 22 May 2024 20:40:56 +0200 Subject: Module\Help: Only variables can be passed by reference. Introduce an intermediate variable when extracting the file type from the file name. Otherwise we would try to pass a returned value as a reference. --- Zotlabs/Module/Help.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Module/Help.php b/Zotlabs/Module/Help.php index 5d52440a5..fd5cacee6 100644 --- a/Zotlabs/Module/Help.php +++ b/Zotlabs/Module/Help.php @@ -210,7 +210,8 @@ class Help extends \Zotlabs\Web\Controller { $content = preg_replace_callback( "/#include (.*?)\;/ism", function ($matches) { - $sub_file_type = array_pop(explode('.', $matches[1])); + $parts = explode('.', $matches[1]); + $sub_file_type = array_pop($parts); $included_content = $this->render_help_file($matches[1], $sub_file_type); return str_replace($matches[0], $included_content, $matches[0]); }, -- cgit v1.2.3 From ac1e20b1880d57aab2048e670449768d51dbc0b0 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 22 May 2024 20:44:27 +0200 Subject: Module\Setup: Don't access static variable as non static. --- Zotlabs/Module/Setup.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index a4204afd7..7ca3f827c 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -46,9 +46,9 @@ class Setup extends \Zotlabs\Web\Controller { } if(x($_POST, 'pass')) { - $this->install_wizard_pass = intval($_POST['pass']); + self::$install_wizard_pass = intval($_POST['pass']); } else { - $this->install_wizard_pass = 1; + self::$install_wizard_pass = 1; } } @@ -239,7 +239,7 @@ class Setup extends \Zotlabs\Web\Controller { )); } - switch ($this->install_wizard_pass){ + switch (self::$install_wizard_pass){ case 1: { // System check $checks = array(); -- cgit v1.2.3 From 9199a1ba81b6ed2c6dcbc1f842eb31b5f2c7d919 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 12 Jun 2024 23:53:20 +0200 Subject: Add config file and rules for PHP Code Sniffer. The rules are based on the "Generic" ruleset included by PHP Code Sniffer, with a significant portion of the rules disabled. This is a tradeoff between getting some useful feedback, and not being overloaded by noise. I've tried to encode a coe style that resembles the existing code as much as possible, but have included some sniffs that requires code changes to satisfy the style. This is meant as a starting point, and we can disable or enable more sniffs as we see fit. PHPCS also has ready rule sets for other common coding standards we may want to gravitate towards, e.g. PSR-12. Others are available from the community. The best way to run PHPCS is to integrate it with your editor, so that it will display diacnostics inline when saving or modifying the code. It can also be run from the command line like this: ./vendor/bin/phpcs -n [] If no file is specified it will try to check the entire project. The `-n` means don't bother with warnings (I recommend that to begin with. Enable the warnings when the errors are taken care of.) --- .phpcs.xml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .phpcs.xml diff --git a/.phpcs.xml b/.phpcs.xml new file mode 100644 index 000000000..0054e4cda --- /dev/null +++ b/.phpcs.xml @@ -0,0 +1,78 @@ + + + + PHP CodeSniffer config for Hubzilla + + app + boot.php + include + index.php + install + library + tests + util + view + Zotlabs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From 6e0d0e38321dda6075586c12244c73eff6623565 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 13 Jun 2024 10:17:13 +0000 Subject: docu and remove superfluous break statement after return statement --- include/security.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/include/security.php b/include/security.php index bc44704d0..545788bcd 100644 --- a/include/security.php +++ b/include/security.php @@ -8,7 +8,7 @@ use Zotlabs\Lib\Config; /** - * @param int $user_record The account_id + * @param array $user_record The account record * @param array $channel * @param bool $login_initial default false * @param bool $interactive default false @@ -908,7 +908,6 @@ function zarIsDuty($wd=NULL, $hhmm=NULL, $op='isOpen') { } } return $dutyis; - break; case 'nextOpen': /** @@ -953,7 +952,6 @@ function zarIsDuty($wd=NULL, $hhmm=NULL, $op='isOpen') { } } return $is1; // false or array - break; default: // -- cgit v1.2.3 From 62aefadc27002f9d47f391b15520a82d5c3d6ecc Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 18 May 2024 11:30:29 +0200 Subject: Module\Rpost: Add basic test and fix session access. Just a basic test to ensure that the module `get()` method behaves somewhat reasonable when no query params are given. Had to make a small change to the Rpost module itself. Since the `$_SESSION` superglobal may not always be set (and is not in the test), use `isset` instead of `array_key_exists` to check if we have saved query params in the session. In general, isset is safer than array_key_exists if there's a chance that the array itself may not exist. --- Zotlabs/Module/Rpost.php | 2 +- tests/unit/Module/RpostTest.php | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tests/unit/Module/RpostTest.php diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 23324ee3a..4979fdd7c 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -140,7 +140,7 @@ class Rpost extends \Zotlabs\Web\Controller { // If we have saved rpost session variables, but nothing in the current $_REQUEST, recover the saved variables - if((! array_key_exists('body',$_REQUEST)) && (array_key_exists('rpost',$_SESSION))) { + if((! array_key_exists('body',$_REQUEST)) && isset($_SESSION['rpost'])) { $_REQUEST = $_SESSION['rpost']; unset($_SESSION['rpost']); } diff --git a/tests/unit/Module/RpostTest.php b/tests/unit/Module/RpostTest.php new file mode 100644 index 000000000..796901520 --- /dev/null +++ b/tests/unit/Module/RpostTest.php @@ -0,0 +1,31 @@ +getFunctionMock('Zotlabs\Module', 'local_channel') + ->expects($this->any()) + ->willReturn(42); + + // Set basic access controls to keep AccessList happy. + \App::$channel = [ + 'channel_allow_cid' => null, + 'channel_allow_gid' => null, + 'channel_deny_cid' => null, + 'channel_deny_gid' => null, + ]; + + $this->get('rpost'); + + $this->assertPageContains('assertPageContains(' Date: Sat, 18 May 2024 12:44:19 +0200 Subject: Module\Rpost: Remove unused local variables. --- Zotlabs/Module/Rpost.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 4979fdd7c..1a17c3057 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -152,7 +152,7 @@ class Rpost extends \Zotlabs\Web\Controller { ); if($r) { require_once('include/security.php'); - $change = change_channel($r[0]['channel_id']); + change_channel($r[0]['channel_id']); } } @@ -165,8 +165,6 @@ class Rpost extends \Zotlabs\Web\Controller { goaway(z_root() . '/network'); } - $plaintext = true; - if(isset($_REQUEST['type']) && $_REQUEST['type'] === 'html') { require_once('include/html2bbcode.php'); $_REQUEST['body'] = html2bbcode($_REQUEST['body']); @@ -210,7 +208,6 @@ class Rpost extends \Zotlabs\Web\Controller { 'reset' => t('Reset form') ); - $a = ''; $editor = status_editor($x, false, 'Rpost'); $o .= replace_macros(get_markup_template('edpost_head.tpl'), array( -- cgit v1.2.3 From 4e9432263adf555b30d49dfd9a731f86b82ad02b Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 18 May 2024 20:19:44 +0200 Subject: Module\Rpost: Remove obsolete local variable $o. --- Zotlabs/Module/Rpost.php | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 1a17c3057..ba0588c25 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -28,16 +28,10 @@ require_once('include/conversation.php'); * type= choices are 'html' or 'bbcode', default is 'bbcode' * */ - - - - class Rpost extends \Zotlabs\Web\Controller { function get() { - $o = ''; - if(! local_channel()) { if(remote_channel()) { // redirect to your own site. @@ -210,14 +204,11 @@ class Rpost extends \Zotlabs\Web\Controller { $editor = status_editor($x, false, 'Rpost'); - $o .= replace_macros(get_markup_template('edpost_head.tpl'), array( + return replace_macros(get_markup_template('edpost_head.tpl'), array( '$title' => t('Edit post'), '$cancel' => '', '$editor' => $editor )); - - return $o; - } -- cgit v1.2.3 From d187c0025af98a9db27217569a92ac997c512f77 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 18 May 2024 20:58:09 +0200 Subject: tests: Configure system.baseurl for tests. --- tests/unit/includes/NetworkTest.php | 8 +------- tests/unit/includes/dba/_files/config.yml | 4 ++++ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/tests/unit/includes/NetworkTest.php b/tests/unit/includes/NetworkTest.php index 5bf175953..a41075f25 100644 --- a/tests/unit/includes/NetworkTest.php +++ b/tests/unit/includes/NetworkTest.php @@ -7,12 +7,6 @@ class NetworkTest extends Zotlabs\Tests\Unit\UnitTestCase { - public function setUp() : void { - parent::setUp(); - - \App::set_baseurl("https://mytest.org"); - } - /** * @dataProvider localUrlTestProvider */ @@ -23,7 +17,7 @@ class NetworkTest extends Zotlabs\Tests\Unit\UnitTestCase { public static function localUrlTestProvider() : array { return [ [ '/some/path', true ], - [ 'https://mytest.org/some/path', true ], + [ 'https://hubzilla.test/some/path', true ], [ 'https://other.site/some/path', false ], ]; } diff --git a/tests/unit/includes/dba/_files/config.yml b/tests/unit/includes/dba/_files/config.yml index e93486857..ac3c8acb0 100644 --- a/tests/unit/includes/dba/_files/config.yml +++ b/tests/unit/includes/dba/_files/config.yml @@ -1,5 +1,9 @@ --- config: + - + cat: system + k: baseurl + v: https://hubzilla.test - cat: system k: do_not_check_dns -- cgit v1.2.3 From 93a45be1816b33651fb2138c87aae083cfd480b9 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 18 May 2024 20:59:08 +0200 Subject: tests: Set query string in Module\TestCase::get method. --- tests/unit/Module/TestCase.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/Module/TestCase.php b/tests/unit/Module/TestCase.php index e7051e001..f2e19f265 100644 --- a/tests/unit/Module/TestCase.php +++ b/tests/unit/Module/TestCase.php @@ -25,6 +25,7 @@ class TestCase extends \Zotlabs\Tests\Unit\UnitTestCase { $_SERVER['REQUEST_METHOD'] = 'GET'; $_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.1'; + $_SERVER['QUERY_STRING'] = "q={$uri}"; $_REQUEST = $_GET; \App::init(); -- cgit v1.2.3 From 7c688de9cd9bfbccab60d77396f0f879acd4a52d Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 18 May 2024 21:00:28 +0200 Subject: tests: Add comment to Tests\Unit\Module\RpostTest. --- tests/unit/Module/RpostTest.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/unit/Module/RpostTest.php b/tests/unit/Module/RpostTest.php index 796901520..115894026 100644 --- a/tests/unit/Module/RpostTest.php +++ b/tests/unit/Module/RpostTest.php @@ -9,6 +9,10 @@ */ class RpostTest extends \Zotlabs\Tests\Unit\Module\TestCase { + + /** + * Basic test of a get request with no args as an authenticated user. + */ public function test_get_with_no_args(): void { // Mock `local_chanel()` to emulate a valid logged in channel $lc_mock = $this->getFunctionMock('Zotlabs\Module', 'local_channel') -- cgit v1.2.3 From 76a92ac2e1ed2d22ad960739e56e5832872cfe23 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 18 May 2024 21:08:30 +0200 Subject: tests: Module\Rpost shows login form if not authenticated. --- tests/unit/Module/RpostTest.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/unit/Module/RpostTest.php b/tests/unit/Module/RpostTest.php index 115894026..2f277e66d 100644 --- a/tests/unit/Module/RpostTest.php +++ b/tests/unit/Module/RpostTest.php @@ -32,4 +32,17 @@ class RpostTest extends \Zotlabs\Tests\Unit\Module\TestCase { $this->assertPageContains('assertPageContains('getFunctionMock('Zotlabs\Module', 'local_channel') + ->expects($this->any()) + ->willReturn(false); + + $this->get('rpost'); + + $this->assertPageContains(' Date: Sat, 18 May 2024 21:13:57 +0200 Subject: Module\Rpost: Refactor redirect or login logic. --- Zotlabs/Module/Rpost.php | 63 ++++++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index ba0588c25..2f1ba98d8 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -33,36 +33,12 @@ class Rpost extends \Zotlabs\Web\Controller { function get() { if(! local_channel()) { - if(remote_channel()) { - // redirect to your own site. - // We can only do this with a GET request so you'll need to keep the text short or risk getting truncated - // by the wretched beast called 'suhosin'. All the browsers now allow long GET requests, but suhosin - // blocks them. - - $url = Libzot::get_rpost_path(App::get_observer()); - // make sure we're not looping to our own hub - if(($url) && (! stristr($url, App::get_hostname()))) { - foreach($_GET as $key => $arg) { - if($key === 'q') - continue; - $url .= '&' . $key . '=' . $arg; - } - goaway($url); - } - } - - // The login procedure is going to bugger our $_REQUEST variables - // so save them in the session. - - if(array_key_exists('body',$_REQUEST)) { - $_SESSION['rpost'] = $_REQUEST; - } - return login(); + return $this->redirect_or_login(); } nav_set_selected('Post'); - if (local_channel() && array_key_exists('userfile',$_FILES)) { + if (array_key_exists('userfile',$_FILES)) { $channel = App::get_channel(); $observer = App::get_observer(); @@ -211,6 +187,41 @@ class Rpost extends \Zotlabs\Web\Controller { )); } + /** + * Redirect to the observer's instance if not local, or return login form. + * + * The request is saved in the session if there's a `body` request + * param present. (Otherwise not.) + * + * @return string A login form if not redirected. If the session was + * determned to belong to a remote channel, the function does not + * return. + */ + private function redirect_or_login(): string { + if(remote_channel()) { + // redirect to your own site. + // We can only do this with a GET request so you'll need to keep the text short or risk getting truncated + // by the wretched beast called 'suhosin'. All the browsers now allow long GET requests, but suhosin + // blocks them. + + $url = Libzot::get_rpost_path(App::get_observer()); + // make sure we're not looping to our own hub + if(($url) && (! stristr($url, App::get_hostname()))) { + foreach($_GET as $key => $arg) { + if($key === 'q') + continue; + $url .= '&' . $key . '=' . $arg; + } + goaway($url); + } + } + // The login procedure is going to bugger our $_REQUEST variables + // so save them in the session. + if(array_key_exists('body',$_REQUEST)) { + $_SESSION['rpost'] = $_REQUEST; + } + return login(); + } } -- cgit v1.2.3 From 91147d5c5bf9f96f9af121f18d86109c04743c6b Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 18 May 2024 21:22:56 +0200 Subject: Module\Rpost: Reuse value of local_chanel. We don't need to call it twice (actually trice in the original code). --- Zotlabs/Module/Rpost.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 2f1ba98d8..3e30e5c72 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -32,7 +32,9 @@ class Rpost extends \Zotlabs\Web\Controller { function get() { - if(! local_channel()) { + $channel_id = local_channel(); + + if(! $channel_id) { return $this->redirect_or_login(); } @@ -165,7 +167,7 @@ class Rpost extends \Zotlabs\Web\Controller { 'permissions' => $channel_acl, 'bang' => '', 'visitor' => true, - 'profile_uid' => local_channel(), + 'profile_uid' => $channel_id, 'title' => $_REQUEST['title'] ?? '', 'body' => $_REQUEST['body'] ?? '', 'attachment' => $_REQUEST['attachment'] ?? '', -- cgit v1.2.3 From 8be9b109fd0672e95cc43877af1b71af8bf3ee6c Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sun, 19 May 2024 11:06:56 +0200 Subject: Module\Rpost: Refactor handling of attachments. Move to private function for now. --- Zotlabs/Module/Rpost.php | 147 +++++++++++++++++++++++++---------------------- 1 file changed, 79 insertions(+), 68 deletions(-) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 3e30e5c72..2feb5a968 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -40,74 +40,8 @@ class Rpost extends \Zotlabs\Web\Controller { nav_set_selected('Post'); - if (array_key_exists('userfile',$_FILES)) { - - $channel = App::get_channel(); - $observer = App::get_observer(); - - $def_album = get_pconfig($channel['channel_id'],'system','photo_path'); - $def_attach = get_pconfig($channel['channel_id'],'system','attach_path'); - - $r = attach_store($channel, (($observer) ? $observer['xchan_hash'] : ''), '', [ - 'source' => 'editor', - 'visible' => 0, - 'album' => $def_album, - 'directory' => $def_attach, - 'flags' => 1, // indicates temporary permissions are created - 'allow_cid' => '<' . $channel['channel_hash'] . '>', - 'allow_gid' => '', - 'deny_cid' => '', - 'deny_gid' => '' - ]); - - if (! $r['success']) { - notice( $r['message'] . EOL); - } - - $s = EMPTY_STR; - - if (intval($r['data']['is_photo'])) { - $s .= "\n\n" . $r['body'] . "\n\n"; - } - - $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path']; - - if (strpos($r['data']['filetype'],'video') === 0) { - $s .= "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n"; - } - - if (strpos($r['data']['filetype'],'audio') === 0) { - $s .= "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n"; - } - - if ($r['data']['filetype'] === 'image/svg+xml') { - $x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); - if ($x) { - $bb = svg2bb($x); - if ($bb) { - $s .= "\n\n" . $bb; - } - else { - logger('empty return from svgbb'); - } - } - else { - logger('unable to read svg data file: ' . 'store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); - } - } - - if ($r['data']['filetype'] === 'text/calendar') { - $content = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); - if ($content) { - $ev = ical_to_ev($content); - if ($ev) { - $s .= "\n\n" . format_event_bbcode($ev[0]) . "\n\n"; - } - } - } - - $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; - $_REQUEST['body'] = ((array_key_exists('body',$_REQUEST)) ? $_REQUEST['body'] . $s : $s); + if (! empty($_FILES['userfile'])) { + $this->handle_attachments(); } // If we have saved rpost session variables, but nothing in the current $_REQUEST, recover the saved variables @@ -226,4 +160,81 @@ class Rpost extends \Zotlabs\Web\Controller { } return login(); } + + /** + * Handle uplads of attachments in the rpost call. + * + * This is only relevant for POST requests. + * + * The function will modify the `$_REQUEST['body']` superglobal + * (or add it if it does not exist). + */ + private function handle_attachments(): void { + $channel = App::get_channel(); + $observer = App::get_observer(); + + $def_album = get_pconfig($channel['channel_id'],'system','photo_path'); + $def_attach = get_pconfig($channel['channel_id'],'system','attach_path'); + + $r = attach_store($channel, (($observer) ? $observer['xchan_hash'] : ''), '', [ + 'source' => 'editor', + 'visible' => 0, + 'album' => $def_album, + 'directory' => $def_attach, + 'flags' => 1, // indicates temporary permissions are created + 'allow_cid' => '<' . $channel['channel_hash'] . '>', + 'allow_gid' => '', + 'deny_cid' => '', + 'deny_gid' => '' + ]); + + if (! $r['success']) { + notice( $r['message'] . EOL); + } + + $s = EMPTY_STR; + + if (intval($r['data']['is_photo'])) { + $s .= "\n\n" . $r['body'] . "\n\n"; + } + + $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path']; + + if (strpos($r['data']['filetype'],'video') === 0) { + $s .= "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n"; + } + + if (strpos($r['data']['filetype'],'audio') === 0) { + $s .= "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n"; + } + + if ($r['data']['filetype'] === 'image/svg+xml') { + $x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); + if ($x) { + $bb = svg2bb($x); + if ($bb) { + $s .= "\n\n" . $bb; + } + else { + logger('empty return from svgbb'); + } + } + else { + logger('unable to read svg data file: ' . 'store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); + } + } + + if ($r['data']['filetype'] === 'text/calendar') { + $content = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']); + if ($content) { + $ev = ical_to_ev($content); + if ($ev) { + $s .= "\n\n" . format_event_bbcode($ev[0]) . "\n\n"; + } + } + } + + $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n"; + $_REQUEST['body'] = ((array_key_exists('body',$_REQUEST)) ? $_REQUEST['body'] . $s : $s); + } } -- cgit v1.2.3 From 5abe14982aff9ed2d9817255ffb8d1752519cf95 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sun, 19 May 2024 11:41:45 +0200 Subject: tests: More tests for Module\Rpost. Also refactor the tests a bit to avoid duplicatng code. --- tests/unit/Module/RpostTest.php | 58 +++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/tests/unit/Module/RpostTest.php b/tests/unit/Module/RpostTest.php index 2f277e66d..106f06fde 100644 --- a/tests/unit/Module/RpostTest.php +++ b/tests/unit/Module/RpostTest.php @@ -14,20 +14,7 @@ class RpostTest extends \Zotlabs\Tests\Unit\Module\TestCase { * Basic test of a get request with no args as an authenticated user. */ public function test_get_with_no_args(): void { - // Mock `local_chanel()` to emulate a valid logged in channel - $lc_mock = $this->getFunctionMock('Zotlabs\Module', 'local_channel') - ->expects($this->any()) - ->willReturn(42); - - // Set basic access controls to keep AccessList happy. - \App::$channel = [ - 'channel_allow_cid' => null, - 'channel_allow_gid' => null, - 'channel_deny_cid' => null, - 'channel_deny_gid' => null, - ]; - - $this->get('rpost'); + $this->get_authenticated(); $this->assertPageContains('assertPageContains('assertPageContains('get_authenticated([ + 'title' => 'This is my title', + 'body' => 'The body of the post', + 'source' => 'The temple of the Dagon', + ]); + + $this->assertPageContains('value="This is my title"'); + $this->assertPageContains('>The body of the post'); + $this->assertPageContains('value="The temple of the Dagon"'); + } + + public function test_convert_body_from_html_to_bbcode(): void { + $this->get_authenticated([ + 'body' => "

    Awesome page

    \r\n

    Awesome content!

    ", + 'type' => 'html', + ]); + + $this->assertPageContains(">[h1]Awesome page[/h1]\n\nAwesome content!"); + } + + /** + * Private helper method to perform an authenticated GET request. + * + * @param array $query An associative array of query parameters. + */ + private function get_authenticated(array $query = []): void { + // Mock `local_chanel()` to emulate a valid logged in channel + $lc_mock = $this->getFunctionMock('Zotlabs\Module', 'local_channel') + ->expects($this->any()) + ->willReturn(42); + + // Set basic access controls to keep AccessList happy. + \App::$channel = [ + 'channel_allow_cid' => null, + 'channel_allow_gid' => null, + 'channel_deny_cid' => null, + 'channel_deny_gid' => null, + ]; + + $this->get('rpost', $query); + } } -- cgit v1.2.3 From d02fa7c26805dd485b1d16e99a26a5b9a858deda Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sun, 19 May 2024 23:46:44 +0200 Subject: Module\Rpost: Add return type and visibilty for `get`. --- Zotlabs/Module/Rpost.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 2feb5a968..76ff69643 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -30,7 +30,7 @@ require_once('include/conversation.php'); */ class Rpost extends \Zotlabs\Web\Controller { - function get() { + public function get(): string { $channel_id = local_channel(); -- cgit v1.2.3 From fb1c66fbc9705961454d86770511642b97b41c1a Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 12 Jun 2024 17:08:29 +0200 Subject: Fix warnings exposed by tests. Mainly missing variables for templates, and channel entries. --- Zotlabs/Module/Rpost.php | 3 ++- include/conversation.php | 3 ++- tests/unit/Module/RpostTest.php | 11 +++++++---- view/tpl/jot-header.tpl | 2 -- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 76ff69643..3b64fd2d8 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -119,7 +119,8 @@ class Rpost extends \Zotlabs\Web\Controller { return replace_macros(get_markup_template('edpost_head.tpl'), array( '$title' => t('Edit post'), '$cancel' => '', - '$editor' => $editor + '$editor' => $editor, + '$delete' => null, )); } diff --git a/include/conversation.php b/include/conversation.php index 3992f06f6..c631d53a2 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1183,6 +1183,7 @@ function hz_status_editor($x, $popup = false) { '$modalerroralbum' => t('Error getting album'), '$nocomment_enabled' => t('Comments enabled'), '$nocomment_disabled' => t('Comments disabled'), + '$confirmdelete' => t('Confirm delete'), '$auto_save_draft' => $feature_auto_save_draft, '$reset' => $reset, '$popup' => $popup @@ -1263,7 +1264,7 @@ function hz_status_editor($x, $popup = false) { '$poll_option_label' => t('Option'), '$poll_add_option_label' => t('Add option'), '$poll_expire_unit_label' => [t('Minutes'), t('Hours'), t('Days')], - '$multiple_answers' => ['poll_multiple_answers', t("Allow multiple answers"), '', '', [t('No'), t('Yes')]], + '$multiple_answers' => ['poll_multiple_answers', t("Allow multiple answers"), '', '', [t('No'), t('Yes')],null,null], '$consensus' => ((array_key_exists('item',$x)) ? $x['item']['item_consensus'] : 0), '$nocommenttitle' => t('Disable comments'), '$nocommenttitlesub' => t('Toggle comments'), diff --git a/tests/unit/Module/RpostTest.php b/tests/unit/Module/RpostTest.php index 106f06fde..ad94f2f06 100644 --- a/tests/unit/Module/RpostTest.php +++ b/tests/unit/Module/RpostTest.php @@ -67,10 +67,13 @@ class RpostTest extends \Zotlabs\Tests\Unit\Module\TestCase { // Set basic access controls to keep AccessList happy. \App::$channel = [ - 'channel_allow_cid' => null, - 'channel_allow_gid' => null, - 'channel_deny_cid' => null, - 'channel_deny_gid' => null, + 'channel_id' => 42, + 'channel_location' => null, + 'channel_address' => '', + 'channel_allow_cid' => '', + 'channel_allow_gid' => '', + 'channel_deny_cid' => '', + 'channel_deny_gid' => '', ]; $this->get('rpost', $query); diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl index ca3cabd61..67ba1824b 100644 --- a/view/tpl/jot-header.tpl +++ b/view/tpl/jot-header.tpl @@ -184,7 +184,6 @@ var activeCommentText = ''; } function jotGetExpiry() { - //reply = prompt("{{$expirewhen}}", $('#jot-expire').val()); $('#expiryModal').modal('show'); $('#expiry-modal-OKButton').on('click', function() { reply=$('#expiration-date').val(); @@ -196,7 +195,6 @@ var activeCommentText = ''; } function jotGetPubDate() { - //reply = prompt("{{$expirewhen}}", $('#jot-expire').val()); $('#createdModal').modal('show'); $('#created-modal-OKButton').on('click', function() { reply=$('#created-date').val(); -- cgit v1.2.3 From 605f9825209584cc79247ef8a45fda956968a19c Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 12 Jun 2024 21:05:28 +0200 Subject: Module\Rpost: Redirect to submitted post on success. This eliminates a open redirect issue where it was possible to craft a link that when clicked would take the victim to an external site controlled by an attacker. --- Zotlabs/Module/Rpost.php | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 3b64fd2d8..286eb6459 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -62,15 +62,6 @@ class Rpost extends \Zotlabs\Web\Controller { } } - if(isset($_REQUEST['remote_return']) && $_REQUEST['remote_return']) { - $_SESSION['remote_return'] = $_REQUEST['remote_return']; - } - if(argc() > 1 && argv(1) === 'return') { - if($_SESSION['remote_return']) - goaway($_SESSION['remote_return']); - goaway(z_root() . '/network'); - } - if(isset($_REQUEST['type']) && $_REQUEST['type'] === 'html') { require_once('include/html2bbcode.php'); $_REQUEST['body'] = html2bbcode($_REQUEST['body']); @@ -106,7 +97,7 @@ class Rpost extends \Zotlabs\Web\Controller { 'body' => $_REQUEST['body'] ?? '', 'attachment' => $_REQUEST['attachment'] ?? '', 'source' => ((x($_REQUEST,'source')) ? strip_tags($_REQUEST['source']) : ''), - 'return_path' => 'rpost/return', + 'return_path' => 'hq', 'bbco_autocomplete' => 'bbcode', 'editor_autocomplete' => true, 'bbcode' => true, -- cgit v1.2.3 From fcd657040e90b957068be0c6010faa78020cf05d Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Wed, 12 Jun 2024 21:18:31 +0200 Subject: Module\Rpost: Just a little bit of doc. --- Zotlabs/Module/Rpost.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 286eb6459..45f19d7e7 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -30,6 +30,12 @@ require_once('include/conversation.php'); */ class Rpost extends \Zotlabs\Web\Controller { + /** + * Handle requests. + * + * Despite it's name, this method handles both POST and GET requests + * to the module. + */ public function get(): string { $channel_id = local_channel(); -- cgit v1.2.3 From 20a8da0683dc296860528873f28a8f766c3f328b Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 26 Feb 2024 14:08:54 +0100 Subject: tests: Remove obsolete stubs from Permissions tests These stubs are no longer needed, as the tests have a db now. --- tests/unit/Access/PermissionsTest.php | 26 -------------------------- tests/unit/Lib/PermissionDescriptionTest.php | 20 -------------------- 2 files changed, 46 deletions(-) diff --git a/tests/unit/Access/PermissionsTest.php b/tests/unit/Access/PermissionsTest.php index dd001e68a..f9cb25b64 100644 --- a/tests/unit/Access/PermissionsTest.php +++ b/tests/unit/Access/PermissionsTest.php @@ -63,14 +63,6 @@ class PermissionsTest extends UnitTestCase { // There are 17 default perms $permsCount = 17; - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->exactly(2*$permsCount))->willReturnCallback( - function ($string) { - return $string; - } - ); - // static method Perms() $perms = Permissions::Perms(); @@ -97,14 +89,6 @@ class PermissionsTest extends UnitTestCase { // There are 17 default perms $permsCount = 17; - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->exactly(2*$permsCount))->willReturnCallback( - function ($string) { - return $string; - } - ); - $perms = Permissions::Perms('view_'); $this->assertEquals($permsCount, count($perms)); @@ -125,9 +109,6 @@ class PermissionsTest extends UnitTestCase { * @param array $expected The expected result perms array */ public function testFilledPerms($permarr, $expected) { - // Create a stub for global function t() - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $this->assertEquals($expected, Permissions::FilledPerms($permarr)); } /** @@ -209,13 +190,6 @@ class PermissionsTest extends UnitTestCase { * @uses ::call_hooks */ public function testFilledPermsNull() { - // Create a stub for global function t() with expectation - $t = $this->getFunctionMock('Zotlabs\Access', 't'); - $t->expects($this->atLeastOnce()); - // Create a stub for global function bt() with expectations - $bt = $this->getFunctionMock('Zotlabs\Access', 'btlogger'); - $bt->expects($this->once())->with($this->equalTo('FilledPerms: null')); - $result = [ 'view_stream' => 0, 'send_stream' => 0, diff --git a/tests/unit/Lib/PermissionDescriptionTest.php b/tests/unit/Lib/PermissionDescriptionTest.php index fdd676f61..1e4b5292c 100644 --- a/tests/unit/Lib/PermissionDescriptionTest.php +++ b/tests/unit/Lib/PermissionDescriptionTest.php @@ -46,16 +46,6 @@ class PermissionDescriptionTest extends UnitTestCase { } public function testFromStandalonePermission() { - // Create a stub for global function t() - $t = $this->getFunctionMock('Zotlabs\Lib', 't'); - $t->expects($this->atLeastOnce())->willReturnCallback( - function ($string) { - return $string; - } - ); - // Create a mock for global function logger() - $this->getFunctionMock('Zotlabs\Lib', 'logger'); - $permDescUnknown = PermissionDescription::fromStandalonePermission(-1); $permDescSelf = PermissionDescription::fromStandalonePermission(0); @@ -113,16 +103,6 @@ class PermissionDescriptionTest extends UnitTestCase { } public function testGetPermissionDescription() { - // Create a stub for global function t() - $t = $this->getFunctionMock('Zotlabs\Lib', 't'); - $t->expects($this->atLeastOnce())->willReturnCallback( - function ($string) { - return $string; - } - ); - // Create a mock for global function logger() - $this->getFunctionMock('Zotlabs\Lib', 'logger'); - // Create a stub for the PermissionDescription class $stub = $this->createMock(PermissionDescription::class); $stub->method('get_permission_description') -- cgit v1.2.3 From d139f2fe87eef3b863b0cbbe810c9bde92fb3ec5 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 26 Feb 2024 14:13:41 +0100 Subject: QueueWorker: Use DbaTransaction class for db transactions. This makes sure that the system knows whether a transaction is active or not, and ensures automatic cleanup if the transaction is not closed before the methods return. It also allows us to run this code in tests. When run within a test, the transaction will be ignored, as the entire test is run within an already existing transaction. Also as each test has their own db connection, this should not have any ill effects, as there should not be any way in which different simultaneous connections can interfere with the db updates. --- Zotlabs/Lib/QueueWorker.php | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/Zotlabs/Lib/QueueWorker.php b/Zotlabs/Lib/QueueWorker.php index ce239809f..ae066cf40 100644 --- a/Zotlabs/Lib/QueueWorker.php +++ b/Zotlabs/Lib/QueueWorker.php @@ -29,18 +29,6 @@ class QueueWorker { 'Expire' ]; - private static function qstart() { - q('START TRANSACTION'); - } - - private static function qcommit() { - q("COMMIT"); - } - - private static function qrollback() { - q("ROLLBACK"); - } - public static function Summon($argv) { if ($argv[0] !== 'Queueworker') { @@ -66,7 +54,7 @@ class QueueWorker { logger('queueworker_stats_summon: cmd:' . $argv[0] . ' ' . 'timestamp:' . time()); - self::qstart(); + $transaction = new \DbaTransaction(\DBA::$dba); $r = q("INSERT INTO workerq (workerq_priority, workerq_data, workerq_uuid, workerq_cmd) VALUES (%d, '%s', '%s', '%s')", intval($priority), $workinfo_json, @@ -74,11 +62,11 @@ class QueueWorker { dbesc($argv[0]) ); if (!$r) { - self::qrollback(); + // Transaction is autmatically rolled back on return logger("INSERT FAILED", LOGGER_DEBUG); return; } - self::qcommit(); + $transaction->commit(); logger('INSERTED: ' . $workinfo_json, LOGGER_DEBUG); } @@ -112,7 +100,7 @@ class QueueWorker { return; } - self::qstart(); + $transaction = new \DbaTransaction(\DBA::$dba); $r = q("INSERT INTO workerq (workerq_priority, workerq_data, workerq_uuid, workerq_cmd) VALUES (%d, '%s', '%s', '%s')", intval($priority), $workinfo_json, @@ -120,11 +108,11 @@ class QueueWorker { dbesc($argv[0]) ); if (!$r) { - self::qrollback(); + // Transaction is automatically rolled back on return logger("Insert failed: " . $workinfo_json, LOGGER_DEBUG); return; } - self::qcommit(); + $transaction->commit(); logger('INSERTED: ' . $workinfo_json, LOGGER_DEBUG); } @@ -141,7 +129,7 @@ class QueueWorker { self::$workermaxage = self::$workermaxage > 120 ? self::$workermaxage : 300; } - self::qstart(); + $transaction = new \DbaTransaction(\DBA::$dba); // skip locked is preferred but is not supported by mariadb < 10.6 which is still used a lot - hence make it optional $sql_quirks = ((Config::Get('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); @@ -159,7 +147,7 @@ class QueueWorker { $u = dbq("update workerq set workerq_reservationid = null where workerq_id in ($ids)"); } - self::qcommit(); + $transaction->commit(); //q("update workerq set workerq_reservationid = null where workerq_reservationid is not null and workerq_processtimeout < %s", //db_utcnow() @@ -197,7 +185,7 @@ class QueueWorker { private static function getWorkId() { self::GetWorkerCount(); - self::qstart(); + $transaction = new \DbaTransaction(\DBA::$dba); // skip locked is preferred but is not supported by mariadb < 10.6 which is still used a lot - hence make it optional $sql_quirks = ((Config::Get('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT'); @@ -205,7 +193,7 @@ class QueueWorker { $work = dbq("SELECT workerq_id, workerq_cmd FROM workerq WHERE workerq_reservationid IS NULL ORDER BY workerq_priority DESC, workerq_id ASC LIMIT 1 FOR UPDATE $sql_quirks"); if (!$work) { - self::qrollback(); + // Transaction automatically rolled back on return return false; } @@ -225,13 +213,13 @@ class QueueWorker { ); if (!$work) { - self::qrollback(); + // Transaction automatically rolled back on return logger("Could not update workerq.", LOGGER_DEBUG); return false; } logger("GOTWORK: " . json_encode($work), LOGGER_DEBUG); - self::qcommit(); + $transaction->commit(); return $id; } -- cgit v1.2.3 From 1ed8383c33530b221ef34ad1c5e9b3b80eab94fa Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Fri, 14 Jun 2024 16:31:42 +0200 Subject: Allow passing callable as array to hooks. --- include/plugin.php | 21 +++++++------- tests/unit/CallHooksTest.php | 65 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 tests/unit/CallHooksTest.php diff --git a/include/plugin.php b/include/plugin.php index 4601cb544..62b643c3e 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -488,18 +488,19 @@ function call_hooks($name, &$data = null) { @include_once($hook[0]); } - if(preg_match('|^a:[0-9]+:{.*}$|s', $hook[1])) { - $hook[1] = unserialize($hook[1]); - } - elseif(strpos($hook[1],'::')) { - // We shouldn't need to do this, but it appears that PHP - // isn't able to directly execute a string variable with a class - // method in the manner we are attempting it, so we'll - // turn it into an array. - $hook[1] = explode('::',$hook[1]); + if(is_string($hook[1])) { + if (preg_match('|^a:[0-9]+:{.*}$|s', $hook[1])) { + $hook[1] = unserialize($hook[1]); + } + elseif(strpos($hook[1],'::')) { + // We shouldn't need to do this, but it appears that PHP + // isn't able to directly execute a string variable with a class + // method in the manner we are attempting it, so we'll + // turn it into an array. + $hook[1] = explode('::',$hook[1]); + } } - if(is_callable($hook[1])) { $func = $hook[1]; $func($data); diff --git a/tests/unit/CallHooksTest.php b/tests/unit/CallHooksTest.php new file mode 100644 index 000000000..0170f31d0 --- /dev/null +++ b/tests/unit/CallHooksTest.php @@ -0,0 +1,65 @@ +assertHookInvoked(); + } + + public function test_static_class_function_as_string(): void { + insert_hook('test_hook', 'Zotlabs\Tests\Unit\CallHooksTest::static_test_hook'); + $this->assertHookInvoked(); + } + + public function test_static_class_function_as_array(): void { + insert_hook('test_hook', ['Zotlabs\Tests\Unit\CallHooksTest', 'static_test_hook']); + $this->assertHookInvoked(); + } + + public function test_static_class_function_as_serialized_array(): void { + insert_hook('test_hook', serialize(['Zotlabs\Tests\Unit\CallHooksTest', 'static_test_hook'])); + $this->assertHookInvoked(); + } + + public function test_instance_function_as_array(): void { + insert_hook('test_hook', [$this, 'instance_test_hook']); + $this->assertHookInvoked(); + } + + + public function assertHookInvoked(): void { + $test_hook_args = ['called' => false]; + call_hooks('test_hook', $test_hook_args); + + $this->assertTrue($test_hook_args['called']); + } + + public function instance_test_hook(array &$args): void { + $args['called'] = true; + } + public static function static_test_hook(array &$args): void { + $args['called'] = true; + } +} + -- cgit v1.2.3 From d7607906430242d45fd1526abd7c2cdc7b49990f Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Fri, 14 Jun 2024 16:41:38 +0200 Subject: Add basic test for create_identity function. Not an exhaustive test for now, but does at least excercise some of the code. --- tests/unit/CreateIdentityTest.php | 65 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tests/unit/CreateIdentityTest.php diff --git a/tests/unit/CreateIdentityTest.php b/tests/unit/CreateIdentityTest.php new file mode 100644 index 000000000..a5e0f278a --- /dev/null +++ b/tests/unit/CreateIdentityTest.php @@ -0,0 +1,65 @@ +assertEquals( + ['success' => false, 'message' => 'No account identifier'], + $result); + + $this->assertFalse($this->queueworker_started); + } + + public function test_create_new_channel_with_valid_account_id(): void { + insert_hook('proc_run', [$this, 'proc_run_hook']); + $result = create_identity([ + 'account_id' => $this->fixtures['account'][0]['account_id'], + 'nickname' => 'testuser', + 'name' => 'Olga Testuser', + ]); + + $this->assertTrue($result['success']); + $this->assertTrue($this->queueworker_started); + } + + public function test_create_new_channel_with_nnexistant_account_id(): void { + insert_hook('proc_run', [$this, 'proc_run_hook']); + $result = create_identity([ + 'account_id' => 666, + 'nickname' => 'testuser', + 'name' => 'Olga Testuser', + ]); + + /* + * We would expect this fo fail, but... + * + * The create_identity function will happily create a new channel with an + * non-existent account_id. The New_channel module will perform a check + * to ensure that only valid (and logged in) accounts can create a new channel. + * + * This is a bit weak, but for now we let it pass... + */ + $this->assertTrue($result['success']); + $this->assertTrue($this->queueworker_started); + } + + public function proc_run_hook(array &$args): void { + $args['run_cmd'] = false; + $this->queueworker_started = + $args['args'] === ['php', 'Zotlabs/Daemon/Master.php', 'Queueworker']; + } +} -- cgit v1.2.3 From 7df701b43467ee4a4cb5039be84d8da172a198d7 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Fri, 14 Jun 2024 20:24:52 +0200 Subject: Use empty() to check if array entry exist in create_identity. --- include/channel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/channel.php b/include/channel.php index 568ad052a..22b5bcde1 100644 --- a/include/channel.php +++ b/include/channel.php @@ -199,8 +199,8 @@ function create_identity($arr) { $ret = array('success' => false); - if(! $arr['account_id']) { - $ret['message'] = t('No account identifier'); + if(empty($arr['account_id'])) { + $ret['message'] = t('No account identifier'); return $ret; } $ret = identity_check_service_class($arr['account_id']); -- cgit v1.2.3 From 40a93d92c8d4702da0152e649388885ac583f493 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 15 Jun 2024 13:01:17 +0200 Subject: Missing include in QueueWorker. --- Zotlabs/Lib/QueueWorker.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Zotlabs/Lib/QueueWorker.php b/Zotlabs/Lib/QueueWorker.php index ae066cf40..24114438e 100644 --- a/Zotlabs/Lib/QueueWorker.php +++ b/Zotlabs/Lib/QueueWorker.php @@ -6,6 +6,8 @@ use Ramsey\Uuid\Uuid; use Ramsey\Uuid\Exception\UnableToBuildUuidException; use Zotlabs\Lib\Config; +require_once 'include/dba/dba_transaction.php'; + class QueueWorker { public static $queueworker = null; -- cgit v1.2.3 From 66ea277045ef62106051f2614a116234ba4a302a Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Thu, 13 Jun 2024 20:17:31 +0200 Subject: Refactor is_local_url() and add api doc. --- include/network.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/include/network.php b/include/network.php index bb5bc1ce7..b3a3d715c 100644 --- a/include/network.php +++ b/include/network.php @@ -556,12 +556,15 @@ function z_dns_check($h,$check_mx = 0) { return((@dns_get_record($h,$opts) || filter_var($h, FILTER_VALIDATE_IP)) ? true : false); } -function is_local_url($url) { - if (str_starts_with($url, z_root()) || str_starts_with($url, '/')) { - return true; - } - - return false; +/** + * Returns whether an URL is local to the site, or not. + * + * @param string $url The URL to check + * + * @return bool True if the URL is local, false otherwise. + */ +function is_local_url(string $url): bool { + return str_starts_with($url, z_root()) || str_starts_with($url, '/'); } /** -- cgit v1.2.3 From 72453c49f8d3467e6599f01cecbf8e5926b6bd65 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 15 Jun 2024 11:37:32 +0200 Subject: tests: Add helper expectRedirectTo to module test class. Just a shorthand for manually stubbing `goaway` and setting the expectations on the test case. --- tests/unit/Module/TestCase.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/unit/Module/TestCase.php b/tests/unit/Module/TestCase.php index f2e19f265..2959eab79 100644 --- a/tests/unit/Module/TestCase.php +++ b/tests/unit/Module/TestCase.php @@ -74,6 +74,12 @@ class TestCase extends \Zotlabs\Tests\Unit\UnitTestCase { } ); } + + protected function expectRedirectTo(string $destination): void { + $this->stub_goaway(); + $this->expectException(RedirectException::class); + $this->expectExceptionMessage($destination); + } } /** -- cgit v1.2.3 From 62cbd87e71591bdd4c04f8cad07d6395d7f206c2 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 15 Jun 2024 13:00:19 +0200 Subject: Update API docs for Module test case base class. --- tests/unit/Module/TestCase.php | 104 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 98 insertions(+), 6 deletions(-) diff --git a/tests/unit/Module/TestCase.php b/tests/unit/Module/TestCase.php index 2959eab79..e92bc7083 100644 --- a/tests/unit/Module/TestCase.php +++ b/tests/unit/Module/TestCase.php @@ -1,8 +1,26 @@ assertStringContainsString($needle, \App::$page['content']); + $this->assertStringContainsString($needle, App::$page['content']); } /** * Stub out the `killme` function. * - * Usefule for modules that call this function directly. + * Useful for testing modules that call this function directly. * * Instead of calling exit, the stub will throw a `KillmeException`, * that can be caught by the test code to regain control after request * processing is terminated. + * + * **Example:** + * + * public function test_something(): void { + * $this->stub_killme(); + * + * try { + * killme(); + * } catch (KillmeException $e) { + * $this->assertSomething(...); + * } + * } + * + * It's also possible to use the builting PHPUnit expecations to verify + * that the function was called. + * + * public function test_something(): void { + * $this->stub_killme(); + * $this->expectException(KillmeException::class); + * + * killme(); + * } + * + * This is useful if you only want to check that processing was terminated + * with the `killme()` function. + * + * @throws KillmeException */ protected function stub_killme(): void { $killme_stub = $this->getFunctionMock('Zotlabs\Module', 'killme'); @@ -64,6 +110,42 @@ class TestCase extends \Zotlabs\Tests\Unit\UnitTestCase { ); } + /** + * Stub out the `goaway` function. + * + * Useful for testing modules that calls this function directly. + * + * Instead of calling `killme()`, the stub will throw a RedirectException + * with the target URL as the exception message. This allows the test code + * to regain control after request processing is terminated. + * + * **Example:** + * + * public function test_redirect(): void { + * $this->stub_goaway(); + * + * try { + * goaway('https://example.com/some_uri'); + * } catch (RedirectException $e) { + * $this->assertEquals('https://example.com/some_uri', $e->getMessage()); + * $this->assertSomethingElse(...); + * } + * } + * It's also possible to use the builting PHPUnit expecations to verify + * that the function was called. + * + * public function test_something(): void { + * $this->stub_goaway(); + * $this->expectException(RedirectException::class); + * $this->expectExceptionMessage('https://example.com/some_uri'); + * + * goaway('https://example.com/some_uri'); + * } + * + * This is useful if you only want to check that the request was redirected. + * + * @throws RedirectException + */ protected function stub_goaway(): void { $goaway_stub = $this->getFunctionMock('Zotlabs\Module', 'goaway'); $goaway_stub @@ -75,6 +157,16 @@ class TestCase extends \Zotlabs\Tests\Unit\UnitTestCase { ); } + /** + * Shorthand function to expect a redirect to a given URL. + * + * **Example:** + * + * public function test_redirect(): void { + * $this->expectRedirectTo('https://example.com/some_uri'); + * goaway('https://example.com/some_uri'); + * } + */ protected function expectRedirectTo(string $destination): void { $this->stub_goaway(); $this->expectException(RedirectException::class); @@ -90,8 +182,8 @@ class KillmeException extends \Exception {} /** * Exception class for goaway stub. * - * Takes the goaway uri as an arg, and makes it available as - * the public `$uri` member variable. + * Takes the goaway uri as an arg, and makes it available to the catch + * site via the `getMessage()` method. */ class RedirectException extends \Exception { function __construct(string $uri) { -- cgit v1.2.3 From 3f5cfc8fa2bbce74dd899b9cee65d1fc3891e8e1 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 18 Jun 2024 07:18:09 +0000 Subject: fix return to blank page after editing post under some circumstances --- Zotlabs/Module/Editpost.php | 2 +- Zotlabs/Module/Item.php | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Module/Editpost.php b/Zotlabs/Module/Editpost.php index 5e405bdbc..6f524cdb8 100644 --- a/Zotlabs/Module/Editpost.php +++ b/Zotlabs/Module/Editpost.php @@ -84,7 +84,7 @@ class Editpost extends \Zotlabs\Web\Controller { 'item' => $itm[0], 'editor_autocomplete'=> true, 'bbco_autocomplete'=> 'bbcode', - 'return_path' => $_SESSION['return_url'], + 'return_path' => 'hq', 'button' => t('Submit'), 'hide_voting' => true, 'hide_future' => true, diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index 0b46f2baf..3d13655d2 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -1262,6 +1262,11 @@ class Item extends Controller { if ((x($_REQUEST, 'return')) && strlen($return_path)) { logger('return: ' . $return_path); + + if ($return_path === 'hq') { + goaway(z_root() . '/hq/' . $datarray['uuid']); + } + goaway(z_root() . "/" . $return_path); } killme(); -- cgit v1.2.3 From 0f02553d129e2bc533cf98a590f3c9e04dc55bf3 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 18 Jun 2024 09:07:05 +0000 Subject: move template to wiki addon --- view/tpl/nwiki_page_history.tpl | 59 ----------------------------------------- 1 file changed, 59 deletions(-) delete mode 100644 view/tpl/nwiki_page_history.tpl diff --git a/view/tpl/nwiki_page_history.tpl b/view/tpl/nwiki_page_history.tpl deleted file mode 100644 index 6926cca2d..000000000 --- a/view/tpl/nwiki_page_history.tpl +++ /dev/null @@ -1,59 +0,0 @@ - - - {{foreach $pageHistory as $commit}} - - {{/foreach}} -
    - - - - - -
    {{$date_lbl}}{{$commit.date}} - {{if $permsWrite}} - -

    - {{/if}} - -
    {{$name_lbl}}{{$commit.name}}
    {{$msg_label}}{{$commit.title}}
    -
    \ No newline at end of file -- cgit v1.2.3 From 1c34c354cf48d73863a1e14691f15e678d939023 Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 21 Jun 2024 10:18:40 +0000 Subject: fix issue where event items were parsed multiple times --- Zotlabs/Lib/ThreadItem.php | 3 ++- include/text.php | 13 +++++++++---- view/js/main.js | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index eb1020cd2..1082bf642 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -362,7 +362,8 @@ class ThreadItem { localize_item($item); - $body = prepare_body($item,true); + $opts = (($item['resource_type'] === 'event') ? ['is_event_item' => true] : []); + $body = prepare_body($item, true, $opts); // $viewthread (below) is only valid in list mode. If this is a channel page, build the thread viewing link // since we can't depend on llink or plink pointing to the right local location. diff --git a/include/text.php b/include/text.php index b9ec90e92..b03e2d1a9 100644 --- a/include/text.php +++ b/include/text.php @@ -2082,10 +2082,15 @@ function prepare_text($text, $content_type = 'text/bbcode', $opts = false) { default: require_once('include/bbcode.php'); - if(stristr($text, '[nosmile]')) - $s = bbcode($text, ((is_array($opts)) ? $opts : [] )); - else - $s = smilies(bbcode($text, ((is_array($opts)) ? $opts : [] ))); + // events are handled in format_event_obj() + if (empty($opts['is_event_item'])) { + if(stristr($text, '[nosmile]')) { + $s = bbcode($text, ((is_array($opts)) ? $opts : [] )); + } + else { + $s = smilies(bbcode($text, ((is_array($opts)) ? $opts : [] ))); + } + } $s = zidify_links($s); diff --git a/view/js/main.js b/view/js/main.js index 7eca7408e..6fda3c8d0 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -1008,7 +1008,7 @@ function liveUpdate(notify_id) { in_progress = false; liveRecurse ++; if(liveRecurse < 10) { - liveUpdate(); + liveUpdate(notify_id); } else { console.log('Incomplete data. Too many attempts. Giving up.'); -- cgit v1.2.3 From 8ae6e785f3cb8b6e5334e0442ac4a1348e42fc9b Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 25 Jun 2024 09:27:59 +0000 Subject: reflect the censored state in the local xchan and exclude toplevel posts by censored channels in the public stream --- Zotlabs/Module/Admin/Channels.php | 52 ++++++++++++++++++++++++++++----------- Zotlabs/Module/Pubstream.php | 13 ++++++---- 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/Zotlabs/Module/Admin/Channels.php b/Zotlabs/Module/Admin/Channels.php index c6b7ad17a..52b661420 100644 --- a/Zotlabs/Module/Admin/Channels.php +++ b/Zotlabs/Module/Admin/Channels.php @@ -14,7 +14,7 @@ class Channels { */ function post() { - $channels = ( x($_POST, 'channel') ? $_POST['channel'] : Array() ); + $channels = (x($_POST, 'channel') ? $_POST['channel'] : []); check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels'); @@ -22,11 +22,28 @@ class Channels { if(x($_POST, 'page_channels_block')) { foreach($channels as $uid) { - q("UPDATE channel SET channel_pageflags = ( channel_pageflags $xor %d ) where channel_id = %d", - intval(PAGE_CENSORED), - intval( $uid ) + $channel = channelx_by_n($uid); + + if (!$channel) { + notice( t('Channel not found') . EOL); + continue; + } + + $pflags = $channel['channel_pageflags'] ^ PAGE_CENSORED; + + q("UPDATE channel SET channel_pageflags = %d where channel_id = %d", + intval($pflags), + intval($uid) ); + \Zotlabs\Daemon\Master::Summon(array('Directory', $uid, 'nopush')); + + $censored = (($pflags & PAGE_CENSORED) ? 1 : 0); + + q("UPDATE xchan SET xchan_censored = %d WHERE xchan_hash = '%s'", + intval($censored), + dbesc($channel['channel_hash']) + ); } notice( sprintf( tt("%s channel censored/uncensored", "%s channels censored/uncensored", count($channels)), count($channels)) ); } @@ -57,11 +74,9 @@ class Channels { function get() { if(argc() > 2) { $uid = argv(3); - $channel = q("SELECT * FROM channel WHERE channel_id = %d", - intval($uid) - ); + $channel = channelx_by_n($uid); - if(! $channel) { + if(!$channel) { notice( t('Channel not found') . EOL); goaway(z_root() . '/admin/channels' ); } @@ -72,30 +87,37 @@ class Channels { // delete channel channel_remove($uid,true); - notice( sprintf(t("Channel '%s' deleted"), $channel[0]['channel_name']) . EOL); + notice( sprintf(t("Channel '%s' deleted"), $channel['channel_name']) . EOL); }; break; case "block":{ check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't'); - $pflags = $channel[0]['channel_pageflags'] ^ PAGE_CENSORED; + $pflags = $channel['channel_pageflags'] ^ PAGE_CENSORED; q("UPDATE channel SET channel_pageflags = %d where channel_id = %d", intval($pflags), - intval( $uid ) + intval($uid) ); \Zotlabs\Daemon\Master::Summon(array('Directory',$uid,'nopush')); - notice( sprintf( (($pflags & PAGE_CENSORED) ? t("Channel '%s' censored"): t("Channel '%s' uncensored")) , $channel[0]['channel_name'] . ' (' . $channel[0]['channel_address'] . ')' ) . EOL); + $censored = (($pflags & PAGE_CENSORED) ? 1 : 0); + + q("UPDATE xchan SET xchan_censored = %d WHERE xchan_hash = '%s'", + intval($censored), + dbesc($channel['channel_hash']) + ); + + notice( sprintf( (($censored) ? t("Channel '%s' censored"): t("Channel '%s' uncensored")) , $channel['channel_name'] . ' (' . $channel['channel_address'] . ')' ) . EOL); }; break; case "code":{ check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't'); - $pflags = $channel[0]['channel_pageflags'] ^ PAGE_ALLOWCODE; + $pflags = $channel['channel_pageflags'] ^ PAGE_ALLOWCODE; q("UPDATE channel SET channel_pageflags = %d where channel_id = %d", intval($pflags), - intval( $uid ) + intval($uid) ); - notice( sprintf( (($pflags & PAGE_ALLOWCODE) ? t("Channel '%s' code allowed"): t("Channel '%s' code disallowed")) , $channel[0]['channel_name'] . ' (' . $channel[0]['channel_address'] . ')' ) . EOL); + notice( sprintf( (($pflags & PAGE_ALLOWCODE) ? t("Channel '%s' code allowed"): t("Channel '%s' code disallowed")) , $channel['channel_name'] . ' (' . $channel['channel_address'] . ')' ) . EOL); }; break; default: diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php index d60eb88df..6d8edf4d8 100644 --- a/Zotlabs/Module/Pubstream.php +++ b/Zotlabs/Module/Pubstream.php @@ -185,7 +185,6 @@ class Pubstream extends \Zotlabs\Web\Controller { $thread_top = ''; } - $net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : ''); $net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : ''); if($update && $_SESSION['loadtime']) @@ -203,10 +202,11 @@ class Pubstream extends \Zotlabs\Web\Controller { if($mid) { $r = q("SELECT parent AS item_id FROM item left join abook on item.author_xchan = abook.abook_xchan - $net_query + left join xchan on item.author_xchan = xchan.xchan_hash WHERE item.$identifier = '%s' and item.item_private = 0 $uids $site_firehose_sql $item_normal + and xchan.xchan_censored = 0 and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra $net_query2", dbesc($mid) @@ -216,10 +216,11 @@ class Pubstream extends \Zotlabs\Web\Controller { // Fetch a page full of parent items for this page $r = dbq("SELECT parent AS item_id FROM item left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids ) - $net_query + left join xchan on item.author_xchan = xchan.xchan_hash WHERE item.item_private = 0 $thread_top $uids $site_firehose_sql $item_normal + and xchan.xchan_censored = 0 and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra $net_query2 ORDER BY $ordering DESC $pager_sql " @@ -230,9 +231,10 @@ class Pubstream extends \Zotlabs\Web\Controller { if($mid) { $r = q("SELECT parent AS item_id FROM item left join abook on item.author_xchan = abook.abook_xchan - $net_query + left join xchan on item.author_xchan = xchan.xchan_hash WHERE item.$identifier = '%s' and item.item_private = 0 $uids $site_firehose_sql $item_normal_update $simple_update + and xchan.xchan_censored = 0 and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra $net_query2", dbesc($mid) @@ -241,10 +243,11 @@ class Pubstream extends \Zotlabs\Web\Controller { else { $r = dbq("SELECT parent AS item_id FROM item left join abook on item.author_xchan = abook.abook_xchan - $net_query + left join xchan on item.author_xchan = xchan.xchan_hash WHERE item.item_private = 0 $thread_top $uids $site_firehose_sql $item_normal_update $simple_update + and xchan.xchan_censored = 0 and (abook.abook_blocked = 0 or abook.abook_flags is null) $sql_extra $net_query2" ); -- cgit v1.2.3 From 241d96e9faa77bdbcde8d7a0d7a31bf915180846 Mon Sep 17 00:00:00 2001 From: Mario Date: Tue, 25 Jun 2024 09:29:08 +0000 Subject: bump version --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 60e022ba2..9c3697437 100644 --- a/boot.php +++ b/boot.php @@ -66,7 +66,7 @@ require_once('include/security.php'); define('PLATFORM_NAME', 'hubzilla'); -define('STD_VERSION', '9.1.4'); +define('STD_VERSION', '9.1.5'); define('ZOT_REVISION', '6.0'); define('DB_UPDATE_VERSION', 1263); -- cgit v1.2.3 From 4cddc3d0dfa67c7416ec2c2881c43c491ccc0db4 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 26 Jun 2024 09:35:53 +0000 Subject: fix php error --- Zotlabs/Module/Sources.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Zotlabs/Module/Sources.php b/Zotlabs/Module/Sources.php index ef665e727..177ae1f1a 100644 --- a/Zotlabs/Module/Sources.php +++ b/Zotlabs/Module/Sources.php @@ -3,6 +3,7 @@ namespace Zotlabs\Module; /** @file */ use App; use Zotlabs\Lib\Apps; +use Zotlabs\Lib\Text; use Zotlabs\Web\Controller; class Sources extends Controller { @@ -15,13 +16,12 @@ class Sources extends Controller { return; $source = intval($_REQUEST['source']); - $xchan = escape_tags($_REQUEST['xchan']); + $xchan = ((isset($_REQUEST['xchan'])) ? Text::escape_tags($_REQUEST['xchan']) : ''); $abook = intval($_REQUEST['abook']); - $words = escape_tags($_REQUEST['words']); + $words = ((isset($_REQUEST['words'])) ? Text::escape_tags($_REQUEST['words']) : ''); $resend = intval($_REQUEST['resend']); - $frequency = $_REQUEST['frequency']; - $name = escape_tags($_REQUEST['name']); - $tags = escape_tags($_REQUEST['tags']); + $name = ((isset($_REQUEST['name'])) ? Text::escape_tags($_REQUEST['name']) : ''); + $tags = ((isset($_REQUEST['tags'])) ? Text::escape_tags($_REQUEST['tags']) : ''); $channel = \App::get_channel(); -- cgit v1.2.3 From de992452ee3f6392fa7eb8d3dbac0c1dd2e32b00 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 26 Jun 2024 10:12:22 +0000 Subject: use the doubleleft template by default for admin pages to work around some display issues. Also notifications, etc. are not really useful there --- view/pdl/mod_admin.pdl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/view/pdl/mod_admin.pdl b/view/pdl/mod_admin.pdl index 3c9633a69..f5e46baed 100644 --- a/view/pdl/mod_admin.pdl +++ b/view/pdl/mod_admin.pdl @@ -1,10 +1,7 @@ +[template]doubleleft[/template] [region=aside] [widget=admin][/widget] [/region] [region=content] $content [/region] -[region=right_aside] -[widget=notifications][/widget] -[widget=newmember][/widget] -[/region] -- cgit v1.2.3 From a50b3181ad76f682fcb4ff60c4cc5ae2083f9c28 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 26 Jun 2024 10:27:13 +0000 Subject: make sure we get a scrollbar if everything else breaks and remove some unused css --- view/theme/redbasic/css/style.css | 19 ------------------- view/tpl/admin_accounts.tpl | 2 +- view/tpl/admin_channels.tpl | 2 +- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 0fc158108..53d164482 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -895,25 +895,6 @@ a .drop-icons:hover { list-style-type: none; } -table { - border-spacing: 2px; - max-width: 100%; -} - -th,td { - padding: 3px; -} - -#channels > tbody > tr > td, #users > tbody > tr > td { - max-width: 19.4em; - overflow: hidden; -} - -/* mail */ - -img.mail-conv-sender-photo { - border-radius: var(--bs-border-radius); -} /* jot */ diff --git a/view/tpl/admin_accounts.tpl b/view/tpl/admin_accounts.tpl index 1f5617f00..4e2b79876 100644 --- a/view/tpl/admin_accounts.tpl +++ b/view/tpl/admin_accounts.tpl @@ -1,4 +1,4 @@ -
    +

    {{$title}} - {{$page}}

    diff --git a/view/tpl/admin_channels.tpl b/view/tpl/admin_channels.tpl index 75db77593..19b3c292f 100644 --- a/view/tpl/admin_channels.tpl +++ b/view/tpl/admin_channels.tpl @@ -10,7 +10,7 @@ return false; } -
    +

    {{$title}} - {{$page}}

    -- cgit v1.2.3 From 3e57f150bc1f151a3d9227291875e2e87953c7b2 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 27 Jun 2024 07:44:05 +0000 Subject: version 9.2RC1, strings and dump composer autoload files --- boot.php | 2 +- util/hmessages.po | 3744 ++++++++++++++++----------------- vendor/composer/autoload_classmap.php | 3 +- vendor/composer/autoload_static.php | 3 +- 4 files changed, 1873 insertions(+), 1879 deletions(-) diff --git a/boot.php b/boot.php index 9c3697437..9191600fb 100644 --- a/boot.php +++ b/boot.php @@ -66,7 +66,7 @@ require_once('include/security.php'); define('PLATFORM_NAME', 'hubzilla'); -define('STD_VERSION', '9.1.5'); +define('STD_VERSION', '9.2RC1'); define('ZOT_REVISION', '6.0'); define('DB_UPDATE_VERSION', 1263); diff --git a/util/hmessages.po b/util/hmessages.po index 6ffa2e7f8..4e9ac503d 100644 --- a/util/hmessages.po +++ b/util/hmessages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 9.0RC\n" +"Project-Id-Version: 9.2RC1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-15 18:45+0000\n" +"POT-Creation-Date: 2024-06-27 07:40+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,12 +21,12 @@ msgstr "" msgid "Source channel not found." msgstr "" -#: ../../view/theme/redbasic/php/config.php:18 ../../include/text.php:3514 +#: ../../view/theme/redbasic/php/config.php:18 ../../include/text.php:3520 #: ../../addon/cart/submodules/orderoptions.php:335 #: ../../addon/cart/submodules/orderoptions.php:359 #: ../../addon/cart/submodules/orderoptions.php:435 #: ../../addon/cart/submodules/orderoptions.php:459 -#: ../../Zotlabs/Module/Admin/Site.php:231 +#: ../../Zotlabs/Module/Admin/Site.php:232 msgid "Default" msgstr "" @@ -36,9 +36,8 @@ msgid "Focus (Hubzilla default)" msgstr "" #: ../../view/theme/redbasic/php/config.php:188 ../../include/js_strings.php:23 -#: ../../addon/irc/irc.php:45 ../../addon/smileybutton/Mod_Smileybutton.php:53 -#: ../../addon/socialauth/Mod_SocialAuth.php:341 -#: ../../addon/hubwall/hubwall.php:95 +#: ../../addon/irc/irc.php:45 ../../addon/socialauth/Mod_SocialAuth.php:341 +#: ../../addon/hubwall/hubwall.php:96 #: ../../addon/openclipatar/openclipatar.php:54 #: ../../addon/hzfiles/hzfiles.php:86 ../../addon/piwik/piwik.php:95 #: ../../addon/redphotos/redphotos.php:136 @@ -79,7 +78,7 @@ msgstr "" #: ../../addon/rtof/Mod_Rtof.php:70 ../../addon/nofed/Mod_Nofed.php:51 #: ../../addon/photocache/Mod_Photocache.php:63 #: ../../addon/likebanner/likebanner.php:57 -#: ../../Zotlabs/Lib/ThreadItem.php:862 ../../Zotlabs/Storage/Browser.php:385 +#: ../../Zotlabs/Lib/ThreadItem.php:862 ../../Zotlabs/Storage/Browser.php:386 #: ../../Zotlabs/Module/Oauth.php:109 ../../Zotlabs/Module/Import_items.php:125 #: ../../Zotlabs/Module/Thing.php:357 ../../Zotlabs/Module/Thing.php:409 #: ../../Zotlabs/Module/Tokens.php:294 ../../Zotlabs/Module/Pdledit.php:137 @@ -91,44 +90,44 @@ msgstr "" #: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Defperms.php:262 #: ../../Zotlabs/Module/Locs.php:125 #: ../../Zotlabs/Module/Admin/Accounts.php:309 -#: ../../Zotlabs/Module/Admin/Themes.php:173 -#: ../../Zotlabs/Module/Admin/Addons.php:445 +#: ../../Zotlabs/Module/Admin/Themes.php:174 +#: ../../Zotlabs/Module/Admin/Addons.php:446 #: ../../Zotlabs/Module/Admin/Features.php:66 -#: ../../Zotlabs/Module/Admin/Profs.php:178 -#: ../../Zotlabs/Module/Admin/Channels.php:147 +#: ../../Zotlabs/Module/Admin/Profs.php:179 +#: ../../Zotlabs/Module/Admin/Channels.php:169 #: ../../Zotlabs/Module/Admin/Account_edit.php:73 -#: ../../Zotlabs/Module/Admin/Logs.php:84 -#: ../../Zotlabs/Module/Admin/Site.php:401 -#: ../../Zotlabs/Module/Admin/Security.php:129 +#: ../../Zotlabs/Module/Admin/Logs.php:85 +#: ../../Zotlabs/Module/Admin/Site.php:402 +#: ../../Zotlabs/Module/Admin/Security.php:130 #: ../../Zotlabs/Module/Affinity.php:84 ../../Zotlabs/Module/Permcats.php:257 -#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Group.php:150 -#: ../../Zotlabs/Module/Group.php:159 ../../Zotlabs/Module/Invite.php:563 +#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Group.php:151 +#: ../../Zotlabs/Module/Group.php:160 ../../Zotlabs/Module/Invite.php:564 #: ../../Zotlabs/Module/Mitem.php:259 ../../Zotlabs/Module/Photos.php:1056 #: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1208 #: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:160 -#: ../../Zotlabs/Module/Profiles.php:735 ../../Zotlabs/Module/Chat.php:208 -#: ../../Zotlabs/Module/Chat.php:247 ../../Zotlabs/Module/Regate.php:407 -#: ../../Zotlabs/Module/Setup.php:316 ../../Zotlabs/Module/Setup.php:356 +#: ../../Zotlabs/Module/Profiles.php:738 ../../Zotlabs/Module/Chat.php:208 +#: ../../Zotlabs/Module/Chat.php:247 ../../Zotlabs/Module/Regate.php:408 +#: ../../Zotlabs/Module/Setup.php:319 ../../Zotlabs/Module/Setup.php:359 #: ../../Zotlabs/Module/Editpost.php:88 ../../Zotlabs/Module/Oauth2.php:114 -#: ../../Zotlabs/Module/Settings/Display.php:187 +#: ../../Zotlabs/Module/Settings/Display.php:188 #: ../../Zotlabs/Module/Settings/Network.php:62 #: ../../Zotlabs/Module/Settings/Channel_home.php:91 -#: ../../Zotlabs/Module/Settings/Account.php:107 +#: ../../Zotlabs/Module/Settings/Account.php:109 #: ../../Zotlabs/Module/Settings/Editor.php:42 #: ../../Zotlabs/Module/Settings/Features.php:48 #: ../../Zotlabs/Module/Settings/Directory.php:42 #: ../../Zotlabs/Module/Settings/Manage.php:43 -#: ../../Zotlabs/Module/Settings/Privacy.php:122 +#: ../../Zotlabs/Module/Settings/Privacy.php:123 #: ../../Zotlabs/Module/Settings/Events.php:42 #: ../../Zotlabs/Module/Settings/Photos.php:42 #: ../../Zotlabs/Module/Settings/Conversation.php:49 -#: ../../Zotlabs/Module/Settings/Channel.php:229 +#: ../../Zotlabs/Module/Settings/Channel.php:230 #: ../../Zotlabs/Module/Settings/Profiles.php:52 #: ../../Zotlabs/Module/Settings/Connections.php:42 #: ../../Zotlabs/Module/Settings/Calendar.php:42 #: ../../Zotlabs/Module/Settings/Multifactor.php:85 -#: ../../Zotlabs/Module/Email_validation.php:40 -#: ../../Zotlabs/Module/Import.php:611 +#: ../../Zotlabs/Module/Email_validation.php:41 +#: ../../Zotlabs/Module/Import.php:616 msgid "Submit" msgstr "" @@ -184,8 +183,7 @@ msgstr "" #: ../../view/theme/redbasic/php/config.php:202 #: ../../view/theme/redbasic/php/config.php:203 #: ../../view/theme/redbasic/php/config.php:215 -#: ../../include/conversation.php:1265 -#: ../../addon/smileybutton/Mod_Smileybutton.php:42 +#: ../../include/conversation.php:1267 #: ../../addon/socialauth/Mod_SocialAuth.php:218 #: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/redred/Mod_Redred.php:61 #: ../../addon/libertree/Mod_Libertree.php:57 @@ -225,39 +223,39 @@ msgstr "" #: ../../addon/content_import/Mod_content_import.php:135 #: ../../addon/content_import/Mod_content_import.php:136 #: ../../addon/rtof/Mod_Rtof.php:47 ../../addon/nofed/Mod_Nofed.php:40 -#: ../../boot.php:1751 ../../Zotlabs/Lib/Libzotdir.php:165 -#: ../../Zotlabs/Lib/Libzotdir.php:166 ../../Zotlabs/Lib/Libzotdir.php:168 -#: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:310 -#: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:392 -#: ../../Zotlabs/Storage/Browser.php:394 ../../Zotlabs/Storage/Browser.php:558 +#: ../../boot.php:1765 ../../Zotlabs/Lib/Libzotdir.php:166 +#: ../../Zotlabs/Lib/Libzotdir.php:167 ../../Zotlabs/Lib/Libzotdir.php:169 +#: ../../Zotlabs/Storage/Browser.php:310 ../../Zotlabs/Storage/Browser.php:311 +#: ../../Zotlabs/Storage/Browser.php:312 ../../Zotlabs/Storage/Browser.php:393 +#: ../../Zotlabs/Storage/Browser.php:395 ../../Zotlabs/Storage/Browser.php:559 #: ../../Zotlabs/Module/Filestorage.php:203 #: ../../Zotlabs/Module/Filestorage.php:211 #: ../../Zotlabs/Module/Contactedit.php:270 #: ../../Zotlabs/Module/Contactedit.php:315 -#: ../../Zotlabs/Module/Register.php:512 ../../Zotlabs/Module/Connedit.php:622 -#: ../../Zotlabs/Module/Defperms.php:195 ../../Zotlabs/Module/Api.php:99 +#: ../../Zotlabs/Module/Register.php:515 ../../Zotlabs/Module/Connedit.php:622 +#: ../../Zotlabs/Module/Defperms.php:195 ../../Zotlabs/Module/Api.php:101 #: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 -#: ../../Zotlabs/Module/Admin/Site.php:305 -#: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:137 -#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:147 -#: ../../Zotlabs/Module/Group.php:249 ../../Zotlabs/Module/Group.php:301 -#: ../../Zotlabs/Module/Group.php:302 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:138 +#: ../../Zotlabs/Module/Group.php:139 ../../Zotlabs/Module/Group.php:148 +#: ../../Zotlabs/Module/Group.php:250 ../../Zotlabs/Module/Group.php:302 +#: ../../Zotlabs/Module/Group.php:303 ../../Zotlabs/Module/Mitem.php:176 #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 #: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Photos.php:666 #: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:157 -#: ../../Zotlabs/Module/Profiles.php:671 ../../Zotlabs/Module/Profiles.php:681 -#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:693 -#: ../../Zotlabs/Module/Settings/Display.php:86 -#: ../../Zotlabs/Module/Settings/Privacy.php:132 +#: ../../Zotlabs/Module/Profiles.php:674 ../../Zotlabs/Module/Profiles.php:684 +#: ../../Zotlabs/Module/Profiles.php:692 ../../Zotlabs/Module/Profiles.php:696 +#: ../../Zotlabs/Module/Settings/Display.php:87 #: ../../Zotlabs/Module/Settings/Privacy.php:133 #: ../../Zotlabs/Module/Settings/Privacy.php:134 #: ../../Zotlabs/Module/Settings/Privacy.php:135 #: ../../Zotlabs/Module/Settings/Privacy.php:136 #: ../../Zotlabs/Module/Settings/Privacy.php:137 -#: ../../Zotlabs/Module/Settings/Channel.php:224 +#: ../../Zotlabs/Module/Settings/Privacy.php:138 +#: ../../Zotlabs/Module/Settings/Channel.php:225 #: ../../Zotlabs/Module/Settings/Multifactor.php:82 -#: ../../Zotlabs/Module/Import.php:600 ../../Zotlabs/Module/Import.php:604 -#: ../../Zotlabs/Module/Import.php:605 +#: ../../Zotlabs/Module/Import.php:605 ../../Zotlabs/Module/Import.php:609 +#: ../../Zotlabs/Module/Import.php:610 msgid "No" msgstr "" @@ -265,8 +263,7 @@ msgstr "" #: ../../view/theme/redbasic/php/config.php:202 #: ../../view/theme/redbasic/php/config.php:203 #: ../../view/theme/redbasic/php/config.php:215 -#: ../../include/conversation.php:1265 -#: ../../addon/smileybutton/Mod_Smileybutton.php:42 +#: ../../include/conversation.php:1267 #: ../../addon/socialauth/Mod_SocialAuth.php:218 #: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/redred/Mod_Redred.php:61 #: ../../addon/libertree/Mod_Libertree.php:57 @@ -306,37 +303,37 @@ msgstr "" #: ../../addon/content_import/Mod_content_import.php:135 #: ../../addon/content_import/Mod_content_import.php:136 #: ../../addon/rtof/Mod_Rtof.php:47 ../../addon/nofed/Mod_Nofed.php:40 -#: ../../boot.php:1751 ../../Zotlabs/Lib/Libzotdir.php:165 -#: ../../Zotlabs/Lib/Libzotdir.php:166 ../../Zotlabs/Lib/Libzotdir.php:168 -#: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:310 -#: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:392 -#: ../../Zotlabs/Storage/Browser.php:394 ../../Zotlabs/Storage/Browser.php:558 +#: ../../boot.php:1765 ../../Zotlabs/Lib/Libzotdir.php:166 +#: ../../Zotlabs/Lib/Libzotdir.php:167 ../../Zotlabs/Lib/Libzotdir.php:169 +#: ../../Zotlabs/Storage/Browser.php:310 ../../Zotlabs/Storage/Browser.php:311 +#: ../../Zotlabs/Storage/Browser.php:312 ../../Zotlabs/Storage/Browser.php:393 +#: ../../Zotlabs/Storage/Browser.php:395 ../../Zotlabs/Storage/Browser.php:559 #: ../../Zotlabs/Module/Filestorage.php:203 #: ../../Zotlabs/Module/Filestorage.php:211 #: ../../Zotlabs/Module/Contactedit.php:270 -#: ../../Zotlabs/Module/Register.php:512 ../../Zotlabs/Module/Defperms.php:195 -#: ../../Zotlabs/Module/Api.php:98 ../../Zotlabs/Module/Menu.php:163 -#: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Admin/Site.php:307 -#: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:137 -#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:147 -#: ../../Zotlabs/Module/Group.php:249 ../../Zotlabs/Module/Group.php:301 -#: ../../Zotlabs/Module/Group.php:302 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Register.php:515 ../../Zotlabs/Module/Defperms.php:195 +#: ../../Zotlabs/Module/Api.php:100 ../../Zotlabs/Module/Menu.php:163 +#: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Admin/Site.php:308 +#: ../../Zotlabs/Module/Permcats.php:247 ../../Zotlabs/Module/Group.php:138 +#: ../../Zotlabs/Module/Group.php:139 ../../Zotlabs/Module/Group.php:148 +#: ../../Zotlabs/Module/Group.php:250 ../../Zotlabs/Module/Group.php:302 +#: ../../Zotlabs/Module/Group.php:303 ../../Zotlabs/Module/Mitem.php:176 #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 #: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Photos.php:666 #: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:157 -#: ../../Zotlabs/Module/Profiles.php:671 ../../Zotlabs/Module/Profiles.php:681 -#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:693 -#: ../../Zotlabs/Module/Settings/Display.php:86 -#: ../../Zotlabs/Module/Settings/Privacy.php:132 +#: ../../Zotlabs/Module/Profiles.php:674 ../../Zotlabs/Module/Profiles.php:684 +#: ../../Zotlabs/Module/Profiles.php:692 ../../Zotlabs/Module/Profiles.php:696 +#: ../../Zotlabs/Module/Settings/Display.php:87 #: ../../Zotlabs/Module/Settings/Privacy.php:133 #: ../../Zotlabs/Module/Settings/Privacy.php:134 #: ../../Zotlabs/Module/Settings/Privacy.php:135 #: ../../Zotlabs/Module/Settings/Privacy.php:136 #: ../../Zotlabs/Module/Settings/Privacy.php:137 -#: ../../Zotlabs/Module/Settings/Channel.php:224 +#: ../../Zotlabs/Module/Settings/Privacy.php:138 +#: ../../Zotlabs/Module/Settings/Channel.php:225 #: ../../Zotlabs/Module/Settings/Multifactor.php:82 -#: ../../Zotlabs/Module/Import.php:600 ../../Zotlabs/Module/Import.php:604 -#: ../../Zotlabs/Module/Import.php:605 +#: ../../Zotlabs/Module/Import.php:605 ../../Zotlabs/Module/Import.php:609 +#: ../../Zotlabs/Module/Import.php:610 msgid "Yes" msgstr "" @@ -427,23 +424,23 @@ msgstr "" msgid "This is the home page of %s." msgstr "" -#: ../../include/auth.php:197 +#: ../../include/auth.php:232 msgid "Delegation session ended." msgstr "" -#: ../../include/auth.php:201 +#: ../../include/auth.php:236 msgid "Logged out." msgstr "" -#: ../../include/auth.php:308 +#: ../../include/auth.php:342 msgid "Email validation is incomplete. Please check your email." msgstr "" -#: ../../include/auth.php:324 +#: ../../include/auth.php:358 msgid "Failed authentication" msgstr "" -#: ../../include/auth.php:334 ../../addon/openid/Mod_Openid.php:189 +#: ../../include/auth.php:368 ../../addon/openid/Mod_Openid.php:189 msgid "Login failed." msgstr "" @@ -451,207 +448,207 @@ msgstr "" msgid "View PDF" msgstr "" -#: ../../include/oembed.php:391 +#: ../../include/oembed.php:390 msgid " by " msgstr "" -#: ../../include/oembed.php:392 +#: ../../include/oembed.php:391 msgid " on " msgstr "" -#: ../../include/oembed.php:425 +#: ../../include/oembed.php:424 msgid "Embedded content" msgstr "" -#: ../../include/oembed.php:434 +#: ../../include/oembed.php:433 msgid "Embedding disabled" msgstr "" -#: ../../include/event.php:34 ../../include/event.php:132 +#: ../../include/event.php:35 ../../include/event.php:133 msgid "l F d, Y \\@ g:i A" msgstr "" -#: ../../include/event.php:42 +#: ../../include/event.php:43 msgid "Starts:" msgstr "" -#: ../../include/event.php:52 +#: ../../include/event.php:53 msgid "Finishes:" msgstr "" -#: ../../include/event.php:66 ../../include/event.php:157 -#: ../../include/channel.php:1639 ../../Zotlabs/Module/Directory.php:354 +#: ../../include/event.php:67 ../../include/event.php:158 +#: ../../include/channel.php:1640 ../../Zotlabs/Module/Directory.php:354 msgid "Location:" msgstr "" -#: ../../include/event.php:132 +#: ../../include/event.php:133 msgid "l F d, Y" msgstr "" -#: ../../include/event.php:136 +#: ../../include/event.php:137 msgid "Start:" msgstr "" -#: ../../include/event.php:140 +#: ../../include/event.php:141 msgid "End:" msgstr "" -#: ../../include/event.php:145 ../../addon/openid/MysqlProvider.php:67 +#: ../../include/event.php:146 ../../addon/openid/MysqlProvider.php:67 msgid "Timezone" msgstr "" -#: ../../include/event.php:1245 +#: ../../include/event.php:1246 msgid "This event has been added to your calendar." msgstr "" -#: ../../include/event.php:1399 ../../include/conversation.php:151 -#: ../../include/text.php:2355 ../../Zotlabs/Module/Tagger.php:75 +#: ../../include/event.php:1400 ../../include/conversation.php:152 +#: ../../include/text.php:2361 ../../Zotlabs/Module/Tagger.php:75 #: ../../Zotlabs/Module/Like.php:450 #: ../../Zotlabs/Module/Channel_calendar.php:221 msgid "event" msgstr "" -#: ../../include/event.php:1478 +#: ../../include/event.php:1479 msgid "Not specified" msgstr "" -#: ../../include/event.php:1479 +#: ../../include/event.php:1480 msgid "Needs Action" msgstr "" -#: ../../include/event.php:1480 +#: ../../include/event.php:1481 msgid "Completed" msgstr "" -#: ../../include/event.php:1481 +#: ../../include/event.php:1482 msgid "In Process" msgstr "" -#: ../../include/event.php:1482 +#: ../../include/event.php:1483 msgid "Cancelled" msgstr "" -#: ../../include/event.php:1563 ../../include/connections.php:781 +#: ../../include/event.php:1564 ../../include/connections.php:790 #: ../../Zotlabs/Module/Connedit.php:741 ../../Zotlabs/Module/Cdav.php:1377 msgid "Mobile" msgstr "" -#: ../../include/event.php:1564 ../../include/connections.php:782 +#: ../../include/event.php:1565 ../../include/connections.php:791 #: ../../Zotlabs/Widget/Notifications.php:43 #: ../../Zotlabs/Module/Connedit.php:742 ../../Zotlabs/Module/Cdav.php:1378 msgid "Home" msgstr "" -#: ../../include/event.php:1565 ../../include/connections.php:783 +#: ../../include/event.php:1566 ../../include/connections.php:792 msgid "Home, Voice" msgstr "" -#: ../../include/event.php:1566 ../../include/connections.php:784 +#: ../../include/event.php:1567 ../../include/connections.php:793 msgid "Home, Fax" msgstr "" -#: ../../include/event.php:1567 ../../include/connections.php:785 +#: ../../include/event.php:1568 ../../include/connections.php:794 #: ../../Zotlabs/Module/Connedit.php:743 ../../Zotlabs/Module/Cdav.php:1379 msgid "Work" msgstr "" -#: ../../include/event.php:1568 ../../include/connections.php:786 +#: ../../include/event.php:1569 ../../include/connections.php:795 msgid "Work, Voice" msgstr "" -#: ../../include/event.php:1569 ../../include/connections.php:787 +#: ../../include/event.php:1570 ../../include/connections.php:796 msgid "Work, Fax" msgstr "" -#: ../../include/event.php:1570 ../../include/event.php:1577 +#: ../../include/event.php:1571 ../../include/event.php:1578 #: ../../include/selectors.php:64 ../../include/selectors.php:81 #: ../../include/selectors.php:119 ../../include/selectors.php:155 -#: ../../include/connections.php:788 ../../include/connections.php:795 -#: ../../Zotlabs/Access/PermissionRoles.php:360 +#: ../../include/connections.php:797 ../../include/connections.php:804 +#: ../../Zotlabs/Access/PermissionRoles.php:362 #: ../../Zotlabs/Module/Connedit.php:744 ../../Zotlabs/Module/Cdav.php:1380 msgid "Other" msgstr "" -#: ../../include/feedutils.php:849 ../../include/text.php:1579 +#: ../../include/feedutils.php:851 ../../include/text.php:1580 msgid "unknown" msgstr "" -#: ../../include/items.php:448 ../../addon/hzfiles/hzfiles.php:75 +#: ../../include/items.php:456 ../../addon/hzfiles/hzfiles.php:75 #: ../../addon/redphotos/redphotos.php:119 #: ../../addon/redfiles/redfiles.php:109 #: ../../Zotlabs/Module/Import_items.php:116 #: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:54 -#: ../../Zotlabs/Module/Subthread.php:89 ../../Zotlabs/Module/Group.php:108 -#: ../../Zotlabs/Module/Like.php:344 ../../Zotlabs/Module/Profperm.php:28 +#: ../../Zotlabs/Module/Subthread.php:89 ../../Zotlabs/Module/Group.php:109 +#: ../../Zotlabs/Module/Like.php:344 ../../Zotlabs/Module/Profperm.php:29 #: ../../Zotlabs/Web/WebServer.php:118 msgid "Permission denied" msgstr "" -#: ../../include/items.php:1233 +#: ../../include/items.php:1241 msgid "Visible to anybody on the internet." msgstr "" -#: ../../include/items.php:1235 +#: ../../include/items.php:1243 msgid "Visible to you only." msgstr "" -#: ../../include/items.php:1237 +#: ../../include/items.php:1245 msgid "Visible to anybody in this network." msgstr "" -#: ../../include/items.php:1239 +#: ../../include/items.php:1247 msgid "Visible to anybody authenticated." msgstr "" -#: ../../include/items.php:1241 +#: ../../include/items.php:1249 #, php-format msgid "Visible to anybody on %s." msgstr "" -#: ../../include/items.php:1243 +#: ../../include/items.php:1251 msgid "Visible to all connections." msgstr "" -#: ../../include/items.php:1245 +#: ../../include/items.php:1253 msgid "Visible to approved connections." msgstr "" -#: ../../include/items.php:1247 +#: ../../include/items.php:1255 msgid "Visible to specific connections." msgstr "" -#: ../../include/items.php:3340 ../../Zotlabs/Lib/Activity.php:2177 +#: ../../include/items.php:3348 ../../Zotlabs/Lib/Activity.php:2189 #: ../../Zotlabs/Module/Share.php:118 #, php-format msgid "🔁 Repeated %1$s's %2$s" msgstr "" -#: ../../include/items.php:3843 ../../addon/flashcards/Mod_Flashcards.php:291 +#: ../../include/items.php:3851 ../../addon/flashcards/Mod_Flashcards.php:291 #: ../../addon/flashcards/Mod_Flashcards.php:292 -#: ../../Zotlabs/Module/Display.php:58 ../../Zotlabs/Module/Display.php:119 -#: ../../Zotlabs/Module/Display.php:390 ../../Zotlabs/Module/Thing.php:113 +#: ../../Zotlabs/Module/Display.php:59 ../../Zotlabs/Module/Display.php:120 +#: ../../Zotlabs/Module/Display.php:391 ../../Zotlabs/Module/Thing.php:113 #: ../../Zotlabs/Module/Filestorage.php:29 ../../Zotlabs/Module/Viewsrc.php:25 -#: ../../Zotlabs/Module/Admin/Themes.php:72 -#: ../../Zotlabs/Module/Admin/Addons.php:263 ../../Zotlabs/Module/Admin.php:61 +#: ../../Zotlabs/Module/Admin/Themes.php:73 +#: ../../Zotlabs/Module/Admin/Addons.php:264 ../../Zotlabs/Module/Admin.php:63 msgid "Item not found." msgstr "" -#: ../../include/items.php:3923 ../../include/attach.php:156 +#: ../../include/items.php:3931 ../../include/attach.php:156 #: ../../include/attach.php:205 ../../include/attach.php:278 #: ../../include/attach.php:329 ../../include/attach.php:431 #: ../../include/attach.php:445 ../../include/attach.php:452 #: ../../include/attach.php:534 ../../include/attach.php:1106 #: ../../include/attach.php:1179 ../../include/attach.php:1344 -#: ../../include/photos.php:30 ../../addon/openid/Mod_Id.php:53 +#: ../../include/photos.php:31 ../../addon/openid/Mod_Id.php:53 #: ../../addon/keepout/keepout.php:36 ../../addon/cards/Mod_Cards.php:89 #: ../../addon/cards/Mod_Card_edit.php:51 ../../addon/pumpio/pumpio.php:44 #: ../../addon/articles/Mod_Article_edit.php:51 #: ../../addon/articles/Mod_Articles.php:94 ../../addon/wiki/Mod_Wiki.php:63 #: ../../addon/wiki/Mod_Wiki.php:288 ../../addon/wiki/Mod_Wiki.php:425 #: ../../Zotlabs/Lib/Chatroom.php:135 ../../Zotlabs/Module/Page.php:34 -#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Display.php:386 -#: ../../Zotlabs/Module/Cover_photo.php:298 -#: ../../Zotlabs/Module/Cover_photo.php:311 +#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Display.php:387 +#: ../../Zotlabs/Module/Cover_photo.php:299 +#: ../../Zotlabs/Module/Cover_photo.php:312 #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 #: ../../Zotlabs/Module/Editwebpage.php:107 @@ -665,404 +662,404 @@ msgstr "" #: ../../Zotlabs/Module/Filestorage.php:96 #: ../../Zotlabs/Module/Filestorage.php:119 #: ../../Zotlabs/Module/Filestorage.php:165 -#: ../../Zotlabs/Module/Register.php:200 ../../Zotlabs/Module/Appman.php:163 +#: ../../Zotlabs/Module/Register.php:201 ../../Zotlabs/Module/Appman.php:163 #: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Item.php:512 #: ../../Zotlabs/Module/Item.php:531 ../../Zotlabs/Module/Item.php:541 -#: ../../Zotlabs/Module/Item.php:1457 ../../Zotlabs/Module/Achievements.php:34 +#: ../../Zotlabs/Module/Item.php:1462 ../../Zotlabs/Module/Achievements.php:34 #: ../../Zotlabs/Module/Connedit.php:299 ../../Zotlabs/Module/Defperms.php:181 #: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Regmod.php:20 -#: ../../Zotlabs/Module/Profile_photo.php:389 -#: ../../Zotlabs/Module/Profile_photo.php:420 +#: ../../Zotlabs/Module/Profile_photo.php:390 +#: ../../Zotlabs/Module/Profile_photo.php:421 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 #: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74 -#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Layouts.php:71 +#: ../../Zotlabs/Module/Api.php:26 ../../Zotlabs/Module/Layouts.php:71 #: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89 #: ../../Zotlabs/Module/Common.php:38 ../../Zotlabs/Module/Locs.php:98 #: ../../Zotlabs/Module/Menu.php:130 ../../Zotlabs/Module/Menu.php:141 #: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Bookmarks.php:70 #: ../../Zotlabs/Module/Attach_edit.php:90 #: ../../Zotlabs/Module/Attach_edit.php:99 -#: ../../Zotlabs/Module/Attach_edit.php:106 ../../Zotlabs/Module/Group.php:14 -#: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Invite.php:64 -#: ../../Zotlabs/Module/Invite.php:315 ../../Zotlabs/Module/Like.php:242 +#: ../../Zotlabs/Module/Attach_edit.php:106 ../../Zotlabs/Module/Group.php:15 +#: ../../Zotlabs/Module/Group.php:31 ../../Zotlabs/Module/Invite.php:65 +#: ../../Zotlabs/Module/Invite.php:316 ../../Zotlabs/Module/Like.php:242 #: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 -#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/New_channel.php:105 -#: ../../Zotlabs/Module/New_channel.php:130 ../../Zotlabs/Module/Photos.php:71 -#: ../../Zotlabs/Module/Channel.php:233 ../../Zotlabs/Module/Channel.php:390 -#: ../../Zotlabs/Module/Channel.php:428 ../../Zotlabs/Module/Profile.php:99 +#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/New_channel.php:106 +#: ../../Zotlabs/Module/New_channel.php:131 ../../Zotlabs/Module/Photos.php:71 +#: ../../Zotlabs/Module/Channel.php:234 ../../Zotlabs/Module/Channel.php:391 +#: ../../Zotlabs/Module/Channel.php:429 ../../Zotlabs/Module/Profile.php:99 #: ../../Zotlabs/Module/Profile.php:114 ../../Zotlabs/Module/Moderate.php:15 -#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Profiles.php:167 -#: ../../Zotlabs/Module/Profiles.php:610 +#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Module/Profiles.php:168 +#: ../../Zotlabs/Module/Profiles.php:611 #: ../../Zotlabs/Module/Sharedwithme.php:19 #: ../../Zotlabs/Module/Authtest.php:13 #: ../../Zotlabs/Module/Channel_calendar.php:232 #: ../../Zotlabs/Module/Chat.php:111 ../../Zotlabs/Module/Chat.php:116 #: ../../Zotlabs/Module/Editlayout.php:67 #: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Settings.php:59 -#: ../../Zotlabs/Module/Setup.php:218 ../../Zotlabs/Module/Editpost.php:17 +#: ../../Zotlabs/Module/Setup.php:220 ../../Zotlabs/Module/Editpost.php:17 #: ../../Zotlabs/Module/Connections.php:32 #: ../../Zotlabs/Module/Editblock.php:67 ../../Zotlabs/Module/Vote.php:19 #: ../../Zotlabs/Web/WebServer.php:119 msgid "Permission denied." msgstr "" -#: ../../include/items.php:4425 ../../Zotlabs/Module/Group.php:62 -#: ../../Zotlabs/Module/Group.php:206 +#: ../../include/items.php:4433 ../../Zotlabs/Module/Group.php:63 +#: ../../Zotlabs/Module/Group.php:207 msgid "Privacy group not found." msgstr "" -#: ../../include/items.php:4441 +#: ../../include/items.php:4449 msgid "Privacy group is empty." msgstr "" -#: ../../include/items.php:4448 +#: ../../include/items.php:4456 #, php-format msgid "Privacy group: %s" msgstr "" -#: ../../include/items.php:4458 +#: ../../include/items.php:4466 #, php-format msgid "Connection: %s" msgstr "" -#: ../../include/items.php:4460 +#: ../../include/items.php:4468 msgid "Connection not found." msgstr "" -#: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 +#: ../../include/features.php:53 ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 #: ../../Zotlabs/Module/Settings/Features.php:38 msgid "Off" msgstr "" -#: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 +#: ../../include/features.php:53 ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 #: ../../Zotlabs/Module/Settings/Features.php:38 msgid "On" msgstr "" -#: ../../include/features.php:82 ../../include/nav.php:488 -#: ../../include/nav.php:491 ../../Zotlabs/Lib/Apps.php:351 +#: ../../include/features.php:80 ../../include/nav.php:489 +#: ../../include/nav.php:492 ../../Zotlabs/Lib/Apps.php:352 msgid "Calendar" msgstr "" -#: ../../include/features.php:86 +#: ../../include/features.php:84 msgid "Start calendar week on Monday" msgstr "" -#: ../../include/features.php:87 +#: ../../include/features.php:85 msgid "Default is Sunday" msgstr "" -#: ../../include/features.php:94 +#: ../../include/features.php:92 msgid "Event Timezone Selection" msgstr "" -#: ../../include/features.php:95 +#: ../../include/features.php:93 msgid "Allow event creation in timezones other than your own." msgstr "" -#: ../../include/features.php:104 +#: ../../include/features.php:102 msgid "Channel Home" msgstr "" -#: ../../include/features.php:108 +#: ../../include/features.php:106 msgid "Search by Date" msgstr "" -#: ../../include/features.php:109 +#: ../../include/features.php:107 msgid "Ability to select posts by date ranges" msgstr "" -#: ../../include/features.php:116 +#: ../../include/features.php:114 msgid "Tag Cloud" msgstr "" -#: ../../include/features.php:117 +#: ../../include/features.php:115 msgid "Provide a personal tag cloud on your channel page" msgstr "" -#: ../../include/features.php:124 ../../include/features.php:358 +#: ../../include/features.php:122 ../../include/features.php:356 msgid "Use blog/list mode" msgstr "" -#: ../../include/features.php:125 ../../include/features.php:359 +#: ../../include/features.php:123 ../../include/features.php:357 msgid "Comments will be displayed separately" msgstr "" -#: ../../include/features.php:133 ../../include/text.php:1077 -#: ../../Zotlabs/Lib/Apps.php:338 ../../Zotlabs/Module/Connections.php:399 +#: ../../include/features.php:131 ../../include/text.php:1078 +#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Module/Connections.php:399 msgid "Connections" msgstr "" -#: ../../include/features.php:137 +#: ../../include/features.php:135 msgid "Connection Filtering" msgstr "" -#: ../../include/features.php:138 +#: ../../include/features.php:136 msgid "Filter incoming posts from connections based on keywords/content" msgstr "" -#: ../../include/features.php:146 +#: ../../include/features.php:144 msgid "Conversation" msgstr "" -#: ../../include/features.php:158 +#: ../../include/features.php:156 msgid "Emoji Reactions" msgstr "" -#: ../../include/features.php:159 +#: ../../include/features.php:157 msgid "Add emoji reaction ability to posts" msgstr "" -#: ../../include/features.php:166 +#: ../../include/features.php:164 msgid "Dislike Posts" msgstr "" -#: ../../include/features.php:167 +#: ../../include/features.php:165 msgid "Ability to dislike posts/comments" msgstr "" -#: ../../include/features.php:174 +#: ../../include/features.php:172 msgid "Star Posts" msgstr "" -#: ../../include/features.php:175 +#: ../../include/features.php:173 msgid "Ability to mark special posts with a star indicator" msgstr "" -#: ../../include/features.php:182 +#: ../../include/features.php:180 msgid "Reply on comment" msgstr "" -#: ../../include/features.php:183 +#: ../../include/features.php:181 msgid "Ability to reply on selected comment" msgstr "" -#: ../../include/features.php:192 ../../Zotlabs/Lib/Apps.php:352 +#: ../../include/features.php:190 ../../Zotlabs/Lib/Apps.php:353 msgid "Directory" msgstr "" -#: ../../include/features.php:196 +#: ../../include/features.php:194 msgid "Advanced Directory Search" msgstr "" -#: ../../include/features.php:197 +#: ../../include/features.php:195 msgid "Allows creation of complex directory search queries" msgstr "" -#: ../../include/features.php:206 +#: ../../include/features.php:204 msgid "Editor" msgstr "" -#: ../../include/features.php:210 +#: ../../include/features.php:208 msgid "Post Categories" msgstr "" -#: ../../include/features.php:211 +#: ../../include/features.php:209 msgid "Add categories to your posts" msgstr "" -#: ../../include/features.php:218 +#: ../../include/features.php:216 msgid "Large Photos" msgstr "" -#: ../../include/features.php:219 +#: ../../include/features.php:217 msgid "" "Include large (1024px) photo thumbnails in posts. If not enabled, use small " "(640px) photo thumbnails" msgstr "" -#: ../../include/features.php:226 +#: ../../include/features.php:224 msgid "Even More Encryption" msgstr "" -#: ../../include/features.php:227 +#: ../../include/features.php:225 msgid "" "Allow optional encryption of content end-to-end with a shared secret key" msgstr "" -#: ../../include/features.php:234 +#: ../../include/features.php:232 msgid "Disable Comments" msgstr "" -#: ../../include/features.php:235 +#: ../../include/features.php:233 msgid "Provide the option to disable comments for a post" msgstr "" -#: ../../include/features.php:242 +#: ../../include/features.php:240 msgid "Delayed Posting" msgstr "" -#: ../../include/features.php:243 +#: ../../include/features.php:241 msgid "Allow posts to be published at a later date" msgstr "" -#: ../../include/features.php:250 +#: ../../include/features.php:248 msgid "Content Expiration" msgstr "" -#: ../../include/features.php:251 +#: ../../include/features.php:249 msgid "Remove posts/comments and/or private messages at a future time" msgstr "" -#: ../../include/features.php:258 +#: ../../include/features.php:256 msgid "Suppress Duplicate Posts/Comments" msgstr "" -#: ../../include/features.php:259 +#: ../../include/features.php:257 msgid "" "Prevent posts with identical content to be published with less than two " "minutes in between submissions." msgstr "" -#: ../../include/features.php:266 +#: ../../include/features.php:264 msgid "Auto-save drafts of posts and comments" msgstr "" -#: ../../include/features.php:267 +#: ../../include/features.php:265 msgid "" "Automatically saves post and comment drafts in local browser storage to help " "prevent accidental loss of compositions" msgstr "" -#: ../../include/features.php:276 +#: ../../include/features.php:274 msgid "Manage" msgstr "" -#: ../../include/features.php:280 +#: ../../include/features.php:278 msgid "Navigation Channel Select" msgstr "" -#: ../../include/features.php:281 +#: ../../include/features.php:279 msgid "Change channels directly from within the navigation dropdown menu" msgstr "" -#: ../../include/features.php:290 ../../Zotlabs/Widget/Notifications.php:23 +#: ../../include/features.php:288 ../../Zotlabs/Widget/Notifications.php:23 #: ../../Zotlabs/Module/Connections.php:347 msgid "Network" msgstr "" -#: ../../include/features.php:294 +#: ../../include/features.php:292 msgid "Events Filter" msgstr "" -#: ../../include/features.php:295 +#: ../../include/features.php:293 msgid "Ability to display only events" msgstr "" -#: ../../include/features.php:302 +#: ../../include/features.php:300 msgid "Polls Filter" msgstr "" -#: ../../include/features.php:303 +#: ../../include/features.php:301 msgid "Ability to display only polls" msgstr "" -#: ../../include/features.php:310 ../../Zotlabs/Widget/Savedsearch.php:89 +#: ../../include/features.php:308 ../../Zotlabs/Widget/Savedsearch.php:89 msgid "Saved Searches" msgstr "" -#: ../../include/features.php:311 +#: ../../include/features.php:309 msgid "Save search terms for re-use" msgstr "" -#: ../../include/features.php:318 ../../include/contact_widgets.php:53 +#: ../../include/features.php:316 ../../include/contact_widgets.php:55 #: ../../Zotlabs/Widget/Activity_filter.php:196 #: ../../Zotlabs/Widget/Filer.php:33 msgid "Saved Folders" msgstr "" -#: ../../include/features.php:319 +#: ../../include/features.php:317 msgid "Ability to file posts under folders" msgstr "" -#: ../../include/features.php:326 +#: ../../include/features.php:324 msgid "Alternate Stream Order" msgstr "" -#: ../../include/features.php:327 +#: ../../include/features.php:325 msgid "" "Ability to order the stream by last post date, last comment date or " "unthreaded activities" msgstr "" -#: ../../include/features.php:334 +#: ../../include/features.php:332 msgid "Contact Filter" msgstr "" -#: ../../include/features.php:335 +#: ../../include/features.php:333 msgid "Ability to display only posts of a selected contact" msgstr "" -#: ../../include/features.php:342 +#: ../../include/features.php:340 msgid "Forum Filter" msgstr "" -#: ../../include/features.php:343 +#: ../../include/features.php:341 msgid "Ability to display only posts of a specific forum" msgstr "" -#: ../../include/features.php:350 +#: ../../include/features.php:348 msgid "Personal Posts Filter" msgstr "" -#: ../../include/features.php:351 +#: ../../include/features.php:349 msgid "Ability to display only posts that you've interacted on" msgstr "" -#: ../../include/features.php:368 ../../include/nav.php:469 -#: ../../Zotlabs/Lib/Apps.php:350 +#: ../../include/features.php:366 ../../include/nav.php:470 +#: ../../Zotlabs/Lib/Apps.php:351 #: ../../Zotlabs/Widget/Channel_activities.php:93 #: ../../Zotlabs/Module/Fbrowser.php:29 msgid "Photos" msgstr "" -#: ../../include/features.php:372 +#: ../../include/features.php:370 msgid "Photo Location" msgstr "" -#: ../../include/features.php:373 +#: ../../include/features.php:371 msgid "If location data is available on uploaded photos, link this to a map." msgstr "" -#: ../../include/features.php:380 +#: ../../include/features.php:378 msgid "Flag Adult Photos" msgstr "" -#: ../../include/features.php:381 +#: ../../include/features.php:379 msgid "" "Provide photo edit option to hide inappropriate photos from default album " "view" msgstr "" -#: ../../include/features.php:390 ../../Zotlabs/Lib/Apps.php:366 +#: ../../include/features.php:388 ../../Zotlabs/Lib/Apps.php:367 #: ../../Zotlabs/Module/Contactedit.php:430 msgid "Profiles" msgstr "" -#: ../../include/features.php:394 +#: ../../include/features.php:392 msgid "Advanced Profiles" msgstr "" -#: ../../include/features.php:395 +#: ../../include/features.php:393 msgid "Additional profile sections and selections" msgstr "" -#: ../../include/features.php:402 +#: ../../include/features.php:400 msgid "Profile Import/Export" msgstr "" -#: ../../include/features.php:403 +#: ../../include/features.php:401 msgid "Save and load profile details across sites/channels" msgstr "" -#: ../../include/features.php:410 +#: ../../include/features.php:408 msgid "Multiple Profiles" msgstr "" -#: ../../include/features.php:411 +#: ../../include/features.php:409 msgid "Ability to create multiple profiles" msgstr "" @@ -1180,12 +1177,12 @@ msgid "Monthly" msgstr "" #: ../../include/selectors.php:64 ../../include/selectors.php:81 -#: ../../include/channel.php:1728 ../../addon/openid/Mod_Id.php:85 +#: ../../include/channel.php:1729 ../../addon/openid/Mod_Id.php:85 msgid "Male" msgstr "" #: ../../include/selectors.php:64 ../../include/selectors.php:81 -#: ../../include/channel.php:1726 ../../addon/openid/Mod_Id.php:87 +#: ../../include/channel.php:1727 ../../addon/openid/Mod_Id.php:87 msgid "Female" msgstr "" @@ -1221,11 +1218,11 @@ msgstr "" msgid "Hermaphrodite" msgstr "" -#: ../../include/selectors.php:64 ../../include/channel.php:1732 +#: ../../include/selectors.php:64 ../../include/channel.php:1733 msgid "Neuter" msgstr "" -#: ../../include/selectors.php:64 ../../include/channel.php:1734 +#: ../../include/selectors.php:64 ../../include/channel.php:1735 msgid "Non-specific" msgstr "" @@ -1321,8 +1318,8 @@ msgstr "" msgid "Sex Addict" msgstr "" -#: ../../include/selectors.php:138 ../../include/channel.php:464 -#: ../../include/channel.php:467 ../../Zotlabs/Widget/Affinity.php:38 +#: ../../include/selectors.php:138 ../../include/channel.php:465 +#: ../../include/channel.php:468 ../../Zotlabs/Widget/Affinity.php:38 #: ../../Zotlabs/Module/Contactedit.php:283 #: ../../Zotlabs/Module/Connedit.php:581 msgid "Friends" @@ -1423,14 +1420,12 @@ msgstr "" #: ../../include/activities.php:36 ../../include/activities.php:38 #: ../../addon/openid/MysqlProvider.php:58 #: ../../addon/openid/MysqlProvider.php:59 -#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:364 -#: ../../Zotlabs/Module/Profile_photo.php:226 +#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:365 +#: ../../Zotlabs/Module/Profile_photo.php:227 msgid "Profile Photo" msgstr "" -#: ../../include/activities.php:36 -#: ../../store/[data]/smarty3/compiled/2cbde885645602969010e846a38817a1297aafb9_0.file.cover_photo.tpl.php:127 -#: ../../Zotlabs/Module/Cover_photo.php:229 +#: ../../include/activities.php:36 ../../Zotlabs/Module/Cover_photo.php:230 msgid "Cover Photo" msgstr "" @@ -1448,80 +1443,80 @@ msgstr "" msgid "%1$s updated the %2$s. Changed %3$s." msgstr "" -#: ../../include/contact_widgets.php:11 +#: ../../include/contact_widgets.php:13 #, php-format msgid "%d invitation available" msgid_plural "%d invitations available" msgstr[0] "" msgstr[1] "" -#: ../../include/contact_widgets.php:16 ../../include/acl_selectors.php:145 -#: ../../Zotlabs/Module/Admin/Site.php:405 +#: ../../include/contact_widgets.php:18 ../../include/acl_selectors.php:145 +#: ../../Zotlabs/Module/Admin/Site.php:406 msgid "Advanced" msgstr "" -#: ../../include/contact_widgets.php:19 +#: ../../include/contact_widgets.php:21 msgid "Find Channels" msgstr "" -#: ../../include/contact_widgets.php:20 +#: ../../include/contact_widgets.php:22 msgid "Enter name or interest" msgstr "" -#: ../../include/contact_widgets.php:21 +#: ../../include/contact_widgets.php:23 msgid "Connect/Follow" msgstr "" -#: ../../include/contact_widgets.php:22 +#: ../../include/contact_widgets.php:24 msgid "Examples: Robert Morgenstein, Fishing" msgstr "" -#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:435 +#: ../../include/contact_widgets.php:25 ../../Zotlabs/Module/Directory.php:435 #: ../../Zotlabs/Module/Directory.php:440 #: ../../Zotlabs/Module/Connections.php:407 msgid "Find" msgstr "" -#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Suggest.php:77 +#: ../../include/contact_widgets.php:26 ../../Zotlabs/Module/Suggest.php:77 #: ../../Zotlabs/Module/Directory.php:439 msgid "Channel Suggestions" msgstr "" -#: ../../include/contact_widgets.php:26 +#: ../../include/contact_widgets.php:28 msgid "Random Profile" msgstr "" -#: ../../include/contact_widgets.php:27 +#: ../../include/contact_widgets.php:29 msgid "Invite Friends" msgstr "" -#: ../../include/contact_widgets.php:29 +#: ../../include/contact_widgets.php:31 msgid "Advanced example: name=fred and country=iceland" msgstr "" -#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:118 -#: ../../include/contact_widgets.php:152 +#: ../../include/contact_widgets.php:58 ../../include/contact_widgets.php:121 +#: ../../include/contact_widgets.php:155 #: ../../addon/cards/Widget/Cards_categories.php:83 #: ../../addon/articles/Widget/Articles_categories.php:83 #: ../../Zotlabs/Widget/Appcategories.php:52 ../../Zotlabs/Widget/Filer.php:36 msgid "Everything" msgstr "" -#: ../../include/contact_widgets.php:115 ../../include/contact_widgets.php:149 -#: ../../include/taxonomy.php:423 ../../include/taxonomy.php:505 -#: ../../include/taxonomy.php:525 ../../include/taxonomy.php:546 +#: ../../include/contact_widgets.php:118 ../../include/contact_widgets.php:152 +#: ../../include/taxonomy.php:425 ../../include/taxonomy.php:507 +#: ../../include/taxonomy.php:527 ../../include/taxonomy.php:548 #: ../../addon/cards/Widget/Cards_categories.php:80 #: ../../addon/articles/Widget/Articles_categories.php:80 -#: ../../Zotlabs/Storage/Browser.php:292 ../../Zotlabs/Storage/Browser.php:391 -#: ../../Zotlabs/Storage/Browser.php:406 ../../Zotlabs/Module/Cdav.php:1062 +#: ../../Zotlabs/Storage/Browser.php:293 ../../Zotlabs/Storage/Browser.php:392 +#: ../../Zotlabs/Storage/Browser.php:407 ../../Zotlabs/Module/Cdav.php:1062 msgid "Categories" msgstr "" -#: ../../include/contact_widgets.php:182 +#: ../../include/contact_widgets.php:185 msgid "Common Connections" msgstr "" -#: ../../include/contact_widgets.php:186 +#: ../../include/contact_widgets.php:189 #, php-format msgid "View all %d common connections" msgstr "" @@ -1535,10 +1530,10 @@ msgid "Summary: " msgstr "" #: ../../include/cdav.php:158 ../../include/cdav.php:159 -#: ../../include/cdav.php:167 ../../include/conversation.php:999 -#: ../../Zotlabs/Lib/Apps.php:1167 ../../Zotlabs/Lib/Apps.php:1251 -#: ../../Zotlabs/Lib/Activity.php:1675 ../../Zotlabs/Widget/Album.php:90 -#: ../../Zotlabs/Widget/Pinned.php:255 ../../Zotlabs/Widget/Portfolio.php:99 +#: ../../include/cdav.php:167 ../../include/conversation.php:1000 +#: ../../Zotlabs/Lib/Apps.php:1168 ../../Zotlabs/Lib/Apps.php:1252 +#: ../../Zotlabs/Lib/Activity.php:1684 ../../Zotlabs/Widget/Album.php:90 +#: ../../Zotlabs/Widget/Pinned.php:257 ../../Zotlabs/Widget/Portfolio.php:99 #: ../../Zotlabs/Module/Embedphotos.php:177 ../../Zotlabs/Module/Photos.php:788 #: ../../Zotlabs/Module/Photos.php:1246 msgid "Unknown" @@ -1576,8 +1571,8 @@ msgid "edit" msgstr "" #: ../../include/group.php:327 ../../include/acl_selectors.php:87 -#: ../../Zotlabs/Lib/Apps.php:367 ../../Zotlabs/Widget/Activity_filter.php:95 -#: ../../Zotlabs/Module/Group.php:143 +#: ../../Zotlabs/Lib/Apps.php:368 ../../Zotlabs/Widget/Activity_filter.php:95 +#: ../../Zotlabs/Module/Group.php:144 msgid "Privacy Groups" msgstr "" @@ -1597,52 +1592,52 @@ msgstr "" msgid "add" msgstr "" -#: ../../include/taxonomy.php:324 +#: ../../include/taxonomy.php:326 msgid "Trending" msgstr "" -#: ../../include/taxonomy.php:324 ../../include/taxonomy.php:463 -#: ../../include/taxonomy.php:484 ../../Zotlabs/Widget/Tagcloud.php:27 +#: ../../include/taxonomy.php:326 ../../include/taxonomy.php:465 +#: ../../include/taxonomy.php:486 ../../Zotlabs/Widget/Tagcloud.php:27 msgid "Tags" msgstr "" -#: ../../include/taxonomy.php:564 +#: ../../include/taxonomy.php:566 msgid "Keywords" msgstr "" -#: ../../include/taxonomy.php:585 +#: ../../include/taxonomy.php:587 msgid "have" msgstr "" -#: ../../include/taxonomy.php:585 +#: ../../include/taxonomy.php:587 msgid "has" msgstr "" -#: ../../include/taxonomy.php:586 +#: ../../include/taxonomy.php:588 msgid "want" msgstr "" -#: ../../include/taxonomy.php:586 +#: ../../include/taxonomy.php:588 msgid "wants" msgstr "" -#: ../../include/taxonomy.php:587 ../../Zotlabs/Lib/ThreadItem.php:333 +#: ../../include/taxonomy.php:589 ../../Zotlabs/Lib/ThreadItem.php:332 msgid "like" msgstr "" -#: ../../include/taxonomy.php:587 +#: ../../include/taxonomy.php:589 msgid "likes" msgstr "" -#: ../../include/taxonomy.php:588 ../../Zotlabs/Lib/ThreadItem.php:334 +#: ../../include/taxonomy.php:590 ../../Zotlabs/Lib/ThreadItem.php:333 msgid "dislike" msgstr "" -#: ../../include/taxonomy.php:588 +#: ../../include/taxonomy.php:590 msgid "dislikes" msgstr "" -#: ../../include/taxonomy.php:675 ../../include/conversation.php:1550 +#: ../../include/taxonomy.php:677 ../../include/conversation.php:1552 #: ../../Zotlabs/Module/Photos.php:1129 msgctxt "noun" msgid "Like" @@ -1650,130 +1645,108 @@ msgid_plural "Likes" msgstr[0] "" msgstr[1] "" -#: ../../include/photo/photo_driver.php:457 -#: ../../Zotlabs/Module/Profile_photo.php:167 -#: ../../Zotlabs/Module/Profile_photo.php:336 +#: ../../include/photo/photo_driver.php:458 +#: ../../Zotlabs/Module/Profile_photo.php:168 +#: ../../Zotlabs/Module/Profile_photo.php:337 msgid "Profile Photos" msgstr "" -#: ../../include/account.php:38 +#: ../../include/account.php:39 msgid "The provided email address is not valid" msgstr "" -#: ../../include/account.php:41 +#: ../../include/account.php:42 msgid "The provided email domain is not among those allowed on this site" msgstr "" -#: ../../include/account.php:48 +#: ../../include/account.php:49 msgid "The provided email address is already registered at this site" msgstr "" -#: ../../include/account.php:55 +#: ../../include/account.php:56 msgid "" "There is a pending registration for this address - click \"Register\" to " "continue verification" msgstr "" -#: ../../include/account.php:94 +#: ../../include/account.php:95 msgid "An invitation is required." msgstr "" -#: ../../include/account.php:103 +#: ../../include/account.php:104 msgid "Invitation could not be verified." msgstr "" -#: ../../include/account.php:191 +#: ../../include/account.php:192 msgid "Please enter the required information." msgstr "" -#: ../../include/account.php:258 ../../include/account.php:366 +#: ../../include/account.php:259 ../../include/account.php:367 msgid "Failed to store account information." msgstr "" -#: ../../include/account.php:435 ../../include/account.php:503 -#: ../../Zotlabs/Module/Register.php:328 +#: ../../include/account.php:436 ../../include/account.php:504 +#: ../../Zotlabs/Module/Register.php:329 #, php-format msgid "Registration confirmation for %s" msgstr "" -#: ../../include/account.php:578 +#: ../../include/account.php:579 #, php-format msgid "Registration request at %s" msgstr "" -#: ../../include/account.php:600 +#: ../../include/account.php:601 msgid "your registration password" msgstr "" -#: ../../include/account.php:606 ../../include/account.php:695 +#: ../../include/account.php:607 ../../include/account.php:696 #, php-format msgid "Registration details for %s" msgstr "" -#: ../../include/account.php:706 +#: ../../include/account.php:707 msgid "Account approved." msgstr "" -#: ../../include/account.php:762 +#: ../../include/account.php:763 #, php-format msgid "Registration revoked for %s" msgstr "" -#: ../../include/account.php:769 +#: ../../include/account.php:770 #, php-format msgid "Could not revoke registration for %s" msgstr "" -#: ../../include/account.php:1186 ../../include/account.php:1188 +#: ../../include/account.php:1187 ../../include/account.php:1189 msgid "Click here to upgrade." msgstr "" -#: ../../include/account.php:1194 +#: ../../include/account.php:1195 msgid "This action exceeds the limits set by your subscription plan." msgstr "" -#: ../../include/account.php:1199 +#: ../../include/account.php:1200 msgid "This action is not available under your subscription plan." msgstr "" -#: ../../include/account.php:1259 +#: ../../include/account.php:1260 msgid "open" msgstr "" -#: ../../include/account.php:1259 +#: ../../include/account.php:1260 msgid "closed" msgstr "" -#: ../../include/account.php:1266 +#: ../../include/account.php:1267 msgid "Registration is currently" msgstr "" -#: ../../include/account.php:1275 +#: ../../include/account.php:1276 msgid "please come back" msgstr "" -#: ../../include/help.php:82 -msgid "Help:" -msgstr "" - -#: ../../include/help.php:119 ../../include/help.php:127 -#: ../../include/nav.php:193 ../../include/nav.php:340 -#: ../../Zotlabs/Lib/Apps.php:353 ../../Zotlabs/Module/Layouts.php:184 -msgid "Help" -msgstr "" - -#: ../../include/help.php:131 -msgid "Not Found" -msgstr "" - -#: ../../include/help.php:134 ../../addon/cards/cards.php:104 -#: ../../addon/articles/articles.php:105 -#: ../../addon/wiki/Lib/NativeWikiPage.php:545 -#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Display.php:154 -#: ../../Zotlabs/Module/Block.php:77 ../../Zotlabs/Web/Router.php:186 -msgid "Page not found." -msgstr "" - #: ../../include/js_strings.php:5 msgid "Delete this item?" msgstr "" @@ -1811,7 +1784,7 @@ msgstr "" msgid "Password too short" msgstr "" -#: ../../include/js_strings.php:13 ../../Zotlabs/Module/Register.php:161 +#: ../../include/js_strings.php:13 ../../Zotlabs/Module/Register.php:162 msgid "Passwords do not match" msgstr "" @@ -1860,8 +1833,8 @@ msgid "Unsaved changes. Are you sure you wish to leave this page?" msgstr "" #: ../../include/js_strings.php:26 ../../Zotlabs/Module/Locs.php:121 -#: ../../Zotlabs/Module/Pubsites.php:54 ../../Zotlabs/Module/Profiles.php:475 -#: ../../Zotlabs/Module/Profiles.php:746 ../../Zotlabs/Module/Cdav.php:1006 +#: ../../Zotlabs/Module/Pubsites.php:55 ../../Zotlabs/Module/Profiles.php:476 +#: ../../Zotlabs/Module/Profiles.php:749 ../../Zotlabs/Module/Cdav.php:1006 msgid "Location" msgstr "" @@ -1920,7 +1893,7 @@ msgid "Pin to the top" msgstr "" #: ../../include/js_strings.php:40 ../../Zotlabs/Lib/ThreadItem.php:494 -#: ../../Zotlabs/Widget/Pinned.php:149 +#: ../../Zotlabs/Widget/Pinned.php:151 msgid "Unpin from the top" msgstr "" @@ -2007,19 +1980,19 @@ msgstr "" msgid "timeago.numbers" msgstr "" -#: ../../include/js_strings.php:75 ../../include/text.php:1502 +#: ../../include/js_strings.php:75 ../../include/text.php:1503 msgid "January" msgstr "" -#: ../../include/js_strings.php:76 ../../include/text.php:1502 +#: ../../include/js_strings.php:76 ../../include/text.php:1503 msgid "February" msgstr "" -#: ../../include/js_strings.php:77 ../../include/text.php:1502 +#: ../../include/js_strings.php:77 ../../include/text.php:1503 msgid "March" msgstr "" -#: ../../include/js_strings.php:78 ../../include/text.php:1502 +#: ../../include/js_strings.php:78 ../../include/text.php:1503 msgid "April" msgstr "" @@ -2028,31 +2001,31 @@ msgctxt "long" msgid "May" msgstr "" -#: ../../include/js_strings.php:80 ../../include/text.php:1502 +#: ../../include/js_strings.php:80 ../../include/text.php:1503 msgid "June" msgstr "" -#: ../../include/js_strings.php:81 ../../include/text.php:1502 +#: ../../include/js_strings.php:81 ../../include/text.php:1503 msgid "July" msgstr "" -#: ../../include/js_strings.php:82 ../../include/text.php:1502 +#: ../../include/js_strings.php:82 ../../include/text.php:1503 msgid "August" msgstr "" -#: ../../include/js_strings.php:83 ../../include/text.php:1502 +#: ../../include/js_strings.php:83 ../../include/text.php:1503 msgid "September" msgstr "" -#: ../../include/js_strings.php:84 ../../include/text.php:1502 +#: ../../include/js_strings.php:84 ../../include/text.php:1503 msgid "October" msgstr "" -#: ../../include/js_strings.php:85 ../../include/text.php:1502 +#: ../../include/js_strings.php:85 ../../include/text.php:1503 msgid "November" msgstr "" -#: ../../include/js_strings.php:86 ../../include/text.php:1502 +#: ../../include/js_strings.php:86 ../../include/text.php:1503 msgid "December" msgstr "" @@ -2105,31 +2078,31 @@ msgstr "" msgid "Dec" msgstr "" -#: ../../include/js_strings.php:99 ../../include/text.php:1498 +#: ../../include/js_strings.php:99 ../../include/text.php:1499 msgid "Sunday" msgstr "" -#: ../../include/js_strings.php:100 ../../include/text.php:1498 +#: ../../include/js_strings.php:100 ../../include/text.php:1499 msgid "Monday" msgstr "" -#: ../../include/js_strings.php:101 ../../include/text.php:1498 +#: ../../include/js_strings.php:101 ../../include/text.php:1499 msgid "Tuesday" msgstr "" -#: ../../include/js_strings.php:102 ../../include/text.php:1498 +#: ../../include/js_strings.php:102 ../../include/text.php:1499 msgid "Wednesday" msgstr "" -#: ../../include/js_strings.php:103 ../../include/text.php:1498 +#: ../../include/js_strings.php:103 ../../include/text.php:1499 msgid "Thursday" msgstr "" -#: ../../include/js_strings.php:104 ../../include/text.php:1498 +#: ../../include/js_strings.php:104 ../../include/text.php:1499 msgid "Friday" msgstr "" -#: ../../include/js_strings.php:105 ../../include/text.php:1498 +#: ../../include/js_strings.php:105 ../../include/text.php:1499 msgid "Saturday" msgstr "" @@ -2199,126 +2172,126 @@ msgstr "" #: ../../addon/cart/submodules/orderoptions.php:358 #: ../../addon/cart/submodules/orderoptions.php:434 #: ../../addon/cart/submodules/orderoptions.php:458 -#: ../../Zotlabs/Module/Register.php:498 ../../Zotlabs/Module/Appman.php:218 -#: ../../Zotlabs/Module/Appman.php:219 ../../Zotlabs/Module/Profiles.php:757 -#: ../../Zotlabs/Module/Profiles.php:761 +#: ../../Zotlabs/Module/Register.php:501 ../../Zotlabs/Module/Appman.php:218 +#: ../../Zotlabs/Module/Appman.php:219 ../../Zotlabs/Module/Profiles.php:760 +#: ../../Zotlabs/Module/Profiles.php:764 #: ../../Zotlabs/Module/Settings/Multifactor.php:84 msgid "Required" msgstr "" -#: ../../include/zid.php:410 +#: ../../include/zid.php:411 #, php-format msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "" -#: ../../include/conversation.php:147 ../../include/text.php:2352 +#: ../../include/conversation.php:148 ../../include/text.php:2358 #: ../../addon/redphotos/redphotohelper.php:71 #: ../../addon/diaspora/Receiver.php:1693 #: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:71 msgid "photo" msgstr "" -#: ../../include/conversation.php:155 ../../Zotlabs/Module/Like.php:183 +#: ../../include/conversation.php:156 ../../Zotlabs/Module/Like.php:183 msgid "channel" msgstr "" -#: ../../include/conversation.php:178 ../../include/markdown.php:208 -#: ../../include/text.php:2358 ../../include/bbcode.php:571 +#: ../../include/conversation.php:179 ../../include/markdown.php:208 +#: ../../include/text.php:2364 ../../include/bbcode.php:572 #: ../../Zotlabs/Module/Tagger.php:79 msgid "post" msgstr "" -#: ../../include/conversation.php:180 ../../include/text.php:2360 +#: ../../include/conversation.php:181 ../../include/text.php:2366 #: ../../Zotlabs/Module/Tagger.php:81 msgid "comment" msgstr "" -#: ../../include/conversation.php:194 ../../addon/diaspora/Receiver.php:1628 +#: ../../include/conversation.php:195 ../../addon/diaspora/Receiver.php:1628 #: ../../Zotlabs/Module/Like.php:483 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../include/conversation.php:196 +#: ../../include/conversation.php:197 #, php-format msgid "likes %1$s's %2$s" msgstr "" -#: ../../include/conversation.php:199 ../../Zotlabs/Module/Like.php:485 +#: ../../include/conversation.php:200 ../../Zotlabs/Module/Like.php:485 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "" -#: ../../include/conversation.php:200 +#: ../../include/conversation.php:201 #, php-format msgid "doesn't like %1$s's %2$s" msgstr "" -#: ../../include/conversation.php:203 +#: ../../include/conversation.php:204 #, php-format msgid "%1$s repeated %2$s's %3$s" msgstr "" -#: ../../include/conversation.php:204 +#: ../../include/conversation.php:205 #, php-format msgid "repeated %1$s's %2$s" msgstr "" -#: ../../include/conversation.php:332 ../../Zotlabs/Lib/ThreadItem.php:532 +#: ../../include/conversation.php:333 ../../Zotlabs/Lib/ThreadItem.php:532 msgid "This is an unsaved preview" msgstr "" -#: ../../include/conversation.php:464 ../../Zotlabs/Module/Photos.php:1110 +#: ../../include/conversation.php:465 ../../Zotlabs/Module/Photos.php:1110 msgctxt "title" msgid "Likes" msgstr "" -#: ../../include/conversation.php:465 ../../Zotlabs/Module/Photos.php:1110 +#: ../../include/conversation.php:466 ../../Zotlabs/Module/Photos.php:1110 msgctxt "title" msgid "Dislikes" msgstr "" -#: ../../include/conversation.php:466 ../../Zotlabs/Widget/Pinned.php:71 +#: ../../include/conversation.php:467 ../../Zotlabs/Widget/Pinned.php:73 #: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Attending" msgstr "" -#: ../../include/conversation.php:467 ../../Zotlabs/Widget/Pinned.php:72 +#: ../../include/conversation.php:468 ../../Zotlabs/Widget/Pinned.php:74 #: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Not attending" msgstr "" -#: ../../include/conversation.php:468 ../../Zotlabs/Widget/Pinned.php:73 +#: ../../include/conversation.php:469 ../../Zotlabs/Widget/Pinned.php:75 #: ../../Zotlabs/Module/Photos.php:1111 msgctxt "title" msgid "Might attend" msgstr "" -#: ../../include/conversation.php:470 +#: ../../include/conversation.php:471 msgctxt "title" msgid "Repeats" msgstr "" -#: ../../include/conversation.php:539 +#: ../../include/conversation.php:540 msgid "Select" msgstr "" -#: ../../include/conversation.php:540 ../../include/conversation.php:601 +#: ../../include/conversation.php:541 ../../include/conversation.php:602 #: ../../addon/cards/Mod_Card_edit.php:130 -#: ../../addon/articles/Mod_Article_edit.php:128 ../../Zotlabs/Lib/Apps.php:617 -#: ../../Zotlabs/Lib/ThreadItem.php:184 ../../Zotlabs/Lib/ThreadItem.php:540 -#: ../../Zotlabs/Storage/Browser.php:387 +#: ../../addon/articles/Mod_Article_edit.php:128 ../../Zotlabs/Lib/Apps.php:618 +#: ../../Zotlabs/Lib/ThreadItem.php:183 ../../Zotlabs/Lib/ThreadItem.php:540 +#: ../../Zotlabs/Storage/Browser.php:388 #: ../../Zotlabs/Module/Editwebpage.php:167 #: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Module/Oauth.php:172 #: ../../Zotlabs/Module/Thing.php:295 ../../Zotlabs/Module/Tokens.php:295 #: ../../Zotlabs/Module/Contactedit.php:651 #: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Connedit.php:749 #: ../../Zotlabs/Module/Admin/Accounts.php:320 -#: ../../Zotlabs/Module/Admin/Profs.php:176 -#: ../../Zotlabs/Module/Admin/Channels.php:149 -#: ../../Zotlabs/Module/Permcats.php:261 ../../Zotlabs/Module/Group.php:251 +#: ../../Zotlabs/Module/Admin/Profs.php:177 +#: ../../Zotlabs/Module/Admin/Channels.php:171 +#: ../../Zotlabs/Module/Permcats.php:261 ../../Zotlabs/Module/Group.php:252 #: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Photos.php:1173 #: ../../Zotlabs/Module/Editlayout.php:138 ../../Zotlabs/Module/Cdav.php:1047 #: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Oauth2.php:193 @@ -2326,317 +2299,321 @@ msgstr "" msgid "Delete" msgstr "" -#: ../../include/conversation.php:546 ../../Zotlabs/Lib/ThreadItem.php:286 +#: ../../include/conversation.php:547 ../../Zotlabs/Lib/ThreadItem.php:285 msgid "Toggle Star Status" msgstr "" -#: ../../include/conversation.php:552 +#: ../../include/conversation.php:553 msgid "Private Message" msgstr "" -#: ../../include/conversation.php:561 ../../Zotlabs/Lib/ThreadItem.php:296 -#: ../../Zotlabs/Widget/Pinned.php:82 +#: ../../include/conversation.php:562 ../../Zotlabs/Lib/ThreadItem.php:295 +#: ../../Zotlabs/Widget/Pinned.php:84 msgid "Message signature validated" msgstr "" -#: ../../include/conversation.php:562 ../../Zotlabs/Lib/ThreadItem.php:297 -#: ../../Zotlabs/Widget/Pinned.php:83 +#: ../../include/conversation.php:563 ../../Zotlabs/Lib/ThreadItem.php:296 +#: ../../Zotlabs/Widget/Pinned.php:85 msgid "Message signature incorrect" msgstr "" -#: ../../include/conversation.php:600 ../../Zotlabs/Lib/ThreadItem.php:539 +#: ../../include/conversation.php:601 ../../Zotlabs/Lib/ThreadItem.php:539 #: ../../Zotlabs/Module/Admin/Accounts.php:318 #: ../../Zotlabs/Module/Connections.php:358 #: ../../Zotlabs/Module/Connections.php:409 msgid "Approve" msgstr "" -#: ../../include/conversation.php:606 +#: ../../include/conversation.php:607 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: ../../include/conversation.php:628 +#: ../../include/conversation.php:629 msgid "Categories:" msgstr "" -#: ../../include/conversation.php:629 +#: ../../include/conversation.php:630 msgid "Filed under:" msgstr "" -#: ../../include/conversation.php:635 ../../Zotlabs/Lib/ThreadItem.php:451 -#: ../../Zotlabs/Widget/Pinned.php:126 +#: ../../include/conversation.php:636 ../../Zotlabs/Lib/ThreadItem.php:451 +#: ../../Zotlabs/Widget/Pinned.php:128 #, php-format msgid "from %s" msgstr "" -#: ../../include/conversation.php:638 ../../Zotlabs/Lib/ThreadItem.php:454 -#: ../../Zotlabs/Widget/Pinned.php:129 +#: ../../include/conversation.php:639 ../../Zotlabs/Lib/ThreadItem.php:454 +#: ../../Zotlabs/Widget/Pinned.php:131 #, php-format msgid "last edited: %s" msgstr "" -#: ../../include/conversation.php:639 ../../Zotlabs/Lib/ThreadItem.php:455 -#: ../../Zotlabs/Widget/Pinned.php:130 +#: ../../include/conversation.php:640 ../../Zotlabs/Lib/ThreadItem.php:455 +#: ../../Zotlabs/Widget/Pinned.php:132 #, php-format msgid "Expires: %s" msgstr "" -#: ../../include/conversation.php:654 ../../addon/cards/cards.php:82 +#: ../../include/conversation.php:655 ../../addon/cards/cards.php:82 #: ../../addon/articles/articles.php:83 msgid "View in context" msgstr "" -#: ../../include/conversation.php:656 ../../Zotlabs/Lib/ThreadItem.php:533 +#: ../../include/conversation.php:657 ../../Zotlabs/Lib/ThreadItem.php:533 #: ../../Zotlabs/Module/Photos.php:1077 msgid "Please wait" msgstr "" -#: ../../include/conversation.php:757 +#: ../../include/conversation.php:758 msgid "remove" msgstr "" -#: ../../include/conversation.php:761 +#: ../../include/conversation.php:762 msgid "Loading..." msgstr "" -#: ../../include/conversation.php:762 ../../Zotlabs/Lib/ThreadItem.php:313 +#: ../../include/conversation.php:763 ../../Zotlabs/Lib/ThreadItem.php:312 msgid "Conversation Features" msgstr "" -#: ../../include/conversation.php:763 +#: ../../include/conversation.php:764 msgid "Delete Selected Items" msgstr "" -#: ../../include/conversation.php:799 +#: ../../include/conversation.php:800 msgid "View Source" msgstr "" -#: ../../include/conversation.php:809 +#: ../../include/conversation.php:810 msgid "Follow Thread" msgstr "" -#: ../../include/conversation.php:818 +#: ../../include/conversation.php:819 msgid "Unfollow Thread" msgstr "" -#: ../../include/conversation.php:895 ../../include/nav.php:126 -#: ../../addon/openclipatar/openclipatar.php:58 ../../Zotlabs/Lib/Apps.php:349 +#: ../../include/conversation.php:896 ../../include/nav.php:127 +#: ../../addon/openclipatar/openclipatar.php:58 ../../Zotlabs/Lib/Apps.php:350 #: ../../Zotlabs/Module/Connedit.php:480 msgid "View Profile" msgstr "" -#: ../../include/conversation.php:907 ../../Zotlabs/Module/Connedit.php:501 +#: ../../include/conversation.php:908 ../../Zotlabs/Module/Connedit.php:501 msgid "Recent Activity" msgstr "" -#: ../../include/conversation.php:919 ../../include/connections.php:141 -#: ../../include/channel.php:1624 ../../Zotlabs/Widget/Suggestions.php:51 +#: ../../include/conversation.php:920 ../../include/connections.php:150 +#: ../../include/channel.php:1625 ../../Zotlabs/Widget/Suggestions.php:51 #: ../../Zotlabs/Widget/Follow.php:37 ../../Zotlabs/Module/Suggest.php:69 #: ../../Zotlabs/Module/Directory.php:371 #: ../../Zotlabs/Module/Connections.php:365 msgid "Connect" msgstr "" -#: ../../include/conversation.php:931 +#: ../../include/conversation.php:932 msgid "Edit Connection" msgstr "" -#: ../../include/conversation.php:1001 +#: ../../include/conversation.php:1002 msgid "Approve this item" msgstr "" -#: ../../include/conversation.php:1001 +#: ../../include/conversation.php:1002 msgid "Delete this item" msgstr "" -#: ../../include/conversation.php:1055 +#: ../../include/conversation.php:1056 #, php-format msgid "%s likes this." msgstr "" -#: ../../include/conversation.php:1055 +#: ../../include/conversation.php:1056 #, php-format msgid "%s doesn't like this." msgstr "" -#: ../../include/conversation.php:1059 +#: ../../include/conversation.php:1060 #, php-format msgid "%2$d people like this." msgid_plural "%2$d people like this." msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1061 +#: ../../include/conversation.php:1062 #, php-format msgid "%2$d people don't like this." msgid_plural "%2$d people don't like this." msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1067 +#: ../../include/conversation.php:1068 msgid "and" msgstr "" -#: ../../include/conversation.php:1070 +#: ../../include/conversation.php:1071 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1071 +#: ../../include/conversation.php:1072 #, php-format msgid "%s like this." msgstr "" -#: ../../include/conversation.php:1071 +#: ../../include/conversation.php:1072 #, php-format msgid "%s don't like this." msgstr "" -#: ../../include/conversation.php:1122 ../../addon/hsse/hsse.php:82 +#: ../../include/conversation.php:1123 ../../addon/hsse/hsse.php:82 msgid "Set your location" msgstr "" -#: ../../include/conversation.php:1123 ../../addon/hsse/hsse.php:83 +#: ../../include/conversation.php:1124 ../../addon/hsse/hsse.php:83 msgid "Clear browser location" msgstr "" -#: ../../include/conversation.php:1135 ../../addon/cards/Mod_Card_edit.php:101 +#: ../../include/conversation.php:1136 ../../addon/cards/Mod_Card_edit.php:101 #: ../../addon/articles/Mod_Article_edit.php:99 ../../addon/hsse/hsse.php:95 #: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:219 #: ../../Zotlabs/Module/Editblock.php:116 msgid "Insert web link" msgstr "" -#: ../../include/conversation.php:1139 ../../addon/hsse/hsse.php:99 +#: ../../include/conversation.php:1140 ../../addon/hsse/hsse.php:99 msgid "Embed (existing) photo from your photo albums" msgstr "" -#: ../../include/conversation.php:1172 ../../addon/hsse/hsse.php:134 +#: ../../include/conversation.php:1173 ../../addon/hsse/hsse.php:134 #: ../../Zotlabs/Module/Chat.php:217 msgid "Please enter a link URL:" msgstr "" -#: ../../include/conversation.php:1173 ../../addon/hsse/hsse.php:135 +#: ../../include/conversation.php:1174 ../../addon/hsse/hsse.php:135 msgid "Tag term:" msgstr "" -#: ../../include/conversation.php:1174 ../../addon/hsse/hsse.php:136 +#: ../../include/conversation.php:1175 ../../addon/hsse/hsse.php:136 msgid "Where are you right now?" msgstr "" -#: ../../include/conversation.php:1177 ../../addon/wiki/Mod_Wiki.php:400 -#: ../../addon/hsse/hsse.php:139 ../../Zotlabs/Module/Cover_photo.php:387 -#: ../../Zotlabs/Module/Profile_photo.php:554 +#: ../../include/conversation.php:1178 ../../addon/wiki/Mod_Wiki.php:400 +#: ../../addon/hsse/hsse.php:139 ../../Zotlabs/Module/Cover_photo.php:388 +#: ../../Zotlabs/Module/Profile_photo.php:555 msgid "Choose images to embed" msgstr "" -#: ../../include/conversation.php:1178 ../../addon/wiki/Mod_Wiki.php:401 -#: ../../addon/hsse/hsse.php:140 ../../Zotlabs/Module/Cover_photo.php:388 -#: ../../Zotlabs/Module/Profile_photo.php:555 +#: ../../include/conversation.php:1179 ../../addon/wiki/Mod_Wiki.php:401 +#: ../../addon/hsse/hsse.php:140 ../../Zotlabs/Module/Cover_photo.php:389 +#: ../../Zotlabs/Module/Profile_photo.php:556 msgid "Choose an album" msgstr "" -#: ../../include/conversation.php:1179 ../../addon/hsse/hsse.php:141 +#: ../../include/conversation.php:1180 ../../addon/hsse/hsse.php:141 msgid "Choose a different album..." msgstr "" -#: ../../include/conversation.php:1180 ../../addon/wiki/Mod_Wiki.php:403 -#: ../../addon/hsse/hsse.php:142 ../../Zotlabs/Module/Cover_photo.php:390 -#: ../../Zotlabs/Module/Profile_photo.php:557 +#: ../../include/conversation.php:1181 ../../addon/wiki/Mod_Wiki.php:403 +#: ../../addon/hsse/hsse.php:142 ../../Zotlabs/Module/Cover_photo.php:391 +#: ../../Zotlabs/Module/Profile_photo.php:558 msgid "Error getting album list" msgstr "" -#: ../../include/conversation.php:1181 ../../addon/wiki/Mod_Wiki.php:404 -#: ../../addon/hsse/hsse.php:143 ../../Zotlabs/Module/Cover_photo.php:391 -#: ../../Zotlabs/Module/Profile_photo.php:558 +#: ../../include/conversation.php:1182 ../../addon/wiki/Mod_Wiki.php:404 +#: ../../addon/hsse/hsse.php:143 ../../Zotlabs/Module/Cover_photo.php:392 +#: ../../Zotlabs/Module/Profile_photo.php:559 msgid "Error getting photo link" msgstr "" -#: ../../include/conversation.php:1182 ../../addon/wiki/Mod_Wiki.php:405 -#: ../../addon/hsse/hsse.php:144 ../../Zotlabs/Module/Cover_photo.php:392 -#: ../../Zotlabs/Module/Profile_photo.php:559 +#: ../../include/conversation.php:1183 ../../addon/wiki/Mod_Wiki.php:405 +#: ../../addon/hsse/hsse.php:144 ../../Zotlabs/Module/Cover_photo.php:393 +#: ../../Zotlabs/Module/Profile_photo.php:560 msgid "Error getting album" msgstr "" -#: ../../include/conversation.php:1183 ../../addon/hsse/hsse.php:145 +#: ../../include/conversation.php:1184 ../../addon/hsse/hsse.php:145 msgid "Comments enabled" msgstr "" -#: ../../include/conversation.php:1184 ../../addon/hsse/hsse.php:146 +#: ../../include/conversation.php:1185 ../../addon/hsse/hsse.php:146 msgid "Comments disabled" msgstr "" -#: ../../include/conversation.php:1201 ../../addon/hsse/hsse.php:153 +#: ../../include/conversation.php:1186 +msgid "Confirm delete" +msgstr "" + +#: ../../include/conversation.php:1203 ../../addon/hsse/hsse.php:153 #: ../../Zotlabs/Lib/ThreadItem.php:872 ../../Zotlabs/Module/Webpages.php:257 #: ../../Zotlabs/Module/Photos.php:1096 msgid "Preview" msgstr "" -#: ../../include/conversation.php:1234 ../../addon/wiki/Mod_Wiki.php:304 -#: ../../addon/hsse/hsse.php:186 ../../Zotlabs/Lib/ThreadItem.php:341 +#: ../../include/conversation.php:1236 ../../addon/wiki/Mod_Wiki.php:304 +#: ../../addon/hsse/hsse.php:186 ../../Zotlabs/Lib/ThreadItem.php:340 #: ../../Zotlabs/Widget/Cdav.php:142 ../../Zotlabs/Module/Webpages.php:251 #: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Blocks.php:159 #: ../../Zotlabs/Module/Photos.php:1076 msgid "Share" msgstr "" -#: ../../include/conversation.php:1243 ../../addon/hsse/hsse.php:195 +#: ../../include/conversation.php:1245 ../../addon/hsse/hsse.php:195 msgid "Page link name" msgstr "" -#: ../../include/conversation.php:1246 ../../addon/hsse/hsse.php:198 +#: ../../include/conversation.php:1248 ../../addon/hsse/hsse.php:198 msgid "Post as" msgstr "" -#: ../../include/conversation.php:1248 ../../addon/hsse/hsse.php:200 +#: ../../include/conversation.php:1250 ../../addon/hsse/hsse.php:200 #: ../../Zotlabs/Lib/ThreadItem.php:863 msgid "Bold" msgstr "" -#: ../../include/conversation.php:1249 ../../addon/hsse/hsse.php:201 +#: ../../include/conversation.php:1251 ../../addon/hsse/hsse.php:201 #: ../../Zotlabs/Lib/ThreadItem.php:864 msgid "Italic" msgstr "" -#: ../../include/conversation.php:1250 ../../addon/hsse/hsse.php:202 +#: ../../include/conversation.php:1252 ../../addon/hsse/hsse.php:202 #: ../../Zotlabs/Lib/ThreadItem.php:865 msgid "Underline" msgstr "" -#: ../../include/conversation.php:1251 ../../addon/hsse/hsse.php:203 +#: ../../include/conversation.php:1253 ../../addon/hsse/hsse.php:203 #: ../../Zotlabs/Lib/ThreadItem.php:866 msgid "Quote" msgstr "" -#: ../../include/conversation.php:1252 ../../addon/hsse/hsse.php:204 +#: ../../include/conversation.php:1254 ../../addon/hsse/hsse.php:204 #: ../../Zotlabs/Lib/ThreadItem.php:867 msgid "Code" msgstr "" -#: ../../include/conversation.php:1253 ../../addon/hsse/hsse.php:205 +#: ../../include/conversation.php:1255 ../../addon/hsse/hsse.php:205 #: ../../Zotlabs/Lib/ThreadItem.php:869 msgid "Attach/Upload file" msgstr "" -#: ../../include/conversation.php:1256 ../../addon/wiki/Mod_Wiki.php:397 +#: ../../include/conversation.php:1258 ../../addon/wiki/Mod_Wiki.php:397 #: ../../addon/hsse/hsse.php:208 msgid "Embed an image from your albums" msgstr "" -#: ../../include/conversation.php:1257 ../../include/conversation.php:1312 +#: ../../include/conversation.php:1259 ../../include/conversation.php:1314 #: ../../addon/cards/Mod_Card_edit.php:132 #: ../../addon/articles/Mod_Article_edit.php:130 #: ../../addon/wiki/Mod_Wiki.php:365 ../../addon/wiki/Mod_Wiki.php:398 #: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 -#: ../../Zotlabs/Storage/Browser.php:386 -#: ../../Zotlabs/Module/Cover_photo.php:385 +#: ../../Zotlabs/Storage/Browser.php:387 +#: ../../Zotlabs/Module/Cover_photo.php:386 #: ../../Zotlabs/Module/Editwebpage.php:169 ../../Zotlabs/Module/Oauth.php:110 #: ../../Zotlabs/Module/Oauth.php:136 ../../Zotlabs/Module/Connedit.php:750 -#: ../../Zotlabs/Module/Profile_photo.php:552 ../../Zotlabs/Module/Tagrm.php:15 -#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Admin/Addons.php:430 +#: ../../Zotlabs/Module/Profile_photo.php:553 ../../Zotlabs/Module/Tagrm.php:15 +#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Admin/Addons.php:431 #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 #: ../../Zotlabs/Module/Editlayout.php:140 #: ../../Zotlabs/Module/Editpost.php:114 ../../Zotlabs/Module/Cdav.php:1049 @@ -2646,344 +2623,349 @@ msgstr "" msgid "Cancel" msgstr "" -#: ../../include/conversation.php:1258 ../../include/conversation.php:1311 +#: ../../include/conversation.php:1260 ../../include/conversation.php:1313 #: ../../addon/wiki/Mod_Wiki.php:399 ../../addon/hsse/hsse.php:210 -#: ../../addon/hsse/hsse.php:257 ../../Zotlabs/Module/Cover_photo.php:386 -#: ../../Zotlabs/Module/Profile_photo.php:553 +#: ../../addon/hsse/hsse.php:257 ../../Zotlabs/Module/Cover_photo.php:387 +#: ../../Zotlabs/Module/Profile_photo.php:554 msgid "OK" msgstr "" -#: ../../include/conversation.php:1260 ../../addon/hsse/hsse.php:212 +#: ../../include/conversation.php:1262 ../../addon/hsse/hsse.php:212 msgid "Toggle voting" msgstr "" -#: ../../include/conversation.php:1261 +#: ../../include/conversation.php:1263 msgid "Toggle poll" msgstr "" -#: ../../include/conversation.php:1262 +#: ../../include/conversation.php:1264 msgid "Option" msgstr "" -#: ../../include/conversation.php:1263 +#: ../../include/conversation.php:1265 msgid "Add option" msgstr "" -#: ../../include/conversation.php:1264 +#: ../../include/conversation.php:1266 msgid "Minutes" msgstr "" -#: ../../include/conversation.php:1264 +#: ../../include/conversation.php:1266 msgid "Hours" msgstr "" -#: ../../include/conversation.php:1264 +#: ../../include/conversation.php:1266 msgid "Days" msgstr "" -#: ../../include/conversation.php:1265 +#: ../../include/conversation.php:1267 msgid "Allow multiple answers" msgstr "" -#: ../../include/conversation.php:1267 ../../addon/hsse/hsse.php:215 +#: ../../include/conversation.php:1269 ../../addon/hsse/hsse.php:215 msgid "Disable comments" msgstr "" -#: ../../include/conversation.php:1268 ../../addon/hsse/hsse.php:216 +#: ../../include/conversation.php:1270 ../../addon/hsse/hsse.php:216 msgid "Toggle comments" msgstr "" -#: ../../include/conversation.php:1274 ../../addon/cards/Mod_Card_edit.php:118 +#: ../../include/conversation.php:1276 ../../addon/cards/Mod_Card_edit.php:118 #: ../../addon/articles/Mod_Article_edit.php:116 ../../addon/hsse/hsse.php:221 #: ../../Zotlabs/Module/Photos.php:667 ../../Zotlabs/Module/Photos.php:1042 #: ../../Zotlabs/Module/Editblock.php:129 msgid "Title (optional)" msgstr "" -#: ../../include/conversation.php:1275 +#: ../../include/conversation.php:1277 msgid "Summary (optional)" msgstr "" -#: ../../include/conversation.php:1278 ../../addon/hsse/hsse.php:224 +#: ../../include/conversation.php:1280 ../../addon/hsse/hsse.php:224 msgid "Categories (optional, comma-separated list)" msgstr "" -#: ../../include/conversation.php:1279 ../../addon/hsse/hsse.php:225 +#: ../../include/conversation.php:1281 ../../addon/hsse/hsse.php:225 msgid "Permission settings" msgstr "" -#: ../../include/conversation.php:1301 ../../addon/hsse/hsse.php:247 +#: ../../include/conversation.php:1303 ../../addon/hsse/hsse.php:247 msgid "Other networks and post services" msgstr "" -#: ../../include/conversation.php:1304 ../../addon/hsse/hsse.php:250 +#: ../../include/conversation.php:1306 ../../addon/hsse/hsse.php:250 msgid "Set expiration date" msgstr "" -#: ../../include/conversation.php:1307 ../../addon/hsse/hsse.php:253 +#: ../../include/conversation.php:1309 ../../addon/hsse/hsse.php:253 msgid "Set publish date" msgstr "" -#: ../../include/conversation.php:1309 ../../addon/hsse/hsse.php:255 +#: ../../include/conversation.php:1311 ../../addon/hsse/hsse.php:255 #: ../../Zotlabs/Lib/ThreadItem.php:875 ../../Zotlabs/Module/Chat.php:218 msgid "Encrypt text" msgstr "" -#: ../../include/conversation.php:1553 +#: ../../include/conversation.php:1555 msgctxt "noun" msgid "Repeat" msgid_plural "Repeats" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1556 ../../Zotlabs/Module/Photos.php:1134 +#: ../../include/conversation.php:1558 ../../Zotlabs/Module/Photos.php:1134 msgctxt "noun" msgid "Dislike" msgid_plural "Dislikes" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1559 +#: ../../include/conversation.php:1561 msgctxt "noun" msgid "Attending" msgid_plural "Attending" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1562 +#: ../../include/conversation.php:1564 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1565 +#: ../../include/conversation.php:1567 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr[0] "" msgstr[1] "" -#: ../../include/nav.php:108 +#: ../../include/nav.php:109 msgid "Remote authentication" msgstr "" -#: ../../include/nav.php:108 +#: ../../include/nav.php:109 msgid "Click to authenticate to your home hub" msgstr "" -#: ../../include/nav.php:114 ../../Zotlabs/Widget/Channel_activities.php:239 +#: ../../include/nav.php:115 ../../Zotlabs/Widget/Channel_activities.php:239 #: ../../Zotlabs/Widget/Admin.php:29 -#: ../../Zotlabs/Module/Admin/Channels.php:146 -#: ../../Zotlabs/Module/Manage.php:162 ../../Zotlabs/Module/Admin.php:116 +#: ../../Zotlabs/Module/Admin/Channels.php:168 +#: ../../Zotlabs/Module/Manage.php:162 ../../Zotlabs/Module/Admin.php:118 msgid "Channels" msgstr "" -#: ../../include/nav.php:114 +#: ../../include/nav.php:115 msgid "Manage your channels" msgstr "" -#: ../../include/nav.php:117 ../../Zotlabs/Lib/Apps.php:344 -#: ../../Zotlabs/Widget/Newmember.php:58 +#: ../../include/nav.php:118 ../../Zotlabs/Lib/Apps.php:345 +#: ../../Zotlabs/Widget/Newmember.php:60 #: ../../Zotlabs/Widget/Settings_menu.php:71 -#: ../../Zotlabs/Module/Admin/Themes.php:140 -#: ../../Zotlabs/Module/Admin/Addons.php:348 +#: ../../Zotlabs/Module/Admin/Themes.php:141 +#: ../../Zotlabs/Module/Admin/Addons.php:349 msgid "Settings" msgstr "" -#: ../../include/nav.php:117 +#: ../../include/nav.php:118 msgid "Account/Channel Settings" msgstr "" -#: ../../include/nav.php:123 ../../include/nav.php:153 -#: ../../include/nav.php:174 ../../boot.php:1745 +#: ../../include/nav.php:124 ../../include/nav.php:154 +#: ../../include/nav.php:175 ../../boot.php:1759 msgid "Logout" msgstr "" -#: ../../include/nav.php:123 ../../include/nav.php:153 +#: ../../include/nav.php:124 ../../include/nav.php:154 msgid "End this session" msgstr "" -#: ../../include/nav.php:126 +#: ../../include/nav.php:127 msgid "Your profile page" msgstr "" -#: ../../include/nav.php:129 ../../include/channel.php:1538 -#: ../../Zotlabs/Module/Profiles.php:847 +#: ../../include/nav.php:130 ../../include/channel.php:1539 +#: ../../Zotlabs/Module/Profiles.php:851 msgid "Edit Profiles" msgstr "" -#: ../../include/nav.php:129 +#: ../../include/nav.php:130 msgid "Manage/Edit profiles" msgstr "" -#: ../../include/nav.php:131 ../../include/channel.php:1542 +#: ../../include/nav.php:132 ../../include/channel.php:1543 #: ../../addon/openclipatar/openclipatar.php:59 msgid "Edit Profile" msgstr "" -#: ../../include/nav.php:131 ../../Zotlabs/Widget/Newmember.php:40 +#: ../../include/nav.php:132 ../../Zotlabs/Widget/Newmember.php:42 msgid "Edit your profile" msgstr "" -#: ../../include/nav.php:138 ../../include/nav.php:142 ../../boot.php:1746 -#: ../../Zotlabs/Lib/Apps.php:341 +#: ../../include/nav.php:139 ../../include/nav.php:143 ../../boot.php:1760 +#: ../../Zotlabs/Lib/Apps.php:342 msgid "Login" msgstr "" -#: ../../include/nav.php:138 ../../include/nav.php:142 +#: ../../include/nav.php:139 ../../include/nav.php:143 msgid "Sign in" msgstr "" -#: ../../include/nav.php:172 +#: ../../include/nav.php:173 msgid "Take me home" msgstr "" -#: ../../include/nav.php:174 +#: ../../include/nav.php:175 msgid "Log me out of this site" msgstr "" -#: ../../include/nav.php:179 ../../boot.php:1723 -#: ../../Zotlabs/Module/Register.php:542 +#: ../../include/nav.php:180 ../../boot.php:1737 +#: ../../Zotlabs/Module/Register.php:543 msgid "Register" msgstr "" -#: ../../include/nav.php:179 +#: ../../include/nav.php:180 msgid "Create an account" msgstr "" -#: ../../include/nav.php:193 +#: ../../include/nav.php:194 ../../include/nav.php:341 +#: ../../Zotlabs/Lib/Apps.php:354 ../../Zotlabs/Module/Layouts.php:184 +msgid "Help" +msgstr "" + +#: ../../include/nav.php:194 msgid "Help and documentation" msgstr "" -#: ../../include/nav.php:207 ../../include/acl_selectors.php:149 -#: ../../include/text.php:1189 ../../include/text.php:1201 -#: ../../Zotlabs/Lib/Apps.php:356 ../../Zotlabs/Widget/Sitesearch.php:37 +#: ../../include/nav.php:208 ../../include/acl_selectors.php:149 +#: ../../include/text.php:1190 ../../include/text.php:1202 +#: ../../Zotlabs/Lib/Apps.php:357 ../../Zotlabs/Widget/Sitesearch.php:37 #: ../../Zotlabs/Widget/Activity_filter.php:210 -#: ../../Zotlabs/Module/Search.php:46 ../../Zotlabs/Module/Connections.php:403 +#: ../../Zotlabs/Module/Search.php:47 ../../Zotlabs/Module/Connections.php:403 msgid "Search" msgstr "" -#: ../../include/nav.php:207 +#: ../../include/nav.php:208 msgid "Search site @name, !forum, #tag, ?docs, content" msgstr "" -#: ../../include/nav.php:213 ../../Zotlabs/Widget/Admin.php:61 +#: ../../include/nav.php:214 ../../Zotlabs/Widget/Admin.php:61 msgid "Admin" msgstr "" -#: ../../include/nav.php:213 +#: ../../include/nav.php:214 msgid "Site Setup and Configuration" msgstr "" -#: ../../include/nav.php:344 ../../Zotlabs/Widget/Notifications.php:175 +#: ../../include/nav.php:345 ../../Zotlabs/Widget/Notifications.php:175 #: ../../Zotlabs/Widget/Messages.php:36 ../../Zotlabs/Module/Defperms.php:254 -#: ../../Zotlabs/Module/New_channel.php:157 -#: ../../Zotlabs/Module/New_channel.php:164 +#: ../../Zotlabs/Module/New_channel.php:158 +#: ../../Zotlabs/Module/New_channel.php:165 msgid "Loading" msgstr "" -#: ../../include/nav.php:349 +#: ../../include/nav.php:350 msgid "@name, #tag, ?doc, content" msgstr "" -#: ../../include/nav.php:350 +#: ../../include/nav.php:351 msgid "Please wait..." msgstr "" -#: ../../include/nav.php:356 ../../Zotlabs/Lib/Apps.php:328 +#: ../../include/nav.php:357 ../../Zotlabs/Lib/Apps.php:329 msgid "Apps" msgstr "" -#: ../../include/nav.php:357 +#: ../../include/nav.php:358 msgid "Channel Apps" msgstr "" -#: ../../include/nav.php:358 +#: ../../include/nav.php:359 msgid "System Apps" msgstr "" -#: ../../include/nav.php:359 +#: ../../include/nav.php:360 msgid "Pinned Apps" msgstr "" -#: ../../include/nav.php:360 +#: ../../include/nav.php:361 msgid "Featured Apps" msgstr "" -#: ../../include/nav.php:446 ../../Zotlabs/Lib/Apps.php:348 -#: ../../Zotlabs/Module/Admin/Channels.php:154 +#: ../../include/nav.php:447 ../../Zotlabs/Lib/Apps.php:349 +#: ../../Zotlabs/Module/Admin/Channels.php:176 msgid "Channel" msgstr "" -#: ../../include/nav.php:449 +#: ../../include/nav.php:450 msgid "Status Messages and Posts" msgstr "" -#: ../../include/nav.php:459 ../../Zotlabs/Module/Help.php:85 +#: ../../include/nav.php:460 ../../Zotlabs/Module/Help.php:242 msgid "About" msgstr "" -#: ../../include/nav.php:462 +#: ../../include/nav.php:463 msgid "Profile Details" msgstr "" -#: ../../include/nav.php:472 ../../include/photos.php:721 +#: ../../include/nav.php:473 ../../include/photos.php:722 msgid "Photo Albums" msgstr "" -#: ../../include/nav.php:477 ../../Zotlabs/Lib/Apps.php:345 +#: ../../include/nav.php:478 ../../Zotlabs/Lib/Apps.php:346 #: ../../Zotlabs/Widget/Notifications.php:108 #: ../../Zotlabs/Widget/Channel_activities.php:125 -#: ../../Zotlabs/Storage/Browser.php:350 ../../Zotlabs/Module/Fbrowser.php:85 +#: ../../Zotlabs/Storage/Browser.php:351 ../../Zotlabs/Module/Fbrowser.php:85 msgid "Files" msgstr "" -#: ../../include/nav.php:480 +#: ../../include/nav.php:481 msgid "Files and Storage" msgstr "" -#: ../../include/nav.php:502 ../../include/nav.php:505 -#: ../../Zotlabs/Lib/Apps.php:335 ../../Zotlabs/Widget/Chatroom_list.php:22 +#: ../../include/nav.php:503 ../../include/nav.php:506 +#: ../../Zotlabs/Lib/Apps.php:336 ../../Zotlabs/Widget/Chatroom_list.php:22 msgid "Chatrooms" msgstr "" -#: ../../include/nav.php:515 ../../Zotlabs/Lib/Apps.php:334 +#: ../../include/nav.php:516 ../../Zotlabs/Lib/Apps.php:335 #: ../../Zotlabs/Module/Bookmarks.php:90 msgid "Bookmarks" msgstr "" -#: ../../include/nav.php:518 +#: ../../include/nav.php:519 msgid "Saved Bookmarks" msgstr "" -#: ../../include/nav.php:526 ../../Zotlabs/Lib/Apps.php:346 +#: ../../include/nav.php:527 ../../Zotlabs/Lib/Apps.php:347 #: ../../Zotlabs/Widget/Channel_activities.php:168 #: ../../Zotlabs/Module/Webpages.php:247 msgid "Webpages" msgstr "" -#: ../../include/nav.php:529 +#: ../../include/nav.php:530 msgid "View Webpages" msgstr "" -#: ../../include/nav.php:537 ../../addon/wiki/Mod_Wiki.php:209 +#: ../../include/nav.php:538 ../../addon/wiki/Mod_Wiki.php:209 #: ../../addon/wiki/Widget/Wiki_list.php:23 ../../addon/wiki/wiki.php:72 msgid "Wikis" msgstr "" -#: ../../include/nav.php:540 ../../Zotlabs/Lib/Apps.php:347 +#: ../../include/nav.php:541 ../../Zotlabs/Lib/Apps.php:348 msgid "Wiki" msgstr "" -#: ../../include/security.php:633 +#: ../../include/security.php:635 msgid "" "The form security token was not correct. This probably happened because the " "form has been opened for too long (>3 hours) before submitting it." msgstr "" -#: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:56 -#: ../../Zotlabs/Module/Profiles.php:748 +#: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:58 +#: ../../Zotlabs/Module/Profiles.php:751 msgid "Miscellaneous" msgstr "" @@ -2999,7 +2981,7 @@ msgstr "" msgid "YYYY-MM-DD or MM-DD" msgstr "" -#: ../../include/datetime.php:238 ../../boot.php:2752 +#: ../../include/datetime.php:238 ../../boot.php:2760 msgid "never" msgstr "" @@ -3072,88 +3054,88 @@ msgstr "" msgid "Happy Birthday %1$s" msgstr "" -#: ../../include/photos.php:152 +#: ../../include/photos.php:153 #, php-format msgid "Image exceeds website size limit of %lu bytes" msgstr "" -#: ../../include/photos.php:163 +#: ../../include/photos.php:164 msgid "Image file is empty." msgstr "" -#: ../../include/photos.php:197 ../../Zotlabs/Module/Cover_photo.php:239 -#: ../../Zotlabs/Module/Profile_photo.php:274 +#: ../../include/photos.php:198 ../../Zotlabs/Module/Cover_photo.php:240 +#: ../../Zotlabs/Module/Profile_photo.php:275 msgid "Unable to process image" msgstr "" -#: ../../include/photos.php:323 +#: ../../include/photos.php:324 msgid "Photo storage failed." msgstr "" -#: ../../include/photos.php:372 +#: ../../include/photos.php:373 msgid "a new photo" msgstr "" -#: ../../include/photos.php:376 +#: ../../include/photos.php:377 #, php-format msgctxt "photo_upload" msgid "%1$s posted %2$s to %3$s" msgstr "" -#: ../../include/photos.php:722 ../../Zotlabs/Module/Photos.php:1339 +#: ../../include/photos.php:723 ../../Zotlabs/Module/Photos.php:1339 #: ../../Zotlabs/Module/Photos.php:1352 ../../Zotlabs/Module/Photos.php:1353 msgid "Recent Photos" msgstr "" -#: ../../include/photos.php:726 +#: ../../include/photos.php:727 msgid "Upload New Photos" msgstr "" -#: ../../include/connections.php:165 +#: ../../include/connections.php:174 msgid "New window" msgstr "" -#: ../../include/connections.php:166 +#: ../../include/connections.php:175 msgid "Open the selected location in a different window or browser tab" msgstr "" -#: ../../include/network.php:412 +#: ../../include/network.php:413 msgid "url: " msgstr "" -#: ../../include/network.php:413 +#: ../../include/network.php:414 msgid "error_code: " msgstr "" -#: ../../include/network.php:414 +#: ../../include/network.php:415 msgid "error_string: " msgstr "" -#: ../../include/network.php:415 +#: ../../include/network.php:416 msgid "content-type: " msgstr "" -#: ../../include/network.php:1770 ../../include/network.php:1771 +#: ../../include/network.php:1774 ../../include/network.php:1775 msgid "Friendica" msgstr "" -#: ../../include/network.php:1772 +#: ../../include/network.php:1776 msgid "OStatus" msgstr "" -#: ../../include/network.php:1773 +#: ../../include/network.php:1777 msgid "GNU-Social" msgstr "" -#: ../../include/network.php:1774 +#: ../../include/network.php:1778 msgid "RSS/Atom" msgstr "" -#: ../../include/network.php:1775 +#: ../../include/network.php:1779 msgid "ActivityPub" msgstr "" -#: ../../include/network.php:1776 ../../addon/openid/MysqlProvider.php:56 +#: ../../include/network.php:1780 ../../addon/openid/MysqlProvider.php:56 #: ../../addon/openid/MysqlProvider.php:57 ../../addon/redred/Mod_Redred.php:69 #: ../../addon/rtof/Mod_Rtof.php:55 ../../Zotlabs/Module/Connedit.php:736 #: ../../Zotlabs/Module/Admin/Accounts.php:316 @@ -3162,59 +3144,59 @@ msgstr "" msgid "Email" msgstr "" -#: ../../include/network.php:1777 +#: ../../include/network.php:1781 msgid "Diaspora" msgstr "" -#: ../../include/network.php:1778 +#: ../../include/network.php:1782 msgid "Facebook" msgstr "" -#: ../../include/network.php:1779 +#: ../../include/network.php:1783 msgid "Zot" msgstr "" -#: ../../include/network.php:1780 +#: ../../include/network.php:1784 msgid "LinkedIn" msgstr "" -#: ../../include/network.php:1781 +#: ../../include/network.php:1785 msgid "XMPP/IM" msgstr "" -#: ../../include/network.php:1782 +#: ../../include/network.php:1786 msgid "MySpace" msgstr "" -#: ../../include/markdown.php:206 ../../include/bbcode.php:575 +#: ../../include/markdown.php:206 ../../include/bbcode.php:576 #, php-format msgid "%1$s wrote the following %2$s %3$s" msgstr "" -#: ../../include/markdown.php:259 ../../include/bbcode.php:660 +#: ../../include/markdown.php:278 ../../include/bbcode.php:661 msgid "spoiler" msgstr "" -#: ../../include/language.php:422 ../../include/text.php:2193 +#: ../../include/language.php:423 ../../include/text.php:2199 msgid "default" msgstr "" -#: ../../include/language.php:435 +#: ../../include/language.php:436 msgid "Select an alternate language" msgstr "" -#: ../../include/menu.php:120 ../../include/channel.php:1538 -#: ../../include/channel.php:1542 ../../addon/cards/cards.php:74 +#: ../../include/menu.php:120 ../../include/channel.php:1539 +#: ../../include/channel.php:1543 ../../addon/cards/cards.php:74 #: ../../addon/cards/Mod_Card_edit.php:99 #: ../../addon/articles/Mod_Article_edit.php:97 #: ../../addon/articles/articles.php:75 ../../addon/wiki/Mod_Wiki.php:214 -#: ../../addon/wiki/Mod_Wiki.php:381 ../../Zotlabs/Lib/Apps.php:616 -#: ../../Zotlabs/Lib/ThreadItem.php:163 ../../Zotlabs/Widget/Cdav.php:144 +#: ../../addon/wiki/Mod_Wiki.php:381 ../../Zotlabs/Lib/Apps.php:617 +#: ../../Zotlabs/Lib/ThreadItem.php:162 ../../Zotlabs/Widget/Cdav.php:144 #: ../../Zotlabs/Widget/Cdav.php:181 ../../Zotlabs/Module/Editwebpage.php:142 #: ../../Zotlabs/Module/Webpages.php:250 ../../Zotlabs/Module/Oauth.php:171 #: ../../Zotlabs/Module/Thing.php:294 ../../Zotlabs/Module/Layouts.php:191 -#: ../../Zotlabs/Module/Menu.php:176 ../../Zotlabs/Module/Admin/Profs.php:175 -#: ../../Zotlabs/Module/Group.php:245 ../../Zotlabs/Module/Blocks.php:158 +#: ../../Zotlabs/Module/Menu.php:176 ../../Zotlabs/Module/Admin/Profs.php:176 +#: ../../Zotlabs/Module/Group.php:246 ../../Zotlabs/Module/Blocks.php:158 #: ../../Zotlabs/Module/Editlayout.php:114 #: ../../Zotlabs/Module/Connections.php:338 #: ../../Zotlabs/Module/Connections.php:387 @@ -3246,7 +3228,7 @@ msgstr "" #: ../../include/acl_selectors.php:136 #: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../Zotlabs/Module/Settings/Privacy.php:65 +#: ../../Zotlabs/Module/Settings/Privacy.php:66 msgid "Only me" msgstr "" @@ -3281,7 +3263,7 @@ msgid "Permissions" msgstr "" #: ../../include/acl_selectors.php:156 ../../Zotlabs/Lib/ThreadItem.php:527 -#: ../../Zotlabs/Widget/Pinned.php:152 ../../Zotlabs/Storage/Browser.php:414 +#: ../../Zotlabs/Widget/Pinned.php:154 ../../Zotlabs/Storage/Browser.php:415 #: ../../Zotlabs/Module/Photos.php:1266 msgid "Close" msgstr "" @@ -3293,102 +3275,102 @@ msgid "" "permissions set who is allowed to view the post." msgstr "" -#: ../../include/text.php:561 +#: ../../include/text.php:562 msgid "prev" msgstr "" -#: ../../include/text.php:563 +#: ../../include/text.php:564 msgid "first" msgstr "" -#: ../../include/text.php:592 +#: ../../include/text.php:593 msgid "last" msgstr "" -#: ../../include/text.php:595 +#: ../../include/text.php:596 msgid "next" msgstr "" -#: ../../include/text.php:613 +#: ../../include/text.php:614 msgid "older" msgstr "" -#: ../../include/text.php:615 +#: ../../include/text.php:616 msgid "newer" msgstr "" -#: ../../include/text.php:1085 ../../Zotlabs/Module/Viewconnections.php:80 +#: ../../include/text.php:1086 ../../Zotlabs/Module/Viewconnections.php:80 #: ../../Zotlabs/Module/Connections.php:306 msgid "Accepts" msgstr "" -#: ../../include/text.php:1088 ../../Zotlabs/Module/Viewconnections.php:83 +#: ../../include/text.php:1089 ../../Zotlabs/Module/Viewconnections.php:83 #: ../../Zotlabs/Module/Connections.php:309 msgid "Comments" msgstr "" -#: ../../include/text.php:1093 ../../Zotlabs/Module/Viewconnections.php:88 +#: ../../include/text.php:1094 ../../Zotlabs/Module/Viewconnections.php:88 #: ../../Zotlabs/Module/Connections.php:314 msgid "Stream items" msgstr "" -#: ../../include/text.php:1098 ../../Zotlabs/Module/Viewconnections.php:93 +#: ../../include/text.php:1099 ../../Zotlabs/Module/Viewconnections.php:93 #: ../../Zotlabs/Module/Connections.php:319 msgid "Wall posts" msgstr "" -#: ../../include/text.php:1102 ../../Zotlabs/Module/Viewconnections.php:97 +#: ../../include/text.php:1103 ../../Zotlabs/Module/Viewconnections.php:97 #: ../../Zotlabs/Module/Connections.php:323 msgid "Nothing" msgstr "" -#: ../../include/text.php:1115 +#: ../../include/text.php:1116 #, php-format msgid "View all %s connections" msgstr "" -#: ../../include/text.php:1178 +#: ../../include/text.php:1179 #, php-format msgid "Network: %s" msgstr "" -#: ../../include/text.php:1190 ../../include/text.php:1202 +#: ../../include/text.php:1191 ../../include/text.php:1203 #: ../../addon/cards/Mod_Cards.php:116 #: ../../addon/articles/Mod_Articles.php:120 -#: ../../Zotlabs/Module/Admin/Queueworker.php:114 -#: ../../Zotlabs/Module/Admin/Profs.php:94 -#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:31 -#: ../../Zotlabs/Module/Rbmark.php:103 ../../Zotlabs/Module/Filer.php:54 +#: ../../Zotlabs/Module/Admin/Queueworker.php:115 +#: ../../Zotlabs/Module/Admin/Profs.php:95 +#: ../../Zotlabs/Module/Admin/Profs.php:115 ../../Zotlabs/Module/Rbmark.php:29 +#: ../../Zotlabs/Module/Rbmark.php:85 ../../Zotlabs/Module/Filer.php:54 msgid "Save" msgstr "" -#: ../../include/text.php:1502 +#: ../../include/text.php:1503 msgid "May" msgstr "" -#: ../../include/text.php:1576 +#: ../../include/text.php:1577 msgid "Unknown attachment" msgstr "" -#: ../../include/text.php:1579 ../../Zotlabs/Storage/Browser.php:382 +#: ../../include/text.php:1580 ../../Zotlabs/Storage/Browser.php:383 #: ../../Zotlabs/Module/Sharedwithme.php:109 msgid "Size" msgstr "" -#: ../../include/text.php:1622 +#: ../../include/text.php:1623 msgid "remove category" msgstr "" -#: ../../include/text.php:1700 +#: ../../include/text.php:1701 msgid "remove from file" msgstr "" -#: ../../include/text.php:1887 +#: ../../include/text.php:1888 msgid "Download binary/encrypted content" msgstr "" -#: ../../include/text.php:1945 ../../include/text.php:1954 -#: ../../include/text.php:1981 ../../include/text.php:1990 +#: ../../include/text.php:1946 ../../include/text.php:1955 +#: ../../include/text.php:1982 ../../include/text.php:1991 #, php-format msgctxt "noun" msgid "%d Vote" @@ -3396,7 +3378,7 @@ msgid_plural "%d Votes" msgstr[0] "" msgstr[1] "" -#: ../../include/text.php:1997 +#: ../../include/text.php:1998 #, php-format msgctxt "noun" msgid "%d Vote in total" @@ -3404,208 +3386,208 @@ msgid_plural "%d Votes in total" msgstr[0] "" msgstr[1] "" -#: ../../include/text.php:2003 +#: ../../include/text.php:2004 msgid "Poll has ended" msgstr "" -#: ../../include/text.php:2006 +#: ../../include/text.php:2007 #, php-format msgid "Poll ends in %s" msgstr "" -#: ../../include/text.php:2013 ../../Zotlabs/Lib/ThreadItem.php:467 +#: ../../include/text.php:2014 ../../Zotlabs/Lib/ThreadItem.php:467 msgid "Vote" msgstr "" -#: ../../include/text.php:2168 +#: ../../include/text.php:2174 msgid "Link to Source" msgstr "" -#: ../../include/text.php:2201 +#: ../../include/text.php:2207 msgid "Page layout" msgstr "" -#: ../../include/text.php:2201 +#: ../../include/text.php:2207 msgid "You can create your own with the layouts tool" msgstr "" -#: ../../include/text.php:2211 ../../addon/wiki/Mod_Wiki.php:220 +#: ../../include/text.php:2217 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:368 ../../addon/wiki/Mod_Wiki.php:903 #: ../../addon/wiki/Widget/Wiki_pages.php:68 msgid "BBcode" msgstr "" -#: ../../include/text.php:2212 +#: ../../include/text.php:2218 msgid "HTML" msgstr "" -#: ../../include/text.php:2213 ../../addon/wiki/Mod_Wiki.php:220 +#: ../../include/text.php:2219 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:368 ../../addon/wiki/Mod_Wiki.php:903 #: ../../addon/wiki/Widget/Wiki_pages.php:68 ../../addon/mdpost/mdpost.php:41 msgid "Markdown" msgstr "" -#: ../../include/text.php:2214 ../../addon/wiki/Mod_Wiki.php:220 +#: ../../include/text.php:2220 ../../addon/wiki/Mod_Wiki.php:220 #: ../../addon/wiki/Mod_Wiki.php:903 ../../addon/wiki/Widget/Wiki_pages.php:68 msgid "Text" msgstr "" -#: ../../include/text.php:2215 +#: ../../include/text.php:2221 msgid "Comanche Layout" msgstr "" -#: ../../include/text.php:2220 +#: ../../include/text.php:2226 msgid "PHP" msgstr "" -#: ../../include/text.php:2232 +#: ../../include/text.php:2238 msgid "Page content type" msgstr "" -#: ../../include/text.php:2365 +#: ../../include/text.php:2371 msgid "activity" msgstr "" -#: ../../include/text.php:2368 +#: ../../include/text.php:2374 msgid "poll" msgstr "" -#: ../../include/text.php:2481 +#: ../../include/text.php:2487 msgid "a-z, 0-9, -, and _ only" msgstr "" -#: ../../include/text.php:2789 +#: ../../include/text.php:2795 msgid "Design Tools" msgstr "" -#: ../../include/text.php:2792 ../../Zotlabs/Module/Blocks.php:152 +#: ../../include/text.php:2798 ../../Zotlabs/Module/Blocks.php:152 msgid "Blocks" msgstr "" -#: ../../include/text.php:2793 ../../Zotlabs/Module/Menu.php:171 +#: ../../include/text.php:2799 ../../Zotlabs/Module/Menu.php:171 msgid "Menus" msgstr "" -#: ../../include/text.php:2794 ../../Zotlabs/Module/Layouts.php:182 +#: ../../include/text.php:2800 ../../Zotlabs/Module/Layouts.php:182 msgid "Layouts" msgstr "" -#: ../../include/text.php:2795 +#: ../../include/text.php:2801 msgid "Pages" msgstr "" -#: ../../include/text.php:2807 +#: ../../include/text.php:2813 msgid "Import" msgstr "" -#: ../../include/text.php:2808 +#: ../../include/text.php:2814 msgid "Import website..." msgstr "" -#: ../../include/text.php:2809 +#: ../../include/text.php:2815 msgid "Select folder to import" msgstr "" -#: ../../include/text.php:2810 +#: ../../include/text.php:2816 msgid "Import from a zipped folder:" msgstr "" -#: ../../include/text.php:2811 +#: ../../include/text.php:2817 msgid "Import from cloud files:" msgstr "" -#: ../../include/text.php:2812 +#: ../../include/text.php:2818 msgid "/cloud/channel/path/to/folder" msgstr "" -#: ../../include/text.php:2813 +#: ../../include/text.php:2819 msgid "Enter path to website files" msgstr "" -#: ../../include/text.php:2814 +#: ../../include/text.php:2820 msgid "Select folder" msgstr "" -#: ../../include/text.php:2815 +#: ../../include/text.php:2821 msgid "Export website..." msgstr "" -#: ../../include/text.php:2816 +#: ../../include/text.php:2822 msgid "Export to a zip file" msgstr "" -#: ../../include/text.php:2817 +#: ../../include/text.php:2823 msgid "website.zip" msgstr "" -#: ../../include/text.php:2818 +#: ../../include/text.php:2824 msgid "Enter a name for the zip file." msgstr "" -#: ../../include/text.php:2819 +#: ../../include/text.php:2825 msgid "Export to cloud files" msgstr "" -#: ../../include/text.php:2820 +#: ../../include/text.php:2826 msgid "/path/to/export/folder" msgstr "" -#: ../../include/text.php:2821 +#: ../../include/text.php:2827 msgid "Enter a path to a cloud files destination." msgstr "" -#: ../../include/text.php:2822 +#: ../../include/text.php:2828 msgid "Specify folder" msgstr "" -#: ../../include/channel.php:49 +#: ../../include/channel.php:50 msgid "Unable to obtain identity information from database" msgstr "" -#: ../../include/channel.php:82 +#: ../../include/channel.php:83 msgid "Empty name" msgstr "" -#: ../../include/channel.php:85 +#: ../../include/channel.php:86 msgid "Name too long" msgstr "" -#: ../../include/channel.php:202 +#: ../../include/channel.php:203 msgid "No account identifier" msgstr "" -#: ../../include/channel.php:214 ../../Zotlabs/Module/Register.php:95 +#: ../../include/channel.php:215 ../../Zotlabs/Module/Register.php:96 msgid "Nickname is required." msgstr "" -#: ../../include/channel.php:228 ../../include/channel.php:667 -#: ../../Zotlabs/Module/Register.php:100 ../../Zotlabs/Module/Changeaddr.php:46 +#: ../../include/channel.php:229 ../../include/channel.php:668 +#: ../../Zotlabs/Module/Register.php:101 ../../Zotlabs/Module/Changeaddr.php:46 msgid "Reserved nickname. Please choose another." msgstr "" -#: ../../include/channel.php:233 ../../include/channel.php:672 -#: ../../Zotlabs/Module/Register.php:105 ../../Zotlabs/Module/Changeaddr.php:51 +#: ../../include/channel.php:234 ../../include/channel.php:673 +#: ../../Zotlabs/Module/Register.php:106 ../../Zotlabs/Module/Changeaddr.php:51 msgid "" "Nickname has unsupported characters or is already being used on this site." msgstr "" -#: ../../include/channel.php:299 +#: ../../include/channel.php:300 msgid "Unable to retrieve created identity" msgstr "" -#: ../../include/channel.php:410 +#: ../../include/channel.php:411 msgid "Default Profile" msgstr "" -#: ../../include/channel.php:600 ../../include/channel.php:689 +#: ../../include/channel.php:601 ../../include/channel.php:690 msgid "Unable to retrieve modified identity" msgstr "" -#: ../../include/channel.php:1381 +#: ../../include/channel.php:1382 msgid "Requested channel is not available" msgstr "" -#: ../../include/channel.php:1435 ../../addon/cards/Mod_Cards.php:42 +#: ../../include/channel.php:1436 ../../addon/cards/Mod_Cards.php:42 #: ../../addon/articles/Mod_Articles.php:46 #: ../../addon/gallery/Mod_Gallery.php:49 #: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Webpages.php:39 @@ -3617,268 +3599,268 @@ msgstr "" msgid "Requested profile is not available." msgstr "" -#: ../../include/channel.php:1531 ../../Zotlabs/Module/Profiles.php:740 +#: ../../include/channel.php:1532 ../../Zotlabs/Module/Profiles.php:743 msgid "Change profile photo" msgstr "" -#: ../../include/channel.php:1539 +#: ../../include/channel.php:1540 msgid "Create New Profile" msgstr "" -#: ../../include/channel.php:1557 ../../Zotlabs/Module/Profiles.php:837 +#: ../../include/channel.php:1558 ../../Zotlabs/Module/Profiles.php:841 msgid "Profile Image" msgstr "" -#: ../../include/channel.php:1560 +#: ../../include/channel.php:1561 msgid "Visible to everybody" msgstr "" -#: ../../include/channel.php:1561 ../../Zotlabs/Module/Profiles.php:737 -#: ../../Zotlabs/Module/Profiles.php:841 +#: ../../include/channel.php:1562 ../../Zotlabs/Module/Profiles.php:740 +#: ../../Zotlabs/Module/Profiles.php:845 msgid "Edit visibility" msgstr "" -#: ../../include/channel.php:1643 ../../include/channel.php:1771 +#: ../../include/channel.php:1644 ../../include/channel.php:1772 msgid "Gender:" msgstr "" -#: ../../include/channel.php:1644 ../../include/channel.php:1817 +#: ../../include/channel.php:1645 ../../include/channel.php:1818 msgid "Status:" msgstr "" -#: ../../include/channel.php:1645 ../../include/channel.php:1841 +#: ../../include/channel.php:1646 ../../include/channel.php:1842 msgid "Homepage:" msgstr "" -#: ../../include/channel.php:1646 ../../include/channel.php:1843 +#: ../../include/channel.php:1647 ../../include/channel.php:1844 #: ../../Zotlabs/Module/Directory.php:368 msgid "Hometown:" msgstr "" -#: ../../include/channel.php:1647 +#: ../../include/channel.php:1648 msgid "Online Now" msgstr "" -#: ../../include/channel.php:1696 +#: ../../include/channel.php:1697 msgid "This channel has not added a profile description yet" msgstr "" -#: ../../include/channel.php:1698 +#: ../../include/channel.php:1699 msgid "Change your profile photo" msgstr "" -#: ../../include/channel.php:1730 +#: ../../include/channel.php:1731 msgid "Trans" msgstr "" -#: ../../include/channel.php:1769 +#: ../../include/channel.php:1770 msgid "Full Name:" msgstr "" -#: ../../include/channel.php:1802 +#: ../../include/channel.php:1803 msgid "j F, Y" msgstr "" -#: ../../include/channel.php:1803 +#: ../../include/channel.php:1804 msgid "j F" msgstr "" -#: ../../include/channel.php:1810 +#: ../../include/channel.php:1811 msgid "Birthday:" msgstr "" -#: ../../include/channel.php:1814 ../../Zotlabs/Module/Directory.php:349 +#: ../../include/channel.php:1815 ../../Zotlabs/Module/Directory.php:349 msgid "Age:" msgstr "" -#: ../../include/channel.php:1823 +#: ../../include/channel.php:1824 #, php-format msgid "for %1$d %2$s" msgstr "" -#: ../../include/channel.php:1835 +#: ../../include/channel.php:1836 msgid "Tags:" msgstr "" -#: ../../include/channel.php:1839 +#: ../../include/channel.php:1840 msgid "Sexual Preference:" msgstr "" -#: ../../include/channel.php:1845 +#: ../../include/channel.php:1846 msgid "Political Views:" msgstr "" -#: ../../include/channel.php:1847 +#: ../../include/channel.php:1848 msgid "Religion:" msgstr "" -#: ../../include/channel.php:1849 ../../Zotlabs/Module/Directory.php:370 +#: ../../include/channel.php:1850 ../../Zotlabs/Module/Directory.php:370 msgid "About:" msgstr "" -#: ../../include/channel.php:1851 +#: ../../include/channel.php:1852 msgid "Hobbies/Interests:" msgstr "" -#: ../../include/channel.php:1853 +#: ../../include/channel.php:1854 msgid "Likes:" msgstr "" -#: ../../include/channel.php:1855 +#: ../../include/channel.php:1856 msgid "Dislikes:" msgstr "" -#: ../../include/channel.php:1857 +#: ../../include/channel.php:1858 msgid "Contact information and Social Networks:" msgstr "" -#: ../../include/channel.php:1859 +#: ../../include/channel.php:1860 msgid "My other channels:" msgstr "" -#: ../../include/channel.php:1861 +#: ../../include/channel.php:1862 msgid "Musical interests:" msgstr "" -#: ../../include/channel.php:1863 +#: ../../include/channel.php:1864 msgid "Books, literature:" msgstr "" -#: ../../include/channel.php:1865 +#: ../../include/channel.php:1866 msgid "Television:" msgstr "" -#: ../../include/channel.php:1867 +#: ../../include/channel.php:1868 msgid "Film/dance/culture/entertainment:" msgstr "" -#: ../../include/channel.php:1869 +#: ../../include/channel.php:1870 msgid "Love/Romance:" msgstr "" -#: ../../include/channel.php:1871 +#: ../../include/channel.php:1872 msgid "Work/employment:" msgstr "" -#: ../../include/channel.php:1873 +#: ../../include/channel.php:1874 msgid "School/education:" msgstr "" -#: ../../include/channel.php:1894 ../../Zotlabs/Lib/Apps.php:365 -#: ../../Zotlabs/Module/Profperm.php:113 +#: ../../include/channel.php:1895 ../../Zotlabs/Lib/Apps.php:366 +#: ../../Zotlabs/Module/Profperm.php:114 msgid "Profile" msgstr "" -#: ../../include/channel.php:1896 +#: ../../include/channel.php:1897 msgid "Like this thing" msgstr "" -#: ../../include/channel.php:1897 +#: ../../include/channel.php:1898 msgid "Export" msgstr "" -#: ../../include/channel.php:2350 +#: ../../include/channel.php:2351 msgid "cover photo" msgstr "" -#: ../../include/channel.php:2631 ../../boot.php:1747 +#: ../../include/channel.php:2632 ../../boot.php:1761 #: ../../Zotlabs/Module/Rmagic.php:96 msgid "Remote Authentication" msgstr "" -#: ../../include/channel.php:2632 ../../Zotlabs/Module/Rmagic.php:97 +#: ../../include/channel.php:2633 ../../Zotlabs/Module/Rmagic.php:97 msgid "Enter your channel address (e.g. channel@example.com)" msgstr "" -#: ../../include/channel.php:2633 ../../Zotlabs/Module/Rmagic.php:98 +#: ../../include/channel.php:2634 ../../Zotlabs/Module/Rmagic.php:98 msgid "Authenticate" msgstr "" -#: ../../include/channel.php:2793 ../../Zotlabs/Module/Admin/Accounts.php:184 +#: ../../include/channel.php:2794 ../../Zotlabs/Module/Admin/Accounts.php:184 #, php-format msgid "Account '%s' deleted" msgstr "" -#: ../../include/bbcode.php:233 ../../include/bbcode.php:993 -#: ../../include/bbcode.php:1613 ../../include/bbcode.php:1621 +#: ../../include/bbcode.php:234 ../../include/bbcode.php:994 +#: ../../include/bbcode.php:1659 ../../include/bbcode.php:1667 msgid "Image/photo" msgstr "" -#: ../../include/bbcode.php:285 +#: ../../include/bbcode.php:286 msgid "Encrypted content" msgstr "" -#: ../../include/bbcode.php:341 +#: ../../include/bbcode.php:342 #, php-format msgid "Install %1$s element %2$s" msgstr "" -#: ../../include/bbcode.php:345 +#: ../../include/bbcode.php:346 #, php-format msgid "" "This post contains an installable %s element, however you lack permissions " "to install it on this site." msgstr "" -#: ../../include/bbcode.php:355 ../../Zotlabs/Module/Impel.php:47 +#: ../../include/bbcode.php:356 ../../Zotlabs/Module/Impel.php:47 msgid "webpage" msgstr "" -#: ../../include/bbcode.php:358 ../../Zotlabs/Module/Impel.php:57 +#: ../../include/bbcode.php:359 ../../Zotlabs/Module/Impel.php:57 msgid "layout" msgstr "" -#: ../../include/bbcode.php:361 ../../Zotlabs/Module/Impel.php:52 +#: ../../include/bbcode.php:362 ../../Zotlabs/Module/Impel.php:52 msgid "block" msgstr "" -#: ../../include/bbcode.php:364 ../../Zotlabs/Module/Impel.php:64 +#: ../../include/bbcode.php:365 ../../Zotlabs/Module/Impel.php:64 msgid "menu" msgstr "" -#: ../../include/bbcode.php:567 +#: ../../include/bbcode.php:568 msgid "card" msgstr "" -#: ../../include/bbcode.php:569 +#: ../../include/bbcode.php:570 msgid "article" msgstr "" -#: ../../include/bbcode.php:652 ../../include/bbcode.php:660 +#: ../../include/bbcode.php:653 ../../include/bbcode.php:661 msgid "Click to open/close" msgstr "" -#: ../../include/bbcode.php:673 +#: ../../include/bbcode.php:674 msgid "View article" msgstr "" -#: ../../include/bbcode.php:673 +#: ../../include/bbcode.php:674 msgid "View summary" msgstr "" -#: ../../include/bbcode.php:1117 ../../include/bbcode.php:1299 +#: ../../include/bbcode.php:1127 ../../include/bbcode.php:1312 #: ../../addon/wiki/Lib/NativeWikiPage.php:630 msgid "Different viewers will see this text differently" msgstr "" -#: ../../include/bbcode.php:1589 +#: ../../include/bbcode.php:1635 msgid "$1 wrote:" msgstr "" -#: ../../include/import.php:30 +#: ../../include/import.php:31 msgid "Unable to import a removed channel." msgstr "" -#: ../../include/import.php:56 +#: ../../include/import.php:57 msgid "" "Cannot create a duplicate channel identifier on this system. Import failed." msgstr "" -#: ../../include/import.php:77 ../../addon/diaspora/import_diaspora.php:43 +#: ../../include/import.php:78 ../../addon/diaspora/import_diaspora.php:43 msgid "Unable to create a unique channel address. Import failed." msgstr "" -#: ../../include/import.php:128 +#: ../../include/import.php:129 msgid "Cloned channel not found. Import failed." msgstr "" @@ -3906,14 +3888,6 @@ msgstr "" msgid "IRC Chatroom" msgstr "" -#: ../../addon/smileybutton/Mod_Smileybutton.php:42 -msgid "Hide the button and show the smilies directly." -msgstr "" - -#: ../../addon/smileybutton/Mod_Smileybutton.php:50 -msgid "Smileybutton Settings" -msgstr "" - #: ../../addon/fediquest/fediquest.php:211 msgid "ERROR: word length is not correct!" msgstr "" @@ -4062,7 +4036,7 @@ msgstr "" msgid "Send email to all members" msgstr "" -#: ../../addon/hubwall/hubwall.php:33 ../../Zotlabs/Lib/Enotify.php:65 +#: ../../addon/hubwall/hubwall.php:33 ../../Zotlabs/Lib/Enotify.php:66 #, php-format msgid "%s Administrator" msgstr "" @@ -4071,24 +4045,24 @@ msgstr "" msgid "No recipients found." msgstr "" -#: ../../addon/hubwall/hubwall.php:73 +#: ../../addon/hubwall/hubwall.php:74 #, php-format msgid "%1$d of %2$d messages sent." msgstr "" -#: ../../addon/hubwall/hubwall.php:81 +#: ../../addon/hubwall/hubwall.php:82 msgid "Send email to all hub members." msgstr "" -#: ../../addon/hubwall/hubwall.php:92 ../../addon/mailtest/mailtest.php:96 +#: ../../addon/hubwall/hubwall.php:93 ../../addon/mailtest/mailtest.php:96 msgid "Message subject" msgstr "" -#: ../../addon/hubwall/hubwall.php:93 +#: ../../addon/hubwall/hubwall.php:94 msgid "Sender Email address" msgstr "" -#: ../../addon/hubwall/hubwall.php:94 +#: ../../addon/hubwall/hubwall.php:95 msgid "Test mode (only send to hub administrator)" msgstr "" @@ -4132,7 +4106,7 @@ msgid "Last Name" msgstr "" #: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:73 -#: ../../boot.php:1740 +#: ../../boot.php:1754 msgid "Nickname" msgstr "" @@ -4165,11 +4139,11 @@ msgid "Profile Photo 128px" msgstr "" #: ../../addon/openid/MysqlProvider.php:68 -#: ../../Zotlabs/Module/Profiles.php:779 +#: ../../Zotlabs/Module/Profiles.php:782 msgid "Homepage URL" msgstr "" -#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:362 +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:363 msgid "Language" msgstr "" @@ -4190,7 +4164,7 @@ msgid "Birthdate" msgstr "" #: ../../addon/openid/MysqlProvider.php:74 -#: ../../Zotlabs/Module/Profiles.php:452 +#: ../../Zotlabs/Module/Profiles.php:453 msgid "Gender" msgstr "" @@ -4294,7 +4268,7 @@ msgid "Unknown error. Please try again later." msgstr "" #: ../../addon/openclipatar/openclipatar.php:299 -#: ../../Zotlabs/Module/Profile_photo.php:268 +#: ../../Zotlabs/Module/Profile_photo.php:269 msgid "" "Shift-reload the page or clear browser cache if the new photo does not " "display immediately." @@ -4381,10 +4355,10 @@ msgctxt "opensearch" msgid "$Projectname" msgstr "" -#: ../../addon/opensearch/opensearch.php:42 ../../Zotlabs/Lib/Enotify.php:66 -#: ../../Zotlabs/Module/Home.php:87 ../../Zotlabs/Module/Home.php:95 -#: ../../Zotlabs/Module/Invite.php:238 ../../Zotlabs/Module/Invite.php:507 -#: ../../Zotlabs/Module/Invite.php:521 +#: ../../addon/opensearch/opensearch.php:42 ../../Zotlabs/Lib/Enotify.php:67 +#: ../../Zotlabs/Module/Home.php:88 ../../Zotlabs/Module/Home.php:96 +#: ../../Zotlabs/Module/Invite.php:239 ../../Zotlabs/Module/Invite.php:508 +#: ../../Zotlabs/Module/Invite.php:522 msgid "$Projectname" msgstr "" @@ -4501,7 +4475,7 @@ msgstr "" #: ../../addon/faces/faces.php:291 ../../addon/twitter/twitter.php:493 #: ../../addon/openstreetmap/openstreetmap.php:171 #: ../../Zotlabs/Module/Defperms.php:111 -#: ../../Zotlabs/Module/Settings/Channel.php:150 +#: ../../Zotlabs/Module/Settings/Channel.php:151 msgid "Settings updated." msgstr "" @@ -4560,7 +4534,7 @@ msgstr "" msgid "Page Header" msgstr "" -#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:333 +#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:334 msgid "Report Bug" msgstr "" @@ -4585,7 +4559,7 @@ msgid "Insane Journal Crosspost Connector App" msgstr "" #: ../../addon/ijpost/Mod_Ijpost.php:35 ../../addon/xmpp/Mod_Xmpp.php:35 -#: ../../Zotlabs/Module/Invite.php:69 ../../Zotlabs/Module/Lang.php:20 +#: ../../Zotlabs/Module/Invite.php:70 ../../Zotlabs/Module/Lang.php:20 msgid "Not Installed" msgstr "" @@ -4658,7 +4632,7 @@ msgid "Hubzilla Crosspost Connector" msgstr "" #: ../../addon/cards/cards.php:48 ../../addon/cards/cards.php:160 -#: ../../addon/cards/Mod_Cards.php:209 ../../Zotlabs/Lib/Apps.php:331 +#: ../../addon/cards/Mod_Cards.php:209 ../../Zotlabs/Lib/Apps.php:332 msgid "Cards" msgstr "" @@ -4666,6 +4640,14 @@ msgstr "" msgid "View Cards" msgstr "" +#: ../../addon/cards/cards.php:104 ../../addon/articles/articles.php:105 +#: ../../addon/wiki/Lib/NativeWikiPage.php:545 +#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Display.php:155 +#: ../../Zotlabs/Module/Block.php:77 ../../Zotlabs/Module/Help.php:175 +#: ../../Zotlabs/Web/Router.php:188 +msgid "Page not found." +msgstr "" + #: ../../addon/cards/Mod_Cards.php:115 msgid "Add Card" msgstr "" @@ -4780,12 +4762,12 @@ msgstr "" msgid "Activitypub Protocol" msgstr "" -#: ../../addon/pubcrawl/pubcrawl.php:1073 ../../addon/diaspora/diaspora.php:415 +#: ../../addon/pubcrawl/pubcrawl.php:1078 ../../addon/diaspora/diaspora.php:415 #: ../../Zotlabs/Module/Contactedit.php:494 msgid "Refresh failed" msgstr "" -#: ../../addon/pubcrawl/pubcrawl.php:1080 ../../addon/diaspora/diaspora.php:420 +#: ../../addon/pubcrawl/pubcrawl.php:1085 ../../addon/diaspora/diaspora.php:420 #: ../../Zotlabs/Module/Contactedit.php:491 msgid "Refresh succeeded" msgstr "" @@ -4873,7 +4855,7 @@ msgid "Import completed." msgstr "" #: ../../addon/diaspora/p.php:48 ../../addon/diaspora/util.php:346 -#: ../../addon/diaspora/util.php:359 ../../Zotlabs/Lib/Enotify.php:61 +#: ../../addon/diaspora/util.php:359 ../../Zotlabs/Lib/Enotify.php:62 msgid "$projectname" msgstr "" @@ -4970,8 +4952,8 @@ msgid "No channels currently blocked" msgstr "" #: ../../addon/superblock/Mod_Superblock.php:90 -#: ../../Zotlabs/Module/Cover_photo.php:381 ../../Zotlabs/Module/Tagrm.php:137 -#: ../../Zotlabs/Module/Admin/Addons.php:462 +#: ../../Zotlabs/Module/Cover_photo.php:382 ../../Zotlabs/Module/Tagrm.php:137 +#: ../../Zotlabs/Module/Admin/Addons.php:463 #: ../../Zotlabs/Module/Photos.php:994 msgid "Remove" msgstr "" @@ -5113,9 +5095,9 @@ msgstr "" #: ../../addon/rendezvous/rendezvous.php:172 ../../addon/wiki/Mod_Wiki.php:221 #: ../../addon/wiki/Lib/NativeWikiPage.php:588 #: ../../addon/wiki/Widget/Wiki_page_history.php:28 -#: ../../Zotlabs/Storage/Browser.php:380 ../../Zotlabs/Module/Oauth.php:111 +#: ../../Zotlabs/Storage/Browser.php:381 ../../Zotlabs/Module/Oauth.php:111 #: ../../Zotlabs/Module/Oauth.php:137 ../../Zotlabs/Module/Connedit.php:732 -#: ../../Zotlabs/Module/Admin/Channels.php:159 +#: ../../Zotlabs/Module/Admin/Channels.php:181 #: ../../Zotlabs/Module/Sharedwithme.php:107 ../../Zotlabs/Module/Chat.php:256 #: ../../Zotlabs/Module/Cdav.php:1368 ../../Zotlabs/Module/Oauth2.php:116 #: ../../Zotlabs/Module/Oauth2.php:144 @@ -5125,7 +5107,7 @@ msgstr "" #: ../../addon/rendezvous/rendezvous.php:173 #: ../../addon/cart/submodules/hzservices.php:657 #: ../../addon/cart/submodules/manualcat.php:260 -#: ../../Zotlabs/Module/Appman.php:220 ../../Zotlabs/Module/Rbmark.php:100 +#: ../../Zotlabs/Module/Appman.php:220 ../../Zotlabs/Module/Rbmark.php:82 #: ../../Zotlabs/Module/Cdav.php:1005 msgid "Description" msgstr "" @@ -5205,7 +5187,7 @@ msgstr "" msgid "You have no rendezvous. Press the button above to create a rendezvous!" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:401 ../../Zotlabs/Module/Setup.php:748 +#: ../../addon/rendezvous/rendezvous.php:401 ../../Zotlabs/Module/Setup.php:751 msgid "Errors encountered creating database tables." msgstr "" @@ -5314,7 +5296,7 @@ msgid "Edit Article" msgstr "" #: ../../addon/articles/articles.php:48 ../../addon/articles/articles.php:160 -#: ../../addon/articles/Mod_Articles.php:228 ../../Zotlabs/Lib/Apps.php:330 +#: ../../addon/articles/Mod_Articles.php:228 ../../Zotlabs/Lib/Apps.php:331 msgid "Articles" msgstr "" @@ -5351,18 +5333,18 @@ msgstr "" msgid "Error downloading wiki: " msgstr "" -#: ../../addon/wiki/Mod_Wiki.php:215 ../../Zotlabs/Storage/Browser.php:407 +#: ../../addon/wiki/Mod_Wiki.php:215 ../../Zotlabs/Storage/Browser.php:408 msgid "Download" msgstr "" #: ../../addon/wiki/Mod_Wiki.php:216 ../../addon/wiki/Mod_Wiki.php:406 #: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Module/Layouts.php:196 -#: ../../Zotlabs/Module/Pubsites.php:62 ../../Zotlabs/Module/Blocks.php:164 +#: ../../Zotlabs/Module/Pubsites.php:63 ../../Zotlabs/Module/Blocks.php:164 msgid "View" msgstr "" #: ../../addon/wiki/Mod_Wiki.php:217 ../../Zotlabs/Module/Manage.php:137 -#: ../../Zotlabs/Module/Profiles.php:848 +#: ../../Zotlabs/Module/Profiles.php:852 msgid "Create New" msgstr "" @@ -5374,7 +5356,7 @@ msgstr "" msgid "Content type" msgstr "" -#: ../../addon/wiki/Mod_Wiki.php:222 ../../Zotlabs/Storage/Browser.php:381 +#: ../../addon/wiki/Mod_Wiki.php:222 ../../Zotlabs/Storage/Browser.php:382 msgid "Type" msgstr "" @@ -5432,8 +5414,8 @@ msgstr "" msgid "Embed image from photo albums" msgstr "" -#: ../../addon/wiki/Mod_Wiki.php:402 ../../Zotlabs/Module/Cover_photo.php:389 -#: ../../Zotlabs/Module/Profile_photo.php:556 +#: ../../addon/wiki/Mod_Wiki.php:402 ../../Zotlabs/Module/Cover_photo.php:390 +#: ../../Zotlabs/Module/Profile_photo.php:557 msgid "Choose a different album" msgstr "" @@ -5704,7 +5686,7 @@ msgid "New registration" msgstr "" #: ../../addon/notifyadmin/notifyadmin.php:40 -#: ../../Zotlabs/Module/Invite.php:265 +#: ../../Zotlabs/Module/Invite.php:266 #, php-format msgid "%s : Message delivery failed." msgstr "" @@ -5719,7 +5701,7 @@ msgid "Post to GNU social" msgstr "" #: ../../addon/statusnet/statusnet.php:593 -#: ../../Zotlabs/Module/Admin/Site.php:409 +#: ../../Zotlabs/Module/Admin/Site.php:410 msgid "Site name" msgstr "" @@ -6420,7 +6402,7 @@ msgstr "" msgid "Brief description or title" msgstr "" -#: ../../addon/workflow/workflow.php:2661 ../../Zotlabs/Lib/Apps.php:373 +#: ../../addon/workflow/workflow.php:2661 ../../Zotlabs/Lib/Apps.php:374 #: ../../Zotlabs/Widget/Notes.php:38 msgid "Notes" msgstr "" @@ -6485,7 +6467,7 @@ msgid "Files imported" msgstr "" #: ../../addon/content_import/Mod_content_import.php:133 -#: ../../Zotlabs/Lib/Apps.php:337 +#: ../../Zotlabs/Lib/Apps.php:338 msgid "Content Import" msgstr "" @@ -6676,509 +6658,509 @@ msgstr "" msgid "I won!" msgstr "" -#: ../../boot.php:1722 +#: ../../boot.php:1736 msgid "Create an account to access services and applications" msgstr "" -#: ../../boot.php:1740 +#: ../../boot.php:1754 msgid "Email or nickname" msgstr "" -#: ../../boot.php:1750 +#: ../../boot.php:1764 msgid "Password" msgstr "" -#: ../../boot.php:1751 +#: ../../boot.php:1765 msgid "Remember me" msgstr "" -#: ../../boot.php:1754 +#: ../../boot.php:1768 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:1755 ../../Zotlabs/Module/Lostpass.php:91 +#: ../../boot.php:1769 ../../Zotlabs/Module/Lostpass.php:91 msgid "Password Reset" msgstr "" -#: ../../boot.php:2625 +#: ../../boot.php:2633 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "" -#: ../../boot.php:2630 +#: ../../boot.php:2638 msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: ../../boot.php:2746 +#: ../../boot.php:2754 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "" -#: ../../boot.php:2751 +#: ../../boot.php:2759 msgid "Cron/Scheduled tasks not running." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:60 +#: ../../Zotlabs/Lib/Enotify.php:61 msgid "$Projectname Notification" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:63 +#: ../../Zotlabs/Lib/Enotify.php:64 msgid "Thank You," msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:66 +#: ../../Zotlabs/Lib/Enotify.php:67 #, php-format msgid "This email was sent by %1$s at %2$s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:67 +#: ../../Zotlabs/Lib/Enotify.php:68 #, php-format msgid "" "To stop receiving these messages, please adjust your Notification Settings " "at %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:68 +#: ../../Zotlabs/Lib/Enotify.php:69 #, php-format msgid "To stop receiving these messages, please adjust your %s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:68 -#: ../../Zotlabs/Module/Settings/Channel.php:241 +#: ../../Zotlabs/Lib/Enotify.php:69 +#: ../../Zotlabs/Module/Settings/Channel.php:242 msgid "Notification Settings" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:123 +#: ../../Zotlabs/Lib/Enotify.php:124 #, php-format msgid "%s " msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:131 +#: ../../Zotlabs/Lib/Enotify.php:132 #, php-format msgid "[$Projectname:Notify] New direct message received at %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:133 +#: ../../Zotlabs/Lib/Enotify.php:134 #, php-format msgid "%1$s sent you a new direct message at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:134 +#: ../../Zotlabs/Lib/Enotify.php:135 #, php-format msgid "%1$s sent you %2$s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:134 +#: ../../Zotlabs/Lib/Enotify.php:135 msgid "a direct message" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:135 +#: ../../Zotlabs/Lib/Enotify.php:136 #, php-format msgid "Please visit %s to view and/or reply to your direct messages." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:148 +#: ../../Zotlabs/Lib/Enotify.php:149 msgid "requested to comment on" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:148 +#: ../../Zotlabs/Lib/Enotify.php:149 msgid "commented on" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:162 ../../Zotlabs/Lib/Enotify.php:318 msgid "requested to like" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:161 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:162 ../../Zotlabs/Lib/Enotify.php:318 msgid "liked" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:320 +#: ../../Zotlabs/Lib/Enotify.php:165 ../../Zotlabs/Lib/Enotify.php:321 msgid "requested to dislike" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:164 ../../Zotlabs/Lib/Enotify.php:320 +#: ../../Zotlabs/Lib/Enotify.php:165 ../../Zotlabs/Lib/Enotify.php:321 msgid "disliked" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:167 +#: ../../Zotlabs/Lib/Enotify.php:168 msgid "repeated" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:172 +#: ../../Zotlabs/Lib/Enotify.php:173 msgid "voted on" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:215 +#: ../../Zotlabs/Lib/Enotify.php:216 #, php-format msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:223 +#: ../../Zotlabs/Lib/Enotify.php:224 #, php-format msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:232 ../../Zotlabs/Lib/Enotify.php:324 +#: ../../Zotlabs/Lib/Enotify.php:233 ../../Zotlabs/Lib/Enotify.php:325 #, php-format msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:244 +#: ../../Zotlabs/Lib/Enotify.php:245 #, php-format msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:246 +#: ../../Zotlabs/Lib/Enotify.php:247 #, php-format msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:247 +#: ../../Zotlabs/Lib/Enotify.php:248 #, php-format msgid "%1$s commented on an item/conversation you have been following" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:250 ../../Zotlabs/Lib/Enotify.php:344 -#: ../../Zotlabs/Lib/Enotify.php:360 ../../Zotlabs/Lib/Enotify.php:384 -#: ../../Zotlabs/Lib/Enotify.php:401 ../../Zotlabs/Lib/Enotify.php:414 +#: ../../Zotlabs/Lib/Enotify.php:251 ../../Zotlabs/Lib/Enotify.php:345 +#: ../../Zotlabs/Lib/Enotify.php:361 ../../Zotlabs/Lib/Enotify.php:385 +#: ../../Zotlabs/Lib/Enotify.php:402 ../../Zotlabs/Lib/Enotify.php:415 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:254 ../../Zotlabs/Lib/Enotify.php:255 +#: ../../Zotlabs/Lib/Enotify.php:255 ../../Zotlabs/Lib/Enotify.php:256 #, php-format msgid "Please visit %s to approve or reject this comment." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:340 +#: ../../Zotlabs/Lib/Enotify.php:341 #, php-format msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:341 +#: ../../Zotlabs/Lib/Enotify.php:342 #, php-format msgid "%1$s liked an item/conversation you created" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:352 +#: ../../Zotlabs/Lib/Enotify.php:353 #, php-format msgid "[$Projectname:Notify] %s posted to your profile wall" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:354 +#: ../../Zotlabs/Lib/Enotify.php:355 #, php-format msgid "%1$s posted to your profile wall at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:356 +#: ../../Zotlabs/Lib/Enotify.php:357 #, php-format msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:378 +#: ../../Zotlabs/Lib/Enotify.php:379 #, php-format msgid "[$Projectname:Notify] %s tagged you" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:379 +#: ../../Zotlabs/Lib/Enotify.php:380 #, php-format msgid "%1$s tagged you at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:380 +#: ../../Zotlabs/Lib/Enotify.php:381 #, php-format msgid "%1$s [zrl=%2$s]tagged you[/zrl]." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:391 +#: ../../Zotlabs/Lib/Enotify.php:392 #, php-format msgid "[$Projectname:Notify] %1$s poked you" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:392 +#: ../../Zotlabs/Lib/Enotify.php:393 #, php-format msgid "%1$s poked you at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:393 +#: ../../Zotlabs/Lib/Enotify.php:394 #, php-format msgid "%1$s [zrl=%2$s]poked you[/zrl]." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:408 +#: ../../Zotlabs/Lib/Enotify.php:409 #, php-format msgid "[$Projectname:Notify] %s tagged your post" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:409 +#: ../../Zotlabs/Lib/Enotify.php:410 #, php-format msgid "%1$s tagged your post at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:410 +#: ../../Zotlabs/Lib/Enotify.php:411 #, php-format msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:421 +#: ../../Zotlabs/Lib/Enotify.php:422 msgid "[$Projectname:Notify] Introduction received" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:422 +#: ../../Zotlabs/Lib/Enotify.php:423 #, php-format msgid "You've received an new connection request from '%1$s' at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:423 +#: ../../Zotlabs/Lib/Enotify.php:424 #, php-format msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:426 ../../Zotlabs/Lib/Enotify.php:444 +#: ../../Zotlabs/Lib/Enotify.php:427 ../../Zotlabs/Lib/Enotify.php:445 #, php-format msgid "You may visit their profile at %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:428 +#: ../../Zotlabs/Lib/Enotify.php:429 #, php-format msgid "Please visit %s to approve or reject the connection request." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:435 +#: ../../Zotlabs/Lib/Enotify.php:436 msgid "[$Projectname:Notify] Friend suggestion received" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:436 +#: ../../Zotlabs/Lib/Enotify.php:437 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:437 +#: ../../Zotlabs/Lib/Enotify.php:438 #, php-format msgid "You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:442 +#: ../../Zotlabs/Lib/Enotify.php:443 msgid "Name:" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:443 +#: ../../Zotlabs/Lib/Enotify.php:444 msgid "Photo:" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:446 +#: ../../Zotlabs/Lib/Enotify.php:447 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:676 +#: ../../Zotlabs/Lib/Enotify.php:677 msgid "[$Projectname:Notify]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:842 +#: ../../Zotlabs/Lib/Enotify.php:843 msgid "created a new poll" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:842 +#: ../../Zotlabs/Lib/Enotify.php:843 msgid "created a new post" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:843 +#: ../../Zotlabs/Lib/Enotify.php:844 #, php-format msgid "voted on %s's poll" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:843 +#: ../../Zotlabs/Lib/Enotify.php:844 #, php-format msgid "commented on %s's post" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:847 ../../Zotlabs/Lib/Enotify.php:947 +#: ../../Zotlabs/Lib/Enotify.php:848 ../../Zotlabs/Lib/Enotify.php:948 msgid "shared a file with you" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:856 +#: ../../Zotlabs/Lib/Enotify.php:857 #, php-format msgid "edited a post dated %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:859 +#: ../../Zotlabs/Lib/Enotify.php:860 #, php-format msgid "edited a comment dated %s" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:932 +#: ../../Zotlabs/Lib/Enotify.php:933 msgid "added your channel" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:962 +#: ../../Zotlabs/Lib/Enotify.php:963 msgid "sent you a direct message" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:969 +#: ../../Zotlabs/Lib/Enotify.php:970 msgid "g A l F d" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:972 +#: ../../Zotlabs/Lib/Enotify.php:973 msgid "[today]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:982 +#: ../../Zotlabs/Lib/Enotify.php:983 msgid "created an event" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:997 +#: ../../Zotlabs/Lib/Enotify.php:998 msgid "status verified" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:329 +#: ../../Zotlabs/Lib/Apps.php:330 msgid "Affinity Tool" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:332 +#: ../../Zotlabs/Lib/Apps.php:333 msgid "Site Admin" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:336 +#: ../../Zotlabs/Lib/Apps.php:337 msgid "Content Filter" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:339 +#: ../../Zotlabs/Lib/Apps.php:340 msgid "Remote Diagnostics" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:340 +#: ../../Zotlabs/Lib/Apps.php:341 msgid "Suggest Channels" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:342 +#: ../../Zotlabs/Lib/Apps.php:343 msgid "Channel Manager" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:343 +#: ../../Zotlabs/Lib/Apps.php:344 msgid "Stream" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:354 +#: ../../Zotlabs/Lib/Apps.php:355 msgid "Mail" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:355 +#: ../../Zotlabs/Lib/Apps.php:356 msgid "Chat" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:357 +#: ../../Zotlabs/Lib/Apps.php:358 msgid "Probe" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:358 +#: ../../Zotlabs/Lib/Apps.php:359 msgid "Suggest" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:359 +#: ../../Zotlabs/Lib/Apps.php:360 msgid "Random Channel" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:360 +#: ../../Zotlabs/Lib/Apps.php:361 msgid "Invite" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:361 ../../Zotlabs/Widget/Admin.php:31 +#: ../../Zotlabs/Lib/Apps.php:362 ../../Zotlabs/Widget/Admin.php:31 msgid "Features" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Storage/Browser.php:410 +#: ../../Zotlabs/Lib/Apps.php:364 ../../Zotlabs/Storage/Browser.php:411 msgid "Post" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:368 +#: ../../Zotlabs/Lib/Apps.php:369 msgid "Notifications" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:369 +#: ../../Zotlabs/Lib/Apps.php:370 msgid "Order Apps" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:370 +#: ../../Zotlabs/Lib/Apps.php:371 msgid "CardDAV" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:371 ../../Zotlabs/Module/Sources.php:105 +#: ../../Zotlabs/Lib/Apps.php:372 ../../Zotlabs/Module/Sources.php:105 msgid "Channel Sources" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:372 ../../Zotlabs/Module/Tokens.php:288 +#: ../../Zotlabs/Lib/Apps.php:373 ../../Zotlabs/Module/Tokens.php:288 msgid "Guest Access" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:374 +#: ../../Zotlabs/Lib/Apps.php:375 msgid "OAuth Apps Manager" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:375 +#: ../../Zotlabs/Lib/Apps.php:376 msgid "OAuth2 Apps Manager" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:376 +#: ../../Zotlabs/Lib/Apps.php:377 msgid "PDL Editor" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:377 ../../Zotlabs/Module/Permcats.php:248 +#: ../../Zotlabs/Lib/Apps.php:378 ../../Zotlabs/Module/Permcats.php:248 msgid "Contact Roles" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:378 ../../Zotlabs/Widget/Notifications.php:154 -#: ../../Zotlabs/Module/Pubstream.php:108 +#: ../../Zotlabs/Lib/Apps.php:379 ../../Zotlabs/Widget/Notifications.php:154 +#: ../../Zotlabs/Module/Pubstream.php:109 msgid "Public Stream" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:379 +#: ../../Zotlabs/Lib/Apps.php:380 msgid "My Chatrooms" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:380 +#: ../../Zotlabs/Lib/Apps.php:381 msgid "Channel Export" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Module/Oauth.php:53 +#: ../../Zotlabs/Lib/Apps.php:562 ../../Zotlabs/Module/Oauth.php:53 #: ../../Zotlabs/Module/Oauth.php:135 ../../Zotlabs/Module/Connedit.php:748 -#: ../../Zotlabs/Module/Admin/Addons.php:460 ../../Zotlabs/Module/Cdav.php:1044 +#: ../../Zotlabs/Module/Admin/Addons.php:461 ../../Zotlabs/Module/Cdav.php:1044 #: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Oauth2.php:58 #: ../../Zotlabs/Module/Oauth2.php:142 msgid "Update" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Module/Admin/Addons.php:429 +#: ../../Zotlabs/Lib/Apps.php:562 ../../Zotlabs/Module/Admin/Addons.php:430 msgid "Install" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:591 ../../Zotlabs/Lib/Apps.php:613 +#: ../../Zotlabs/Lib/Apps.php:592 ../../Zotlabs/Lib/Apps.php:614 msgid "Purchase" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:618 +#: ../../Zotlabs/Lib/Apps.php:619 msgid "Undelete" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:626 +#: ../../Zotlabs/Lib/Apps.php:627 msgid "Add to app-tray" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:627 +#: ../../Zotlabs/Lib/Apps.php:628 msgid "Remove from app-tray" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:628 +#: ../../Zotlabs/Lib/Apps.php:629 msgid "Pin to navbar" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:629 +#: ../../Zotlabs/Lib/Apps.php:630 msgid "Unpin from navbar" msgstr "" #: ../../Zotlabs/Lib/PermissionDescription.php:108 -#: ../../Zotlabs/Access/PermissionRoles.php:384 +#: ../../Zotlabs/Access/PermissionRoles.php:386 msgid "Public" msgstr "" @@ -7236,117 +7218,117 @@ msgctxt "permcat" msgid "Default" msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:67 +#: ../../Zotlabs/Lib/DB_Upgrade.php:68 msgid "Source code of failed update: " msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:88 +#: ../../Zotlabs/Lib/DB_Upgrade.php:89 #, php-format msgid "Update Error at %s" msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:94 +#: ../../Zotlabs/Lib/DB_Upgrade.php:95 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:46 ../../Zotlabs/Lib/Connect.php:147 +#: ../../Zotlabs/Lib/Connect.php:45 ../../Zotlabs/Lib/Connect.php:146 msgid "Channel is blocked on this site." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:51 +#: ../../Zotlabs/Lib/Connect.php:50 msgid "Channel location missing." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:105 +#: ../../Zotlabs/Lib/Connect.php:104 msgid "Remote channel or protocol unavailable." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:141 +#: ../../Zotlabs/Lib/Connect.php:140 msgid "Channel discovery failed." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:159 +#: ../../Zotlabs/Lib/Connect.php:158 msgid "Protocol disabled." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:171 +#: ../../Zotlabs/Lib/Connect.php:170 msgid "Cannot connect to yourself." msgstr "" -#: ../../Zotlabs/Lib/Connect.php:276 +#: ../../Zotlabs/Lib/Connect.php:275 msgid "error saving data" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:111 +#: ../../Zotlabs/Lib/ThreadItem.php:110 msgid "Restricted message" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:118 +#: ../../Zotlabs/Lib/ThreadItem.php:117 msgid "Direct message" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:123 +#: ../../Zotlabs/Lib/ThreadItem.php:122 msgid "Public Policy" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:157 +#: ../../Zotlabs/Lib/ThreadItem.php:156 msgid "Privacy conflict. Discretion advised." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:188 ../../Zotlabs/Storage/Browser.php:372 +#: ../../Zotlabs/Lib/ThreadItem.php:187 ../../Zotlabs/Storage/Browser.php:373 msgid "Admin Delete" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:191 ../../Zotlabs/Module/Filer.php:55 +#: ../../Zotlabs/Lib/ThreadItem.php:190 ../../Zotlabs/Module/Filer.php:55 msgid "Save to Folder" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:215 ../../Zotlabs/Widget/Pinned.php:77 msgid "I will attend" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:215 ../../Zotlabs/Widget/Pinned.php:77 msgid "I will not attend" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:216 ../../Zotlabs/Widget/Pinned.php:75 +#: ../../Zotlabs/Lib/ThreadItem.php:215 ../../Zotlabs/Widget/Pinned.php:77 msgid "I might attend" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:333 ../../Zotlabs/Module/Photos.php:1074 +#: ../../Zotlabs/Lib/ThreadItem.php:332 ../../Zotlabs/Module/Photos.php:1074 msgid "I like this (toggle)" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:334 ../../Zotlabs/Module/Photos.php:1075 +#: ../../Zotlabs/Lib/ThreadItem.php:333 ../../Zotlabs/Module/Photos.php:1075 msgid "I don't like this (toggle)" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:334 msgid "Reply on this comment" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:334 msgid "reply" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:334 msgid "Reply to" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../Zotlabs/Widget/Pinned.php:93 +#: ../../Zotlabs/Lib/ThreadItem.php:340 ../../Zotlabs/Widget/Pinned.php:95 msgid "share" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:345 +#: ../../Zotlabs/Lib/ThreadItem.php:344 msgid "Repeat" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:345 +#: ../../Zotlabs/Lib/ThreadItem.php:344 msgid "repeat" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:356 +#: ../../Zotlabs/Lib/ThreadItem.php:355 msgid "Delivery Report" msgstr "" @@ -7371,7 +7353,7 @@ msgid "to" msgstr "" #: ../../Zotlabs/Lib/ThreadItem.php:435 ../../Zotlabs/Widget/Messages.php:146 -#: ../../Zotlabs/Widget/Messages.php:149 ../../Zotlabs/Widget/Pinned.php:121 +#: ../../Zotlabs/Widget/Messages.php:149 ../../Zotlabs/Widget/Pinned.php:123 msgid "via" msgstr "" @@ -7387,11 +7369,11 @@ msgstr "" msgid "Attend" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:466 ../../Zotlabs/Widget/Pinned.php:135 +#: ../../Zotlabs/Lib/ThreadItem.php:466 ../../Zotlabs/Widget/Pinned.php:137 msgid "Attendance Options" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../Zotlabs/Widget/Pinned.php:136 +#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../Zotlabs/Widget/Pinned.php:138 msgid "Voting Options" msgstr "" @@ -7399,7 +7381,7 @@ msgstr "" msgid "Go to previous comment" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:492 ../../Zotlabs/Widget/Pinned.php:148 +#: ../../Zotlabs/Lib/ThreadItem.php:492 ../../Zotlabs/Widget/Pinned.php:150 msgid "Pinned post" msgstr "" @@ -7440,58 +7422,58 @@ msgstr "" msgid "Your website URL (optional)" msgstr "" -#: ../../Zotlabs/Lib/Libzot.php:687 +#: ../../Zotlabs/Lib/Libzot.php:688 msgid "Unable to verify channel signature" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2154 +#: ../../Zotlabs/Lib/Activity.php:2166 #, php-format msgid "Likes %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2157 +#: ../../Zotlabs/Lib/Activity.php:2169 #, php-format msgid "Doesn't like %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2163 +#: ../../Zotlabs/Lib/Activity.php:2175 #, php-format msgid "Will attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2166 +#: ../../Zotlabs/Lib/Activity.php:2178 #, php-format msgid "Will not attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2169 +#: ../../Zotlabs/Lib/Activity.php:2181 #, php-format msgid "May attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2172 +#: ../../Zotlabs/Lib/Activity.php:2184 #, php-format msgid "May not attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Libsync.php:823 +#: ../../Zotlabs/Lib/Libsync.php:824 #, php-format msgid "Unable to verify site signature for %s" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:163 +#: ../../Zotlabs/Lib/Libzotdir.php:164 msgid "Directory Options" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../Zotlabs/Lib/Libzotdir.php:166 msgid "Safe Mode" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:166 +#: ../../Zotlabs/Lib/Libzotdir.php:167 msgid "Public Forums Only" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:168 +#: ../../Zotlabs/Lib/Libzotdir.php:169 msgid "This Website Only" msgstr "" @@ -7551,79 +7533,79 @@ msgstr "" msgid "Select a privacy group" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:337 +#: ../../Zotlabs/Access/PermissionRoles.php:339 msgid "Social Networking" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:338 +#: ../../Zotlabs/Access/PermissionRoles.php:340 msgid "Social - Federation" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:339 +#: ../../Zotlabs/Access/PermissionRoles.php:341 msgid "Social - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:340 +#: ../../Zotlabs/Access/PermissionRoles.php:342 msgid "Social - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:341 +#: ../../Zotlabs/Access/PermissionRoles.php:343 msgid "Social - Private" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:344 +#: ../../Zotlabs/Access/PermissionRoles.php:346 msgid "Community Forum" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:345 +#: ../../Zotlabs/Access/PermissionRoles.php:347 msgid "Forum - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:346 +#: ../../Zotlabs/Access/PermissionRoles.php:348 msgid "Forum - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:347 +#: ../../Zotlabs/Access/PermissionRoles.php:349 msgid "Forum - Private" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:350 +#: ../../Zotlabs/Access/PermissionRoles.php:352 msgid "Feed Republish" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:351 +#: ../../Zotlabs/Access/PermissionRoles.php:353 msgid "Feed - Mostly Public" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:352 +#: ../../Zotlabs/Access/PermissionRoles.php:354 msgid "Feed - Restricted" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:355 +#: ../../Zotlabs/Access/PermissionRoles.php:357 msgid "Special Purpose" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:356 +#: ../../Zotlabs/Access/PermissionRoles.php:358 msgid "Special - Celebrity/Soapbox" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:357 +#: ../../Zotlabs/Access/PermissionRoles.php:359 msgid "Special - Group Repository" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:361 +#: ../../Zotlabs/Access/PermissionRoles.php:363 msgid "Custom/Expert Mode" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:385 +#: ../../Zotlabs/Access/PermissionRoles.php:387 msgid "Personal" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:386 +#: ../../Zotlabs/Access/PermissionRoles.php:388 msgid "Community forum" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:387 +#: ../../Zotlabs/Access/PermissionRoles.php:389 msgid "Custom" msgstr "" @@ -7715,15 +7697,15 @@ msgstr "" msgid "Available Apps" msgstr "" -#: ../../Zotlabs/Widget/Rating.php:57 +#: ../../Zotlabs/Widget/Rating.php:59 msgid "Rating Tools" msgstr "" -#: ../../Zotlabs/Widget/Rating.php:61 ../../Zotlabs/Widget/Rating.php:63 +#: ../../Zotlabs/Widget/Rating.php:63 ../../Zotlabs/Widget/Rating.php:65 msgid "Rate Me" msgstr "" -#: ../../Zotlabs/Widget/Rating.php:66 +#: ../../Zotlabs/Widget/Rating.php:68 msgid "View Ratings" msgstr "" @@ -7865,68 +7847,68 @@ msgstr "" msgid "Guest access" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:36 +#: ../../Zotlabs/Widget/Newmember.php:38 msgid "Profile Creation" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:38 +#: ../../Zotlabs/Widget/Newmember.php:40 msgid "Upload profile photo" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:39 +#: ../../Zotlabs/Widget/Newmember.php:41 msgid "Upload cover photo" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:43 +#: ../../Zotlabs/Widget/Newmember.php:45 msgid "Find and Connect with others" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:45 +#: ../../Zotlabs/Widget/Newmember.php:47 msgid "View the directory" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:46 ../../Zotlabs/Module/Go.php:38 +#: ../../Zotlabs/Widget/Newmember.php:48 ../../Zotlabs/Module/Go.php:39 msgid "View friend suggestions" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:47 +#: ../../Zotlabs/Widget/Newmember.php:49 msgid "Manage your connections" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:50 +#: ../../Zotlabs/Widget/Newmember.php:52 msgid "Communicate" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:52 +#: ../../Zotlabs/Widget/Newmember.php:54 msgid "View your channel homepage" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:53 +#: ../../Zotlabs/Widget/Newmember.php:55 msgid "View your network stream" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:59 +#: ../../Zotlabs/Widget/Newmember.php:61 msgid "Documentation" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:62 +#: ../../Zotlabs/Widget/Newmember.php:64 msgid "Missing Features?" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:64 +#: ../../Zotlabs/Widget/Newmember.php:66 msgid "Pin apps to navigation bar" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:65 +#: ../../Zotlabs/Widget/Newmember.php:67 msgid "Install more apps" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:76 +#: ../../Zotlabs/Widget/Newmember.php:78 msgid "View public stream" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:80 -#: ../../Zotlabs/Module/Settings/Display.php:201 +#: ../../Zotlabs/Widget/Newmember.php:82 +#: ../../Zotlabs/Module/Settings/Display.php:202 msgid "New Member Links" msgstr "" @@ -7987,24 +7969,24 @@ msgstr "" #: ../../Zotlabs/Widget/Album.php:103 ../../Zotlabs/Widget/Portfolio.php:114 #: ../../Zotlabs/Widget/Cdav.php:152 ../../Zotlabs/Widget/Cdav.php:188 -#: ../../Zotlabs/Storage/Browser.php:546 -#: ../../Zotlabs/Module/Cover_photo.php:380 +#: ../../Zotlabs/Storage/Browser.php:547 +#: ../../Zotlabs/Module/Cover_photo.php:381 #: ../../Zotlabs/Module/Embedphotos.php:189 -#: ../../Zotlabs/Module/Profile_photo.php:546 +#: ../../Zotlabs/Module/Profile_photo.php:547 #: ../../Zotlabs/Module/Photos.php:681 msgid "Upload" msgstr "" -#: ../../Zotlabs/Widget/Pinned.php:93 +#: ../../Zotlabs/Widget/Pinned.php:95 msgid "Share This" msgstr "" -#: ../../Zotlabs/Widget/Pinned.php:116 ../../Zotlabs/Widget/Pinned.php:117 +#: ../../Zotlabs/Widget/Pinned.php:118 ../../Zotlabs/Widget/Pinned.php:119 #, php-format msgid "View %s's profile - %s" msgstr "" -#: ../../Zotlabs/Widget/Pinned.php:150 +#: ../../Zotlabs/Widget/Pinned.php:152 msgid "Don't show" msgstr "" @@ -8148,7 +8130,7 @@ msgid "Stream Filters" msgstr "" #: ../../Zotlabs/Widget/Channel_activities.php:29 -#: ../../Zotlabs/Module/Go.php:27 +#: ../../Zotlabs/Module/Go.php:28 msgid "Welcome" msgstr "" @@ -8201,14 +8183,14 @@ msgstr "" msgid "Refresh" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Site.php:400 +#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Site.php:401 msgid "Site" msgstr "" #: ../../Zotlabs/Widget/Admin.php:28 #: ../../Zotlabs/Module/Admin/Accounts.php:308 #: ../../Zotlabs/Module/Admin/Accounts.php:327 -#: ../../Zotlabs/Module/Admin.php:95 +#: ../../Zotlabs/Module/Admin.php:97 msgid "Accounts" msgstr "" @@ -8217,17 +8199,17 @@ msgid "Member registrations waiting for confirmation" msgstr "" #: ../../Zotlabs/Widget/Admin.php:30 -#: ../../Zotlabs/Module/Admin/Security.php:106 +#: ../../Zotlabs/Module/Admin/Security.php:107 msgid "Security" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:32 ../../Zotlabs/Module/Admin/Addons.php:346 -#: ../../Zotlabs/Module/Admin/Addons.php:444 +#: ../../Zotlabs/Widget/Admin.php:32 ../../Zotlabs/Module/Admin/Addons.php:347 +#: ../../Zotlabs/Module/Admin/Addons.php:445 msgid "Addons" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:33 ../../Zotlabs/Module/Admin/Themes.php:138 -#: ../../Zotlabs/Module/Admin/Themes.php:172 +#: ../../Zotlabs/Widget/Admin.php:33 ../../Zotlabs/Module/Admin/Themes.php:139 +#: ../../Zotlabs/Module/Admin/Themes.php:173 msgid "Themes" msgstr "" @@ -8239,7 +8221,7 @@ msgstr "" msgid "Queueworker" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:36 ../../Zotlabs/Module/Admin/Profs.php:168 +#: ../../Zotlabs/Widget/Admin.php:36 ../../Zotlabs/Module/Admin/Profs.php:169 msgid "Profile Fields" msgstr "" @@ -8248,7 +8230,7 @@ msgid "DB updates" msgstr "" #: ../../Zotlabs/Widget/Admin.php:54 ../../Zotlabs/Widget/Admin.php:64 -#: ../../Zotlabs/Module/Admin/Logs.php:83 +#: ../../Zotlabs/Module/Admin/Logs.php:84 msgid "Logs" msgstr "" @@ -8356,10 +8338,10 @@ msgid "Create new CalDAV calendar" msgstr "" #: ../../Zotlabs/Widget/Cdav.php:146 ../../Zotlabs/Widget/Cdav.php:184 -#: ../../Zotlabs/Storage/Browser.php:367 ../../Zotlabs/Storage/Browser.php:544 +#: ../../Zotlabs/Storage/Browser.php:368 ../../Zotlabs/Storage/Browser.php:545 #: ../../Zotlabs/Module/Webpages.php:249 ../../Zotlabs/Module/Connedit.php:747 #: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Module/Menu.php:182 -#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/New_channel.php:189 +#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/New_channel.php:190 #: ../../Zotlabs/Module/Cdav.php:1050 ../../Zotlabs/Module/Cdav.php:1383 msgid "Create" msgstr "" @@ -8421,129 +8403,129 @@ msgstr "" msgid "Privacy groups" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:291 +#: ../../Zotlabs/Storage/Browser.php:292 msgid "Change filename to" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:308 ../../Zotlabs/Storage/Browser.php:393 +#: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:394 msgid "Select a target location" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:309 ../../Zotlabs/Storage/Browser.php:394 +#: ../../Zotlabs/Storage/Browser.php:310 ../../Zotlabs/Storage/Browser.php:395 msgid "Copy to target location" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:310 ../../Zotlabs/Storage/Browser.php:392 +#: ../../Zotlabs/Storage/Browser.php:311 ../../Zotlabs/Storage/Browser.php:393 msgid "Set permissions for all files and sub folders" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:311 +#: ../../Zotlabs/Storage/Browser.php:312 msgid "Notify your contacts about this file" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:350 +#: ../../Zotlabs/Storage/Browser.php:351 msgid "File category" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:364 +#: ../../Zotlabs/Storage/Browser.php:365 msgid "Total" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:366 +#: ../../Zotlabs/Storage/Browser.php:367 msgid "Shared" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:368 +#: ../../Zotlabs/Storage/Browser.php:369 msgid "Add Files" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:383 +#: ../../Zotlabs/Storage/Browser.php:384 #: ../../Zotlabs/Module/Sharedwithme.php:110 msgid "Last Modified" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:384 +#: ../../Zotlabs/Storage/Browser.php:385 msgid "parent" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:389 +#: ../../Zotlabs/Storage/Browser.php:390 #: ../../Zotlabs/Module/Filestorage.php:206 msgid "Copy/paste this code to attach file to a post" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:390 +#: ../../Zotlabs/Storage/Browser.php:391 #: ../../Zotlabs/Module/Filestorage.php:207 msgid "Copy/paste this URL to link file from a web page" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:402 +#: ../../Zotlabs/Storage/Browser.php:403 msgid "Select All" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:403 +#: ../../Zotlabs/Storage/Browser.php:404 msgid "Bulk Actions" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:404 +#: ../../Zotlabs/Storage/Browser.php:405 msgid "Adjust Permissions" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:405 +#: ../../Zotlabs/Storage/Browser.php:406 msgid "Move or Copy" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:408 +#: ../../Zotlabs/Storage/Browser.php:409 msgid "Info" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:409 +#: ../../Zotlabs/Storage/Browser.php:410 msgid "Rename" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:411 +#: ../../Zotlabs/Storage/Browser.php:412 msgid "Attachment BBcode" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:412 +#: ../../Zotlabs/Storage/Browser.php:413 msgid "Embed BBcode" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:413 +#: ../../Zotlabs/Storage/Browser.php:414 msgid "Link BBcode" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:486 +#: ../../Zotlabs/Storage/Browser.php:487 #, php-format msgid "You are using %1$s of your available file storage." msgstr "" -#: ../../Zotlabs/Storage/Browser.php:491 +#: ../../Zotlabs/Storage/Browser.php:492 #, php-format msgid "You are using %1$s of %2$s available file storage. (%3$s%)" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:502 +#: ../../Zotlabs/Storage/Browser.php:503 msgid "WARNING:" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:543 +#: ../../Zotlabs/Storage/Browser.php:544 msgid "Create new folder" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:545 +#: ../../Zotlabs/Storage/Browser.php:546 msgid "Upload file" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:557 +#: ../../Zotlabs/Storage/Browser.php:558 msgid "Drop files here to immediately upload" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:558 +#: ../../Zotlabs/Storage/Browser.php:559 #: ../../Zotlabs/Module/Filestorage.php:211 msgid "Show in your contacts shared folder" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:560 +#: ../../Zotlabs/Storage/Browser.php:561 msgid "" "You can select files via the upload button or drop them right here or into " "an existing folder." @@ -8563,147 +8545,152 @@ msgid "" "non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:36 +#: ../../Zotlabs/Module/Import_progress.php:40 msgid "Item sync completed!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:51 +#: ../../Zotlabs/Module/Import_progress.php:62 +#: ../../Zotlabs/Module/Import_progress.php:111 +msgid "Import host does not seem to be online or compatible" +msgstr "" + +#: ../../Zotlabs/Module/Import_progress.php:73 msgid "Item sync completed but no items were found!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:68 +#: ../../Zotlabs/Module/Import_progress.php:90 msgid "File sync completed!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:83 +#: ../../Zotlabs/Module/Import_progress.php:122 msgid "File sync completed but no files were found!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:98 +#: ../../Zotlabs/Module/Import_progress.php:137 msgid "Channel clone status" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:99 +#: ../../Zotlabs/Module/Import_progress.php:138 msgid "Item sync status" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:100 +#: ../../Zotlabs/Module/Import_progress.php:139 msgid "File sync status" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:107 +#: ../../Zotlabs/Module/Import_progress.php:146 msgid "Channel cloning completed!" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:108 +#: ../../Zotlabs/Module/Import_progress.php:147 msgid "Resume" msgstr "" -#: ../../Zotlabs/Module/Import_progress.php:109 +#: ../../Zotlabs/Module/Import_progress.php:148 msgid "Only resume if sync stalled!" msgstr "" -#: ../../Zotlabs/Module/Display.php:26 ../../Zotlabs/Module/Search.php:23 +#: ../../Zotlabs/Module/Display.php:27 ../../Zotlabs/Module/Search.php:24 #: ../../Zotlabs/Module/Directory.php:72 ../../Zotlabs/Module/Directory.php:77 #: ../../Zotlabs/Module/Viewconnections.php:23 #: ../../Zotlabs/Module/Photos.php:511 msgid "Public access denied." msgstr "" -#: ../../Zotlabs/Module/Display.php:52 ../../Zotlabs/Module/Oep.php:82 -#: ../../Zotlabs/Module/Pubstream.php:54 ../../Zotlabs/Module/Channel.php:194 +#: ../../Zotlabs/Module/Display.php:53 ../../Zotlabs/Module/Oep.php:82 +#: ../../Zotlabs/Module/Pubstream.php:55 ../../Zotlabs/Module/Channel.php:195 msgid "Malformed message id." msgstr "" -#: ../../Zotlabs/Module/Display.php:94 ../../Zotlabs/Module/Network.php:213 -#: ../../Zotlabs/Module/Hq.php:108 ../../Zotlabs/Module/Pubstream.php:97 -#: ../../Zotlabs/Module/Channel.php:278 ../../Zotlabs/Module/Rpost.php:210 +#: ../../Zotlabs/Module/Display.php:95 ../../Zotlabs/Module/Network.php:213 +#: ../../Zotlabs/Module/Hq.php:99 ../../Zotlabs/Module/Pubstream.php:98 +#: ../../Zotlabs/Module/Channel.php:279 ../../Zotlabs/Module/Rpost.php:111 msgid "Reset form" msgstr "" -#: ../../Zotlabs/Module/Display.php:319 ../../Zotlabs/Module/Channel.php:500 +#: ../../Zotlabs/Module/Display.php:320 ../../Zotlabs/Module/Channel.php:501 msgid "" "You must enable javascript for your browser to be able to view this content." msgstr "" -#: ../../Zotlabs/Module/Display.php:339 +#: ../../Zotlabs/Module/Display.php:340 msgid "Article" msgstr "" -#: ../../Zotlabs/Module/Display.php:383 +#: ../../Zotlabs/Module/Display.php:384 msgid "Item has been removed." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:85 -#: ../../Zotlabs/Module/Profile_photo.php:128 +#: ../../Zotlabs/Module/Cover_photo.php:86 +#: ../../Zotlabs/Module/Profile_photo.php:129 msgid "Image uploaded but image cropping failed." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:194 -#: ../../Zotlabs/Module/Cover_photo.php:251 +#: ../../Zotlabs/Module/Cover_photo.php:195 +#: ../../Zotlabs/Module/Cover_photo.php:252 msgid "Cover Photos" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:210 -#: ../../Zotlabs/Module/Profile_photo.php:184 +#: ../../Zotlabs/Module/Cover_photo.php:211 +#: ../../Zotlabs/Module/Profile_photo.php:185 msgid "Image resize failed." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:262 -#: ../../Zotlabs/Module/Profile_photo.php:349 +#: ../../Zotlabs/Module/Cover_photo.php:263 +#: ../../Zotlabs/Module/Profile_photo.php:350 msgid "Image upload failed." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:279 -#: ../../Zotlabs/Module/Profile_photo.php:369 +#: ../../Zotlabs/Module/Cover_photo.php:280 +#: ../../Zotlabs/Module/Profile_photo.php:370 msgid "Unable to process image." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:324 -#: ../../Zotlabs/Module/Cover_photo.php:339 -#: ../../Zotlabs/Module/Profile_photo.php:431 -#: ../../Zotlabs/Module/Profile_photo.php:496 +#: ../../Zotlabs/Module/Cover_photo.php:325 +#: ../../Zotlabs/Module/Cover_photo.php:340 +#: ../../Zotlabs/Module/Profile_photo.php:432 +#: ../../Zotlabs/Module/Profile_photo.php:497 msgid "Photo not available." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:375 +#: ../../Zotlabs/Module/Cover_photo.php:376 msgid "Your cover photo may be visible to anybody on the internet" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:377 +#: ../../Zotlabs/Module/Cover_photo.php:378 msgid "Upload File:" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:378 +#: ../../Zotlabs/Module/Cover_photo.php:379 msgid "Select a profile:" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:379 +#: ../../Zotlabs/Module/Cover_photo.php:380 msgid "Change Cover Photo" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:383 #: ../../Zotlabs/Module/Cover_photo.php:384 -#: ../../Zotlabs/Module/Profile_photo.php:550 +#: ../../Zotlabs/Module/Cover_photo.php:385 #: ../../Zotlabs/Module/Profile_photo.php:551 +#: ../../Zotlabs/Module/Profile_photo.php:552 msgid "Use a photo from your albums" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:395 +#: ../../Zotlabs/Module/Cover_photo.php:396 msgid "Select existing photo" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:412 -#: ../../Zotlabs/Module/Profile_photo.php:580 +#: ../../Zotlabs/Module/Cover_photo.php:413 +#: ../../Zotlabs/Module/Profile_photo.php:581 msgid "Crop Image" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:413 -#: ../../Zotlabs/Module/Profile_photo.php:581 +#: ../../Zotlabs/Module/Cover_photo.php:414 +#: ../../Zotlabs/Module/Profile_photo.php:582 msgid "Please adjust the image cropping for optimum viewing." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:415 +#: ../../Zotlabs/Module/Cover_photo.php:416 msgid "Done Editing" msgstr "" @@ -8715,11 +8702,11 @@ msgstr "" msgid "Edit Webpage" msgstr "" -#: ../../Zotlabs/Module/Sse_bs.php:626 +#: ../../Zotlabs/Module/Sse_bs.php:631 msgid "Private forum" msgstr "" -#: ../../Zotlabs/Module/Sse_bs.php:626 +#: ../../Zotlabs/Module/Sse_bs.php:631 msgid "Public forum" msgstr "" @@ -8830,7 +8817,7 @@ msgstr "" msgid "Icon url" msgstr "" -#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Register.php:498 +#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Register.php:501 #: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:156 msgid "Optional" msgstr "" @@ -8863,7 +8850,7 @@ msgstr "" msgid "No such channel" msgstr "" -#: ../../Zotlabs/Module/Network.php:172 ../../Zotlabs/Module/Channel.php:245 +#: ../../Zotlabs/Module/Network.php:172 ../../Zotlabs/Module/Channel.php:246 msgid "Search Results For:" msgstr "" @@ -8968,7 +8955,7 @@ msgid "" msgstr "" #: ../../Zotlabs/Module/Removeme.php:60 ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:282 +#: ../../Zotlabs/Module/Settings/Channel.php:283 msgid "Remove Channel" msgstr "" @@ -9005,12 +8992,12 @@ msgid "Use this form to import existing posts and content from an export file." msgstr "" #: ../../Zotlabs/Module/Import_items.php:123 -#: ../../Zotlabs/Module/Import.php:594 +#: ../../Zotlabs/Module/Import.php:599 msgid "File to Upload" msgstr "" #: ../../Zotlabs/Module/Import_items.php:136 -#: ../../Zotlabs/Module/Import.php:107 +#: ../../Zotlabs/Module/Import.php:108 msgid "Imported file is empty." msgstr "" @@ -9042,7 +9029,7 @@ msgstr "" msgid "Webpages import completed" msgstr "" -#: ../../Zotlabs/Module/Regdir.php:52 ../../Zotlabs/Module/Dirsearch.php:23 +#: ../../Zotlabs/Module/Regdir.php:53 ../../Zotlabs/Module/Dirsearch.php:24 msgid "This site is not a directory server" msgstr "" @@ -9156,7 +9143,7 @@ msgid "This action is permanent and can not be undone!" msgstr "" #: ../../Zotlabs/Module/Removeaccount.php:61 -#: ../../Zotlabs/Module/Settings/Account.php:111 +#: ../../Zotlabs/Module/Settings/Account.php:113 msgid "Remove Account" msgstr "" @@ -9406,15 +9393,15 @@ msgstr "" #: ../../Zotlabs/Module/Contactedit.php:409 #: ../../Zotlabs/Module/Connedit.php:706 -#: ../../Zotlabs/Module/Settings/Channel.php:286 +#: ../../Zotlabs/Module/Settings/Channel.php:287 msgid "Only import posts with this text" msgstr "" #: ../../Zotlabs/Module/Contactedit.php:409 #: ../../Zotlabs/Module/Contactedit.php:410 #: ../../Zotlabs/Module/Connedit.php:706 ../../Zotlabs/Module/Connedit.php:707 -#: ../../Zotlabs/Module/Admin/Site.php:500 #: ../../Zotlabs/Module/Admin/Site.php:501 +#: ../../Zotlabs/Module/Admin/Site.php:502 msgid "" "words one per line or #tags or /patterns/ or lang=xx, leave blank to import " "all posts" @@ -9422,7 +9409,7 @@ msgstr "" #: ../../Zotlabs/Module/Contactedit.php:410 #: ../../Zotlabs/Module/Connedit.php:707 -#: ../../Zotlabs/Module/Settings/Channel.php:285 +#: ../../Zotlabs/Module/Settings/Channel.php:286 msgid "Do not import posts with this text" msgstr "" @@ -9608,146 +9595,146 @@ msgstr "" msgid "Delete this connection" msgstr "" -#: ../../Zotlabs/Module/Search.php:250 +#: ../../Zotlabs/Module/Search.php:251 #, php-format msgid "Items tagged with: %s" msgstr "" -#: ../../Zotlabs/Module/Search.php:252 +#: ../../Zotlabs/Module/Search.php:253 #, php-format msgid "Search results for: %s" msgstr "" -#: ../../Zotlabs/Module/Register.php:112 +#: ../../Zotlabs/Module/Register.php:113 msgid "Email address required" msgstr "" -#: ../../Zotlabs/Module/Register.php:156 +#: ../../Zotlabs/Module/Register.php:157 msgid "No password provided" msgstr "" -#: ../../Zotlabs/Module/Register.php:179 +#: ../../Zotlabs/Module/Register.php:180 msgid "Terms of Service not accepted" msgstr "" -#: ../../Zotlabs/Module/Register.php:241 +#: ../../Zotlabs/Module/Register.php:242 msgid "Invitation code succesfully applied" msgstr "" -#: ../../Zotlabs/Module/Register.php:261 +#: ../../Zotlabs/Module/Register.php:262 msgid "Invitation not in time or too late" msgstr "" -#: ../../Zotlabs/Module/Register.php:267 +#: ../../Zotlabs/Module/Register.php:268 msgid "Invitation email failed" msgstr "" -#: ../../Zotlabs/Module/Register.php:275 +#: ../../Zotlabs/Module/Register.php:276 msgid "Invitation code failed" msgstr "" -#: ../../Zotlabs/Module/Register.php:282 +#: ../../Zotlabs/Module/Register.php:283 msgid "Invitations are not available" msgstr "" -#: ../../Zotlabs/Module/Register.php:292 +#: ../../Zotlabs/Module/Register.php:293 msgid "Registration on this hub is by invitation only" msgstr "" -#: ../../Zotlabs/Module/Register.php:399 +#: ../../Zotlabs/Module/Register.php:400 msgid "New register request" msgstr "" -#: ../../Zotlabs/Module/Register.php:417 +#: ../../Zotlabs/Module/Register.php:418 msgid "Error creating dId A" msgstr "" -#: ../../Zotlabs/Module/Register.php:435 +#: ../../Zotlabs/Module/Register.php:437 msgid "Registration on this hub is disabled." msgstr "" -#: ../../Zotlabs/Module/Register.php:444 +#: ../../Zotlabs/Module/Register.php:446 +msgid "Why do you want to join this hub?" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:446 +msgid "This will help to review your registration" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:447 msgid "Registration on this hub is by approval only." msgstr "" -#: ../../Zotlabs/Module/Register.php:445 +#: ../../Zotlabs/Module/Register.php:448 msgid "Register at another affiliated hub in case when prefered" msgstr "" -#: ../../Zotlabs/Module/Register.php:458 +#: ../../Zotlabs/Module/Register.php:461 msgid "Registration on this hub is by invitation only." msgstr "" -#: ../../Zotlabs/Module/Register.php:459 +#: ../../Zotlabs/Module/Register.php:462 msgid "Register at another affiliated hub" msgstr "" -#: ../../Zotlabs/Module/Register.php:473 ../../Zotlabs/Module/Siteinfo.php:28 +#: ../../Zotlabs/Module/Register.php:476 ../../Zotlabs/Module/Siteinfo.php:29 msgid "Terms of Service" msgstr "" -#: ../../Zotlabs/Module/Register.php:479 +#: ../../Zotlabs/Module/Register.php:482 #, php-format msgid "I accept the %s for this website" msgstr "" -#: ../../Zotlabs/Module/Register.php:486 +#: ../../Zotlabs/Module/Register.php:489 #, php-format msgid "I am over %s years of age and accept the %s for this website" msgstr "" -#: ../../Zotlabs/Module/Register.php:496 +#: ../../Zotlabs/Module/Register.php:499 msgid "Your email address" msgstr "" -#: ../../Zotlabs/Module/Register.php:503 +#: ../../Zotlabs/Module/Register.php:506 msgid "Choose a password" msgstr "" -#: ../../Zotlabs/Module/Register.php:504 +#: ../../Zotlabs/Module/Register.php:507 msgid "Please re-enter your password" msgstr "" -#: ../../Zotlabs/Module/Register.php:506 +#: ../../Zotlabs/Module/Register.php:509 msgid "Please enter your invitation code" msgstr "" -#: ../../Zotlabs/Module/Register.php:508 +#: ../../Zotlabs/Module/Register.php:511 msgid "Your name" msgstr "" -#: ../../Zotlabs/Module/Register.php:508 +#: ../../Zotlabs/Module/Register.php:511 msgid "Real name is preferred" msgstr "" -#: ../../Zotlabs/Module/Register.php:510 -#: ../../Zotlabs/Module/New_channel.php:177 +#: ../../Zotlabs/Module/Register.php:513 +#: ../../Zotlabs/Module/New_channel.php:178 msgid "Choose a short nickname" msgstr "" -#: ../../Zotlabs/Module/Register.php:510 +#: ../../Zotlabs/Module/Register.php:513 msgid "" "Your nickname will be used to create an easy to remember channel address" msgstr "" -#: ../../Zotlabs/Module/Register.php:514 -msgid "Why do you want to join this hub?" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:514 -msgid "This will help to review your registration" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:520 -#: ../../Zotlabs/Module/Admin/Site.php:402 +#: ../../Zotlabs/Module/Register.php:521 +#: ../../Zotlabs/Module/Admin/Site.php:403 msgid "Registration" msgstr "" -#: ../../Zotlabs/Module/Register.php:528 +#: ../../Zotlabs/Module/Register.php:529 msgid "I have an invite code" msgstr "" -#: ../../Zotlabs/Module/Register.php:575 +#: ../../Zotlabs/Module/Register.php:576 msgid "" "This site has exceeded the number of allowed daily account registrations." msgstr "" @@ -9835,24 +9822,24 @@ msgstr "" msgid "Duplicate post suppressed." msgstr "" -#: ../../Zotlabs/Module/Item.php:1343 +#: ../../Zotlabs/Module/Item.php:1348 msgid "System error. Post not saved." msgstr "" -#: ../../Zotlabs/Module/Item.php:1377 +#: ../../Zotlabs/Module/Item.php:1382 msgid "Your comment is awaiting approval." msgstr "" -#: ../../Zotlabs/Module/Item.php:1514 +#: ../../Zotlabs/Module/Item.php:1519 msgid "Unable to obtain post information from database." msgstr "" -#: ../../Zotlabs/Module/Item.php:1521 +#: ../../Zotlabs/Module/Item.php:1526 #, php-format msgid "You have reached your limit of %1$.0f top level posts." msgstr "" -#: ../../Zotlabs/Module/Item.php:1528 +#: ../../Zotlabs/Module/Item.php:1533 #, php-format msgid "You have reached your limit of %1$.0f webpages." msgstr "" @@ -10041,8 +10028,8 @@ msgid "Website" msgstr "" #: ../../Zotlabs/Module/Connedit.php:739 ../../Zotlabs/Module/Locs.php:122 -#: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Profiles.php:468 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Admin/Channels.php:182 +#: ../../Zotlabs/Module/Profiles.php:469 ../../Zotlabs/Module/Cdav.php:1375 msgid "Address" msgstr "" @@ -10082,7 +10069,7 @@ msgstr "" msgid "ZIP Code" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:757 ../../Zotlabs/Module/Profiles.php:769 +#: ../../Zotlabs/Module/Connedit.php:757 ../../Zotlabs/Module/Profiles.php:772 #: ../../Zotlabs/Module/Cdav.php:1393 msgid "Country" msgstr "" @@ -10224,35 +10211,35 @@ msgstr "" msgid "No entries (some entries may be hidden)." msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:543 +#: ../../Zotlabs/Module/Profile_photo.php:544 msgid "" "This profile photo will be visible to anybody on the internet and may be " "distributed to other websites." msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:543 +#: ../../Zotlabs/Module/Profile_photo.php:544 msgid "" "This profile photo will be visible only to channels with permission to view " "this profile." msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:545 +#: ../../Zotlabs/Module/Profile_photo.php:546 msgid "Use Photo for Profile" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:545 +#: ../../Zotlabs/Module/Profile_photo.php:546 msgid "Change Profile Photo" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:547 +#: ../../Zotlabs/Module/Profile_photo.php:548 msgid "Reset to default" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:561 +#: ../../Zotlabs/Module/Profile_photo.php:562 msgid "Select existing" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:583 +#: ../../Zotlabs/Module/Profile_photo.php:584 msgid "Done editing" msgstr "" @@ -10287,19 +10274,19 @@ msgstr "" msgid "View Connections" msgstr "" -#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 +#: ../../Zotlabs/Module/Api.php:76 ../../Zotlabs/Module/Api.php:97 msgid "Authorize application connection" msgstr "" -#: ../../Zotlabs/Module/Api.php:75 +#: ../../Zotlabs/Module/Api.php:77 msgid "Return to your app and insert this Security Code:" msgstr "" -#: ../../Zotlabs/Module/Api.php:85 +#: ../../Zotlabs/Module/Api.php:87 msgid "Please login to continue." msgstr "" -#: ../../Zotlabs/Module/Api.php:97 +#: ../../Zotlabs/Module/Api.php:99 msgid "" "Do you want to authorize this application to access your posts and contacts, " "and/or create new posts for you?" @@ -10321,7 +10308,7 @@ msgstr "" msgid "The main page content can not be edited!" msgstr "" -#: ../../Zotlabs/Module/Home.php:104 +#: ../../Zotlabs/Module/Home.php:105 #, php-format msgid "Welcome to %s" msgstr "" @@ -10419,11 +10406,11 @@ msgstr "" msgid "Use this form to drop the location if the hub is no longer operating." msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:26 +#: ../../Zotlabs/Module/Pubsites.php:27 msgid "Public Hubs" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:29 +#: ../../Zotlabs/Module/Pubsites.php:30 msgid "" "The listed hubs allow public registration for the $Projectname network. All " "hubs in the network are interlinked so membership on any of them conveys " @@ -10432,31 +10419,31 @@ msgid "" "additional details." msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Hub URL" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Access Type" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Registration Policy" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Stats" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Pubsites.php:36 msgid "Software" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:37 +#: ../../Zotlabs/Module/Pubsites.php:38 msgid "Ratings" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:51 +#: ../../Zotlabs/Module/Pubsites.php:52 msgid "Rate" msgstr "" @@ -10612,15 +10599,15 @@ msgid "Expired" msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:307 -#: ../../Zotlabs/Module/Admin/Themes.php:137 -#: ../../Zotlabs/Module/Admin/Themes.php:171 -#: ../../Zotlabs/Module/Admin/Addons.php:345 -#: ../../Zotlabs/Module/Admin/Addons.php:443 -#: ../../Zotlabs/Module/Admin/Channels.php:145 -#: ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Site.php:397 -#: ../../Zotlabs/Module/Admin/Security.php:105 -#: ../../Zotlabs/Module/Admin.php:140 +#: ../../Zotlabs/Module/Admin/Themes.php:138 +#: ../../Zotlabs/Module/Admin/Themes.php:172 +#: ../../Zotlabs/Module/Admin/Addons.php:346 +#: ../../Zotlabs/Module/Admin/Addons.php:444 +#: ../../Zotlabs/Module/Admin/Channels.php:167 +#: ../../Zotlabs/Module/Admin/Logs.php:83 +#: ../../Zotlabs/Module/Admin/Site.php:398 +#: ../../Zotlabs/Module/Admin/Security.php:106 +#: ../../Zotlabs/Module/Admin.php:142 msgid "Administration" msgstr "" @@ -10717,155 +10704,155 @@ msgstr "" msgid "Message" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:65 +#: ../../Zotlabs/Module/Admin/Queueworker.php:66 msgid "Max queueworker threads" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:67 +#: ../../Zotlabs/Module/Admin/Queueworker.php:68 msgid "Minimum 4, default 4" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:77 +#: ../../Zotlabs/Module/Admin/Queueworker.php:78 msgid "Assume workers dead after" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:79 +#: ../../Zotlabs/Module/Admin/Queueworker.php:80 msgid "Minimum 120, default 300 seconds" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:91 +#: ../../Zotlabs/Module/Admin/Queueworker.php:92 msgid "Pause before starting next task" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:93 +#: ../../Zotlabs/Module/Admin/Queueworker.php:94 msgid "Minimum 100, default 100 microseconds" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:102 +#: ../../Zotlabs/Module/Admin/Queueworker.php:103 msgid "Automatically adjust pause before starting next task" msgstr "" -#: ../../Zotlabs/Module/Admin/Queueworker.php:111 +#: ../../Zotlabs/Module/Admin/Queueworker.php:112 msgid "Queueworker Settings" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:26 +#: ../../Zotlabs/Module/Admin/Themes.php:27 msgid "Theme settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:61 +#: ../../Zotlabs/Module/Admin/Themes.php:62 msgid "No themes found." msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:110 -#: ../../Zotlabs/Module/Admin/Addons.php:314 +#: ../../Zotlabs/Module/Admin/Themes.php:111 +#: ../../Zotlabs/Module/Admin/Addons.php:315 msgid "Disable" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:112 -#: ../../Zotlabs/Module/Admin/Addons.php:317 +#: ../../Zotlabs/Module/Admin/Themes.php:113 +#: ../../Zotlabs/Module/Admin/Addons.php:318 msgid "Enable" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:131 +#: ../../Zotlabs/Module/Admin/Themes.php:132 msgid "Screenshot" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:139 -#: ../../Zotlabs/Module/Admin/Addons.php:347 +#: ../../Zotlabs/Module/Admin/Themes.php:140 +#: ../../Zotlabs/Module/Admin/Addons.php:348 msgid "Toggle" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:149 -#: ../../Zotlabs/Module/Admin/Addons.php:355 +#: ../../Zotlabs/Module/Admin/Themes.php:150 +#: ../../Zotlabs/Module/Admin/Addons.php:356 msgid "Author: " msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:150 -#: ../../Zotlabs/Module/Admin/Addons.php:356 +#: ../../Zotlabs/Module/Admin/Themes.php:151 +#: ../../Zotlabs/Module/Admin/Addons.php:357 msgid "Maintainer: " msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:177 +#: ../../Zotlabs/Module/Admin/Themes.php:178 msgid "[Experimental]" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:178 +#: ../../Zotlabs/Module/Admin/Themes.php:179 msgid "[Unsupported]" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:293 +#: ../../Zotlabs/Module/Admin/Addons.php:294 #, php-format msgid "Plugin %s disabled." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:298 +#: ../../Zotlabs/Module/Admin/Addons.php:299 #, php-format msgid "Plugin %s enabled." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:357 +#: ../../Zotlabs/Module/Admin/Addons.php:358 msgid "Minimum project version: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:358 +#: ../../Zotlabs/Module/Admin/Addons.php:359 msgid "Maximum project version: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:359 +#: ../../Zotlabs/Module/Admin/Addons.php:360 msgid "Minimum PHP version: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:360 +#: ../../Zotlabs/Module/Admin/Addons.php:361 msgid "Compatible Server Roles: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:361 +#: ../../Zotlabs/Module/Admin/Addons.php:362 msgid "Requires: " msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:362 -#: ../../Zotlabs/Module/Admin/Addons.php:449 +#: ../../Zotlabs/Module/Admin/Addons.php:363 +#: ../../Zotlabs/Module/Admin/Addons.php:450 msgid "Disabled - version incompatibility" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:418 +#: ../../Zotlabs/Module/Admin/Addons.php:419 msgid "Enter the public git repository URL of the addon repo." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:419 +#: ../../Zotlabs/Module/Admin/Addons.php:420 msgid "Addon repo git URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:420 +#: ../../Zotlabs/Module/Admin/Addons.php:421 msgid "Custom repo name" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:420 +#: ../../Zotlabs/Module/Admin/Addons.php:421 msgid "(optional)" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:421 +#: ../../Zotlabs/Module/Admin/Addons.php:422 msgid "Download Addon Repo" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:428 +#: ../../Zotlabs/Module/Admin/Addons.php:429 msgid "Install new repo" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:452 +#: ../../Zotlabs/Module/Admin/Addons.php:453 msgid "Manage Repos" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:453 +#: ../../Zotlabs/Module/Admin/Addons.php:454 msgid "Installed Addon Repositories" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:454 +#: ../../Zotlabs/Module/Admin/Addons.php:455 msgid "Install a New Addon Repository" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:461 +#: ../../Zotlabs/Module/Admin/Addons.php:462 msgid "Switch branch" msgstr "" @@ -10878,158 +10865,159 @@ msgstr "" msgid "Manage Additional Features" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:89 +#: ../../Zotlabs/Module/Admin/Profs.php:90 msgid "New Profile Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:90 -#: ../../Zotlabs/Module/Admin/Profs.php:110 +#: ../../Zotlabs/Module/Admin/Profs.php:91 +#: ../../Zotlabs/Module/Admin/Profs.php:111 msgid "Field nickname" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:90 -#: ../../Zotlabs/Module/Admin/Profs.php:110 -msgid "System name of field" -msgstr "" - #: ../../Zotlabs/Module/Admin/Profs.php:91 #: ../../Zotlabs/Module/Admin/Profs.php:111 -msgid "Input type" +msgid "System name of field" msgstr "" #: ../../Zotlabs/Module/Admin/Profs.php:92 #: ../../Zotlabs/Module/Admin/Profs.php:112 -msgid "Field Name" +msgid "Input type" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:92 -#: ../../Zotlabs/Module/Admin/Profs.php:112 -msgid "Label on profile pages" +#: ../../Zotlabs/Module/Admin/Profs.php:93 +#: ../../Zotlabs/Module/Admin/Profs.php:113 +msgid "Field Name" msgstr "" #: ../../Zotlabs/Module/Admin/Profs.php:93 #: ../../Zotlabs/Module/Admin/Profs.php:113 +msgid "Label on profile pages" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Profs.php:94 +#: ../../Zotlabs/Module/Admin/Profs.php:114 msgid "Help text" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:93 -#: ../../Zotlabs/Module/Admin/Profs.php:113 +#: ../../Zotlabs/Module/Admin/Profs.php:94 +#: ../../Zotlabs/Module/Admin/Profs.php:114 msgid "Additional info (optional)" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:103 +#: ../../Zotlabs/Module/Admin/Profs.php:104 msgid "Field definition not found" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:109 +#: ../../Zotlabs/Module/Admin/Profs.php:110 msgid "Edit Profile Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:169 +#: ../../Zotlabs/Module/Admin/Profs.php:170 msgid "Basic Profile Fields" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:170 +#: ../../Zotlabs/Module/Admin/Profs.php:171 msgid "Advanced Profile Fields" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:170 +#: ../../Zotlabs/Module/Admin/Profs.php:171 msgid "(In addition to basic fields)" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:172 +#: ../../Zotlabs/Module/Admin/Profs.php:173 msgid "All available fields" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:173 +#: ../../Zotlabs/Module/Admin/Profs.php:174 msgid "Custom Fields" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:177 +#: ../../Zotlabs/Module/Admin/Profs.php:178 msgid "Create Custom Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:31 +#: ../../Zotlabs/Module/Admin/Channels.php:28 +#: ../../Zotlabs/Module/Admin/Channels.php:80 +msgid "Channel not found" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Channels.php:48 #, php-format msgid "%s channel censored/uncensored" msgid_plural "%s channels censored/uncensored" msgstr[0] "" msgstr[1] "" -#: ../../Zotlabs/Module/Admin/Channels.php:40 +#: ../../Zotlabs/Module/Admin/Channels.php:57 #, php-format msgid "%s channel code allowed/disallowed" msgid_plural "%s channels code allowed/disallowed" msgstr[0] "" msgstr[1] "" -#: ../../Zotlabs/Module/Admin/Channels.php:46 +#: ../../Zotlabs/Module/Admin/Channels.php:63 #, php-format msgid "%s channel deleted" msgid_plural "%s channels deleted" msgstr[0] "" msgstr[1] "" -#: ../../Zotlabs/Module/Admin/Channels.php:65 -msgid "Channel not found" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:75 +#: ../../Zotlabs/Module/Admin/Channels.php:90 #, php-format msgid "Channel '%s' deleted" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:87 +#: ../../Zotlabs/Module/Admin/Channels.php:109 #, php-format msgid "Channel '%s' censored" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:87 +#: ../../Zotlabs/Module/Admin/Channels.php:109 #, php-format msgid "Channel '%s' uncensored" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:98 +#: ../../Zotlabs/Module/Admin/Channels.php:120 #, php-format msgid "Channel '%s' code allowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:98 +#: ../../Zotlabs/Module/Admin/Channels.php:120 #, php-format msgid "Channel '%s' code disallowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:148 +#: ../../Zotlabs/Module/Admin/Channels.php:170 msgid "select all" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:150 +#: ../../Zotlabs/Module/Admin/Channels.php:172 msgid "Censor" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:151 +#: ../../Zotlabs/Module/Admin/Channels.php:173 msgid "Uncensor" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:152 +#: ../../Zotlabs/Module/Admin/Channels.php:174 msgid "Allow Code" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:153 +#: ../../Zotlabs/Module/Admin/Channels.php:175 msgid "Disallow Code" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:158 +#: ../../Zotlabs/Module/Admin/Channels.php:180 msgid "UID" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:162 +#: ../../Zotlabs/Module/Admin/Channels.php:184 msgid "" "Selected channels will be deleted!\\n\\nEverything that was posted in these " "channels on this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:163 +#: ../../Zotlabs/Module/Admin/Channels.php:185 msgid "" "The channel {0} will be deleted!\\n\\nEverything that was posted in this " "channel on this site will be permanently deleted!\\n\\nAre you sure?" @@ -11123,29 +11111,29 @@ msgstr "" msgid "No failed updates." msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:28 +#: ../../Zotlabs/Module/Admin/Logs.php:29 msgid "Log settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:85 +#: ../../Zotlabs/Module/Admin/Logs.php:86 msgid "Clear" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:91 +#: ../../Zotlabs/Module/Admin/Logs.php:92 msgid "Debugging" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:92 +#: ../../Zotlabs/Module/Admin/Logs.php:93 msgid "Log file" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:92 +#: ../../Zotlabs/Module/Admin/Logs.php:93 msgid "" "Must be writable by web server. Relative to your top-level webserver " "directory." msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:93 +#: ../../Zotlabs/Module/Admin/Logs.php:94 msgid "Log level" msgstr "" @@ -11177,668 +11165,668 @@ msgstr "" msgid "Last known contact" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:111 +#: ../../Zotlabs/Module/Admin/Site.php:112 msgid "Invalid input" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:131 +#: ../../Zotlabs/Module/Admin/Site.php:132 msgid "Errors" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:219 +#: ../../Zotlabs/Module/Admin/Site.php:220 msgid "Site settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:242 -#: ../../Zotlabs/Module/Settings/Display.php:116 +#: ../../Zotlabs/Module/Admin/Site.php:243 +#: ../../Zotlabs/Module/Settings/Display.php:117 #, php-format msgid "%s - (Incompatible)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:249 +#: ../../Zotlabs/Module/Admin/Site.php:250 msgid "mobile" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:251 +#: ../../Zotlabs/Module/Admin/Site.php:252 msgid "experimental" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:253 +#: ../../Zotlabs/Module/Admin/Site.php:254 msgid "unsupported" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Yes - with approval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "My site is not a public server" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "My site has paid access only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:317 msgid "My site has free access only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:317 +#: ../../Zotlabs/Module/Admin/Site.php:318 msgid "My site offers free accounts with optional paid upgrades" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:335 +#: ../../Zotlabs/Module/Admin/Site.php:336 msgid "Default permission role for new accounts" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:335 +#: ../../Zotlabs/Module/Admin/Site.php:336 msgid "" "This role will be used for the first channel created after registration." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:342 ../../Zotlabs/Module/Invite.php:410 +#: ../../Zotlabs/Module/Admin/Site.php:343 ../../Zotlabs/Module/Invite.php:411 msgid "Minute(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:343 ../../Zotlabs/Module/Invite.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:344 ../../Zotlabs/Module/Invite.php:412 msgid "Hour(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:344 ../../Zotlabs/Module/Invite.php:412 +#: ../../Zotlabs/Module/Admin/Site.php:345 ../../Zotlabs/Module/Invite.php:413 msgid "Day(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:345 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "Week(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:346 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "Month(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:347 +#: ../../Zotlabs/Module/Admin/Site.php:348 msgid "Year(s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:355 +#: ../../Zotlabs/Module/Admin/Site.php:356 msgid "Register verification delay" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:358 +#: ../../Zotlabs/Module/Admin/Site.php:359 msgid "Time to wait before a registration can be verified" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:361 -#: ../../Zotlabs/Module/Admin/Site.php:383 ../../Zotlabs/Module/Invite.php:421 +#: ../../Zotlabs/Module/Admin/Site.php:362 +#: ../../Zotlabs/Module/Admin/Site.php:384 ../../Zotlabs/Module/Invite.php:422 msgid "duration up from now" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:377 +#: ../../Zotlabs/Module/Admin/Site.php:378 msgid "Register verification expiration time" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:380 +#: ../../Zotlabs/Module/Admin/Site.php:381 msgid "Time before an unverified registration will expire" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:403 +#: ../../Zotlabs/Module/Admin/Site.php:404 msgid "File upload" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:404 +#: ../../Zotlabs/Module/Admin/Site.php:405 msgid "Policies" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:412 msgid "Banner/Logo" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:411 +#: ../../Zotlabs/Module/Admin/Site.php:412 msgid "Unfiltered HTML/CSS/JS is allowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:412 +#: ../../Zotlabs/Module/Admin/Site.php:413 msgid "Administrator Information" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:412 +#: ../../Zotlabs/Module/Admin/Site.php:413 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:413 ../../Zotlabs/Module/Siteinfo.php:24 +#: ../../Zotlabs/Module/Admin/Site.php:414 ../../Zotlabs/Module/Siteinfo.php:25 msgid "Site Information" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:413 +#: ../../Zotlabs/Module/Admin/Site.php:414 msgid "" "Publicly visible description of this site. Displayed on siteinfo page. " "BBCode can be used here" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:414 +#: ../../Zotlabs/Module/Admin/Site.php:415 msgid "System theme" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:414 +#: ../../Zotlabs/Module/Admin/Site.php:415 msgid "" "Default system theme - may be over-ridden by user profiles - change theme settings" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:417 +#: ../../Zotlabs/Module/Admin/Site.php:418 msgid "Allow Feeds as Connections" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:417 +#: ../../Zotlabs/Module/Admin/Site.php:418 msgid "(Heavy system resource usage)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:418 +#: ../../Zotlabs/Module/Admin/Site.php:419 msgid "Maximum image size" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:418 +#: ../../Zotlabs/Module/Admin/Site.php:419 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:419 +#: ../../Zotlabs/Module/Admin/Site.php:420 msgid "Minimum age" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:419 +#: ../../Zotlabs/Module/Admin/Site.php:420 msgid "Minimum age (in years) for who may register on this site." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:420 +#: ../../Zotlabs/Module/Admin/Site.php:421 msgid "Which best describes the types of account offered by this hub?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:420 +#: ../../Zotlabs/Module/Admin/Site.php:421 msgid "This is displayed on the public server site list." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:426 +#: ../../Zotlabs/Module/Admin/Site.php:427 msgid "Register text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:428 +#: ../../Zotlabs/Module/Admin/Site.php:429 msgid "This text will be displayed prominently at the registration page" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:432 +#: ../../Zotlabs/Module/Admin/Site.php:433 msgid "Does this site allow new member registration?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:439 +#: ../../Zotlabs/Module/Admin/Site.php:440 msgid "Configure the registration open days/hours" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:441 +#: ../../Zotlabs/Module/Admin/Site.php:442 msgid "Empty or '-:-' value will keep registration open 24/7 (default)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:442 +#: ../../Zotlabs/Module/Admin/Site.php:443 msgid "" "Weekdays and hours must be separated by colon ':', From-To ranges with a " "dash `-` example: 1:800-1200" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:443 +#: ../../Zotlabs/Module/Admin/Site.php:444 msgid "" "Weekday:Hour pairs must be separated by space ' ' example: 1:900-1700 " "2:900-1700" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:444 +#: ../../Zotlabs/Module/Admin/Site.php:445 msgid "" "From-To ranges must be separated by comma ',' example: 1:800-1200,1300-1700 " "or 1-2,4-5:900-1700" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:445 +#: ../../Zotlabs/Module/Admin/Site.php:446 msgid "Advanced examples:" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:445 -#: ../../Zotlabs/Module/Settings/Channel.php:183 +#: ../../Zotlabs/Module/Admin/Site.php:446 +#: ../../Zotlabs/Module/Settings/Channel.php:184 msgid "or" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:446 +#: ../../Zotlabs/Module/Admin/Site.php:447 msgid "Check your configuration" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:450 +#: ../../Zotlabs/Module/Admin/Site.php:451 msgid "Max account registrations per day" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:452 +#: ../../Zotlabs/Module/Admin/Site.php:453 msgid "Unlimited if zero or no value - default 50" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:456 +#: ../../Zotlabs/Module/Admin/Site.php:457 msgid "Max account registrations from same IP" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:458 +#: ../../Zotlabs/Module/Admin/Site.php:459 msgid "Unlimited if zero or no value - default 3" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:464 +#: ../../Zotlabs/Module/Admin/Site.php:465 msgid "Auto channel create" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:466 +#: ../../Zotlabs/Module/Admin/Site.php:467 msgid "" "If disabled the channel will be created in a separate step during the " "registration process" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:470 +#: ../../Zotlabs/Module/Admin/Site.php:471 msgid "Require invite code" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:475 +#: ../../Zotlabs/Module/Admin/Site.php:476 msgid "Allow invite code" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:480 +#: ../../Zotlabs/Module/Admin/Site.php:481 msgid "Require email address" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:482 +#: ../../Zotlabs/Module/Admin/Site.php:483 msgid "The provided email address will be verified (recommended)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:486 +#: ../../Zotlabs/Module/Admin/Site.php:487 msgid "Abandon account after x days" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:488 +#: ../../Zotlabs/Module/Admin/Site.php:489 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:493 +#: ../../Zotlabs/Module/Admin/Site.php:494 msgid "Site homepage to show visitors (default: login box)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:493 +#: ../../Zotlabs/Module/Admin/Site.php:494 msgid "" "example: 'pubstream' to show public stream, 'page/sys/home' to show a system " "webpage called 'home' or 'include:home.html' to include a file." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:494 +#: ../../Zotlabs/Module/Admin/Site.php:495 msgid "Preserve site homepage URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:494 +#: ../../Zotlabs/Module/Admin/Site.php:495 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:495 +#: ../../Zotlabs/Module/Admin/Site.php:496 msgid "Allowed friend domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:495 +#: ../../Zotlabs/Module/Admin/Site.php:496 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:496 +#: ../../Zotlabs/Module/Admin/Site.php:497 msgid "Force publish" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:496 +#: ../../Zotlabs/Module/Admin/Site.php:497 msgid "" "Check to force all profiles on this site to be listed in the site directory" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:497 +#: ../../Zotlabs/Module/Admin/Site.php:498 msgid "Enable public stream" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:497 +#: ../../Zotlabs/Module/Admin/Site.php:498 msgid "Enable the public stream. Warning: this content is unmoderated" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:498 +#: ../../Zotlabs/Module/Admin/Site.php:499 msgid "Site only public stream" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:498 +#: ../../Zotlabs/Module/Admin/Site.php:499 msgid "Restrict the public stream to content originating at this site" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:499 +#: ../../Zotlabs/Module/Admin/Site.php:500 msgid "Allow anybody on the internet to access the public streams" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:499 +#: ../../Zotlabs/Module/Admin/Site.php:500 msgid "Disable to require authentication before viewing" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:500 +#: ../../Zotlabs/Module/Admin/Site.php:501 msgid "Only import Public stream posts with this text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:501 +#: ../../Zotlabs/Module/Admin/Site.php:502 msgid "Do not import Public stream posts with this text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:504 +#: ../../Zotlabs/Module/Admin/Site.php:505 msgid "Login on Homepage" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:504 +#: ../../Zotlabs/Module/Admin/Site.php:505 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:505 +#: ../../Zotlabs/Module/Admin/Site.php:506 msgid "Enable context help" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:505 +#: ../../Zotlabs/Module/Admin/Site.php:506 msgid "" "Display contextual help for the current page when the help button is pressed." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:507 +#: ../../Zotlabs/Module/Admin/Site.php:508 msgid "Reply-to email address for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:508 +#: ../../Zotlabs/Module/Admin/Site.php:509 msgid "Sender (From) email address for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:509 +#: ../../Zotlabs/Module/Admin/Site.php:510 msgid "Name of email sender for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:511 +#: ../../Zotlabs/Module/Admin/Site.php:512 msgid "Directory Server URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:511 +#: ../../Zotlabs/Module/Admin/Site.php:512 msgid "Default directory server" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:513 +#: ../../Zotlabs/Module/Admin/Site.php:514 msgid "Enable SSE Notifications" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:513 +#: ../../Zotlabs/Module/Admin/Site.php:514 msgid "" "If disabled, traditional polling will be used. Warning: this setting might " "not be suited for shared hosting" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:515 +#: ../../Zotlabs/Module/Admin/Site.php:516 msgid "Proxy user" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:516 +#: ../../Zotlabs/Module/Admin/Site.php:517 msgid "Proxy URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:517 +#: ../../Zotlabs/Module/Admin/Site.php:518 msgid "Network timeout" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:517 +#: ../../Zotlabs/Module/Admin/Site.php:518 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:518 +#: ../../Zotlabs/Module/Admin/Site.php:519 msgid "Delivery interval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:518 +#: ../../Zotlabs/Module/Admin/Site.php:519 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:519 +#: ../../Zotlabs/Module/Admin/Site.php:520 msgid "Deliveries per process" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:519 +#: ../../Zotlabs/Module/Admin/Site.php:520 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust " "if necessary to tune system performance. Recommend: 1-5." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:521 +#: ../../Zotlabs/Module/Admin/Site.php:522 msgid "Poll interval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:521 +#: ../../Zotlabs/Module/Admin/Site.php:522 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:522 +#: ../../Zotlabs/Module/Admin/Site.php:523 msgid "Path to ImageMagick convert program" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:522 +#: ../../Zotlabs/Module/Admin/Site.php:523 msgid "" "If set, use this program to generate photo thumbnails for huge images ( > " "4000 pixels in either dimension), otherwise memory exhaustion may occur. " "Example: /usr/bin/convert" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:523 +#: ../../Zotlabs/Module/Admin/Site.php:524 msgid "Maximum Load Average" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:523 +#: ../../Zotlabs/Module/Admin/Site.php:524 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:524 +#: ../../Zotlabs/Module/Admin/Site.php:525 msgid "Expiration period in days for imported (grid/network) content" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:524 +#: ../../Zotlabs/Module/Admin/Site.php:525 msgid "0 for no expiration of imported content" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:525 +#: ../../Zotlabs/Module/Admin/Site.php:526 msgid "" "Do not expire any posts which have comments less than this many days ago" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:526 +#: ../../Zotlabs/Module/Admin/Site.php:527 msgid "" "Public servers: Optional landing (marketing) webpage for new registrants" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:526 +#: ../../Zotlabs/Module/Admin/Site.php:527 #, php-format msgid "Create this page first. Default is %s/register" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:527 +#: ../../Zotlabs/Module/Admin/Site.php:528 msgid "Page to display after creating a new channel" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:527 +#: ../../Zotlabs/Module/Admin/Site.php:528 msgid "Default: profiles" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:528 +#: ../../Zotlabs/Module/Admin/Site.php:529 msgid "Optional: site location" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:528 +#: ../../Zotlabs/Module/Admin/Site.php:529 msgid "Region or country" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:613 #: ../../Zotlabs/Module/Admin/Site.php:614 +#: ../../Zotlabs/Module/Admin/Site.php:615 msgid "Invalid 24h time value (hhmm/hmm)" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:96 +#: ../../Zotlabs/Module/Admin/Security.php:97 msgid "" "By default, unfiltered HTML is allowed in embedded media. This is inherently " "insecure." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:99 +#: ../../Zotlabs/Module/Admin/Security.php:100 msgid "" "The recommended setting is to only allow unfiltered HTML from the following " "sites:" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:100 +#: ../../Zotlabs/Module/Admin/Security.php:101 msgid "" "https://youtube.com/
    https://www.youtube.com/
    https://youtu.be/" "
    https://vimeo.com/
    https://soundcloud.com/
    " msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:101 +#: ../../Zotlabs/Module/Admin/Security.php:102 msgid "" "All other embedded content will be filtered, unless " "embedded content from that site is explicitly blocked." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:108 +#: ../../Zotlabs/Module/Admin/Security.php:109 msgid "Block public" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:108 +#: ../../Zotlabs/Module/Admin/Security.php:109 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently authenticated." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:109 +#: ../../Zotlabs/Module/Admin/Security.php:110 msgid "Provide a cloud root directory" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:109 +#: ../../Zotlabs/Module/Admin/Security.php:110 msgid "" "The cloud root directory lists all channel names which provide public files" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:110 +#: ../../Zotlabs/Module/Admin/Security.php:111 msgid "Show total disk space available to cloud uploads" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:111 +#: ../../Zotlabs/Module/Admin/Security.php:112 msgid "Set \"Transport Security\" HTTP header" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:112 +#: ../../Zotlabs/Module/Admin/Security.php:113 msgid "Set \"Content Security Policy\" HTTP header" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:113 +#: ../../Zotlabs/Module/Admin/Security.php:114 msgid "Allowed email domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:113 +#: ../../Zotlabs/Module/Admin/Security.php:114 msgid "" "Comma separated list of domains which are allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:114 +#: ../../Zotlabs/Module/Admin/Security.php:115 msgid "Not allowed email domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:114 +#: ../../Zotlabs/Module/Admin/Security.php:115 msgid "" "Comma separated list of domains which are not allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains, unless allowed domains have been defined." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:115 +#: ../../Zotlabs/Module/Admin/Security.php:116 msgid "Allow communications only from these sites" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:115 +#: ../../Zotlabs/Module/Admin/Security.php:116 msgid "" "One site per line. Leave empty to allow communication from anywhere by " "default" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:116 +#: ../../Zotlabs/Module/Admin/Security.php:117 msgid "Block communications from these sites" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:117 +#: ../../Zotlabs/Module/Admin/Security.php:118 msgid "Allow communications only from these channels" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:117 +#: ../../Zotlabs/Module/Admin/Security.php:118 msgid "" "One channel (hash) per line. Leave empty to allow from any channel by default" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:118 +#: ../../Zotlabs/Module/Admin/Security.php:119 msgid "Block communications from these channels" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:119 +#: ../../Zotlabs/Module/Admin/Security.php:120 msgid "Only allow embeds from secure (SSL) websites and links." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:120 +#: ../../Zotlabs/Module/Admin/Security.php:121 msgid "Allow unfiltered embedded HTML content only from these domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:120 +#: ../../Zotlabs/Module/Admin/Security.php:121 msgid "One site per line. By default embedded content is filtered." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:121 +#: ../../Zotlabs/Module/Admin/Security.php:122 msgid "Block embedded HTML from these domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:122 +#: ../../Zotlabs/Module/Admin/Security.php:123 msgid "Allow SVG thumbnails in file browser" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:122 +#: ../../Zotlabs/Module/Admin/Security.php:123 msgid "WARNING: SVG images may contain malicious code." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:123 +#: ../../Zotlabs/Module/Admin/Security.php:124 msgid "Allow embedded (inline) PDF files" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:125 +#: ../../Zotlabs/Module/Admin/Security.php:126 msgid "Additional trusted directory server URLs" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:125 +#: ../../Zotlabs/Module/Admin/Security.php:126 msgid "" "Accept directory flags (spam, nsfw) from those servers. One per line like " "https://example.tld" msgstr "" -#: ../../Zotlabs/Module/Manage.php:130 ../../Zotlabs/Module/New_channel.php:147 +#: ../../Zotlabs/Module/Manage.php:130 ../../Zotlabs/Module/New_channel.php:148 #, php-format msgid "You have created %1$.0f of %2$.0f allowed channels." msgstr "" @@ -11873,7 +11861,7 @@ msgid "Delegated Channel" msgstr "" #: ../../Zotlabs/Module/Email_resend.php:12 -#: ../../Zotlabs/Module/Email_validation.php:24 +#: ../../Zotlabs/Module/Email_validation.php:25 msgid "Token verification failed." msgstr "" @@ -11968,7 +11956,7 @@ msgid "Previous" msgstr "" #: ../../Zotlabs/Module/Cal.php:200 ../../Zotlabs/Module/Photos.php:955 -#: ../../Zotlabs/Module/Setup.php:272 ../../Zotlabs/Module/Cdav.php:1027 +#: ../../Zotlabs/Module/Setup.php:275 ../../Zotlabs/Module/Cdav.php:1027 msgid "Next" msgstr "" @@ -12023,55 +12011,55 @@ msgstr "" msgid "Affinity Tool Settings" msgstr "" -#: ../../Zotlabs/Module/Admin.php:96 +#: ../../Zotlabs/Module/Admin.php:98 msgid "Blocked accounts" msgstr "" -#: ../../Zotlabs/Module/Admin.php:97 +#: ../../Zotlabs/Module/Admin.php:99 msgid "Expired accounts" msgstr "" -#: ../../Zotlabs/Module/Admin.php:98 +#: ../../Zotlabs/Module/Admin.php:100 msgid "Expiring accounts" msgstr "" -#: ../../Zotlabs/Module/Admin.php:122 +#: ../../Zotlabs/Module/Admin.php:124 msgid "Message queues" msgstr "" -#: ../../Zotlabs/Module/Admin.php:136 +#: ../../Zotlabs/Module/Admin.php:138 msgid "Your software should be updated" msgstr "" -#: ../../Zotlabs/Module/Admin.php:141 +#: ../../Zotlabs/Module/Admin.php:143 msgid "Summary" msgstr "" -#: ../../Zotlabs/Module/Admin.php:144 +#: ../../Zotlabs/Module/Admin.php:146 msgid "Registered accounts" msgstr "" -#: ../../Zotlabs/Module/Admin.php:145 +#: ../../Zotlabs/Module/Admin.php:147 msgid "Pending registrations" msgstr "" -#: ../../Zotlabs/Module/Admin.php:146 +#: ../../Zotlabs/Module/Admin.php:148 msgid "Registered channels" msgstr "" -#: ../../Zotlabs/Module/Admin.php:147 ../../Zotlabs/Module/Siteinfo.php:41 +#: ../../Zotlabs/Module/Admin.php:149 ../../Zotlabs/Module/Siteinfo.php:42 msgid "Active addons" msgstr "" -#: ../../Zotlabs/Module/Admin.php:148 +#: ../../Zotlabs/Module/Admin.php:150 msgid "Version" msgstr "" -#: ../../Zotlabs/Module/Admin.php:149 +#: ../../Zotlabs/Module/Admin.php:151 msgid "Repository version (master)" msgstr "" -#: ../../Zotlabs/Module/Admin.php:150 +#: ../../Zotlabs/Module/Admin.php:152 msgid "Repository version (dev)" msgstr "" @@ -12146,89 +12134,97 @@ msgstr "" msgid "Lookup xchan beginning with (or webbie): " msgstr "" -#: ../../Zotlabs/Module/Group.php:47 +#: ../../Zotlabs/Module/Group.php:48 msgid "Privacy group created." msgstr "" -#: ../../Zotlabs/Module/Group.php:50 +#: ../../Zotlabs/Module/Group.php:51 msgid "Could not create privacy group." msgstr "" -#: ../../Zotlabs/Module/Group.php:82 +#: ../../Zotlabs/Module/Group.php:83 msgid "Privacy group updated." msgstr "" -#: ../../Zotlabs/Module/Group.php:137 ../../Zotlabs/Module/Group.php:301 +#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:302 msgid "Post to this group by default" msgstr "" -#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:302 +#: ../../Zotlabs/Module/Group.php:139 ../../Zotlabs/Module/Group.php:303 msgid "Add new contacts to this group by default" msgstr "" -#: ../../Zotlabs/Module/Group.php:146 +#: ../../Zotlabs/Module/Group.php:147 msgid "Privacy group name" msgstr "" -#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:249 +#: ../../Zotlabs/Module/Group.php:148 ../../Zotlabs/Module/Group.php:250 msgid "Members are visible to other channels" msgstr "" -#: ../../Zotlabs/Module/Group.php:175 +#: ../../Zotlabs/Module/Group.php:176 msgid "Privacy group removed." msgstr "" -#: ../../Zotlabs/Module/Group.php:178 +#: ../../Zotlabs/Module/Group.php:179 msgid "Unable to remove privacy group." msgstr "" -#: ../../Zotlabs/Module/Group.php:244 +#: ../../Zotlabs/Module/Group.php:245 #, php-format msgid "Privacy Group: %s" msgstr "" -#: ../../Zotlabs/Module/Group.php:246 +#: ../../Zotlabs/Module/Group.php:247 msgid "Privacy group name: " msgstr "" -#: ../../Zotlabs/Module/Group.php:262 +#: ../../Zotlabs/Module/Group.php:263 msgid "Group members" msgstr "" -#: ../../Zotlabs/Module/Group.php:264 +#: ../../Zotlabs/Module/Group.php:265 msgid "Not in this group" msgstr "" -#: ../../Zotlabs/Module/Group.php:296 +#: ../../Zotlabs/Module/Group.php:297 msgid "Click a channel to toggle membership" msgstr "" -#: ../../Zotlabs/Module/Help.php:25 +#: ../../Zotlabs/Module/Help.php:68 msgid "Documentation Search" msgstr "" -#: ../../Zotlabs/Module/Help.php:86 +#: ../../Zotlabs/Module/Help.php:172 +msgid "Not Found" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:225 +msgid "$Projectname Documentation" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:236 +msgid "Contents" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:243 msgid "Members" msgstr "" -#: ../../Zotlabs/Module/Help.php:87 +#: ../../Zotlabs/Module/Help.php:244 msgid "Administrators" msgstr "" -#: ../../Zotlabs/Module/Help.php:88 +#: ../../Zotlabs/Module/Help.php:245 msgid "Developers" msgstr "" -#: ../../Zotlabs/Module/Help.php:89 +#: ../../Zotlabs/Module/Help.php:246 msgid "Tutorials" msgstr "" -#: ../../Zotlabs/Module/Help.php:101 -msgid "$Projectname Documentation" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:102 -msgid "Contents" +#: ../../Zotlabs/Module/Help.php:264 +msgid "Help:" msgstr "" #: ../../Zotlabs/Module/Tagger.php:50 @@ -12240,168 +12236,168 @@ msgstr "" msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: ../../Zotlabs/Module/Invite.php:69 +#: ../../Zotlabs/Module/Invite.php:70 msgid "Invite App" msgstr "" -#: ../../Zotlabs/Module/Invite.php:81 +#: ../../Zotlabs/Module/Invite.php:82 msgid "Register is closed" msgstr "" -#: ../../Zotlabs/Module/Invite.php:115 ../../Zotlabs/Module/Invite.php:562 +#: ../../Zotlabs/Module/Invite.php:116 ../../Zotlabs/Module/Invite.php:563 msgid "Note, the invitation code is valid up to" msgstr "" -#: ../../Zotlabs/Module/Invite.php:128 +#: ../../Zotlabs/Module/Invite.php:129 #, php-format msgid "Too many recipients for one invitation (max %d)" msgstr "" -#: ../../Zotlabs/Module/Invite.php:132 +#: ../../Zotlabs/Module/Invite.php:133 msgid "No recipients for this invitation" msgstr "" -#: ../../Zotlabs/Module/Invite.php:151 +#: ../../Zotlabs/Module/Invite.php:152 #, php-format msgid "(%s) : Not a real email address" msgstr "" -#: ../../Zotlabs/Module/Invite.php:158 +#: ../../Zotlabs/Module/Invite.php:159 #, php-format msgid "(%s) : Not allowed email address" msgstr "" -#: ../../Zotlabs/Module/Invite.php:171 +#: ../../Zotlabs/Module/Invite.php:172 #, php-format msgid "(%s) : email address already in use" msgstr "" -#: ../../Zotlabs/Module/Invite.php:178 +#: ../../Zotlabs/Module/Invite.php:179 #, php-format msgid "(%s) : Accepted email address" msgstr "" -#: ../../Zotlabs/Module/Invite.php:270 +#: ../../Zotlabs/Module/Invite.php:271 #, php-format msgid "To %s : Message delivery success." msgstr "" -#: ../../Zotlabs/Module/Invite.php:302 +#: ../../Zotlabs/Module/Invite.php:303 #, php-format msgid "%1$d mail(s) sent, %2$d mail error(s)" msgstr "" -#: ../../Zotlabs/Module/Invite.php:327 +#: ../../Zotlabs/Module/Invite.php:328 msgid "Invites not proposed by configuration" msgstr "" -#: ../../Zotlabs/Module/Invite.php:328 +#: ../../Zotlabs/Module/Invite.php:329 msgid "Contact the site admin" msgstr "" -#: ../../Zotlabs/Module/Invite.php:344 +#: ../../Zotlabs/Module/Invite.php:345 msgid "Invites by users not enabled" msgstr "" -#: ../../Zotlabs/Module/Invite.php:349 +#: ../../Zotlabs/Module/Invite.php:350 msgid "You have no more invitations available" msgstr "" -#: ../../Zotlabs/Module/Invite.php:365 +#: ../../Zotlabs/Module/Invite.php:366 msgid "Not on xchan" msgstr "" -#: ../../Zotlabs/Module/Invite.php:398 +#: ../../Zotlabs/Module/Invite.php:399 msgid "All users invitation limit exceeded." msgstr "" -#: ../../Zotlabs/Module/Invite.php:416 +#: ../../Zotlabs/Module/Invite.php:417 msgid "Invitation expires after" msgstr "" -#: ../../Zotlabs/Module/Invite.php:517 ../../Zotlabs/Module/Invite.php:556 +#: ../../Zotlabs/Module/Invite.php:518 ../../Zotlabs/Module/Invite.php:557 msgid "Invitation" msgstr "" -#: ../../Zotlabs/Module/Invite.php:547 +#: ../../Zotlabs/Module/Invite.php:548 msgid "Send invitations" msgstr "" -#: ../../Zotlabs/Module/Invite.php:548 +#: ../../Zotlabs/Module/Invite.php:549 msgid "Invitations I am using" msgstr "" -#: ../../Zotlabs/Module/Invite.php:549 +#: ../../Zotlabs/Module/Invite.php:550 msgid "Invitations we are using" msgstr "" -#: ../../Zotlabs/Module/Invite.php:550 +#: ../../Zotlabs/Module/Invite.php:551 msgid "§ Note, the email(s) sent will be recorded in the system logs" msgstr "" -#: ../../Zotlabs/Module/Invite.php:551 +#: ../../Zotlabs/Module/Invite.php:552 msgid "Enter email addresses, one per line:" msgstr "" -#: ../../Zotlabs/Module/Invite.php:552 +#: ../../Zotlabs/Module/Invite.php:553 msgid "Your message:" msgstr "" -#: ../../Zotlabs/Module/Invite.php:553 +#: ../../Zotlabs/Module/Invite.php:554 msgid "Invite template" msgstr "" -#: ../../Zotlabs/Module/Invite.php:555 +#: ../../Zotlabs/Module/Invite.php:556 msgid "Subject:" msgstr "" -#: ../../Zotlabs/Module/Invite.php:561 +#: ../../Zotlabs/Module/Invite.php:562 msgid "Here you may enter personal notes to the recipient(s)" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:21 +#: ../../Zotlabs/Module/Siteinfo.php:22 msgid "About this site" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:22 +#: ../../Zotlabs/Module/Siteinfo.php:23 msgid "Site Name" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:26 +#: ../../Zotlabs/Module/Siteinfo.php:27 msgid "Administrator" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:29 +#: ../../Zotlabs/Module/Siteinfo.php:30 msgid "Software and Project information" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:30 +#: ../../Zotlabs/Module/Siteinfo.php:31 msgid "This site is powered by $Projectname" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:31 +#: ../../Zotlabs/Module/Siteinfo.php:32 msgid "" -"Federated and decentralised networking and identity services provided by Zot" +"Federated and decentralised networking and identity services provided by" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:34 +#: ../../Zotlabs/Module/Siteinfo.php:35 msgid "Additional federated transport protocols:" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:36 +#: ../../Zotlabs/Module/Siteinfo.php:37 #, php-format msgid "Version %s" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:37 +#: ../../Zotlabs/Module/Siteinfo.php:38 msgid "Project homepage" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:38 +#: ../../Zotlabs/Module/Siteinfo.php:39 msgid "Developer homepage" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:42 +#: ../../Zotlabs/Module/Siteinfo.php:43 msgid "Blocked sites" msgstr "" @@ -12672,51 +12668,51 @@ msgstr "" msgid "Use arrows to move the corresponding app up or down in the app tray" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:159 +#: ../../Zotlabs/Module/New_channel.php:160 msgid "Your real name is recommended." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:160 +#: ../../Zotlabs/Module/New_channel.php:161 msgid "" "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation " "Group\"" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:165 +#: ../../Zotlabs/Module/New_channel.php:166 msgid "" "This will be used to create a unique network address (like an email address)." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:167 +#: ../../Zotlabs/Module/New_channel.php:168 msgid "Allowed characters are a-z 0-9, - and _" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:175 +#: ../../Zotlabs/Module/New_channel.php:176 msgid "Channel name" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:178 -#: ../../Zotlabs/Module/Settings/Channel.php:233 +#: ../../Zotlabs/Module/New_channel.php:179 +#: ../../Zotlabs/Module/Settings/Channel.php:234 msgid "Channel role" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:181 +#: ../../Zotlabs/Module/New_channel.php:182 msgid "Create a Channel" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:182 +#: ../../Zotlabs/Module/New_channel.php:183 msgid "" "A channel is a unique network identity. It can represent a person (social " "network profile), a forum (group), a business or celebrity page, a newsfeed, " "and many other things." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:183 +#: ../../Zotlabs/Module/New_channel.php:184 msgid "" "or import an existing channel from another location." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:188 +#: ../../Zotlabs/Module/New_channel.php:189 msgid "Validate" msgstr "" @@ -12872,17 +12868,17 @@ msgstr "" msgid "You must be logged in to see this page." msgstr "" -#: ../../Zotlabs/Module/Hcard.php:37 ../../Zotlabs/Module/Channel.php:149 +#: ../../Zotlabs/Module/Hcard.php:37 ../../Zotlabs/Module/Channel.php:150 #: ../../Zotlabs/Module/Profile.php:62 msgid "Posts and comments" msgstr "" -#: ../../Zotlabs/Module/Hcard.php:44 ../../Zotlabs/Module/Channel.php:156 +#: ../../Zotlabs/Module/Hcard.php:44 ../../Zotlabs/Module/Channel.php:157 #: ../../Zotlabs/Module/Profile.php:69 msgid "Only posts" msgstr "" -#: ../../Zotlabs/Module/Channel.php:230 +#: ../../Zotlabs/Module/Channel.php:231 msgid "Insufficient permissions. Request redirected to profile page." msgstr "" @@ -12970,260 +12966,260 @@ msgstr "" msgid "Unable to remove source." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:22 ../../Zotlabs/Module/Profiles.php:210 -#: ../../Zotlabs/Module/Profiles.php:638 +#: ../../Zotlabs/Module/Profiles.php:23 ../../Zotlabs/Module/Profiles.php:211 +#: ../../Zotlabs/Module/Profiles.php:641 msgid "Profile not found." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:42 +#: ../../Zotlabs/Module/Profiles.php:43 msgid "Profile deleted." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:66 ../../Zotlabs/Module/Profiles.php:103 +#: ../../Zotlabs/Module/Profiles.php:67 ../../Zotlabs/Module/Profiles.php:104 msgid "Profile-" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:88 ../../Zotlabs/Module/Profiles.php:125 +#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:126 msgid "New profile created." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:109 +#: ../../Zotlabs/Module/Profiles.php:110 msgid "Profile unavailable to clone." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:144 +#: ../../Zotlabs/Module/Profiles.php:145 msgid "Profile unavailable to export." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:220 +#: ../../Zotlabs/Module/Profiles.php:221 msgid "Profile Name is required." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:425 +#: ../../Zotlabs/Module/Profiles.php:426 msgid "Marital Status" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:429 +#: ../../Zotlabs/Module/Profiles.php:430 msgid "Romantic Partner" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:433 ../../Zotlabs/Module/Profiles.php:784 +#: ../../Zotlabs/Module/Profiles.php:434 ../../Zotlabs/Module/Profiles.php:787 msgid "Likes" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:437 ../../Zotlabs/Module/Profiles.php:785 +#: ../../Zotlabs/Module/Profiles.php:438 ../../Zotlabs/Module/Profiles.php:788 msgid "Dislikes" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:441 ../../Zotlabs/Module/Profiles.php:792 +#: ../../Zotlabs/Module/Profiles.php:442 ../../Zotlabs/Module/Profiles.php:795 msgid "Work/Employment" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:444 +#: ../../Zotlabs/Module/Profiles.php:445 msgid "Religion" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:448 +#: ../../Zotlabs/Module/Profiles.php:449 msgid "Political Views" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:456 +#: ../../Zotlabs/Module/Profiles.php:457 msgid "Sexual Preference" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:460 +#: ../../Zotlabs/Module/Profiles.php:461 msgid "Homepage" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:464 +#: ../../Zotlabs/Module/Profiles.php:465 msgid "Interests" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:572 +#: ../../Zotlabs/Module/Profiles.php:573 msgid "Profile updated." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:668 +#: ../../Zotlabs/Module/Profiles.php:671 msgid "Hide my connections from viewers of this profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Profiles.php:684 msgid "Publish my default profile in the network directory" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:689 +#: ../../Zotlabs/Module/Profiles.php:692 msgid "Suggest me as a potential contact to new members" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:693 +#: ../../Zotlabs/Module/Profiles.php:696 msgid "Reveal my online status" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:734 +#: ../../Zotlabs/Module/Profiles.php:737 msgid "Edit Profile Details" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:736 +#: ../../Zotlabs/Module/Profiles.php:739 msgid "View this profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:738 +#: ../../Zotlabs/Module/Profiles.php:741 msgid "Profile Tools" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:739 +#: ../../Zotlabs/Module/Profiles.php:742 msgid "Change cover photo" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:741 +#: ../../Zotlabs/Module/Profiles.php:744 msgid "Create a new profile using these settings" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:742 +#: ../../Zotlabs/Module/Profiles.php:745 msgid "Clone this profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:743 +#: ../../Zotlabs/Module/Profiles.php:746 msgid "Delete this profile" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:744 +#: ../../Zotlabs/Module/Profiles.php:747 msgid "Add profile things" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:745 +#: ../../Zotlabs/Module/Profiles.php:748 msgid "Basic" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:747 +#: ../../Zotlabs/Module/Profiles.php:750 msgid "Relationship" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:750 +#: ../../Zotlabs/Module/Profiles.php:753 msgid "Import profile from file" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:751 +#: ../../Zotlabs/Module/Profiles.php:754 msgid "Export profile to file" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:752 +#: ../../Zotlabs/Module/Profiles.php:755 msgid "Your gender" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:753 +#: ../../Zotlabs/Module/Profiles.php:756 msgid "Marital status" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:754 +#: ../../Zotlabs/Module/Profiles.php:757 msgid "Sexual preference" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Profiles.php:760 msgid "Profile name" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:759 +#: ../../Zotlabs/Module/Profiles.php:762 msgid "This is your default profile." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:761 +#: ../../Zotlabs/Module/Profiles.php:764 msgid "Your full name" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:762 +#: ../../Zotlabs/Module/Profiles.php:765 msgid "Short title/description" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:762 +#: ../../Zotlabs/Module/Profiles.php:765 msgid "Maximal 190 characters" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:765 +#: ../../Zotlabs/Module/Profiles.php:768 msgid "Street address" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:766 +#: ../../Zotlabs/Module/Profiles.php:769 msgid "Locality/City" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:767 +#: ../../Zotlabs/Module/Profiles.php:770 msgid "Region/State" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:768 +#: ../../Zotlabs/Module/Profiles.php:771 msgid "Postal/Zip code" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:774 +#: ../../Zotlabs/Module/Profiles.php:777 msgid "Who (if applicable)" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:774 +#: ../../Zotlabs/Module/Profiles.php:777 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:775 +#: ../../Zotlabs/Module/Profiles.php:778 msgid "Since (date)" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:778 +#: ../../Zotlabs/Module/Profiles.php:781 msgid "Tell us about yourself" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:780 +#: ../../Zotlabs/Module/Profiles.php:783 msgid "Hometown" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:781 +#: ../../Zotlabs/Module/Profiles.php:784 msgid "Political views" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:782 +#: ../../Zotlabs/Module/Profiles.php:785 msgid "Religious views" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:783 +#: ../../Zotlabs/Module/Profiles.php:786 msgid "Keywords used in directory listings" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:783 +#: ../../Zotlabs/Module/Profiles.php:786 msgid "Example: fishing photography software" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Profiles.php:789 msgid "Musical interests" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:787 +#: ../../Zotlabs/Module/Profiles.php:790 msgid "Books, literature" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Profiles.php:791 msgid "Television" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Profiles.php:792 msgid "Film/Dance/Culture/Entertainment" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:790 +#: ../../Zotlabs/Module/Profiles.php:793 msgid "Hobbies/Interests" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Profiles.php:794 msgid "Love/Romance" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:793 +#: ../../Zotlabs/Module/Profiles.php:796 msgid "School/Education" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:794 +#: ../../Zotlabs/Module/Profiles.php:797 msgid "Contact information and social networks" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:795 +#: ../../Zotlabs/Module/Profiles.php:798 msgid "My other channels" msgstr "" @@ -13243,19 +13239,19 @@ msgstr "" msgid "Remove this file" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:93 +#: ../../Zotlabs/Module/Rbmark.php:72 msgid "Select a bookmark folder" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:98 +#: ../../Zotlabs/Module/Rbmark.php:80 msgid "Save Bookmark" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:99 +#: ../../Zotlabs/Module/Rbmark.php:81 msgid "URL of bookmark" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:104 +#: ../../Zotlabs/Module/Rbmark.php:86 msgid "Or enter new bookmark folder name" msgstr "" @@ -13264,7 +13260,7 @@ msgid "Remote privacy information not available" msgstr "" #: ../../Zotlabs/Module/Lockview.php:144 ../../Zotlabs/Module/Lockview.php:203 -#: ../../Zotlabs/Module/Acl.php:123 +#: ../../Zotlabs/Module/Acl.php:124 msgctxt "acl" msgid "Profile" msgstr "" @@ -13329,58 +13325,58 @@ msgstr "" msgid "Failed to remove event" msgstr "" -#: ../../Zotlabs/Module/Go.php:21 +#: ../../Zotlabs/Module/Go.php:22 msgid "This page is available only to site members" msgstr "" -#: ../../Zotlabs/Module/Go.php:29 +#: ../../Zotlabs/Module/Go.php:30 msgid "What would you like to do?" msgstr "" -#: ../../Zotlabs/Module/Go.php:31 +#: ../../Zotlabs/Module/Go.php:32 msgid "" "Please bookmark this page if you would like to return to it in the future" msgstr "" -#: ../../Zotlabs/Module/Go.php:35 +#: ../../Zotlabs/Module/Go.php:36 msgid "Upload a profile photo" msgstr "" -#: ../../Zotlabs/Module/Go.php:36 +#: ../../Zotlabs/Module/Go.php:37 msgid "Upload a cover photo" msgstr "" -#: ../../Zotlabs/Module/Go.php:37 +#: ../../Zotlabs/Module/Go.php:38 msgid "Edit your default profile" msgstr "" -#: ../../Zotlabs/Module/Go.php:39 +#: ../../Zotlabs/Module/Go.php:40 msgid "View the channel directory" msgstr "" -#: ../../Zotlabs/Module/Go.php:40 +#: ../../Zotlabs/Module/Go.php:41 msgid "View/edit your channel settings" msgstr "" -#: ../../Zotlabs/Module/Go.php:41 +#: ../../Zotlabs/Module/Go.php:42 msgid "View the site or project documentation" msgstr "" -#: ../../Zotlabs/Module/Go.php:42 +#: ../../Zotlabs/Module/Go.php:43 msgid "Visit your channel homepage" msgstr "" -#: ../../Zotlabs/Module/Go.php:43 +#: ../../Zotlabs/Module/Go.php:44 msgid "" "View your connections and/or add somebody whose address you already know" msgstr "" -#: ../../Zotlabs/Module/Go.php:44 +#: ../../Zotlabs/Module/Go.php:45 msgid "" "View your personal stream (this may be empty until you add some connections)" msgstr "" -#: ../../Zotlabs/Module/Go.php:52 +#: ../../Zotlabs/Module/Go.php:53 msgid "View the public stream. Warning: this content is not moderated" msgstr "" @@ -13441,130 +13437,130 @@ msgstr "" msgid "min" msgstr "" -#: ../../Zotlabs/Module/Regate.php:84 +#: ../../Zotlabs/Module/Regate.php:85 msgid "Email resent" msgstr "" -#: ../../Zotlabs/Module/Regate.php:84 +#: ../../Zotlabs/Module/Regate.php:85 msgid "Email resend failed" msgstr "" -#: ../../Zotlabs/Module/Regate.php:109 +#: ../../Zotlabs/Module/Regate.php:110 msgid "Verification successful" msgstr "" -#: ../../Zotlabs/Module/Regate.php:153 +#: ../../Zotlabs/Module/Regate.php:154 msgid "Account successfull created" msgstr "" -#: ../../Zotlabs/Module/Regate.php:211 +#: ../../Zotlabs/Module/Regate.php:212 msgid "Channel successfull created" msgstr "" -#: ../../Zotlabs/Module/Regate.php:217 +#: ../../Zotlabs/Module/Regate.php:218 msgid "Automatic channel creation failed. Please create a channel." msgstr "" -#: ../../Zotlabs/Module/Regate.php:229 +#: ../../Zotlabs/Module/Regate.php:230 msgid "Account creation error" msgstr "" -#: ../../Zotlabs/Module/Regate.php:241 +#: ../../Zotlabs/Module/Regate.php:242 msgid "Verify failed" msgstr "" -#: ../../Zotlabs/Module/Regate.php:246 +#: ../../Zotlabs/Module/Regate.php:247 msgid "Token verification failed" msgstr "" -#: ../../Zotlabs/Module/Regate.php:251 +#: ../../Zotlabs/Module/Regate.php:252 msgid "Request not inside time frame" msgstr "" -#: ../../Zotlabs/Module/Regate.php:257 ../../Zotlabs/Module/Regate.php:287 +#: ../../Zotlabs/Module/Regate.php:258 ../../Zotlabs/Module/Regate.php:288 msgid "Identity unknown" msgstr "" -#: ../../Zotlabs/Module/Regate.php:263 +#: ../../Zotlabs/Module/Regate.php:264 msgid "dId2 mistaken" msgstr "" -#: ../../Zotlabs/Module/Regate.php:291 +#: ../../Zotlabs/Module/Regate.php:292 msgid "Your Registration ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:304 ../../Zotlabs/Module/Regate.php:396 -#: ../../Zotlabs/Module/Regate.php:428 +#: ../../Zotlabs/Module/Regate.php:305 ../../Zotlabs/Module/Regate.php:397 +#: ../../Zotlabs/Module/Regate.php:429 msgid "Registration verification" msgstr "" -#: ../../Zotlabs/Module/Regate.php:311 ../../Zotlabs/Module/Regate.php:433 +#: ../../Zotlabs/Module/Regate.php:312 ../../Zotlabs/Module/Regate.php:434 msgid "Hold on, you can start verification in" msgstr "" -#: ../../Zotlabs/Module/Regate.php:312 +#: ../../Zotlabs/Module/Regate.php:313 msgid "Please remember your verification token for ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:314 +#: ../../Zotlabs/Module/Regate.php:315 msgid "Token validity" msgstr "" -#: ../../Zotlabs/Module/Regate.php:350 +#: ../../Zotlabs/Module/Regate.php:351 msgid "Resend email" msgstr "" -#: ../../Zotlabs/Module/Regate.php:355 +#: ../../Zotlabs/Module/Regate.php:356 msgid "Registration status" msgstr "" -#: ../../Zotlabs/Module/Regate.php:358 +#: ../../Zotlabs/Module/Regate.php:359 msgid "Verification successful!" msgstr "" -#: ../../Zotlabs/Module/Regate.php:359 +#: ../../Zotlabs/Module/Regate.php:360 msgid "Your login ID is" msgstr "" -#: ../../Zotlabs/Module/Regate.php:360 +#: ../../Zotlabs/Module/Regate.php:361 msgid "" "After your account has been approved by our administrator you will be able " "to login with your login ID and your provided password." msgstr "" -#: ../../Zotlabs/Module/Regate.php:372 +#: ../../Zotlabs/Module/Regate.php:373 msgid "Registration request revoked" msgstr "" -#: ../../Zotlabs/Module/Regate.php:373 +#: ../../Zotlabs/Module/Regate.php:374 msgid "Sorry for any inconvience. Thank you for your response." msgstr "" -#: ../../Zotlabs/Module/Regate.php:397 +#: ../../Zotlabs/Module/Regate.php:398 msgid "Please enter your verification token for ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:398 ../../Zotlabs/Module/Regate.php:425 +#: ../../Zotlabs/Module/Regate.php:399 ../../Zotlabs/Module/Regate.php:426 msgid "Please check your email!" msgstr "" -#: ../../Zotlabs/Module/Regate.php:408 +#: ../../Zotlabs/Module/Regate.php:409 msgid "Verification token" msgstr "" -#: ../../Zotlabs/Module/Regate.php:419 +#: ../../Zotlabs/Module/Regate.php:420 msgid "ID expired" msgstr "" -#: ../../Zotlabs/Module/Regate.php:434 +#: ../../Zotlabs/Module/Regate.php:435 msgid "You will require the verification token for ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:443 +#: ../../Zotlabs/Module/Regate.php:444 msgid "Unknown or expired ID" msgstr "" -#: ../../Zotlabs/Module/Regate.php:454 +#: ../../Zotlabs/Module/Regate.php:455 msgid "dId2 malformed" msgstr "" @@ -13572,434 +13568,434 @@ msgstr "" msgid "Edit Layout" msgstr "" -#: ../../Zotlabs/Module/Setup.php:179 +#: ../../Zotlabs/Module/Setup.php:180 msgid "$Projectname Server - Setup" msgstr "" -#: ../../Zotlabs/Module/Setup.php:183 +#: ../../Zotlabs/Module/Setup.php:184 msgid "Could not connect to database." msgstr "" -#: ../../Zotlabs/Module/Setup.php:187 +#: ../../Zotlabs/Module/Setup.php:188 msgid "" "Could not connect to specified site URL. Possible SSL certificate or DNS " "issue." msgstr "" -#: ../../Zotlabs/Module/Setup.php:194 +#: ../../Zotlabs/Module/Setup.php:195 msgid "Could not create table." msgstr "" -#: ../../Zotlabs/Module/Setup.php:200 +#: ../../Zotlabs/Module/Setup.php:201 msgid "Your site database has been installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:206 +#: ../../Zotlabs/Module/Setup.php:207 msgid "" "You may need to import the file \"install/schema_xxx.sql\" manually using a " "database client." msgstr "" -#: ../../Zotlabs/Module/Setup.php:207 ../../Zotlabs/Module/Setup.php:271 -#: ../../Zotlabs/Module/Setup.php:796 +#: ../../Zotlabs/Module/Setup.php:208 ../../Zotlabs/Module/Setup.php:274 +#: ../../Zotlabs/Module/Setup.php:799 msgid "Please see the file \"install/INSTALL.txt\"." msgstr "" -#: ../../Zotlabs/Module/Setup.php:268 +#: ../../Zotlabs/Module/Setup.php:271 msgid "System check" msgstr "" -#: ../../Zotlabs/Module/Setup.php:273 +#: ../../Zotlabs/Module/Setup.php:276 msgid "Check again" msgstr "" -#: ../../Zotlabs/Module/Setup.php:294 +#: ../../Zotlabs/Module/Setup.php:297 msgid "Database connection" msgstr "" -#: ../../Zotlabs/Module/Setup.php:295 +#: ../../Zotlabs/Module/Setup.php:298 msgid "" "In order to install $Projectname we need to know how to connect to your " "database." msgstr "" -#: ../../Zotlabs/Module/Setup.php:296 +#: ../../Zotlabs/Module/Setup.php:299 msgid "" "Please contact your hosting provider or site administrator if you have " "questions about these settings." msgstr "" -#: ../../Zotlabs/Module/Setup.php:297 +#: ../../Zotlabs/Module/Setup.php:300 msgid "" "The database you specify below should already exist. If it does not, please " "create it before continuing." msgstr "" -#: ../../Zotlabs/Module/Setup.php:301 +#: ../../Zotlabs/Module/Setup.php:304 msgid "Database Server Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:301 +#: ../../Zotlabs/Module/Setup.php:304 msgid "Default is 127.0.0.1" msgstr "" -#: ../../Zotlabs/Module/Setup.php:302 +#: ../../Zotlabs/Module/Setup.php:305 msgid "Database Port" msgstr "" -#: ../../Zotlabs/Module/Setup.php:302 +#: ../../Zotlabs/Module/Setup.php:305 msgid "Communication port number - use 0 for default" msgstr "" -#: ../../Zotlabs/Module/Setup.php:303 +#: ../../Zotlabs/Module/Setup.php:306 msgid "Database Login Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Setup.php:307 msgid "Database Login Password" msgstr "" -#: ../../Zotlabs/Module/Setup.php:305 +#: ../../Zotlabs/Module/Setup.php:308 msgid "Database Name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:306 +#: ../../Zotlabs/Module/Setup.php:309 msgid "Database Type" msgstr "" -#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:348 +#: ../../Zotlabs/Module/Setup.php:311 ../../Zotlabs/Module/Setup.php:351 msgid "Site administrator email address" msgstr "" -#: ../../Zotlabs/Module/Setup.php:308 ../../Zotlabs/Module/Setup.php:348 +#: ../../Zotlabs/Module/Setup.php:311 ../../Zotlabs/Module/Setup.php:351 msgid "" "Your account email address must match this in order to use the web admin " "panel." msgstr "" -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:350 +#: ../../Zotlabs/Module/Setup.php:312 ../../Zotlabs/Module/Setup.php:353 msgid "Website URL" msgstr "" -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:350 +#: ../../Zotlabs/Module/Setup.php:312 ../../Zotlabs/Module/Setup.php:353 msgid "Please use SSL (https) URL if available." msgstr "" -#: ../../Zotlabs/Module/Setup.php:310 ../../Zotlabs/Module/Setup.php:352 +#: ../../Zotlabs/Module/Setup.php:313 ../../Zotlabs/Module/Setup.php:355 msgid "Please select a default timezone for your website" msgstr "" -#: ../../Zotlabs/Module/Setup.php:337 +#: ../../Zotlabs/Module/Setup.php:340 msgid "Site settings" msgstr "" -#: ../../Zotlabs/Module/Setup.php:391 +#: ../../Zotlabs/Module/Setup.php:394 msgid "PHP version 8.0 or greater is required." msgstr "" -#: ../../Zotlabs/Module/Setup.php:392 +#: ../../Zotlabs/Module/Setup.php:395 msgid "PHP version" msgstr "" -#: ../../Zotlabs/Module/Setup.php:408 +#: ../../Zotlabs/Module/Setup.php:411 msgid "Could not find a command line version of PHP in the web server PATH." msgstr "" -#: ../../Zotlabs/Module/Setup.php:409 +#: ../../Zotlabs/Module/Setup.php:412 msgid "" "If you don't have a command line version of PHP installed on server, you " "will not be able to run background polling via cron." msgstr "" -#: ../../Zotlabs/Module/Setup.php:413 +#: ../../Zotlabs/Module/Setup.php:416 msgid "PHP executable path" msgstr "" -#: ../../Zotlabs/Module/Setup.php:413 +#: ../../Zotlabs/Module/Setup.php:416 msgid "" "Enter full path to php executable. You can leave this blank to continue the " "installation." msgstr "" -#: ../../Zotlabs/Module/Setup.php:418 +#: ../../Zotlabs/Module/Setup.php:421 msgid "Command line PHP" msgstr "" -#: ../../Zotlabs/Module/Setup.php:428 +#: ../../Zotlabs/Module/Setup.php:431 msgid "" "Unable to check command line PHP, as shell_exec() is disabled. This is " "required." msgstr "" -#: ../../Zotlabs/Module/Setup.php:432 +#: ../../Zotlabs/Module/Setup.php:435 msgid "" "The command line version of PHP on your system does not have " "\"register_argc_argv\" enabled." msgstr "" -#: ../../Zotlabs/Module/Setup.php:433 +#: ../../Zotlabs/Module/Setup.php:436 msgid "This is required for message delivery to work." msgstr "" -#: ../../Zotlabs/Module/Setup.php:436 +#: ../../Zotlabs/Module/Setup.php:439 msgid "PHP register_argc_argv" msgstr "" -#: ../../Zotlabs/Module/Setup.php:456 +#: ../../Zotlabs/Module/Setup.php:459 msgid "" "This is not sufficient to upload larger images or files. You should be able " "to upload at least 4 MB at once." msgstr "" -#: ../../Zotlabs/Module/Setup.php:458 +#: ../../Zotlabs/Module/Setup.php:461 #, php-format msgid "" "Your max allowed total upload size is set to %s. Maximum size of one file to " "upload is set to %s. You are allowed to upload up to %d files at once." msgstr "" -#: ../../Zotlabs/Module/Setup.php:464 +#: ../../Zotlabs/Module/Setup.php:467 msgid "You can adjust these settings in the server php.ini file." msgstr "" -#: ../../Zotlabs/Module/Setup.php:466 +#: ../../Zotlabs/Module/Setup.php:469 msgid "PHP upload limits" msgstr "" -#: ../../Zotlabs/Module/Setup.php:489 +#: ../../Zotlabs/Module/Setup.php:492 msgid "" "Error: the \"openssl_pkey_new\" function on this system is not able to " "generate encryption keys" msgstr "" -#: ../../Zotlabs/Module/Setup.php:490 +#: ../../Zotlabs/Module/Setup.php:493 msgid "" "If running under Windows, please see \"http://www.php.net/manual/en/openssl." "installation.php\"." msgstr "" -#: ../../Zotlabs/Module/Setup.php:493 +#: ../../Zotlabs/Module/Setup.php:496 msgid "Generate encryption keys" msgstr "" -#: ../../Zotlabs/Module/Setup.php:497 +#: ../../Zotlabs/Module/Setup.php:500 msgid "Error: the sodium encryption library is not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:499 +#: ../../Zotlabs/Module/Setup.php:502 msgid "Generate ed25519 encryption keys" msgstr "" -#: ../../Zotlabs/Module/Setup.php:504 +#: ../../Zotlabs/Module/Setup.php:507 msgid "" "Error: one of \"bcmath\" or \"gmp\" (bigmath library) extensions are " "required." msgstr "" -#: ../../Zotlabs/Module/Setup.php:506 +#: ../../Zotlabs/Module/Setup.php:509 msgid "Bigmath library (either bcmath or gmp)" msgstr "" -#: ../../Zotlabs/Module/Setup.php:523 +#: ../../Zotlabs/Module/Setup.php:526 msgid "libCurl PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:524 +#: ../../Zotlabs/Module/Setup.php:527 msgid "GD graphics PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:525 +#: ../../Zotlabs/Module/Setup.php:528 msgid "OpenSSL PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:526 +#: ../../Zotlabs/Module/Setup.php:529 msgid "PDO database PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:527 +#: ../../Zotlabs/Module/Setup.php:530 msgid "mb_string PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:528 +#: ../../Zotlabs/Module/Setup.php:531 msgid "xml PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:529 +#: ../../Zotlabs/Module/Setup.php:532 msgid "zip PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:530 +#: ../../Zotlabs/Module/Setup.php:533 msgid "intl PHP module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:534 ../../Zotlabs/Module/Setup.php:536 +#: ../../Zotlabs/Module/Setup.php:537 ../../Zotlabs/Module/Setup.php:539 msgid "Apache mod_rewrite module" msgstr "" -#: ../../Zotlabs/Module/Setup.php:534 +#: ../../Zotlabs/Module/Setup.php:537 msgid "" "Error: Apache webserver mod-rewrite module is required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:540 ../../Zotlabs/Module/Setup.php:543 +#: ../../Zotlabs/Module/Setup.php:543 ../../Zotlabs/Module/Setup.php:546 msgid "exec" msgstr "" -#: ../../Zotlabs/Module/Setup.php:540 +#: ../../Zotlabs/Module/Setup.php:543 msgid "" "Error: exec is required but is either not installed or has been disabled in " "php.ini" msgstr "" -#: ../../Zotlabs/Module/Setup.php:546 ../../Zotlabs/Module/Setup.php:549 +#: ../../Zotlabs/Module/Setup.php:549 ../../Zotlabs/Module/Setup.php:552 msgid "shell_exec" msgstr "" -#: ../../Zotlabs/Module/Setup.php:546 +#: ../../Zotlabs/Module/Setup.php:549 msgid "" "Error: shell_exec is required but is either not installed or has been " "disabled in php.ini" msgstr "" -#: ../../Zotlabs/Module/Setup.php:554 +#: ../../Zotlabs/Module/Setup.php:557 msgid "Error: libCURL PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:558 +#: ../../Zotlabs/Module/Setup.php:561 msgid "" "Error: GD PHP module with JPEG support or ImageMagick graphics library " "required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:562 +#: ../../Zotlabs/Module/Setup.php:565 msgid "Error: openssl PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:568 +#: ../../Zotlabs/Module/Setup.php:571 msgid "" "Error: PDO database PHP module missing a driver for either mysql or pgsql." msgstr "" -#: ../../Zotlabs/Module/Setup.php:573 +#: ../../Zotlabs/Module/Setup.php:576 msgid "Error: PDO database PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:577 +#: ../../Zotlabs/Module/Setup.php:580 msgid "Error: mb_string PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:581 +#: ../../Zotlabs/Module/Setup.php:584 msgid "Error: xml PHP module required for DAV but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:585 +#: ../../Zotlabs/Module/Setup.php:588 msgid "Error: zip PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:589 +#: ../../Zotlabs/Module/Setup.php:592 msgid "Error: intl PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Module/Setup.php:608 ../../Zotlabs/Module/Setup.php:617 +#: ../../Zotlabs/Module/Setup.php:611 ../../Zotlabs/Module/Setup.php:620 msgid ".htconfig.php is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:613 +#: ../../Zotlabs/Module/Setup.php:616 msgid "" "The web installer needs to be able to create a file called \".htconfig.php\" " "in the top folder of your web server and it is unable to do so." msgstr "" -#: ../../Zotlabs/Module/Setup.php:614 +#: ../../Zotlabs/Module/Setup.php:617 msgid "" "This is most often a permission setting, as the web server may not be able " "to write files in your folder - even if you can." msgstr "" -#: ../../Zotlabs/Module/Setup.php:615 +#: ../../Zotlabs/Module/Setup.php:618 msgid "Please see install/INSTALL.txt for additional information." msgstr "" -#: ../../Zotlabs/Module/Setup.php:631 +#: ../../Zotlabs/Module/Setup.php:634 msgid "" "This software uses the Smarty3 template engine to render its web views. " "Smarty3 compiles templates to PHP to speed up rendering." msgstr "" -#: ../../Zotlabs/Module/Setup.php:632 +#: ../../Zotlabs/Module/Setup.php:635 #, php-format msgid "" "In order to store these compiled templates, the web server needs to have " "write access to the directory %s under the top level web folder." msgstr "" -#: ../../Zotlabs/Module/Setup.php:633 ../../Zotlabs/Module/Setup.php:654 +#: ../../Zotlabs/Module/Setup.php:636 ../../Zotlabs/Module/Setup.php:657 msgid "" "Please ensure that the user that your web server runs as (e.g. www-data) has " "write access to this folder." msgstr "" -#: ../../Zotlabs/Module/Setup.php:634 +#: ../../Zotlabs/Module/Setup.php:637 #, php-format msgid "" "Note: as a security measure, you should give the web server write access to " "%s only--not the template files (.tpl) that it contains." msgstr "" -#: ../../Zotlabs/Module/Setup.php:637 +#: ../../Zotlabs/Module/Setup.php:640 #, php-format msgid "%s is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:653 +#: ../../Zotlabs/Module/Setup.php:656 msgid "" "This software uses the store directory to save uploaded files. The web " "server needs to have write access to the store directory under the top level " "web folder" msgstr "" -#: ../../Zotlabs/Module/Setup.php:657 +#: ../../Zotlabs/Module/Setup.php:660 msgid "store is writable" msgstr "" -#: ../../Zotlabs/Module/Setup.php:689 +#: ../../Zotlabs/Module/Setup.php:692 msgid "" "SSL certificate cannot be validated. Fix certificate or disable https access " "to this site." msgstr "" -#: ../../Zotlabs/Module/Setup.php:690 +#: ../../Zotlabs/Module/Setup.php:693 msgid "" "If you have https access to your website or allow connections to TCP port " "443 (the https: port), you MUST use a browser-valid certificate. You MUST " "NOT use self-signed certificates!" msgstr "" -#: ../../Zotlabs/Module/Setup.php:691 +#: ../../Zotlabs/Module/Setup.php:694 msgid "" "This restriction is incorporated because public posts from you may for " "example contain references to images on your own hub." msgstr "" -#: ../../Zotlabs/Module/Setup.php:692 +#: ../../Zotlabs/Module/Setup.php:695 msgid "" "If your certificate is not recognized, members of other sites (who may " "themselves have valid certificates) will get a warning message on their own " "site complaining about security issues." msgstr "" -#: ../../Zotlabs/Module/Setup.php:693 +#: ../../Zotlabs/Module/Setup.php:696 msgid "" "This can cause usability issues elsewhere (not just on your own site) so we " "must insist on this requirement." msgstr "" -#: ../../Zotlabs/Module/Setup.php:694 +#: ../../Zotlabs/Module/Setup.php:697 msgid "" "Providers are available that issue free certificates which are browser-valid." msgstr "" -#: ../../Zotlabs/Module/Setup.php:695 +#: ../../Zotlabs/Module/Setup.php:698 msgid "" "If you are confident that the certificate is valid and signed by a trusted " "authority, check to see if you have failed to install an intermediate cert. " @@ -14007,32 +14003,32 @@ msgid "" "server communications." msgstr "" -#: ../../Zotlabs/Module/Setup.php:697 +#: ../../Zotlabs/Module/Setup.php:700 msgid "SSL certificate validation" msgstr "" -#: ../../Zotlabs/Module/Setup.php:703 +#: ../../Zotlabs/Module/Setup.php:706 msgid "" "Url rewrite in .htaccess is not working. Check your server configuration." "Test: " msgstr "" -#: ../../Zotlabs/Module/Setup.php:706 +#: ../../Zotlabs/Module/Setup.php:709 msgid "Url rewrite is working" msgstr "" -#: ../../Zotlabs/Module/Setup.php:719 +#: ../../Zotlabs/Module/Setup.php:722 msgid "" "The database configuration file \".htconfig.php\" could not be written. " "Please use the enclosed text to create a configuration file in your web " "server root." msgstr "" -#: ../../Zotlabs/Module/Setup.php:794 +#: ../../Zotlabs/Module/Setup.php:797 msgid "

    What next?

    " msgstr "" -#: ../../Zotlabs/Module/Setup.php:795 +#: ../../Zotlabs/Module/Setup.php:798 msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the poller." msgstr "" @@ -14041,23 +14037,23 @@ msgstr "" msgid "toggle full screen mode" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +#: ../../Zotlabs/Module/Profperm.php:35 ../../Zotlabs/Module/Profperm.php:64 msgid "Invalid profile identifier." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:111 +#: ../../Zotlabs/Module/Profperm.php:112 msgid "Profile Visibility Editor" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:115 +#: ../../Zotlabs/Module/Profperm.php:116 msgid "Click on a contact to add or remove." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:124 +#: ../../Zotlabs/Module/Profperm.php:125 msgid "Visible To" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:140 +#: ../../Zotlabs/Module/Profperm.php:141 #: ../../Zotlabs/Module/Connections.php:221 msgid "All Connections" msgstr "" @@ -14066,7 +14062,7 @@ msgstr "" msgid "Language App" msgstr "" -#: ../../Zotlabs/Module/Rpost.php:217 ../../Zotlabs/Module/Editpost.php:113 +#: ../../Zotlabs/Module/Rpost.php:117 ../../Zotlabs/Module/Editpost.php:113 msgid "Edit post" msgstr "" @@ -14276,7 +14272,7 @@ msgstr "" msgid "Default Addressbook" msgstr "" -#: ../../Zotlabs/Module/Dirsearch.php:31 +#: ../../Zotlabs/Module/Dirsearch.php:32 msgid "This directory server requires an access token" msgstr "" @@ -14312,74 +14308,74 @@ msgstr "" msgid "Connected OAuth2 Apps" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:125 +#: ../../Zotlabs/Module/Settings/Display.php:126 #, php-format msgid "%s - (Experimental)" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:182 +#: ../../Zotlabs/Module/Settings/Display.php:183 msgid "Display Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:183 +#: ../../Zotlabs/Module/Settings/Display.php:184 msgid "Theme Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:184 +#: ../../Zotlabs/Module/Settings/Display.php:185 msgid "Custom Theme Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:185 +#: ../../Zotlabs/Module/Settings/Display.php:186 msgid "Content Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:191 +#: ../../Zotlabs/Module/Settings/Display.php:192 msgid "Display Theme:" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:192 +#: ../../Zotlabs/Module/Settings/Display.php:193 msgid "Select scheme" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:194 +#: ../../Zotlabs/Module/Settings/Display.php:195 msgid "Preload images before rendering the page" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:194 +#: ../../Zotlabs/Module/Settings/Display.php:195 msgid "" "The subjective page load time will be longer but the page will be ready when " "displayed" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:195 +#: ../../Zotlabs/Module/Settings/Display.php:196 msgid "Enable user zoom on mobile devices" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:196 +#: ../../Zotlabs/Module/Settings/Display.php:197 msgid "Update browser every xx seconds" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:196 +#: ../../Zotlabs/Module/Settings/Display.php:197 msgid "Minimum of 10 seconds, no maximum" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:197 +#: ../../Zotlabs/Module/Settings/Display.php:198 msgid "Maximum number of conversations to load at any time:" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:197 +#: ../../Zotlabs/Module/Settings/Display.php:198 msgid "Maximum of 30 items" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:198 +#: ../../Zotlabs/Module/Settings/Display.php:199 msgid "Show emoticons (smilies) as images" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:199 +#: ../../Zotlabs/Module/Settings/Display.php:200 msgid "Link post titles to source" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:201 +#: ../../Zotlabs/Module/Settings/Display.php:202 msgid "Display new member quick links menu" msgstr "" @@ -14405,67 +14401,67 @@ msgstr "" msgid "Channel Home Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:21 +#: ../../Zotlabs/Module/Settings/Account.php:23 msgid "Not valid email." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:24 +#: ../../Zotlabs/Module/Settings/Account.php:26 msgid "Protected email address. Cannot change to that email." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:33 +#: ../../Zotlabs/Module/Settings/Account.php:35 msgid "System failure storing new email. Please try again." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:51 +#: ../../Zotlabs/Module/Settings/Account.php:53 msgid "Password verification failed." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:58 +#: ../../Zotlabs/Module/Settings/Account.php:60 msgid "Passwords do not match. Password unchanged." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:62 +#: ../../Zotlabs/Module/Settings/Account.php:64 msgid "Empty passwords are not allowed. Password unchanged." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:76 +#: ../../Zotlabs/Module/Settings/Account.php:78 msgid "Password changed." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:78 +#: ../../Zotlabs/Module/Settings/Account.php:80 msgid "Password update failed. Please try again." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:103 +#: ../../Zotlabs/Module/Settings/Account.php:105 msgid "Account Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:104 +#: ../../Zotlabs/Module/Settings/Account.php:106 msgid "Current Password" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:105 +#: ../../Zotlabs/Module/Settings/Account.php:107 msgid "Enter New Password" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:106 +#: ../../Zotlabs/Module/Settings/Account.php:108 msgid "Confirm New Password" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:106 +#: ../../Zotlabs/Module/Settings/Account.php:108 msgid "Leave password fields blank unless changing" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:108 +#: ../../Zotlabs/Module/Settings/Account.php:110 msgid "Multi-Factor Authentication" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:109 +#: ../../Zotlabs/Module/Settings/Account.php:111 msgid "DId2 or Email Address:" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:112 +#: ../../Zotlabs/Module/Settings/Account.php:114 msgid "Remove this account including all its channels" msgstr "" @@ -14497,103 +14493,103 @@ msgstr "" msgid "Channel Manager Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:48 +#: ../../Zotlabs/Module/Settings/Privacy.php:49 msgid "Privacy settings updated." msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:66 +#: ../../Zotlabs/Module/Settings/Privacy.php:67 msgid "Only those you specifically allow" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:67 +#: ../../Zotlabs/Module/Settings/Privacy.php:68 msgid "Approved connections" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:68 +#: ../../Zotlabs/Module/Settings/Privacy.php:69 msgid "Any connections" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:69 +#: ../../Zotlabs/Module/Settings/Privacy.php:70 msgid "Anybody on this website" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:70 +#: ../../Zotlabs/Module/Settings/Privacy.php:71 msgid "Anybody in this network" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:71 +#: ../../Zotlabs/Module/Settings/Privacy.php:72 msgid "Anybody authenticated" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:72 +#: ../../Zotlabs/Module/Settings/Privacy.php:73 msgid "Anybody on the internet" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:82 +#: ../../Zotlabs/Module/Settings/Privacy.php:83 msgid "" "Advise: set to \"Anybody on the internet\" and use privacy groups to " "restrict access" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:121 +#: ../../Zotlabs/Module/Settings/Privacy.php:122 msgid "Privacy Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:126 +#: ../../Zotlabs/Module/Settings/Privacy.php:127 msgid "Advanced configuration" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:128 +#: ../../Zotlabs/Module/Settings/Privacy.php:129 msgid "Proceed with caution" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:129 +#: ../../Zotlabs/Module/Settings/Privacy.php:130 msgid "" "Changing advanced configuration settings can impact your, and your contacts " "channels functionality and security." msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:130 +#: ../../Zotlabs/Module/Settings/Privacy.php:131 msgid "Accept the risk and continue" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:132 +#: ../../Zotlabs/Module/Settings/Privacy.php:133 msgid "Automatically approve new contacts" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:133 +#: ../../Zotlabs/Module/Settings/Privacy.php:134 msgid "Opt-out of search engine indexing" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:134 +#: ../../Zotlabs/Module/Settings/Privacy.php:135 msgid "Group actor" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:134 +#: ../../Zotlabs/Module/Settings/Privacy.php:135 msgid "Allow this channel to act as a forum" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:135 +#: ../../Zotlabs/Module/Settings/Privacy.php:136 msgid "Accept all messages which mention you" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:135 +#: ../../Zotlabs/Module/Settings/Privacy.php:136 msgid "This setting bypasses normal permissions" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:136 +#: ../../Zotlabs/Module/Settings/Privacy.php:137 msgid "Accept unsolicited comments for moderation" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:136 +#: ../../Zotlabs/Module/Settings/Privacy.php:137 msgid "Otherwise they will be silently dropped" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:137 +#: ../../Zotlabs/Module/Settings/Privacy.php:138 msgid "Enable OCAP access" msgstr "" -#: ../../Zotlabs/Module/Settings/Privacy.php:137 +#: ../../Zotlabs/Module/Settings/Privacy.php:138 msgid "Grant limited posts the right to access linked private media" msgstr "" @@ -14617,271 +14613,271 @@ msgstr "" msgid "Conversation Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:105 -#: ../../Zotlabs/Module/Settings/Channel.php:217 +#: ../../Zotlabs/Module/Settings/Channel.php:106 +#: ../../Zotlabs/Module/Settings/Channel.php:218 msgid "Please select a channel role" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:194 +#: ../../Zotlabs/Module/Settings/Channel.php:195 msgid "Your channel address is" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:197 +#: ../../Zotlabs/Module/Settings/Channel.php:198 msgid "Your files/photos are accessible via WebDAV at" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:228 +#: ../../Zotlabs/Module/Settings/Channel.php:229 msgid "Channel Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:235 +#: ../../Zotlabs/Module/Settings/Channel.php:236 msgid "Basic Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:236 +#: ../../Zotlabs/Module/Settings/Channel.php:237 msgid "Channel timezone:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:237 +#: ../../Zotlabs/Module/Settings/Channel.php:238 msgid "Default post location:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:237 +#: ../../Zotlabs/Module/Settings/Channel.php:238 msgid "Geographical location to display on your posts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:238 +#: ../../Zotlabs/Module/Settings/Channel.php:239 msgid "Use browser location" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:239 +#: ../../Zotlabs/Module/Settings/Channel.php:240 msgid "Adult content" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:239 +#: ../../Zotlabs/Module/Settings/Channel.php:240 msgid "This channel frequently or regularly publishes adult content" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:240 +#: ../../Zotlabs/Module/Settings/Channel.php:241 msgid "Maximum Friend Requests/Day:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:240 +#: ../../Zotlabs/Module/Settings/Channel.php:241 msgid "May reduce spam activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:242 +#: ../../Zotlabs/Module/Settings/Channel.php:243 msgid "By default post a status message when:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:243 +#: ../../Zotlabs/Module/Settings/Channel.php:244 msgid "accepting a friend request" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:244 +#: ../../Zotlabs/Module/Settings/Channel.php:245 msgid "joining a forum/community" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:245 +#: ../../Zotlabs/Module/Settings/Channel.php:246 msgid "making an interesting profile change" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:246 +#: ../../Zotlabs/Module/Settings/Channel.php:247 msgid "Send a notification email when:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:247 +#: ../../Zotlabs/Module/Settings/Channel.php:248 msgid "You receive a connection request" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:248 +#: ../../Zotlabs/Module/Settings/Channel.php:249 msgid "Your connections are confirmed" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:249 +#: ../../Zotlabs/Module/Settings/Channel.php:250 msgid "Someone writes on your profile wall" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:250 +#: ../../Zotlabs/Module/Settings/Channel.php:251 msgid "Someone writes a followup comment" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:251 +#: ../../Zotlabs/Module/Settings/Channel.php:252 msgid "You receive a private message" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:252 +#: ../../Zotlabs/Module/Settings/Channel.php:253 msgid "You receive a friend suggestion" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:253 +#: ../../Zotlabs/Module/Settings/Channel.php:254 msgid "You are tagged in a post" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:254 +#: ../../Zotlabs/Module/Settings/Channel.php:255 msgid "You are poked/prodded/etc. in a post" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:255 +#: ../../Zotlabs/Module/Settings/Channel.php:256 msgid "Someone likes your post/comment" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:256 +#: ../../Zotlabs/Module/Settings/Channel.php:257 msgid "Show visual notifications including:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:257 +#: ../../Zotlabs/Module/Settings/Channel.php:258 msgid "Unseen stream activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:258 +#: ../../Zotlabs/Module/Settings/Channel.php:259 msgid "Unseen channel activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:259 +#: ../../Zotlabs/Module/Settings/Channel.php:260 msgid "Unseen private messages" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:259 -#: ../../Zotlabs/Module/Settings/Channel.php:264 +#: ../../Zotlabs/Module/Settings/Channel.php:260 #: ../../Zotlabs/Module/Settings/Channel.php:265 #: ../../Zotlabs/Module/Settings/Channel.php:266 +#: ../../Zotlabs/Module/Settings/Channel.php:267 msgid "Recommended" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:260 +#: ../../Zotlabs/Module/Settings/Channel.php:261 msgid "Upcoming events" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:261 +#: ../../Zotlabs/Module/Settings/Channel.php:262 msgid "Events today" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:262 +#: ../../Zotlabs/Module/Settings/Channel.php:263 msgid "Upcoming birthdays" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:262 +#: ../../Zotlabs/Module/Settings/Channel.php:263 msgid "Not available in all themes" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:263 +#: ../../Zotlabs/Module/Settings/Channel.php:264 msgid "System (personal) notifications" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:264 +#: ../../Zotlabs/Module/Settings/Channel.php:265 msgid "System info messages" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:265 +#: ../../Zotlabs/Module/Settings/Channel.php:266 msgid "System critical alerts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:266 +#: ../../Zotlabs/Module/Settings/Channel.php:267 msgid "New connections" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:267 +#: ../../Zotlabs/Module/Settings/Channel.php:268 msgid "System Registrations" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:268 +#: ../../Zotlabs/Module/Settings/Channel.php:269 msgid "Unseen shared files" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:269 +#: ../../Zotlabs/Module/Settings/Channel.php:270 msgid "Unseen public stream activity" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:270 +#: ../../Zotlabs/Module/Settings/Channel.php:271 msgid "Unseen likes and dislikes" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:271 +#: ../../Zotlabs/Module/Settings/Channel.php:272 msgid "Unseen forum posts" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:272 +#: ../../Zotlabs/Module/Settings/Channel.php:273 msgid "Email notification hub (hostname)" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:272 +#: ../../Zotlabs/Module/Settings/Channel.php:273 #, php-format msgid "" "If your channel is mirrored to multiple hubs, set this to your preferred " "location. This will prevent duplicate email notifications. Example: %s" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:273 +#: ../../Zotlabs/Module/Settings/Channel.php:274 msgid "Show new wall posts, private messages and connections under Notices" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:274 +#: ../../Zotlabs/Module/Settings/Channel.php:275 msgid "Mark all notices of the thread read if a notice is clicked" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:274 +#: ../../Zotlabs/Module/Settings/Channel.php:275 msgid "If no, only the clicked notice will be marked read" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:275 +#: ../../Zotlabs/Module/Settings/Channel.php:276 msgid "" "Desktop notifications are unavailable because the required browser " "permission has not been granted" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:276 +#: ../../Zotlabs/Module/Settings/Channel.php:277 msgid "Grant permission" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:277 +#: ../../Zotlabs/Module/Settings/Channel.php:278 msgid "Notify me of events this many days in advance" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:277 +#: ../../Zotlabs/Module/Settings/Channel.php:278 msgid "Must be greater than 0" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:280 +#: ../../Zotlabs/Module/Settings/Channel.php:281 msgid "Default photo upload folder" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:280 #: ../../Zotlabs/Module/Settings/Channel.php:281 +#: ../../Zotlabs/Module/Settings/Channel.php:282 msgid "%Y - current year, %m - current month" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:281 +#: ../../Zotlabs/Module/Settings/Channel.php:282 msgid "Default file upload folder" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:283 +#: ../../Zotlabs/Module/Settings/Channel.php:284 msgid "Remove this channel." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "Expire other channel content after this many days" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "0 or blank to use the website limit." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 #, php-format msgid "This website expires after %d days." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "This website does not expire imported content." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:284 +#: ../../Zotlabs/Module/Settings/Channel.php:285 msgid "The website limit takes precedence if lower than your limit." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:285 #: ../../Zotlabs/Module/Settings/Channel.php:286 +#: ../../Zotlabs/Module/Settings/Channel.php:287 msgid "" "Words one per line or #tags, $categories, /patterns/, lang=xx, lang!=xx - " "leave blank to import all posts" @@ -14961,11 +14957,11 @@ msgstr "" msgid "Edit Block" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:36 +#: ../../Zotlabs/Module/Email_validation.php:37 msgid "Email Verification Required" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:37 +#: ../../Zotlabs/Module/Email_validation.php:38 #, php-format msgid "" "A verification token was sent to your email address [%s]. Enter that token " @@ -14973,73 +14969,73 @@ msgid "" "for delivery, and check your spam folder if you do not see the message." msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:38 +#: ../../Zotlabs/Module/Email_validation.php:39 msgid "Resend Email" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:41 +#: ../../Zotlabs/Module/Email_validation.php:42 msgid "Validation token" msgstr "" -#: ../../Zotlabs/Module/Import.php:70 +#: ../../Zotlabs/Module/Import.php:71 msgid "Nothing to import." msgstr "" -#: ../../Zotlabs/Module/Import.php:86 ../../Zotlabs/Module/Import.php:100 +#: ../../Zotlabs/Module/Import.php:87 ../../Zotlabs/Module/Import.php:101 msgid "Unable to download data from old server" msgstr "" -#: ../../Zotlabs/Module/Import.php:163 +#: ../../Zotlabs/Module/Import.php:164 #, php-format msgid "Your service plan only allows %d channels." msgstr "" -#: ../../Zotlabs/Module/Import.php:190 +#: ../../Zotlabs/Module/Import.php:191 msgid "No channel. Import failed." msgstr "" -#: ../../Zotlabs/Module/Import.php:557 +#: ../../Zotlabs/Module/Import.php:562 msgid "" "Automatic content and files import was not possible due to API version " "incompatiblity. Please import content and files manually!" msgstr "" -#: ../../Zotlabs/Module/Import.php:585 +#: ../../Zotlabs/Module/Import.php:590 msgid "You must be logged in to use this feature." msgstr "" -#: ../../Zotlabs/Module/Import.php:592 +#: ../../Zotlabs/Module/Import.php:597 msgid "Channel Import" msgstr "" -#: ../../Zotlabs/Module/Import.php:593 +#: ../../Zotlabs/Module/Import.php:598 msgid "" "Use this form to import an existing channel from a different server/hub. You " "may retrieve the channel identity from the old server/hub via the network or " "provide an export file." msgstr "" -#: ../../Zotlabs/Module/Import.php:595 +#: ../../Zotlabs/Module/Import.php:600 msgid "Or provide the old server/hub details" msgstr "" -#: ../../Zotlabs/Module/Import.php:597 +#: ../../Zotlabs/Module/Import.php:602 msgid "Your old identity address (xyz@example.com)" msgstr "" -#: ../../Zotlabs/Module/Import.php:598 +#: ../../Zotlabs/Module/Import.php:603 msgid "Your old login email address" msgstr "" -#: ../../Zotlabs/Module/Import.php:599 +#: ../../Zotlabs/Module/Import.php:604 msgid "Your old login password" msgstr "" -#: ../../Zotlabs/Module/Import.php:600 +#: ../../Zotlabs/Module/Import.php:605 msgid "Import your items and files (limited by available memory)" msgstr "" -#: ../../Zotlabs/Module/Import.php:602 +#: ../../Zotlabs/Module/Import.php:607 msgid "" "For either option, please choose whether to make this hub your new primary " "address, or whether your old location should continue this role. You will be " @@ -15047,31 +15043,31 @@ msgid "" "location for files, photos, and media." msgstr "" -#: ../../Zotlabs/Module/Import.php:604 +#: ../../Zotlabs/Module/Import.php:609 msgid "Make this hub my primary location" msgstr "" -#: ../../Zotlabs/Module/Import.php:605 +#: ../../Zotlabs/Module/Import.php:610 msgid "Move this channel (disable all previous locations)" msgstr "" -#: ../../Zotlabs/Module/Import.php:606 +#: ../../Zotlabs/Module/Import.php:611 msgid "Use this channel nickname instead of the one provided" msgstr "" -#: ../../Zotlabs/Module/Import.php:606 +#: ../../Zotlabs/Module/Import.php:611 msgid "" "Leave blank to keep your existing channel nickname. You will be randomly " "assigned a similar nickname if either name is already allocated on this site." msgstr "" -#: ../../Zotlabs/Module/Import.php:608 +#: ../../Zotlabs/Module/Import.php:613 msgid "" "This process may take several minutes to complete. Please submit the form " "only once and leave this page open until finished." msgstr "" -#: ../../Zotlabs/Module/Acl.php:370 +#: ../../Zotlabs/Module/Acl.php:371 msgid "network" msgstr "" diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 9df6511aa..69ec2d8ca 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -1312,6 +1312,7 @@ return array( 'Zotlabs\\Lib\\ThreadItem' => $baseDir . '/Zotlabs/Lib/ThreadItem.php', 'Zotlabs\\Lib\\ThreadListener' => $baseDir . '/Zotlabs/Lib/ThreadListener.php', 'Zotlabs\\Lib\\ThreadStream' => $baseDir . '/Zotlabs/Lib/ThreadStream.php', + 'Zotlabs\\Lib\\Traits\\HelpHelperTrait' => $baseDir . '/Zotlabs/Lib/Traits/HelpHelperTrait.php', 'Zotlabs\\Lib\\Verify' => $baseDir . '/Zotlabs/Lib/Verify.php', 'Zotlabs\\Lib\\Webfinger' => $baseDir . '/Zotlabs/Lib/Webfinger.php', 'Zotlabs\\Lib\\XConfig' => $baseDir . '/Zotlabs/Lib/XConfig.php', @@ -1512,8 +1513,6 @@ return array( 'Zotlabs\\Module\\Tasks' => $baseDir . '/Zotlabs/Module/Tasks.php', 'Zotlabs\\Module\\Theme_info' => $baseDir . '/Zotlabs/Module/Theme_info.php', 'Zotlabs\\Module\\Thing' => $baseDir . '/Zotlabs/Module/Thing.php', - 'Zotlabs\\Module\\Toggle_mobile' => $baseDir . '/Zotlabs/Module/Toggle_mobile.php', - 'Zotlabs\\Module\\Toggle_safesearch' => $baseDir . '/Zotlabs/Module/Toggle_safesearch.php', 'Zotlabs\\Module\\Token' => $baseDir . '/Zotlabs/Module/Token.php', 'Zotlabs\\Module\\Tokens' => $baseDir . '/Zotlabs/Module/Tokens.php', 'Zotlabs\\Module\\Totp_check' => $baseDir . '/Zotlabs/Module/Totp_check.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index d6f2c2f9d..1b958f6a8 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -1559,6 +1559,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Lib\\ThreadItem' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadItem.php', 'Zotlabs\\Lib\\ThreadListener' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadListener.php', 'Zotlabs\\Lib\\ThreadStream' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadStream.php', + 'Zotlabs\\Lib\\Traits\\HelpHelperTrait' => __DIR__ . '/../..' . '/Zotlabs/Lib/Traits/HelpHelperTrait.php', 'Zotlabs\\Lib\\Verify' => __DIR__ . '/../..' . '/Zotlabs/Lib/Verify.php', 'Zotlabs\\Lib\\Webfinger' => __DIR__ . '/../..' . '/Zotlabs/Lib/Webfinger.php', 'Zotlabs\\Lib\\XConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/XConfig.php', @@ -1759,8 +1760,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Module\\Tasks' => __DIR__ . '/../..' . '/Zotlabs/Module/Tasks.php', 'Zotlabs\\Module\\Theme_info' => __DIR__ . '/../..' . '/Zotlabs/Module/Theme_info.php', 'Zotlabs\\Module\\Thing' => __DIR__ . '/../..' . '/Zotlabs/Module/Thing.php', - 'Zotlabs\\Module\\Toggle_mobile' => __DIR__ . '/../..' . '/Zotlabs/Module/Toggle_mobile.php', - 'Zotlabs\\Module\\Toggle_safesearch' => __DIR__ . '/../..' . '/Zotlabs/Module/Toggle_safesearch.php', 'Zotlabs\\Module\\Token' => __DIR__ . '/../..' . '/Zotlabs/Module/Token.php', 'Zotlabs\\Module\\Tokens' => __DIR__ . '/../..' . '/Zotlabs/Module/Tokens.php', 'Zotlabs\\Module\\Totp_check' => __DIR__ . '/../..' . '/Zotlabs/Module/Totp_check.php', -- cgit v1.2.3 From 6666bdfda9bfa0ff547334195201c1d71e074520 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 27 Jun 2024 07:47:39 +0000 Subject: version 9.3 --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 9191600fb..52c222b0a 100644 --- a/boot.php +++ b/boot.php @@ -66,7 +66,7 @@ require_once('include/security.php'); define('PLATFORM_NAME', 'hubzilla'); -define('STD_VERSION', '9.2RC1'); +define('STD_VERSION', '9.3'); define('ZOT_REVISION', '6.0'); define('DB_UPDATE_VERSION', 1263); -- cgit v1.2.3 From 7028e075350e9f1d16bcd6b9785f573937aa8f8c Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 27 Jun 2024 08:27:54 +0000 Subject: adjust right margin of profile images --- view/theme/redbasic/css/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 53d164482..2de40d671 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -781,7 +781,7 @@ nav .acpopup { .shared_header img { border-radius: var(--bs-border-radius); - margin-right: .75rem; + margin-right: .5rem; } .tag1 { -- cgit v1.2.3 From 6a710c3cc303fed95532fe3600c2bdda08068add Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 27 Jun 2024 08:29:01 +0000 Subject: fix version --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 52c222b0a..9191600fb 100644 --- a/boot.php +++ b/boot.php @@ -66,7 +66,7 @@ require_once('include/security.php'); define('PLATFORM_NAME', 'hubzilla'); -define('STD_VERSION', '9.3'); +define('STD_VERSION', '9.2RC1'); define('ZOT_REVISION', '6.0'); define('DB_UPDATE_VERSION', 1263); -- cgit v1.2.3 From 26cb32612d275bd4f44d8bdf2c9da3e6e535b1ed Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 27 Jun 2024 19:23:00 +0000 Subject: fix display issue for doubleleft template --- view/php/doubleleft.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/php/doubleleft.php b/view/php/doubleleft.php index 2d1571bf8..97b1546dc 100644 --- a/view/php/doubleleft.php +++ b/view/php/doubleleft.php @@ -23,7 +23,7 @@
    - +
    -- cgit v1.2.3 From 30ba0661aa591b860ee4d7e38cee0a8ad4c3ea44 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 27 Jun 2024 20:01:52 +0000 Subject: fix php error --- Zotlabs/Module/Setup.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index 7ca3f827c..35079e5e5 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -58,7 +58,7 @@ class Setup extends \Zotlabs\Web\Controller { */ function post() { - switch($this->install_wizard_pass) { + switch(self::$install_wizard_pass) { case 1: case 2: return; @@ -180,18 +180,18 @@ class Setup extends \Zotlabs\Web\Controller { $install_title = t('$Projectname Server - Setup'); if(x(\App::$data, 'db_conn_failed')) { - $this->install_wizard_pass = 2; + self::$install_wizard_pass = 2; $wizard_status = t('Could not connect to database.'); } if(x(\App::$data, 'url_fail')) { - $this->install_wizard_pass = 3; + self::$install_wizard_pass = 3; $wizard_status = t('Could not connect to specified site URL. Possible SSL certificate or DNS issue.'); if(\App::$data['url_error']) $wizard_status .= ' ' . \App::$data['url_error']; } if(x(\App::$data, 'db_create_failed')) { - $this->install_wizard_pass = 2; + self::$install_wizard_pass = 2; $wizard_status = t('Could not create table.'); } $db_return_text = ''; -- cgit v1.2.3 From 464149e22d2654fc548e4c7090358d9007bc8031 Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 28 Jun 2024 18:18:35 +0000 Subject: fail to import more gracefully if a channel has already been imported at some point but was deleted again --- Zotlabs/Module/Import.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php index 24b7498dd..5ace4e72d 100644 --- a/Zotlabs/Module/Import.php +++ b/Zotlabs/Module/Import.php @@ -192,6 +192,12 @@ class Import extends Controller { return; } + if ($channel['channel_removed']) { + logger('Channel exists but has been marked removed on this hub. ', print_r($channel,true)); + notice( t('Channel exists but has been marked removed on this hub. Import failed.') . EOL); + return; + } + if (is_array($data['config'])) { import_config($channel, $data['config']); } @@ -558,7 +564,7 @@ class Import extends Controller { goaway(z_root() . '/import_progress'); } - if (!$cf_api_compat) { + if ($import_posts && !$cf_api_compat) { notice(t('Automatic content and files import was not possible due to API version incompatiblity. Please import content and files manually!') . EOL); } -- cgit v1.2.3 From f944f46744c45aa64068b33790692f89f03fce50 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 4 Jul 2024 09:30:21 +0000 Subject: fix possible php error --- include/zid.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/zid.php b/include/zid.php index 9f0b23edf..f25a7122f 100644 --- a/include/zid.php +++ b/include/zid.php @@ -38,10 +38,16 @@ function is_matrix_url($url) { * @return string */ function zid($s, $address = '') { - if (!$s || strpos($s,'zid=')) + if (!strlen($s) || strpos($s,'zid=')) { return $s; + } $m = parse_url($s); + + if (!is_array($m)) { + return $s; + } + $fragment = ((array_key_exists('fragment',$m) && $m['fragment']) ? $m['fragment'] : false); if($fragment !== false) $s = str_replace('#' . $fragment,'',$s); -- cgit v1.2.3 From ed03befa027aa324fb2aaa766002e647ecaa77d8 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 4 Jul 2024 09:31:13 +0000 Subject: fix possible php error --- include/zid.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/zid.php b/include/zid.php index 9f0b23edf..f25a7122f 100644 --- a/include/zid.php +++ b/include/zid.php @@ -38,10 +38,16 @@ function is_matrix_url($url) { * @return string */ function zid($s, $address = '') { - if (!$s || strpos($s,'zid=')) + if (!strlen($s) || strpos($s,'zid=')) { return $s; + } $m = parse_url($s); + + if (!is_array($m)) { + return $s; + } + $fragment = ((array_key_exists('fragment',$m) && $m['fragment']) ? $m['fragment'] : false); if($fragment !== false) $s = str_replace('#' . $fragment,'',$s); -- cgit v1.2.3 From 04a35dac9aa1949981f2c2d261f869747a0e2686 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 4 Jul 2024 09:41:21 +0000 Subject: revert the strlen check --- include/zid.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/zid.php b/include/zid.php index f25a7122f..05b4cee16 100644 --- a/include/zid.php +++ b/include/zid.php @@ -38,7 +38,7 @@ function is_matrix_url($url) { * @return string */ function zid($s, $address = '') { - if (!strlen($s) || strpos($s,'zid=')) { + if ($s || strpos($s,'zid=')) { return $s; } -- cgit v1.2.3 From f882c44fb397c8a891c0e16541a6bd44a6086c20 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 4 Jul 2024 10:13:08 +0000 Subject: fix wrong logic after last commit --- include/zid.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/zid.php b/include/zid.php index 05b4cee16..159a3b834 100644 --- a/include/zid.php +++ b/include/zid.php @@ -38,7 +38,7 @@ function is_matrix_url($url) { * @return string */ function zid($s, $address = '') { - if ($s || strpos($s,'zid=')) { + if (!$s || strpos($s,'zid=')) { return $s; } -- cgit v1.2.3 From 213ee83a92bf7a297bd985f680e98d9a3ba513d4 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 6 Jul 2024 10:29:13 +0000 Subject: update changelog --- CHANGELOG | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index b5cd098a4..9d8b2178f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,64 @@ +Hubzilla 9.2 (2024-??-??) + - Fail to import more gracefully if a channel has already been imported at some point but was deleted again + - Use the doubleleft template by default for admin pages to work around some display issues + - Reflect the censored state in the local xchan + - Exclude toplevel posts by censored channels in the public stream + - Update API docs for Module test case base class + - Add helper expectRedirectTo to module test class + - Refactor is_local_url() and add api doc + - Use empty() to check if array entry exist in create_identity() + - Add basic test for create_identity function + - Allow passing callable as array to hooks + - Use DbaTransaction class for db transactions in queueworker + - Remove obsolete stubs from Permissions tests + - Refactor mod rpost to fix open redirect issue and add tests + - Configure system.baseurl for tests + - Add basic test and fix session access for mod rpost + - Add config file and rules for PHP Code Sniffer + - Refactor mod setup + - Pass the force argument to the xchan_photo daemon + - Declare arg and return types for unparse_url() + - Skip checking MFA status for WebDAV and CardDAV requests + - Upgrade test framework to PHPUnit 10.5 + - Minor style update for the .abook-self CSS class + - Update docs on tags and mentions. + - Refactor and cleanup Rbmark module and add tests + - Remove unused Toggle_(safesearch|mobile) modules + - Make mod regate return to system.workflow_channel_next + - Show register message field only if registration is set to register_approve + - Add bbcode support for the HTML5 del tag + - Rename HelpHelper to HelpHelperTrait + - Remove jgrowl in favour of bootstrap toast + - Refactor mod help + - Reduce some global state and add some docs + - Make save_chunk() deal with userfile and file array keys + - Update siteinfo to remove traces of zotlabs.org + - Minor refactor for in mod import and store import host for possible later use + - Allow to kick off import sync process in case it did not start at all + - Updated spanish translations + + Bugfixes + - Fix possible PHP error in zid() + - Fix display issue for doubleleft template + - Fix issue where event items were parsed multiple times on display + - Fix return to blank page after editing post under some circumstances + - Fix missing include in QueueWorker + - Fix warnings exposed by tests + - Fix timestamp handling in menu_create() + - Fix updated arg not supported in pconfig wrapper function + - Fix default timeouts for z_(fetch|post)_url + - Fix hcard addon markup not available if profile entries were missing + - Fix nested lists parsing + - Fix help menu CSS + - Fix get_rpost_path() broken for URL's with no port + - Fix passing an empty filter to deliverable_abook_xchans() will return all deliverable abook xchans + + Addons + - Wiki: fix revert if editor is not ace + - Wiki: do not slate deleted wiki pages for download + - Pubcrawl: do not use mentions for addressing if post is restricted + + Hubzilla 9.0.2 (2024-06-07) - Fix buttons in event viewer - Fix some PHP warnings and errors -- cgit v1.2.3 From c04e781926a78e514cdf211fa24930a331149072 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 6 Jul 2024 11:04:43 +0000 Subject: version 9.2 --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 9191600fb..79609e876 100644 --- a/boot.php +++ b/boot.php @@ -66,7 +66,7 @@ require_once('include/security.php'); define('PLATFORM_NAME', 'hubzilla'); -define('STD_VERSION', '9.2RC1'); +define('STD_VERSION', '9.2'); define('ZOT_REVISION', '6.0'); define('DB_UPDATE_VERSION', 1263); -- cgit v1.2.3