diff --git a/Code/Access/PermissionRoles.php b/Code/Access/PermissionRoles.php
index 1b6ec352b..d8db2a634 100644
--- a/Code/Access/PermissionRoles.php
+++ b/Code/Access/PermissionRoles.php
@@ -39,7 +39,7 @@ class PermissionRoles
$ret['directory_publish'] = true;
$ret['online'] = true;
$ret['perms_connect'] = [
- 'view_stream', 'view_profile', 'view_contacts', 'view_storage',
+ 'view_stream', 'deliver_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'send_stream', 'post_mail', 'post_wall', 'post_comments'
];
$ret['limits'] = PermissionLimits::Std_Limits();
@@ -51,7 +51,7 @@ class PermissionRoles
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
- 'view_stream', 'view_profile', 'view_storage',
+ 'view_stream', 'deliver_stream', 'view_profile', 'view_storage',
'view_pages', 'send_stream', 'post_mail', 'post_wall', 'post_comments'
];
$ret['limits'] = PermissionLimits::Std_Limits();
@@ -64,7 +64,7 @@ class PermissionRoles
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
- 'view_stream', 'view_profile', 'view_contacts', 'view_storage', 'write_storage',
+ 'view_stream', 'deliver_stream', 'view_profile', 'view_contacts', 'view_storage', 'write_storage',
'view_pages', 'post_mail', 'post_wall', 'post_comments'
];
$ret['limits'] = PermissionLimits::Std_Limits();
@@ -79,7 +79,7 @@ class PermissionRoles
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
- 'view_stream', 'view_profile', 'view_contacts', 'view_storage',
+ 'view_stream', 'deliver_stream', 'view_profile', 'view_contacts', 'view_storage',
'view_pages', 'post_mail', 'post_wall', 'post_comments', 'moderated'
];
$ret['limits'] = PermissionLimits::Std_Limits();
@@ -93,7 +93,7 @@ class PermissionRoles
$ret['directory_publish'] = true;
$ret['online'] = false;
$ret['perms_connect'] = [
- 'view_stream', 'view_profile', 'view_contacts', 'view_storage', 'write_storage',
+ 'view_stream', 'deliver_stream', 'view_profile', 'view_contacts', 'view_storage', 'write_storage',
'view_pages', 'post_mail', 'post_wall', 'post_comments'
];
$ret['limits'] = PermissionLimits::Std_Limits();
diff --git a/Code/Access/Permissions.php b/Code/Access/Permissions.php
index 3fd019214..902f00a59 100644
--- a/Code/Access/Permissions.php
+++ b/Code/Access/Permissions.php
@@ -58,18 +58,19 @@ class Permissions
{
$perms = [
- 'view_stream' => t('Grant viewing access to and delivery of your channel stream and posts'),
- 'view_profile' => t('Grant viewing access to your default channel profile'),
- 'view_contacts' => t('Grant viewing access to your address book (connections)'),
- 'view_storage' => t('Grant viewing access to your file storage and photos'),
- 'post_wall' => t('Grant permission to post on your channel (wall) page'),
- 'post_mail' => t('Accept delivery of direct messages and personal mail'),
- 'send_stream' => t('Accept delivery of their posts and all comments to their posts'),
- 'post_comments' => t('Accept delivery of their comments and likes on your posts'),
- 'write_storage' => t('Grant upload permissions to your file storage and photos'),
- 'republish' => t('Grant permission to republish/mirror your posts'),
- 'moderated' => t('Accept comments and wall posts only after approval (moderation)'),
- 'delegate' => t('Grant channel administration (delegation) permission')
+ 'view_stream' => t('Grant viewing access to your channel stream and posts'),
+ 'deliver_stream' => t('Permit delivery of your channel stream and posts'),
+ 'view_profile' => t('Grant viewing access to your default channel profile'),
+ 'view_contacts' => t('Grant viewing access to your address book (connections)'),
+ 'view_storage' => t('Grant viewing access to your file storage and photos'),
+ 'post_wall' => t('Grant permission to post on your channel (wall) page'),
+ 'post_mail' => t('Accept delivery of direct messages and personal mail'),
+ 'send_stream' => t('Accept delivery of their posts and all comments to their posts'),
+ 'post_comments' => t('Accept delivery of their comments and likes on your posts'),
+ 'write_storage' => t('Grant upload permissions to your file storage and photos'),
+ 'republish' => t('Grant permission to republish/mirror your posts'),
+ 'moderated' => t('Accept comments and wall posts only after approval (moderation)'),
+ 'delegate' => t('Grant channel administration (delegation) permission')
];
$x = [
diff --git a/Code/Lib/Account.php b/Code/Lib/Account.php
index b3661d55c..de415db26 100644
--- a/Code/Lib/Account.php
+++ b/Code/Lib/Account.php
@@ -186,20 +186,20 @@ class Account {
set_config('system', 'prvkey', $hostkey['prvkey']);
}
- $invite_result = check_account_invite($invite_code);
+ $invite_result = self::check_invite($invite_code);
if ($invite_result['error']) {
$result['message'] = $invite_result['message'];
return $result;
}
- $email_result = check_account_email($email);
+ $email_result = self::check_email($email);
if ($email_result['error']) {
$result['message'] = $email_result['message'];
return $result;
}
- $password_result = check_account_password($password);
+ $password_result = self::check_password($password);
if ($password_result['error']) {
$result['message'] = $password_result['message'];
diff --git a/Code/Lib/Activity.php b/Code/Lib/Activity.php
index df4d75e1b..29fed0c06 100644
--- a/Code/Lib/Activity.php
+++ b/Code/Lib/Activity.php
@@ -1751,7 +1751,7 @@ class Activity
// information
$ret = self::encode_person($sys, true, true);
- $ret['type'] = ((Channel::is_group($sys['channel_id'])) ? 'Group' : 'Service');
+ $ret['type'] = self::xchan_type_to_type(intval($sys['xchan_type']));
$ret['id'] = z_root();
$ret['alsoKnownAs'] = z_root() . '/channel/sys';
$auto_follow = false;
@@ -1779,7 +1779,6 @@ class Activity
];
}
- $ret['summary'] = bbcode(get_config('system', 'siteinfo', ''), ['export' => true]);
$ret['source'] = [
'mediaType' => 'text/x-multicode',
'summary' => get_config('system', 'siteinfo', '')
@@ -2812,17 +2811,17 @@ class Activity
if (array_key_exists('published', $act->data) && $act->data['published']) {
$s['created'] = datetime_convert('UTC', 'UTC', $act->data['published']);
- } elseif (array_key_exists('published', $act->obj) && $act->obj['published']) {
+ } elseif (is_array($acct->obj) && array_key_exists('published', $act->obj) && $act->obj['published']) {
$s['created'] = datetime_convert('UTC', 'UTC', $act->obj['published']);
}
if (array_key_exists('updated', $act->data) && $act->data['updated']) {
$s['edited'] = datetime_convert('UTC', 'UTC', $act->data['updated']);
- } elseif (array_key_exists('updated', $act->obj) && $act->obj['updated']) {
+ } elseif (is_array($act->obj) && array_key_exists('updated', $act->obj) && $act->obj['updated']) {
$s['edited'] = datetime_convert('UTC', 'UTC', $act->obj['updated']);
}
if (array_key_exists('expires', $act->data) && $act->data['expires']) {
$s['expires'] = datetime_convert('UTC', 'UTC', $act->data['expires']);
- } elseif (array_key_exists('expires', $act->obj) && $act->obj['expires']) {
+ } elseif (is_array($act->obj) && array_key_exists('expires', $act->obj) && $act->obj['expires']) {
$s['expires'] = datetime_convert('UTC', 'UTC', $act->obj['expires']);
}
@@ -3044,7 +3043,7 @@ class Activity
if (
$generator && array_key_exists('type', $generator)
- && in_array($generator['type'], ['Application', 'Service']) && array_key_exists('name', $generator)
+ && in_array($generator['type'], ['Application', 'Service', 'Organization']) && array_key_exists('name', $generator)
) {
$s['app'] = escape_tags($generator['name']);
}
@@ -3620,7 +3619,8 @@ class Activity
$item['obj_type'] = 'Answer';
}
}
- } else {
+ }
+ else {
if (perm_is_allowed($channel['channel_id'], $observer_hash, 'send_stream') || ($is_system && $pubstream)) {
logger('allowed: permission allowed', LOGGER_DATA);
$allowed = true;
@@ -4267,6 +4267,22 @@ class Activity
}
}
+ public static function xchan_type_to_type($type)
+ {
+ switch ($type) {
+ case XCHAN_TYPE_GROUP;
+ return 'Group';
+ case XCHAN_TYPE_SERVICE;
+ return 'Service';
+ case XCHAN_TYPE_ORGANIZATION;
+ return 'Organization';
+ case XCHAN_TYPE_APPLICATION;
+ return 'Application';
+ default:
+ return 'Person';
+ }
+ }
+
public static function get_cached_actor($id)
{
return (XConfig::Get($id, 'system', 'actor_record'));
diff --git a/Code/Lib/Apps.php b/Code/Lib/Apps.php
index 65d3f0063..9ef0bdcb4 100644
--- a/Code/Lib/Apps.php
+++ b/Code/Lib/Apps.php
@@ -76,6 +76,7 @@ class Apps
}
$default_apps = [
+ 'Admin',
'Channel Home',
'Connections',
'Directory',
diff --git a/Code/Lib/Channel.php b/Code/Lib/Channel.php
index fb2131798..6c100e17e 100644
--- a/Code/Lib/Channel.php
+++ b/Code/Lib/Channel.php
@@ -13,6 +13,7 @@ use Code\Lib\Libsync;
use Code\Lib\AccessList;
use Code\Lib\Crypto;
use Code\Lib\Connect;
+use Code\Lib\ABConfig;
use Code\Access\PermissionRoles;
use Code\Access\PermissionLimits;
use Code\Access\Permissions;
@@ -89,9 +90,48 @@ class Channel
$sys = self::get_system();
if ($sys) {
- if (isset($sys['channel_pubkey']) && $sys['channel_pubkey'] === get_config('system', 'pubkey')) {
- return;
- } else {
+ // upgrade the default network drivers and permissions if this looks like an upgraded zot6-based platform.
+
+ if ($sys['xchan_network'] !== 'nomad') {
+ $chans = q("select * from channel where true");
+ if ($chans) {
+ foreach ($chans as $chan) {
+ q("update hubloc set hubloc_network = 'nomad' where hubloc_hash = '%s'",
+ dbesc($chan['channel_hash'])
+ );
+ q("update xchan set xchan_network = 'nomad' where xchan_hash = '%s'",
+ dbesc($chan['channel_hash'])
+ );
+ }
+ }
+ q("update xchan set xchan_hidden = 0, xchan_type = %d where xchan_hash = '%s'",
+ intval(XCHAN_TYPE_ORGANIZATION),
+ dbesc($sys['xchan_hash'])
+ );
+
+ // Add the new "deliver_stream" permission
+
+ $c = q("select * from channel where true");
+ if ($c) {
+ foreach ($c as $cv) {
+ PConfig::Set($cv['channel_id'],'perm_limits','deliver_stream', PERMS_SPECIFIC);
+ }
+ }
+ $ab = q("SELECT * from abook where abook_self = 0");
+ if ($ab) {
+ foreach ($ab as $abv) {
+ $p = explode(',', ABConfig::Get($abv['abook_channel'], $abv['abook_xchan'], 'system', 'my_perms', EMPTY_STR));
+ if (! in_array('deliver_stream', $p)) {
+ $p[] = 'deliver_stream';
+ }
+ ABConfig::Set($abv['abook_channel'], $abv['abook_xchan'], 'system', 'my_perms', implode(',', $p));
+ }
+ }
+ }
+
+ // fix lost system keys, since we cannot communicate without them
+
+ if (!(isset($sys['channel_pubkey']) && $sys['channel_pubkey'] === get_config('system', 'pubkey'))) {
// upgrade the sys channel and return
$pubkey = get_config('system', 'pubkey');
$prvkey = get_config('system', 'prvkey');
@@ -139,14 +179,15 @@ class Channel
dbesc($sys['channel_hash'])
);
- return;
}
+ App::$sys_channel = $sys;
+ return;
}
self::create([
'account_id' => 'xxx', // Typecast trickery: account_id is required. This will create an identity with an (integer) account_id of 0
'nickname' => 'sys',
- 'name' => 'System',
+ 'name' => ucfirst(basename(z_root())),
'permissions_role' => 'social',
'pageflags' => 0,
'publish' => 0,
@@ -306,6 +347,14 @@ class Channel
$publish = intval($role_permissions['directory_publish']);
}
+ $xchannel_type = XCHAN_TYPE_PERSON ;
+ if (strpos($arr['permissions_role'], 'forum') !== false || strpos($arr['permissions_role'], 'group') !== false) {
+ $xchannel_type = XCHAN_TYPE_GROUP ;
+ }
+ if ($system) {
+ $xchannel_type = XCHAN_TYPE_ORGANIZATION ;
+ }
+
$primary = true;
if (array_key_exists('primary', $arr)) {
@@ -435,6 +484,7 @@ class Channel
'xchan_connurl' => z_root() . '/poco/' . $ret['channel']['channel_address'],
'xchan_name' => $ret['channel']['channel_name'],
'xchan_network' => 'nomad',
+ 'xchan_type' => $xchannel_type,
'xchan_updated' => datetime_convert(),
'xchan_photo_date' => datetime_convert(),
'xchan_name_date' => datetime_convert(),
diff --git a/Code/Lib/Infocon.php b/Code/Lib/Infocon.php
index 5e77717b6..843294189 100644
--- a/Code/Lib/Infocon.php
+++ b/Code/Lib/Infocon.php
@@ -38,6 +38,7 @@ class Infocon {
}
public static function from_c_comment($file) {
+
$info = NULL;
try {
$code = file_get_contents($file);
@@ -45,11 +46,13 @@ class Infocon {
catch (Exception $e) {
;
}
+
// Match and fetch the first C-style comment
$result = preg_match("|/\*.*\*/|msU", $code, $matches);
if ($result) {
- $lines = explode("\n", $m[0]);
+
+ $lines = explode("\n", $matches[0]);
foreach ($lines as $line) {
$line = trim($line, "\t\n\r */");
if ($line != "") {
diff --git a/Code/Lib/Libprofile.php b/Code/Lib/Libprofile.php
index b9bb994c0..fb22ae5dd 100644
--- a/Code/Lib/Libprofile.php
+++ b/Code/Lib/Libprofile.php
@@ -290,7 +290,7 @@ class Libprofile
$xchan = q("SELECT * from xchan where xchan_hash = '%s'",
dbesc($profile['channel_hash'])
- }
+ );
$is_group = ($xchan && intval($xchan[0]['xchan_type']) === XCHAN_TYPE_GROUP);
$can_dm = perm_is_allowed($profile['uid'], (is_array($observer)) ? $observer['xchan_hash'] : EMPTY_STR, 'post_mail') && $is_group ;
diff --git a/Code/Lib/Libzot.php b/Code/Lib/Libzot.php
index c6e17d431..755073743 100644
--- a/Code/Lib/Libzot.php
+++ b/Code/Lib/Libzot.php
@@ -1075,25 +1075,8 @@ class Libzot
$address = $ud_arr['ud_addr'];
}
- // Are we a directory server of some kind?
- $other_realm = false;
-
-// $realm = get_directory_realm();
-// if (array_key_exists('site',$arr)
-// && array_key_exists('realm',$arr['site'])
-// && (strpos($arr['site']['realm'],$realm) === false))
-// $other_realm = true;
-
-
-// if ($dirmode != DIRECTORY_MODE_NORMAL) {
-
- // We're some kind of directory server. However we can only add directory information
- // if the entry is in the same realm (or is a sub-realm). Sub-realms are denoted by
- // including the parent realm in the name. e.g. 'RED_GLOBAL:foo' would allow an entry to
- // be in directories for the local realm (foo) and also the RED_GLOBAL realm.
-
- if (array_key_exists('profile', $arr) && is_array($arr['profile']) && (!$other_realm)) {
+ if (array_key_exists('profile', $arr) && is_array($arr['profile'])) {
$profile_changed = Libzotdir::import_directory_profile($xchan_hash, $arr['profile'], $address, $ud_flags, 1);
if ($profile_changed) {
$what .= 'profile ';
@@ -1111,7 +1094,7 @@ class Libzot
dbesc($xchan_hash)
);
}
-// }
+
if (array_key_exists('site', $arr) && is_array($arr['site'])) {
$profile_changed = self::import_site($arr['site']);
@@ -1417,6 +1400,7 @@ class Libzot
if ($has_data) {
if (in_array($env['type'], ['activity', 'response'])) {
+
if (!(is_array($AS->actor) && isset($AS->actor['id']))) {
logger('No author!');
return;
@@ -1426,7 +1410,17 @@ class Libzot
"select hubloc_hash, hubloc_network, hubloc_url from hubloc where hubloc_id_url = '%s'",
dbesc($AS->actor['id'])
);
-
+ if (! $r) {
+ // Author is unknown to this site. Perform channel discovery and try again.
+ $z = discover_by_webbie($AS->actor['id']);
+ if ($z) {
+ $r = q(
+ "select hubloc_hash, hubloc_network, hubloc_url from hubloc where hubloc_id_url = '%s'",
+ dbesc($AS->actor['id'])
+ );
+ }
+ }
+
if ($r) {
$r = self::zot_record_preferred($r);
$arr['author_xchan'] = $r['hubloc_hash'];
@@ -2870,12 +2864,6 @@ class Libzot
if ($arr['directory_mode'] == 'normal') {
$site_directory = DIRECTORY_MODE_NORMAL;
}
- if ($arr['directory_mode'] == 'primary') {
- $site_directory = DIRECTORY_MODE_PRIMARY;
- }
- if ($arr['directory_mode'] == 'secondary') {
- $site_directory = DIRECTORY_MODE_SECONDARY;
- }
if ($arr['directory_mode'] == 'standalone') {
$site_directory = DIRECTORY_MODE_STANDALONE;
}
@@ -2924,11 +2912,9 @@ class Libzot
$site_logo = EMPTY_STR;
$sitename = EMPTY_STR;
- $directory_url = htmlspecialchars(isset($arr['directory_url']) ? $arr['directory_url'] : EMPTY_STR, ENT_COMPAT, 'UTF-8', false);
$url = htmlspecialchars(strtolower($arr['url']), ENT_COMPAT, 'UTF-8', false);
$sellpage = htmlspecialchars($arr['sellpage'], ENT_COMPAT, 'UTF-8', false);
$site_location = htmlspecialchars($arr['location'], ENT_COMPAT, 'UTF-8', false);
- $site_realm = htmlspecialchars($arr['realm'], ENT_COMPAT, 'UTF-8', false);
$sitename = htmlspecialchars($arr['sitename'], ENT_COMPAT, 'UTF-8', false);
$site_project = htmlspecialchars($arr['project'], ENT_COMPAT, 'UTF-8', false);
$site_crypto = ((array_key_exists('encryption', $arr) && is_array($arr['encryption'])) ? htmlspecialchars(implode(',', $arr['encryption']), ENT_COMPAT, 'UTF-8', false) : '');
@@ -2958,12 +2944,10 @@ class Libzot
if (
($siterecord['site_flags'] != $site_flags)
|| ($siterecord['site_access'] != $access_policy)
- || ($siterecord['site_directory'] != $directory_url)
|| ($siterecord['site_sellpage'] != $sellpage)
|| ($siterecord['site_location'] != $site_location)
|| ($siterecord['site_register'] != $register_policy)
|| ($siterecord['site_project'] != $site_project)
- || ($siterecord['site_realm'] != $site_realm)
|| ($siterecord['site_crypto'] != $site_crypto)
|| ($siterecord['site_version'] != $site_version)
) {
@@ -2973,16 +2957,14 @@ class Libzot
// logger('import_site: stored: ' . print_r($siterecord,true));
$r = q(
- "update site set site_dead = 0, site_location = '%s', site_flags = %d, site_access = %d, site_directory = '%s', site_register = %d, site_update = '%s', site_sellpage = '%s', site_realm = '%s', site_type = %d, site_project = '%s', site_version = '%s', site_crypto = '%s'
+ "update site set site_dead = 0, site_location = '%s', site_flags = %d, site_access = %d, site_register = %d, site_update = '%s', site_sellpage = '%s', site_type = %d, site_project = '%s', site_version = '%s', site_crypto = '%s'
where site_url = '%s'",
dbesc($site_location),
intval($site_flags),
intval($access_policy),
- dbesc($directory_url),
intval($register_policy),
dbesc(datetime_convert()),
dbesc($sellpage),
- dbesc($site_realm),
intval(SITE_TYPE_ZOT),
dbesc($site_project),
dbesc($site_version),
@@ -3010,10 +2992,8 @@ class Libzot
'site_access' => intval($access_policy),
'site_flags' => intval($site_flags),
'site_update' => datetime_convert(),
- 'site_directory' => $directory_url,
'site_register' => intval($register_policy),
'site_sellpage' => $sellpage,
- 'site_realm' => $site_realm,
'site_type' => intval(SITE_TYPE_ZOT),
'site_project' => $site_project,
'site_version' => $site_version,
@@ -3488,7 +3468,6 @@ class Libzot
$ret['site']['sitehash'] = get_config('system', 'location_hash');
$ret['site']['sellpage'] = get_config('system', 'sellpage');
$ret['site']['location'] = get_config('system', 'site_location');
- $ret['site']['realm'] = get_directory_realm();
$ret['site']['sitename'] = System::get_site_name();
$ret['site']['logo'] = System::get_site_icon();
$ret['site']['project'] = System::get_project_name();
diff --git a/Code/Lib/MessageFilter.php b/Code/Lib/MessageFilter.php
index 97b049b02..6d64f93fc 100644
--- a/Code/Lib/MessageFilter.php
+++ b/Code/Lib/MessageFilter.php
@@ -2,6 +2,7 @@
namespace Code\Lib;
+require_once('include/html2plain.php');
class MessageFilter
{
@@ -10,7 +11,6 @@ class MessageFilter
public static function evaluate($item, $incl, $excl)
{
- require_once('include/html2plain.php');
$text = prepare_text($item['body'],((isset($item['mimetype'])) ? $item['mimetype'] : 'text/x-multicode'));
$text = html2plain(($item['title']) ? $item['title'] . ' ' . $text : $text);
@@ -45,6 +45,14 @@ class MessageFilter
return false;
}
}
+ } elseif (substr($word, 0, 2) === '?+') {
+ if (self::test_condition(substr($word, 2), $item['obj'])) {
+ return false;
+ }
+ } elseif (substr($word, 0, 1) === '?') {
+ if (self::test_condition(substr($word, 1), $item)) {
+ return false;
+ }
} elseif ((strpos($word, '/') === 0) && preg_match($word, $text)) {
return false;
} elseif ((strpos($word, 'lang=') === 0) && ($lang) && (strcasecmp($lang, trim(substr($word, 5))) == 0)) {
@@ -77,6 +85,14 @@ class MessageFilter
return true;
}
}
+ } elseif (substr($word, 0, 2) === '?+') {
+ if (self::test_condition(substr($word, 2), $item['obj'])) {
+ return true;
+ }
+ } elseif (substr($word, 0, 1) === '?') {
+ if (self::test_condition(substr($word, 1), $item)) {
+ return true;
+ }
} elseif ((strpos($word, '/') === 0) && preg_match($word, $text)) {
return true;
} elseif ((strpos($word, 'lang=') === 0) && ($lang) && (strcasecmp($lang, trim(substr($word, 5))) == 0)) {
@@ -93,4 +109,117 @@ class MessageFilter
return false;
}
+
+
+ /**
+ * @brief Test for Conditional Execution conditions. Shamelessly ripped off from Code/Render/Comanche
+ *
+ * This is extensible. The first version of variable testing supports tests of the forms:
+ *
+ * - ?foo ~= baz which will check if item.foo contains the string 'baz';
+ * - ?foo == baz which will check if item.foo is the string 'baz';
+ * - ?foo != baz which will check if item.foo is not the string 'baz';
+ * - ?foo >= 3 which will check if item.foo is greater than or equal to 3;
+ * - ?foo > 3 which will check if item.foo is greater than 3;
+ * - ?foo <= 3 which will check if item.foo is less than or equal to 3;
+ * - ?foo < 3 which will check if item.foo is less than 3;
+ *
+ * - ?foo {} baz which will check if 'baz' is an array element in item.foo
+ * - ?foo {*} baz which will check if 'baz' is an array key in item.foo
+ * - ?foo which will check for a return of a true condition for item.foo;
+ *
+ * The values 0, '', an empty array, and an unset value will all evaluate to false.
+ *
+ * @param string $s
+ * @param array $item
+ * @return bool
+ */
+ public static function test_condition($s,$item)
+ {
+
+ if (preg_match('/(.*?)\s\~\=\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if (stripos($x, trim($matches[2])) !== false) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/(.*?)\s\=\=\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if ($x == trim($matches[2])) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/(.*?)\s\!\=\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if ($x != trim($matches[2])) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/(.*?)\s\>\=\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if ($x >= trim($matches[2])) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/(.*?)\s\<\=\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if ($x <= trim($matches[2])) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/(.*?)\s\>\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if ($x > trim($matches[2])) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/(.*?)\s\>\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if ($x < trim($matches[2])) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/[\$](.*?)\s\{\}\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if (is_array($x) && in_array(trim($matches[2]), $x)) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/(.*?)\s\{\*\}\s(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if (is_array($x) && array_key_exists(trim($matches[2]), $x)) {
+ return true;
+ }
+ return false;
+ }
+
+ if (preg_match('/(.*?)$/', $s, $matches)) {
+ $x = ((array_key_exists(trim($matches[1]),$item)) ? $item[trim($matches[1])] : EMPTY_STR);
+ if ($x) {
+ return true;
+ }
+ return false;
+ }
+ return false;
+ }
+
+
+
+
}
diff --git a/Code/Lib/Oembed.php b/Code/Lib/Oembed.php
index e56ff34f0..c91684b6c 100644
--- a/Code/Lib/Oembed.php
+++ b/Code/Lib/Oembed.php
@@ -3,6 +3,8 @@
namespace Code\Lib;
use App;
+use DOMDocument;
+use DOMXPath;
use Code\Lib\Cache;
use Code\Extend\Hook;
use Code\Render\Theme;
diff --git a/Code/Lib/Stringsjs.php b/Code/Lib/Stringsjs.php
index 7ec6cb5a2..6bd24e120 100644
--- a/Code/Lib/Stringsjs.php
+++ b/Code/Lib/Stringsjs.php
@@ -3,14 +3,14 @@
namespace Code\Lib;
use Code\Render\Theme;
-
+use Code\Lib\System;
class Stringsjs {
public static function strings()
{
return replace_macros(Theme::get_template('js_strings.tpl'), array(
- '$icon' => '/images/' . PLATFORM_NAME . '-64.png',
+ '$icon' => System::get_project_icon(),
'$delitem' => t('Delete this item?'),
'$comment' => t('Comment'),
'$showmore' => sprintf(t('%s show all'), ''),
diff --git a/Code/Lib/System.php b/Code/Lib/System.php
index cb3f2922b..dc6820e1c 100644
--- a/Code/Lib/System.php
+++ b/Code/Lib/System.php
@@ -20,8 +20,8 @@ class System
public static function get_site_name()
{
- if (is_array(App::$config) && is_array(App::$config['system']) && App::$config['system']['sitename']) {
- return App::$config['system']['sitename'];
+ if (is_array(App::$sys_channel) && isset(App::$sys_channel['channel_name'])) {
+ return App::$sys_channel['channel_name'];
}
return '';
}
@@ -32,7 +32,8 @@ class System
$name = self::get_site_name();
if ($name) {
$words = explode(' ', $name);
- $project = strtolower(URLify::transliterate($words[0]));
+ // restrict result to characters allowed by the nodeinfo specification
+ $project = preg_replace('/[^a-z0-9-]/', '-', strtolower(URLify::transliterate($words[0])));
}
if (!$project) {
$project = self::get_platform_name();
@@ -52,9 +53,8 @@ class System
public static function get_project_icon()
{
- $sys = Channel::get_system();
- if ($sys) {
- return z_root() . '/photo/profile/l/' . $sys['channel_id'];
+ if (isset(App::$sys_channel['xchan_photo_l'])) {
+ return App::$sys_channel['xchan_photo_l'];
}
if (is_array(App::$config) && is_array(App::$config['system']) && array_key_exists('icon', App::$config['system'])) {
return App::$config['system']['icon'];
@@ -102,9 +102,6 @@ class System
public static function get_site_icon()
{
- if (is_array(App::$config) && is_array(App::$config['system']) && isset(App::$config['system']['site_icon_url']) && App::$config['system']['site_icon_url']) {
- return App::$config['system']['site_icon_url'];
- }
return self::get_project_icon();
}
diff --git a/Code/Lib/Xprof.php b/Code/Lib/Xprof.php
index 0880bbd99..55b7a6b1c 100644
--- a/Code/Lib/Xprof.php
+++ b/Code/Lib/Xprof.php
@@ -1,5 +1,5 @@
'post ' . get_request_string($resource)
];
$h = HTTPSig::create_sig($headers, $channel['channel_prvkey'], Channel::url($channel), false);
- } else {
+ }
+ else {
$h = ['Accept: application/x-nomad+json, application/x-zot+json'];
}
diff --git a/Code/Module/Admin/Addons.php b/Code/Module/Admin/Addons.php
index e4b43c067..8353bfc4d 100644
--- a/Code/Module/Admin/Addons.php
+++ b/Code/Module/Admin/Addons.php
@@ -28,12 +28,14 @@ class Addons
}
goaway(z_root() . '/admin/addons/' . argv(2));
- } elseif (argc() > 2) {
+ }
+ elseif (argc() > 2) {
switch (argv(2)) {
case 'updaterepo':
if (array_key_exists('repoName', $_REQUEST)) {
$repoName = $_REQUEST['repoName'];
- } else {
+ }
+ else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
$extendDir = 'cache/git/sys/extend';
@@ -265,13 +267,13 @@ class Addons
$enabled = in_array($plugin, Addon::list_installed());
$info = Addon::get_info($plugin);
- $x = check_plugin_versions($info);
+ $x = Addon::check_versions($info);
// disable plugins which are installed but incompatible versions
if ($enabled && !$x) {
$enabled = false;
- uninstall_plugin($plugin);
+ Addon::uninstall($plugin);
}
$info['disabled'] = 1 - intval($x);
@@ -328,7 +330,7 @@ class Addons
@require_once("addon/$plugin/$plugin.php");
if (function_exists($plugin . '_plugin_admin')) {
$func = $plugin . '_plugin_admin';
- $func($a, $admin_form);
+ $func($admin_form);
}
}
@@ -377,8 +379,8 @@ class Addons
if (is_dir($file)) {
list($tmp, $id) = array_map('trim', explode('/', $file));
$info = Addon::get_info($id);
- $enabled = in_array($id, App::$plugins);
- $x = check_plugin_versions($info);
+ $enabled = in_array($id, Addon::list_installed());
+ $x = Addon::check_versions($info);
// disable plugins which are installed but incompatible versions
@@ -386,7 +388,7 @@ class Addons
$enabled = false;
$idz = array_search($id, Addon::list_installed());
if ($idz !== false) {
- uninstall_plugin($id);
+ Addon::uninstall($id);
}
}
$info['disabled'] = 1 - intval($x);
diff --git a/Code/Module/Admin/Site.php b/Code/Module/Admin/Site.php
index ed131dc4b..67fcd7b78 100644
--- a/Code/Module/Admin/Site.php
+++ b/Code/Module/Admin/Site.php
@@ -59,14 +59,12 @@ class Site
}
$tos_required = ((x($_POST, 'tos_required')) ? intval(trim($_POST['tos_required'])) : 0);
$mirror_frontpage = ((x($_POST, 'mirror_frontpage')) ? intval(trim($_POST['mirror_frontpage'])) : 0);
- $directory_server = ((x($_POST, 'directory_server')) ? trim($_POST['directory_server']) : '');
$force_publish = ((x($_POST, 'publish_all')) ? true : false);
$open_pubstream = ((x($_POST, 'open_pubstream')) ? true : false);
$public_stream_mode = ((x($_POST, 'public_stream_mode')) ? intval($_POST['public_stream_mode']) : PUBLIC_STREAM_NONE);
$animations = ((x($_POST, 'animations')) ? true : false);
$login_on_homepage = ((x($_POST, 'login_on_homepage')) ? true : false);
$enable_context_help = ((x($_POST, 'enable_context_help')) ? true : false);
- $global_directory = ((x($_POST, 'directory_submit_url')) ? notags(trim($_POST['directory_submit_url'])) : '');
$no_community_page = !((x($_POST, 'no_community_page')) ? true : false);
$default_expire_days = ((array_key_exists('default_expire_days', $_POST)) ? intval($_POST['default_expire_days']) : 0);
$active_expire_days = ((array_key_exists('active_expire_days', $_POST)) ? intval($_POST['active_expire_days']) : 7);
@@ -127,10 +125,6 @@ class Site
set_config('system', 'animated_avatars', $animations);
set_config('system', 'tos_required', $tos_required);
- if ($directory_server) {
- set_config('system', 'directory_server', $directory_server);
- }
-
if ($admininfo == '') {
del_config('system', 'admininfo');
} else {
@@ -166,7 +160,6 @@ class Site
set_config('system', 'language', $language);
set_config('system', 'theme', $theme);
- // set_config('system','site_channel', $site_channel);
set_config('system', 'maximagesize', $maximagesize);
set_config('system', 'register_policy', $register_policy);
@@ -179,12 +172,6 @@ class Site
set_config('system', 'public_stream_mode', $public_stream_mode);
set_config('system', 'open_pubstream', $open_pubstream);
set_config('system', 'force_queue_threshold', $force_queue);
- if ($global_directory == '') {
- del_config('system', 'directory_submit_url');
- } else {
- set_config('system', 'directory_submit_url', $global_directory);
- }
-
set_config('system', 'no_community_page', $no_community_page);
set_config('system', 'no_utf', $no_utf);
set_config('system', 'verifyssl', $verifyssl);
@@ -259,29 +246,6 @@ class Site
}
}
- $dir_choices = null;
- $dirmode = get_config('system', 'directory_mode');
- $realm = get_directory_realm();
-
- // directory server should not be set or settable unless we are a directory client
- // avoid older redmatrix servers which don't have modern encryption
-
- if ($dirmode == DIRECTORY_MODE_NORMAL) {
- $x = q(
- "select site_url from site where site_flags in (%d,%d) and site_realm = '%s' and site_dead = 0",
- intval(DIRECTORY_MODE_SECONDARY),
- intval(DIRECTORY_MODE_PRIMARY),
- dbesc($realm)
- );
- if ($x) {
- $dir_choices = [];
- foreach ($x as $xx) {
- $dir_choices[$xx['site_url']] = $xx['site_url'];
- }
- }
- }
-
-
/* Admin Info */
$admininfo = get_config('system', 'admininfo');
@@ -321,8 +285,8 @@ class Site
'$advanced' => t('Advanced'),
'$baseurl' => z_root(),
'$sitename' => ['sitename', t("Site name"), htmlspecialchars(get_config('system', 'sitename', App::get_hostname()), ENT_QUOTES, 'UTF-8'), ''],
- '$admininfo' => ['admininfo', t("Administrator Information"), $admininfo, t("Contact information for site administrators. Displayed on siteinfo page. BBCode may be used here.")],
- '$siteinfo' => ['siteinfo', t('Site Information'), get_config('system', 'siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode may be used here.")],
+ '$admininfo' => ['admininfo', t("Administrator Information"), $admininfo, t("Contact information for site administrators. Displayed on siteinfo page. Multicode may be used here.")],
+ '$siteinfo' => ['siteinfo', t('Site Information'), get_config('system', 'siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. Multicode may be used here.")],
'$language' => ['language', t("System language"), get_config('system', 'language', 'en'), "", $lang_choices],
'$theme' => ['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' => [ 'theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile ],
@@ -334,7 +298,7 @@ class Site
'$invite_only' => ['invite_only', t("Invitation only"), get_config('system', 'invitation_only'), t("Only allow new member registrations with an invitation code. New member registration must be allowed for this to work.")],
'$invite_working' => defined('INVITE_WORKING'),
'$minimum_age' => ['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' => ['access_policy', t("Which best describes the types of account offered by this hub?"), get_config('system', 'access_policy'), t("If a public server policy is selected, this information may be displayed on the public server site list."), $access_choices],
+ '$access_policy' => ['access_policy', t("Which best describes the types of account offered by this site?"), get_config('system', 'access_policy'), t("If a public server policy is selected, this information may be displayed on the public server site list."), $access_choices],
'$register_text' => ['register_text', t("Register text"), htmlspecialchars(get_config('system', 'register_text'), ENT_QUOTES, 'UTF-8'), t("Will be displayed prominently on the registration page.")],
'$tos_required' => [ 'tos_required', t('Require acceptance of Terms of Service'),get_config('system','tos_required'),'', [ t('No'), t('Yes') ] ],
'$role' => $role,
@@ -362,7 +326,6 @@ class Site
'$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('Display name of email sender for system generated email.'), get_config('system', 'from_email_name', System::get_site_name()), ''],
- '$directory_server' => (($dir_choices) ? ['directory_server', t("Directory Server URL"), get_config('system', 'directory_server'), t("Default directory server"), $dir_choices] : null),
'$proxyuser' => ['proxyuser', t("Proxy user"), get_config('system', 'proxyuser'), ""],
'$proxy' => ['proxy', t("Proxy URL"), get_config('system', 'proxy'), ""],
'$timeout' => ['timeout', t("Network fetch 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).")],
diff --git a/Code/Module/Admin/Themes.php b/Code/Module/Admin/Themes.php
index 9d781c5c2..ed8e8c313 100644
--- a/Code/Module/Admin/Themes.php
+++ b/Code/Module/Admin/Themes.php
@@ -126,7 +126,7 @@ class Themes
}
}
- $screenshot = array(get_theme_screenshot($theme), t('Screenshot'));
+ $screenshot = array(Theme::get_screenshot($theme), t('Screenshot'));
if (!stristr($screenshot[0], $theme)) {
$screenshot = null;
}
@@ -142,7 +142,7 @@ class Themes
'$plugin' => $theme,
'$status' => $status,
'$action' => $action,
- '$info' => get_theme_info($theme),
+ '$info' => Theme::get_info($theme),
'$function' => 'themes',
'$admin_form' => $admin_form,
'$str_author' => t('Author: '),
@@ -161,7 +161,7 @@ class Themes
$xthemes = [];
if ($themes) {
foreach ($themes as $th) {
- $xthemes[] = array($th['name'], (($th['allowed']) ? "on" : "off"), get_theme_info($th['name']));
+ $xthemes[] = array($th['name'], (($th['allowed']) ? "on" : "off"), Theme::get_info($th['name']));
}
}
diff --git a/Code/Module/Apporder.php b/Code/Module/Apporder.php
index 43c2865dc..84a4f0ac7 100644
--- a/Code/Module/Apporder.php
+++ b/Code/Module/Apporder.php
@@ -18,9 +18,12 @@ class Apporder extends Controller
if (!local_channel()) {
return;
}
-
+
Navbar::set_selected('Order Apps');
+ $nav_apps = [];
+ $navbar_apps = [];
+
foreach (['nav_featured_app', 'nav_pinned_app'] as $l) {
$syslist = [];
$list = Apps::app_list(local_channel(), false, [$l]);
@@ -39,7 +42,8 @@ class Apporder extends Controller
foreach ($syslist as $app) {
if ($l === 'nav_pinned_app') {
$navbar_apps[] = Apps::app_render($app, 'nav-order-pinned');
- } else {
+ }
+ else {
$nav_apps[] = Apps::app_render($app, 'nav-order');
}
}
diff --git a/Code/Module/Cdav.php b/Code/Module/Cdav.php
index fee892b06..bf92a313a 100644
--- a/Code/Module/Cdav.php
+++ b/Code/Module/Cdav.php
@@ -35,6 +35,7 @@ use Code\Lib\Libacl;
use Code\Lib\Head;
use Code\Lib\Features;
use Code\Render\Theme;
+use Code\Lib\Config;
require_once('include/event.php');
@@ -50,6 +51,10 @@ class Cdav extends Controller
$record = null;
$channel_login = false;
+ if (! Config::Get('system','cdav')) {
+ http_status_exit(404, 'Not found');
+ }
+
if ((argv(1) !== 'calendar') && (argv(1) !== 'addressbook')) {
foreach (['REDIRECT_REMOTE_USER', 'HTTP_AUTHORIZATION'] as $head) {
/* Basic authentication */
@@ -252,6 +257,11 @@ class Cdav extends Controller
return;
}
+ if (! Config::Get('system','cdav')) {
+ http_status_exit(404, 'Not found');
+ }
+
+
if ((argv(1) === 'addressbook') && (!Apps::system_app_installed(local_channel(), 'CardDAV'))) {
return;
}
@@ -886,6 +896,10 @@ class Cdav extends Controller
return;
}
+ if (! Config::Get('system','cdav')) {
+ http_status_exit(404, 'Not found');
+ }
+
if ((argv(1) === 'addressbook') && (!Apps::system_app_installed(local_channel(), 'CardDAV'))) {
// Do not display any associated widgets at this point
App::$pdl = '';
diff --git a/Code/Module/Connedit.php b/Code/Module/Connedit.php
index 079188c4f..fbc564c96 100644
--- a/Code/Module/Connedit.php
+++ b/Code/Module/Connedit.php
@@ -414,7 +414,7 @@ class Connedit extends Controller
if ($cmd === 'resetphoto') {
q(
- "update xchan set xchan_photo_date = '2001-01-01 00:00:00' where xchan_hash = '%s'",
+ "update xchan set xchan_photo_date = '2001-01-01 00:00:00', xchan_name_date = '2001-01-01 00:00:00' where xchan_hash = '%s'",
dbesc($orig_record['xchan_hash'])
);
$cmd = 'refresh';
diff --git a/Code/Module/Cover_photo.php b/Code/Module/Cover_photo.php
index a3fb5f2aa..21f7959d7 100644
--- a/Code/Module/Cover_photo.php
+++ b/Code/Module/Cover_photo.php
@@ -167,7 +167,7 @@ class Cover_photo extends Controller
$orig_srcw = ($srcW / $scaled_width) * $base_image['width'];
$orig_srch = ($srcH / $scaled_height) * $base_image['height'];
- $im->cropImageRect(1200, 435, $orig_srcx, $orig_srcy, $orig_srcw, $orig_srch);
+ $im->cropImageRect(1200, 675, $orig_srcx, $orig_srcy, $orig_srcw, $orig_srch);
$aid = get_account_id();
@@ -188,12 +188,12 @@ class Cover_photo extends Controller
$r1 = $im->storeThumbnail($p, PHOTO_RES_COVER_1200);
- $im->doScaleImage(850, 310);
+ $im->doScaleImage(850, 478);
$p['imgscale'] = 8;
$r2 = $im->storeThumbnail($p, PHOTO_RES_COVER_850);
- $im->doScaleImage(425, 160);
+ $im->doScaleImage(425, 239);
$p['imgscale'] = 9;
$r3 = $im->storeThumbnail($p, PHOTO_RES_COVER_425);
@@ -417,7 +417,7 @@ class Cover_photo extends Controller
$o .= replace_macros(Theme::get_template('cover_photo.tpl'), [
'$user' => App::$channel['channel_address'],
'$info' => t('Your cover photo may be visible to anybody on the internet'),
- '$existing' => get_cover_photo(local_channel(), 'array', PHOTO_RES_COVER_850),
+ '$existing' => Channel::get_cover_photo(local_channel(), 'array', PHOTO_RES_COVER_850),
'$lbl_upfile' => t('Upload File:'),
'$lbl_profiles' => t('Select a profile:'),
'$title' => t('Change Cover Photo'),
diff --git a/Code/Module/Dirsearch.php b/Code/Module/Dirsearch.php
index 741639a4c..89f483cb8 100644
--- a/Code/Module/Dirsearch.php
+++ b/Code/Module/Dirsearch.php
@@ -426,7 +426,6 @@ class Dirsearch extends Controller
{
$rand = db_getfunc('rand');
- $realm = get_directory_realm();
$r = q(
"select * from site where site_type = %d and site_dead = 0",
diff --git a/Code/Module/Display.php b/Code/Module/Display.php
index 9d09b8584..dc54eb0c2 100644
--- a/Code/Module/Display.php
+++ b/Code/Module/Display.php
@@ -288,7 +288,6 @@ class Display extends Controller
if ($noscript_content || $this->loading) {
$r = null;
- require_once('include/channel.php');
$sys = Channel::get_system();
$sysid = $sys['channel_id'];
@@ -312,7 +311,6 @@ class Display extends Controller
} elseif ($this->updating && !$this->loading) {
$r = null;
- require_once('include/channel.php');
$sys = Channel::get_system();
$sysid = $sys['channel_id'];
diff --git a/Code/Module/Oexchange.php b/Code/Module/Oexchange.php
deleted file mode 100644
index 47fa49272..000000000
--- a/Code/Module/Oexchange.php
+++ /dev/null
@@ -1,78 +0,0 @@
- 1) && (argv(1) === 'xrd')) {
- echo replace_macros(Theme::get_template('oexchange_xrd.tpl'), ['$base' => z_root()]);
- killme();
- }
- }
-
- public function get()
- {
- if (!local_channel()) {
- if (remote_channel()) {
- $observer = App::get_observer();
- if ($observer && $observer['xchan_url']) {
- $parsed = @parse_url($observer['xchan_url']);
- if (!$parsed) {
- notice(t('Unable to find your site.') . EOL);
- return;
- }
- $url = $parsed['scheme'] . '://' . $parsed['host'] . (($parsed['port']) ? ':' . $parsed['port'] : '');
- $url .= '/oexchange';
- $result = z_post_url($url, $_REQUEST);
- json_return_and_die($result);
- }
- }
-
- return login(false);
- }
-
- if ((argc() > 1) && argv(1) === 'done') {
- info(t('Post successful.') . EOL);
- return;
- }
-
- $url = (((x($_REQUEST, 'url')) && strlen($_REQUEST['url']))
- ? urlencode(notags(trim($_REQUEST['url']))) : '');
- $title = (((x($_REQUEST, 'title')) && strlen($_REQUEST['title']))
- ? '&title=' . urlencode(notags(trim($_REQUEST['title']))) : '');
- $description = (((x($_REQUEST, 'description')) && strlen($_REQUEST['description']))
- ? '&description=' . urlencode(notags(trim($_REQUEST['description']))) : '');
- $tags = (((x($_REQUEST, 'tags')) && strlen($_REQUEST['tags']))
- ? '&tags=' . urlencode(notags(trim($_REQUEST['tags']))) : '');
-
- $ret = z_fetch_url(z_root() . '/linkinfo?f=&url=' . $url . $title . $description . $tags);
-
- if ($ret['success']) {
- $s = $ret['body'];
- }
-
- if (!strlen($s)) {
- return;
- }
-
- $post = [];
-
- $post['profile_uid'] = local_channel();
- $post['return'] = '/oexchange/done';
- $post['body'] = $s;
- $post['type'] = 'wall';
-
- $_REQUEST = $post;
- $mod = new Item();
- $mod->post();
- }
-}
diff --git a/Code/Module/Photo.php b/Code/Module/Photo.php
index 32996d226..abdace5ab 100644
--- a/Code/Module/Photo.php
+++ b/Code/Module/Photo.php
@@ -22,8 +22,6 @@ class Photo extends Controller
public function init()
{
-
-
if (ActivityStreams::is_as_request()) {
$sigdata = HTTPSig::verify(EMPTY_STR);
if ($sigdata['portable_id'] && $sigdata['header_valid']) {
diff --git a/Code/Module/Settings/Channel.php b/Code/Module/Settings/Channel.php
index d6284d467..777587f9f 100644
--- a/Code/Module/Settings/Channel.php
+++ b/Code/Module/Settings/Channel.php
@@ -296,7 +296,6 @@ class Channel
if ($username != $channel['channel_name']) {
$name_change = true;
- require_once('include/channel.php');
$err = Zlib\Channel::validate_channelname($username);
if ($err) {
notice($err);
diff --git a/Code/Module/Settings/Display.php b/Code/Module/Settings/Display.php
index 03883e06b..af268b016 100644
--- a/Code/Module/Settings/Display.php
+++ b/Code/Module/Settings/Display.php
@@ -5,6 +5,7 @@ namespace Code\Module\Settings;
use App;
use Code\Lib\Libsync;
use Code\Lib\Features;
+use Code\Lib\Addon;
use Code\Extend\Hook;
use Code\Render\Theme;
@@ -145,8 +146,8 @@ class Display
foreach ($allowed_themes as $th) {
$f = $th;
- $info = get_theme_info($th);
- $compatible = check_plugin_versions($info);
+ $info = Theme::get_info($th);
+ $compatible = Addon::check_versions($info);
if (!$compatible) {
$themes[$f] = sprintf(t('%s - (Incompatible)'), $f);
continue;
diff --git a/Code/Module/Sites.php b/Code/Module/Sites.php
index 71fc84971..304f79926 100644
--- a/Code/Module/Sites.php
+++ b/Code/Module/Sites.php
@@ -2,6 +2,7 @@
namespace Code\Module;
+use App;
use Code\Lib\Libzotdir;
use Code\Lib\LibBlock;
use Code\Web\Controller;
@@ -14,17 +15,39 @@ class Sites extends Controller
public function get()
{
+ if (!(isset($_REQUEST['aj']) && $_REQUEST['aj'])) {
+ $_SESSION['return_url'] = App::$query_string;
+ }
+
$sql_extra = (($_REQUEST['project']) ? " and site_project = '" . escape_tags(protect_sprintf(dbesc($_REQUEST['project']))) . "' " : "");
$desc = t('This page provides information about related projects and websites that are currently known to this system. These are a small fraction of the thousands of websites and dozens of projects and providers which make up the fediverse.');
- $j = [];
+ $blocked = LibBlock::fetch($channel['channel_id'], BLOCKTYPE_SERVER);
- $r = q("select * from site where site_flags != 256 and site_dead = 0 $sql_extra order by site_update desc");
+ $j = [];
+ $total = 0;
+
+ $r = q(
+ "select count(site_url) as total from site
+ where site_flags != 256 and site_dead = 0 $sql_extra
+ order by site_update desc"
+ );
+ if ($r) {
+ App::set_pager_total($r[0]['total']);
+ $total = $r[0]['total'];
+ }
+
+ $r = q(
+ "select * from site
+ where site_flags != 256 and site_dead = 0 $sql_extra
+ order by site_update desc LIMIT %d OFFSET %d",
+ intval(App::$pager['itemspage']),
+ intval(App::$pager['start'])
+ );
if ($r) {
- $blocked = LibBlock::fetch($channel['channel_id'], BLOCKTYPE_SERVER);
foreach ($r as $rr) {
$found_block = false;
if ($blocked) {
@@ -113,12 +136,29 @@ class Sites extends Controller
}
}
- $o = replace_macros(Theme::get_template('sitentry_header.tpl'), [
- '$dirlbl' => t('Affiliated Sites'),
- '$desc' => $desc,
- '$entries' => $j,
- ]);
+ if ($_REQUEST['aj']) {
+ if ($j) {
+ $o = replace_macros(Theme::get_template('sitesajax.tpl'), [ '$entries' => $j ]);
+ }
+ else {
+ $o = '
';
+ }
+ echo $o;
+ killme();
+ }
+ else {
+ $o .= "";
+ $o .= replace_macros(Theme::get_template('sitentry_header.tpl'), [
+ '$dirlbl' => t('Affiliated Sites'),
+ '$desc' => $desc,
+ '$entries' => $j,
+ ]);
+
+ if (!$j) {
+ $o .= '';
+ }
+ }
return $o;
}
diff --git a/Code/Module/Theme_info.php b/Code/Module/Theme_info.php
index 13168b64e..24fb10418 100644
--- a/Code/Module/Theme_info.php
+++ b/Code/Module/Theme_info.php
@@ -4,6 +4,7 @@ namespace Code\Module;
use App;
use Code\Web\Controller;
+use Code\Render\Theme;
class Theme_info extends Controller
{
@@ -32,7 +33,7 @@ class Theme_info extends Controller
$theme_config = $th_config->get();
}
}
- $info = get_theme_info($theme);
+ $info = Theme::get_info($theme);
if ($info) {
// unfortunately there will be no translation for this string
$desc = $info['description'];
@@ -46,7 +47,7 @@ class Theme_info extends Controller
$ret = [
'theme' => $theme,
- 'img' => get_theme_screenshot($theme),
+ 'img' => Theme::get_screenshot($theme),
'desc' => $desc,
'version' => $version,
'credits' => $credits,
@@ -70,4 +71,4 @@ class Theme_info extends Controller
}
return null;
}
-}
+}
\ No newline at end of file
diff --git a/Code/Render/Theme.php b/Code/Render/Theme.php
index b230e7fa7..dbbd4c4c5 100644
--- a/Code/Render/Theme.php
+++ b/Code/Render/Theme.php
@@ -179,7 +179,7 @@ class Theme
return '';
}
- static public function get_info($theme) {
+ public static function get_info($theme) {
$info = null;
if (is_file("view/theme/$theme/$theme.yml")) {
@@ -192,7 +192,7 @@ class Theme
}
- static public function get_email_template($s, $root = '')
+ public static function get_email_template($s, $root = '')
{
$testroot = ($root=='') ? $testroot = "ROOT" : $root;
$t = App::template_engine();
@@ -209,14 +209,14 @@ class Theme
if ($newroot != '' && substr($newroot, -1) != '/') {
$newroot .= '/';
}
- $template = $t->Theme::get_email_template($s, $newroot);
+ $template = $t->get_email_template($s, $newroot);
}
- $template = $t->Theme::get_email_template($s, $root);
- return $template;
+ $template = $t->get_email_template($s, $root);
+ return $template;
}
}
- static public function get_template($s, $root = '')
+ public static function get_template($s, $root = '')
{
$testroot = ($root=='') ? $testroot = "ROOT" : $root;
@@ -242,10 +242,30 @@ class Theme
}
+ /**
+ * @brief Returns the theme's screenshot.
+ *
+ * The screenshot is expected as view/theme/$theme/img/screenshot.[png|jpg].
+ *
+ * @param string $theme The name of the theme
+ * @return string
+ */
+ public static function get_screenshot($theme)
+ {
+
+ $exts = array('.png', '.jpg');
+ foreach ($exts as $ext) {
+ if (file_exists('view/theme/' . $theme . '/img/screenshot' . $ext)) {
+ return(z_root() . '/view/theme/' . $theme . '/img/screenshot' . $ext);
+ }
+ }
+
+ return(z_root() . '/images/blank.png');
+ }
- public function debug()
+ public static function debug()
{
logger('system_theme: ' . self::$system_theme);
logger('session_theme: ' . self::$session_theme);
diff --git a/Code/Update/_1000.php b/Code/Update/_1000.php
deleted file mode 100644
index 51aa6f385..000000000
--- a/Code/Update/_1000.php
+++ /dev/null
@@ -1,15 +0,0 @@
- 0 ");
-
- if ($r1 && $r2 && $r3) {
- return UPDATE_SUCCESS;
- }
- return UPDATE_FAILED;
- }
-}
diff --git a/Code/Update/_1137.php b/Code/Update/_1137.php
deleted file mode 100644
index 4a351c529..000000000
--- a/Code/Update/_1137.php
+++ /dev/null
@@ -1,16 +0,0 @@
-connected) {
- system_unavailable();
- }
+ if (! App::$install) {
+ DBA::dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, App::$install);
+ if (! DBA::$dba->connected) {
+ system_unavailable();
+ }
- unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
+ unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
- /*
- * Load configs from db. Overwrite configs from .htconfig.php
- */
+ /*
+ * Load configs from db. Overwrite configs from .htconfig.php
+ */
- load_config('system');
- load_config('feature');
+ load_config('system');
+ load_config('feature');
- App::$session = new Session();
- App::$session->init();
- Hook::load();
- /**
- * @hooks 'startup'
- */
- $arr = [];
- Hook::call('startup',$arr);
- }
+ App::$session = new Session();
+ App::$session->init();
+ Hook::load();
+ /**
+ * @hooks 'startup'
+ */
+ $arr = [];
+ Hook::call('startup',$arr);
+ }
}
function startup() {
- error_reporting(E_ERROR | E_PARSE);
+ error_reporting(E_ERROR | E_PARSE);
- // Some hosting providers block/disable this
- @set_time_limit(0);
+ // Some hosting providers block/disable this
+ @set_time_limit(0);
- if (function_exists ('ini_set')) {
- // This has to be quite large
- @ini_set('pcre.backtrack_limit', 5000000);
+ if (function_exists ('ini_set')) {
+ // This has to be quite large
+ @ini_set('pcre.backtrack_limit', 5000000);
- // Use cookies to store the session ID on the client side
- @ini_set('session.use_only_cookies', 1);
+ // Use cookies to store the session ID on the client side
+ @ini_set('session.use_only_cookies', 1);
- // Disable transparent Session ID support
- @ini_set('session.use_trans_sid', 0);
- }
+ // Disable transparent Session ID support
+ @ini_set('session.use_trans_sid', 0);
+ }
}
@@ -747,591 +736,590 @@ function startup() {
*/
class App {
- public static $install = false; // true if we are installing the software
- public static $account = null; // account record of the logged-in account
- public static $channel = null; // channel record of the current channel of the logged-in account
- public static $observer = null; // xchan record of the page observer
- public static $profile_uid = 0; // If applicable, the channel_id of the "page owner"
- public static $sys_channel = null; // cache sys channel lookups here
- public static $poi = null; // "person of interest", generally a referenced connection or directory entry
- private static $oauth_key = null; // consumer_id of oauth request, if used
- public static $layout = []; // Comanche parsed template
- public static $pdl = null; // Comanche page description
- private static $perms = null; // observer permissions
- private static $widgets = []; // widgets for this page
- public static $config = []; // config cache
-
- public static $override_intltext_templates = [];
- public static $override_markup_templates = [];
- public static $override_templateroot = null;
- public static $override_helproot = null;
- public static $override_helpfiles = [];
-
- public static $session = null;
- public static $groups;
- public static $language;
- public static $langsave;
- public static $rtl = false;
- public static $addons_admin;
- public static $module_loaded = false;
- public static $query_string;
- public static $page;
- public static $profile;
- public static $user;
- public static $cid;
- public static $contact;
- public static $contacts;
- public static $content;
- public static $data = [];
- public static $error = false;
- public static $emojitab = false;
- public static $cmd;
- public static $argv;
- public static $argc;
- public static $module;
- public static $pager;
- public static $strings;
- public static $stringsave; // used in push_lang() and pop_lang()
- public static $hooks;
- public static $timezone;
- public static $interactive = true;
- public static $addons;
- private static $apps = [];
- public static $identities;
- public static $css_sources = [];
- public static $js_sources = [];
- public static $linkrel = [];
- public static $theme_info = [];
- public static $is_sys = false;
- public static $nav_sel;
- public static $comanche;
- public static $httpheaders = null;
- public static $httpsig = null;
- public static $channel_links;
- public static $category;
-
- // Allow themes to control internal parameters
- // by changing App values in theme.php
-
- public static $sourcename = '';
- public static $videowidth = 425;
- public static $videoheight = 350;
- public static $force_max_items = 0;
- public static $theme_thread_allow = true;
-
- public static $meta;
-
- /**
- * @brief An array for all theme-controllable parameters
- *
- * Mostly unimplemented yet. Only options 'template_engine' and
- * beyond are used.
- */
- private static $theme = [
- 'sourcename' => '',
- 'videowidth' => 425,
- 'videoheight' => 350,
- 'force_max_items' => 0,
- 'thread_allow' => true,
- 'stylesheet' => '',
- 'template_engine' => 'smarty3',
- ];
-
- /**
- * @brief An array of registered template engines ('name'=>'class name')
- */
- public static $template_engines = [];
- /**
- * @brief An array of instanced template engines ('name'=>'instance')
- */
- public static $template_engine_instance = [];
-
- private static $ldelim = [
- 'internal' => '',
- 'smarty3' => '{{'
- ];
- private static $rdelim = [
- 'internal' => '',
- 'smarty3' => '}}'
- ];
-
- // These represent the URL which was used to access the page
-
- private static $scheme;
- private static $hostname;
- private static $path;
-
- // This is our standardised URL - regardless of what was used
- // to access the page
-
- private static $baseurl;
-
- /**
- * App constructor.
- */
-
- public static function init() {
- // we'll reset this after we read our config file
- date_default_timezone_set('UTC');
-
- self::$config = [
- 'system' => []
- ];
- self::$page = [];
- self::$pager= [];
-
- self::$query_string = '';
-
- startup();
-
- set_include_path(
- 'include' . PATH_SEPARATOR
- . 'library' . PATH_SEPARATOR
- . '.'
- );
-
- // normally self::$hostname (also scheme and port) will be filled in during startup.
- // Set it manually from $_SERVER variables only if it wasn't.
-
- if (! self::$hostname) {
- self::$hostname = punify(get_host());
- self::$scheme = 'http';
-
- if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) {
- self::$scheme = 'https';
- }
- elseif (isset($_SERVER['SERVER_PORT']) && (intval($_SERVER['SERVER_PORT']) === 443)) {
- self::$scheme = 'https';
- }
-
- if (isset($_SERVER['SERVER_PORT']) && intval($_SERVER['SERVER_PORT']) !== 80 && intval($_SERVER['SERVER_PORT']) !== 443) {
- self::$hostname .= ':' . $_SERVER['SERVER_PORT'];
- }
- }
-
- /*
- * Figure out if we are running at the top of a domain
- * or in a sub-directory and adjust accordingly
- */
- $path = trim(dirname($_SERVER['SCRIPT_NAME']),'/\\');
- if (isset($path) && strlen($path) && ($path != self::$path)) {
- self::$path = $path;
- }
-
- // Rewrite rules on the server will convert incoming paths to a request parameter.
- // Strip this path information from our stored copy of the query_string, in case
- // we need to re-use the rest of the original query.
-
- if (isset($_SERVER['QUERY_STRING']) && substr($_SERVER['QUERY_STRING'], 0, 4) === "req=") {
- self::$query_string = str_replace(['<','>'],['<','>'],substr($_SERVER['QUERY_STRING'], 4));
- // removing leading '/' - maybe a nginx problem
- if (substr(self::$query_string, 0, 1) == "/") {
- self::$query_string = substr(self::$query_string, 1);
- }
- // change the first & to ?
- self::$query_string = preg_replace('/&/','?',self::$query_string,1);
- }
-
- // Here is where start breaking out the URL path information to both route the
- // web request based on the leading path component, and also to use remaining
- // path components as C-style arguments to our individual controller modules.
-
- if (isset($_GET['req'])) {
- self::$cmd = escape_tags(trim($_GET['req'],'/\\'));
- }
-
- // support both unix and fediverse style "homedir"
-
- if ((substr(self::$cmd, 0, 1) === '~') || (substr(self::$cmd, 0, 1) === '@')) {
- self::$cmd = 'channel/' . substr(self::$cmd, 1);
- }
-
- /*
- * Break the URL path into C style argc/argv style arguments for our
- * modules. Given "http://example.com/module/arg1/arg2", self::$argc
- * will be 3 (integer) and self::$argv will contain:
- * [0] => 'module'
- * [1] => 'arg1'
- * [2] => 'arg2'
- *
- * There will always be one argument. If provided a naked domain
- * URL, self::$argv[0] is set to "home".
- *
- * If $argv[0] has a period in it, for example foo.json; rewrite
- * to module = 'foo' and set $_REQUEST['module_format'] = 'json';
- *
- * As a result, say you offered a feed for member bob. Most applications
- * would address it as /feed/bob.xml or /feed/bob.json
- * We would address it as /feed.xml/bob and /feed.json/bob because
- * you're altering the output format of the feed module, and bob is
- * just an identifier or variable.
- */
-
- self::$argv = explode('/', self::$cmd);
-
- self::$argc = count(self::$argv);
- if ((array_key_exists('0', self::$argv)) && strlen(self::$argv[0])) {
- if(strpos(self::$argv[0],'.')) {
- $_REQUEST['module_format'] = substr(self::$argv[0],strpos(self::$argv[0],'.')+1);
- self::$argv[0] = substr(self::$argv[0],0,strpos(self::$argv[0],'.'));
- }
-
- self::$module = str_replace(".", "_", self::$argv[0]);
- self::$module = str_replace("-", "_", self::$module);
- if(strpos(self::$module,'_') === 0)
- self::$module = substr(self::$module,1);
- } else {
- self::$argc = 1;
- self::$argv = array('home');
- self::$module = 'home';
- }
-
-
- /*
- * See if there is any page number information, and initialise
- * pagination
- */
-
- self::$pager['unset'] = ((array_key_exists('page',$_REQUEST)) ? false : true);
- self::$pager['page'] = ((x($_GET,'page') && intval($_GET['page']) > 0) ? intval($_GET['page']) : 1);
- self::$pager['itemspage'] = 60;
- self::$pager['start'] = (self::$pager['page'] * self::$pager['itemspage']) - self::$pager['itemspage'];
- self::$pager['total'] = 0;
-
- if (self::$pager['start'] < 0) {
- self::$pager['start'] = 0;
- }
-
- self::$meta = new HttpMeta();
-
- /*
- * register template engines (probably just smarty, but this can be extended)
- */
-
- self::register_template_engine(get_class(new SmartyTemplate()));
-
- }
-
- public static function get_baseurl($ssl = false) {
- if(is_array(self::$config)
- && array_key_exists('system',self::$config)
- && is_array(self::$config['system'])
- && array_key_exists('baseurl',self::$config['system'])
- && strlen(self::$config['system']['baseurl'])) {
- // get_baseurl() is a heavily used function.
- // Do not use punify() here until we find a library that performs better than what we have now.
- // $url = punify(self::$config['system']['baseurl']);
- $url = self::$config['system']['baseurl'];
- $url = trim($url,'\\/');
- return $url;
- }
-
- $scheme = self::$scheme;
-
- self::$baseurl = $scheme . "://" . punify(self::$hostname) . ((isset(self::$path) && strlen(self::$path)) ? '/' . self::$path : '' );
-
- return self::$baseurl;
- }
-
- public static function set_baseurl($url) {
- if(is_array(self::$config)
- && array_key_exists('system',self::$config)
- && is_array(self::$config['system'])
- && array_key_exists('baseurl',self::$config['system'])
- && strlen(self::$config['system']['baseurl'])) {
- $url = punify(self::$config['system']['baseurl']);
- $url = trim($url,'\\/');
- }
-
- $parsed = @parse_url($url);
-
- self::$baseurl = $url;
-
- if($parsed !== false) {
- self::$scheme = $parsed['scheme'];
-
- self::$hostname = punify($parsed['host']);
- if(x($parsed,'port'))
- self::$hostname .= ':' . $parsed['port'];
- if(x($parsed,'path'))
- self::$path = trim($parsed['path'],'\\/');
- }
- }
-
- public static function get_scheme() {
- return self::$scheme;
- }
-
- public static function get_hostname() {
- return self::$hostname;
- }
-
- public static function set_hostname($h) {
- self::$hostname = $h;
- }
-
- public static function set_path($p) {
- self::$path = trim(trim($p), '/');
- }
-
- public static function get_path() {
- return self::$path;
- }
-
- public static function get_channel_links() {
- $s = '';
- $x = self::$channel_links;
- if ($x && is_array($x) && count($x)) {
- foreach ($x as $y) {
- if ($s) {
- $s .= ',';
- }
- $s .= '<' . $y['href'] . '>; rel="' . $y['rel'] . '"; type="' . $y['type'] . '"';
- }
- }
- return $s;
- }
- public static function set_account($acct) {
- self::$account = $acct;
- }
-
- public static function get_account() {
- return self::$account;
- }
-
- public static function set_channel($channel) {
- self::$channel = $channel;
- }
-
- public static function get_channel() {
- return self::$channel;
- }
-
- public static function set_observer($xchan) {
- self::$observer = $xchan;
- }
-
-
- public static function get_observer() {
- return self::$observer;
- }
-
- public static function set_perms($perms) {
- self::$perms = $perms;
- }
-
- public static function get_perms() {
- return self::$perms;
- }
-
- public static function set_oauth_key($consumer_id) {
- self::$oauth_key = $consumer_id;
- }
-
- public static function get_oauth_key() {
- return self::$oauth_key;
- }
-
- public static function get_apps() {
- return self::$apps;
- }
-
- public static function set_apps($arr) {
- self::$apps = $arr;
- }
-
- public static function set_groups($g) {
- self::$groups = $g;
- }
-
- public static function get_groups() {
- return self::$groups;
- }
-
- public static function set_pager_total($n) {
- self::$pager['total'] = intval($n);
- }
-
- public static function set_pager_itemspage($n) {
- self::$pager['itemspage'] = ((intval($n) > 0) ? intval($n) : 0);
- self::$pager['start'] = (self::$pager['page'] * self::$pager['itemspage']) - self::$pager['itemspage'];
- }
-
- public static function build_pagehead() {
-
- $user_scalable = ((local_channel()) ? get_pconfig(local_channel(),'system','user_scalable', 0) : 0);
-
- $preload_images = ((local_channel()) ? get_pconfig(local_channel(),'system','preload_images',0) : 0);
-
-
- $interval = ((local_channel()) ? get_pconfig(local_channel(),'system','update_interval', 30000) : 30000);
- if ($interval < 15000) {
- $interval = 15000;
- }
-
- $alerts_interval = intval(get_config('system','alerts_interval',10000));
- if ($alerts_interval < 5000) {
- $alerts_interval = 5000;
- }
-
- if (! x(self::$page,'title')) {
- self::$page['title'] = ((array_path_exists('system/sitename',self::$config)) ? self::$config['system']['sitename'] : EMPTY_STR);
- }
-
- if (! self::$meta->get_field('og:title')) {
- self::$meta->set('og:title',self::$page['title']);
- }
-
- // webmanifest
-
- Head::add_link( [ 'rel' => 'manifest', 'href' => z_root() . '/manifest.webmanifest' ] );
- self::$meta->set('application-name', System::get_platform_name() );
-
- self::$meta->set('generator', System::get_platform_name());
-
- $i = head_get_icon();
- if (! $i) {
- $i = System::get_site_icon();
- }
- if ($i) {
- Head::add_link(['rel' => 'shortcut icon', 'href' => $i ]);
- Head::add_link(['rel' => 'icon', 'sizes' => '64x64', 'href' => System::get_site_icon() ]);
- Head::add_link(['rel' => 'icon', 'sizes' => '192x192', 'href' => 'images/' . System::get_platform_name() . '.svg' ]);
- }
-
- $x = [ 'header' => '' ];
- /**
- * @hooks build_pagehead
- * Called when creating the HTML page header.
- * * \e string \b header - Return the HTML header which should be added
- */
- Hook::call('build_pagehead', $x);
-
- /* put the head template at the beginning of page['htmlhead']
- * since the code added by the modules frequently depends on it
- * being first
- */
-
- if (! isset(self::$page['htmlhead'])) {
- self::$page['htmlhead'] = EMPTY_STR; // needed to silence warning
- }
-
- self::$page['htmlhead'] = replace_macros(Theme::get_template('head.tpl'),
- [
- '$preload_images' => $preload_images,
- '$user_scalable' => $user_scalable,
- '$query' => urlencode(self::$query_string),
- '$baseurl' => self::get_baseurl(),
- '$local_channel' => local_channel(),
- '$metas' => self::$meta->get(),
- '$plugins' => $x['header'],
- '$update_interval' => $interval,
- '$alerts_interval' => $alerts_interval,
- '$head_css' => Head::get_css(),
- '$head_js' => Head::get_js(),
- '$linkrel' => Head::get_links(),
- '$js_strings' => Stringsjs::strings(),
- '$zid' => Channel::get_my_address(),
- '$channel_id' => ((isset(self::$profile) && is_array(self::$profile) && array_key_exists('uid',self::$profile)) ? self::$profile['uid'] : '')
- ]
- ) . self::$page['htmlhead'];
-
- // always put main.js at the end
- self::$page['htmlhead'] .= Head::get_main_js();
- }
-
- /**
- * @brief Register template engine class.
- *
- * If $name is "", is used class static property $class::$name.
- *
- * @param string $class
- * @param string $name
- */
- public static function register_template_engine($class, $name = '') {
- if (! $name) {
- $v = get_class_vars($class);
- if (x($v, "name")) {
- $name = $v['name'];
- }
- }
- if (! $name) {
- echo "template engine $class cannot be registered without a name.\n";
- killme();
- }
- self::$template_engines[$name] = $class;
- }
-
- /**
- * @brief Return template engine instance.
- *
- * If $name is not defined, return engine defined by theme, or default.
- *
- * @param string $name Template engine name
- *
- * @return void Template Engine instance
- */
- public static function template_engine($name = '') {
- if ($name !== '') {
- $template_engine = $name;
- }
- else {
- $template_engine = 'smarty3';
- if (x(self::$theme, 'template_engine')) {
- $template_engine = self::$theme['template_engine'];
- }
- }
-
- if (isset(self::$template_engines[$template_engine])) {
- if (isset(self::$template_engine_instance[$template_engine])) {
- return self::$template_engine_instance[$template_engine];
- }
- else {
- $class = self::$template_engines[$template_engine];
- $obj = new $class();
- self::$template_engine_instance[$template_engine] = $obj;
- return $obj;
- }
- }
-
- // If we fell through to this step, it is considered fatal.
-
- echo "template engine $template_engine is not registered!\n";
- killme();
- }
-
- /**
- * @brief Returns the active template engine.
- *
- * @return string
- */
- public static function get_template_engine() {
- return self::$theme['template_engine'];
- }
-
- public static function set_template_engine($engine = 'smarty3') {
- self::$theme['template_engine'] = $engine;
- }
-
- public static function get_template_ldelim($engine = 'smarty3') {
- return self::$ldelim[$engine];
- }
-
- public static function get_template_rdelim($engine = 'smarty3') {
- return self::$rdelim[$engine];
- }
-
- public static function head_set_icon($icon) {
- self::$data['pageicon'] = $icon;
- }
-
- public static function head_get_icon() {
- $icon = self::$data['pageicon'];
- if ($icon && ! strpos($icon,'://')) {
- $icon = z_root() . $icon;
- }
- return $icon;
- }
+ public static $install = false; // true if we are installing the software
+ public static $account = null; // account record of the logged-in account
+ public static $channel = null; // channel record of the current channel of the logged-in account
+ public static $observer = null; // xchan record of the page observer
+ public static $profile_uid = 0; // If applicable, the channel_id of the "page owner"
+ public static $sys_channel = null; // cache sys channel lookups here
+ public static $poi = null; // "person of interest", generally a referenced connection or directory entry
+ private static $oauth_key = null; // consumer_id of oauth request, if used
+ public static $layout = []; // Comanche parsed template
+ public static $pdl = null; // Comanche page description
+ private static $perms = null; // observer permissions
+ private static $widgets = []; // widgets for this page
+ public static $config = []; // config cache
+
+ public static $override_intltext_templates = [];
+ public static $override_markup_templates = [];
+ public static $override_templateroot = null;
+ public static $override_helproot = null;
+ public static $override_helpfiles = [];
+
+ public static $session = null;
+ public static $groups;
+ public static $language;
+ public static $langsave;
+ public static $rtl = false;
+ public static $addons_admin;
+ public static $module_loaded = false;
+ public static $query_string;
+ public static $page;
+ public static $profile;
+ public static $user;
+ public static $cid;
+ public static $contact;
+ public static $contacts;
+ public static $content;
+ public static $data = [];
+ public static $error = false;
+ public static $emojitab = false;
+ public static $cmd;
+ public static $argv;
+ public static $argc;
+ public static $module;
+ public static $pager;
+ public static $strings;
+ public static $stringsave; // used in push_lang() and pop_lang()
+ public static $hooks;
+ public static $timezone;
+ public static $interactive = true;
+ public static $addons;
+ private static $apps = [];
+ public static $identities;
+ public static $css_sources = [];
+ public static $js_sources = [];
+ public static $linkrel = [];
+ public static $theme_info = [];
+ public static $is_sys = false;
+ public static $nav_sel;
+ public static $comanche;
+ public static $httpheaders = null;
+ public static $httpsig = null;
+ public static $channel_links;
+ public static $category;
+
+ // Allow themes to control internal parameters
+ // by changing App values in theme.php
+
+ public static $sourcename = '';
+ public static $videowidth = 425;
+ public static $videoheight = 350;
+ public static $force_max_items = 0;
+ public static $theme_thread_allow = true;
+
+ public static $meta;
+
+ /**
+ * @brief An array for all theme-controllable parameters
+ *
+ * Mostly unimplemented yet. Only options 'template_engine' and
+ * beyond are used.
+ */
+ private static $theme = [
+ 'sourcename' => '',
+ 'videowidth' => 425,
+ 'videoheight' => 350,
+ 'force_max_items' => 0,
+ 'thread_allow' => true,
+ 'stylesheet' => '',
+ 'template_engine' => 'smarty3',
+ ];
+
+ /**
+ * @brief An array of registered template engines ('name'=>'class name')
+ */
+ public static $template_engines = [];
+ /**
+ * @brief An array of instanced template engines ('name'=>'instance')
+ */
+ public static $template_engine_instance = [];
+
+ private static $ldelim = [
+ 'internal' => '',
+ 'smarty3' => '{{'
+ ];
+ private static $rdelim = [
+ 'internal' => '',
+ 'smarty3' => '}}'
+ ];
+
+ // These represent the URL which was used to access the page
+
+ private static $scheme;
+ private static $hostname;
+ private static $path;
+
+ // This is our standardised URL - regardless of what was used
+ // to access the page
+
+ private static $baseurl;
+
+ /**
+ * App constructor.
+ */
+
+ public static function init() {
+ // we'll reset this after we read our config file
+ date_default_timezone_set('UTC');
+
+ self::$config = [
+ 'system' => []
+ ];
+ self::$page = [];
+ self::$pager= [];
+
+ self::$query_string = '';
+
+ startup();
+
+ set_include_path(
+ 'include' . PATH_SEPARATOR
+ . 'library' . PATH_SEPARATOR
+ . '.'
+ );
+
+ // normally self::$hostname (also scheme and port) will be filled in during startup.
+ // Set it manually from $_SERVER variables only if it wasn't.
+
+ if (! self::$hostname) {
+ self::$hostname = punify(get_host());
+ self::$scheme = 'http';
+
+ if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) {
+ self::$scheme = 'https';
+ }
+ elseif (isset($_SERVER['SERVER_PORT']) && (intval($_SERVER['SERVER_PORT']) === 443)) {
+ self::$scheme = 'https';
+ }
+
+ if (isset($_SERVER['SERVER_PORT']) && intval($_SERVER['SERVER_PORT']) !== 80 && intval($_SERVER['SERVER_PORT']) !== 443) {
+ self::$hostname .= ':' . $_SERVER['SERVER_PORT'];
+ }
+ }
+
+ /*
+ * Figure out if we are running at the top of a domain
+ * or in a sub-directory and adjust accordingly
+ */
+ $path = trim(dirname($_SERVER['SCRIPT_NAME']),'/\\');
+ if (isset($path) && strlen($path) && ($path != self::$path)) {
+ self::$path = $path;
+ }
+
+ // Rewrite rules on the server will convert incoming paths to a request parameter.
+ // Strip this path information from our stored copy of the query_string, in case
+ // we need to re-use the rest of the original query.
+
+ if (isset($_SERVER['QUERY_STRING']) && substr($_SERVER['QUERY_STRING'], 0, 4) === "req=") {
+ self::$query_string = str_replace(['<','>'],['<','>'],substr($_SERVER['QUERY_STRING'], 4));
+ // removing leading '/' - maybe a nginx problem
+ if (substr(self::$query_string, 0, 1) == "/") {
+ self::$query_string = substr(self::$query_string, 1);
+ }
+ // change the first & to ?
+ self::$query_string = preg_replace('/&/','?',self::$query_string,1);
+ }
+
+ // Here is where start breaking out the URL path information to both route the
+ // web request based on the leading path component, and also to use remaining
+ // path components as C-style arguments to our individual controller modules.
+
+ if (isset($_GET['req'])) {
+ self::$cmd = escape_tags(trim($_GET['req'],'/\\'));
+ }
+
+ // support both unix and fediverse style "homedir"
+
+ if ((substr(self::$cmd, 0, 1) === '~') || (substr(self::$cmd, 0, 1) === '@')) {
+ self::$cmd = 'channel/' . substr(self::$cmd, 1);
+ }
+
+ /*
+ * Break the URL path into C style argc/argv style arguments for our
+ * modules. Given "http://example.com/module/arg1/arg2", self::$argc
+ * will be 3 (integer) and self::$argv will contain:
+ * [0] => 'module'
+ * [1] => 'arg1'
+ * [2] => 'arg2'
+ *
+ * There will always be one argument. If provided a naked domain
+ * URL, self::$argv[0] is set to "home".
+ *
+ * If $argv[0] has a period in it, for example foo.json; rewrite
+ * to module = 'foo' and set $_REQUEST['module_format'] = 'json';
+ *
+ * As a result, say you offered a feed for member bob. Most applications
+ * would address it as /feed/bob.xml or /feed/bob.json
+ * We would address it as /feed.xml/bob and /feed.json/bob because
+ * you're altering the output format of the feed module, and bob is
+ * just an identifier or variable.
+ */
+
+ self::$argv = explode('/', self::$cmd);
+
+ self::$argc = count(self::$argv);
+ if ((array_key_exists('0', self::$argv)) && strlen(self::$argv[0])) {
+ if(strpos(self::$argv[0],'.')) {
+ $_REQUEST['module_format'] = substr(self::$argv[0],strpos(self::$argv[0],'.')+1);
+ self::$argv[0] = substr(self::$argv[0],0,strpos(self::$argv[0],'.'));
+ }
+
+ self::$module = str_replace(".", "_", self::$argv[0]);
+ self::$module = str_replace("-", "_", self::$module);
+ if(strpos(self::$module,'_') === 0)
+ self::$module = substr(self::$module,1);
+ } else {
+ self::$argc = 1;
+ self::$argv = array('home');
+ self::$module = 'home';
+ }
+
+
+ /*
+ * See if there is any page number information, and initialise
+ * pagination
+ */
+
+ self::$pager['unset'] = ((array_key_exists('page',$_REQUEST)) ? false : true);
+ self::$pager['page'] = ((x($_GET,'page') && intval($_GET['page']) > 0) ? intval($_GET['page']) : 1);
+ self::$pager['itemspage'] = 60;
+ self::$pager['start'] = (self::$pager['page'] * self::$pager['itemspage']) - self::$pager['itemspage'];
+ self::$pager['total'] = 0;
+
+ if (self::$pager['start'] < 0) {
+ self::$pager['start'] = 0;
+ }
+
+ self::$meta = new HttpMeta();
+
+ /*
+ * register template engines (probably just smarty, but this can be extended)
+ */
+
+ self::register_template_engine(get_class(new SmartyTemplate()));
+
+ }
+
+ public static function get_baseurl($ssl = false) {
+ if(is_array(self::$config)
+ && array_key_exists('system',self::$config)
+ && is_array(self::$config['system'])
+ && array_key_exists('baseurl',self::$config['system'])
+ && strlen(self::$config['system']['baseurl'])) {
+ // get_baseurl() is a heavily used function.
+ // Do not use punify() here until we find a library that performs better than what we have now.
+ // $url = punify(self::$config['system']['baseurl']);
+ $url = self::$config['system']['baseurl'];
+ $url = trim($url,'\\/');
+ return $url;
+ }
+
+ $scheme = self::$scheme;
+
+ self::$baseurl = $scheme . "://" . punify(self::$hostname) . ((isset(self::$path) && strlen(self::$path)) ? '/' . self::$path : '' );
+
+ return self::$baseurl;
+ }
+
+ public static function set_baseurl($url) {
+ if(is_array(self::$config)
+ && array_key_exists('system',self::$config)
+ && is_array(self::$config['system'])
+ && array_key_exists('baseurl',self::$config['system'])
+ && strlen(self::$config['system']['baseurl'])) {
+ $url = punify(self::$config['system']['baseurl']);
+ $url = trim($url,'\\/');
+ }
+
+ $parsed = @parse_url($url);
+
+ self::$baseurl = $url;
+
+ if($parsed !== false) {
+ self::$scheme = $parsed['scheme'];
+
+ self::$hostname = punify($parsed['host']);
+ if(x($parsed,'port'))
+ self::$hostname .= ':' . $parsed['port'];
+ if(x($parsed,'path'))
+ self::$path = trim($parsed['path'],'\\/');
+ }
+ }
+
+ public static function get_scheme() {
+ return self::$scheme;
+ }
+
+ public static function get_hostname() {
+ return self::$hostname;
+ }
+
+ public static function set_hostname($h) {
+ self::$hostname = $h;
+ }
+
+ public static function set_path($p) {
+ self::$path = trim(trim($p), '/');
+ }
+
+ public static function get_path() {
+ return self::$path;
+ }
+
+ public static function get_channel_links() {
+ $s = '';
+ $x = self::$channel_links;
+ if ($x && is_array($x) && count($x)) {
+ foreach ($x as $y) {
+ if ($s) {
+ $s .= ',';
+ }
+ $s .= '<' . $y['href'] . '>; rel="' . $y['rel'] . '"; type="' . $y['type'] . '"';
+ }
+ }
+ return $s;
+ }
+ public static function set_account($acct) {
+ self::$account = $acct;
+ }
+
+ public static function get_account() {
+ return self::$account;
+ }
+
+ public static function set_channel($channel) {
+ self::$channel = $channel;
+ }
+
+ public static function get_channel() {
+ return self::$channel;
+ }
+
+ public static function set_observer($xchan) {
+ self::$observer = $xchan;
+ }
+
+
+ public static function get_observer() {
+ return self::$observer;
+ }
+
+ public static function set_perms($perms) {
+ self::$perms = $perms;
+ }
+
+ public static function get_perms() {
+ return self::$perms;
+ }
+
+ public static function set_oauth_key($consumer_id) {
+ self::$oauth_key = $consumer_id;
+ }
+
+ public static function get_oauth_key() {
+ return self::$oauth_key;
+ }
+
+ public static function get_apps() {
+ return self::$apps;
+ }
+
+ public static function set_apps($arr) {
+ self::$apps = $arr;
+ }
+
+ public static function set_groups($g) {
+ self::$groups = $g;
+ }
+
+ public static function get_groups() {
+ return self::$groups;
+ }
+
+ public static function set_pager_total($n) {
+ self::$pager['total'] = intval($n);
+ }
+
+ public static function set_pager_itemspage($n) {
+ self::$pager['itemspage'] = ((intval($n) > 0) ? intval($n) : 0);
+ self::$pager['start'] = (self::$pager['page'] * self::$pager['itemspage']) - self::$pager['itemspage'];
+ }
+
+ public static function build_pagehead() {
+
+ $user_scalable = ((local_channel()) ? get_pconfig(local_channel(),'system','user_scalable', 0) : 0);
+
+ $preload_images = ((local_channel()) ? get_pconfig(local_channel(),'system','preload_images',0) : 0);
+
+
+ $interval = ((local_channel()) ? get_pconfig(local_channel(),'system','update_interval', 30000) : 30000);
+ if ($interval < 15000) {
+ $interval = 15000;
+ }
+
+ $alerts_interval = intval(get_config('system','alerts_interval',10000));
+ if ($alerts_interval < 5000) {
+ $alerts_interval = 5000;
+ }
+
+ if (! x(self::$page,'title')) {
+ self::$page['title'] = ((array_path_exists('system/sitename',self::$config)) ? self::$config['system']['sitename'] : EMPTY_STR);
+ }
+
+ if (! self::$meta->get_field('og:title')) {
+ self::$meta->set('og:title',self::$page['title']);
+ }
+
+ // webmanifest
+
+ Head::add_link( [ 'rel' => 'manifest', 'href' => z_root() . '/manifest.webmanifest' ] );
+ self::$meta->set('application-name', System::get_project_name() );
+ self::$meta->set('generator', System::get_project_name());
+
+ $i = head_get_icon();
+ if (! $i) {
+ $i = System::get_site_icon();
+ }
+ if ($i) {
+ Head::add_link(['rel' => 'shortcut icon', 'href' => $i ]);
+ Head::add_link(['rel' => 'icon', 'sizes' => '64x64', 'href' => str_replace('/l/','/64/', System::get_site_icon()) ]);
+ Head::add_link(['rel' => 'icon', 'sizes' => '192x192', 'href' => str_replace('/l/','/192/', System::get_site_icon()) ]);
+ }
+
+ $x = [ 'header' => '' ];
+ /**
+ * @hooks build_pagehead
+ * Called when creating the HTML page header.
+ * * \e string \b header - Return the HTML header which should be added
+ */
+ Hook::call('build_pagehead', $x);
+
+ /* put the head template at the beginning of page['htmlhead']
+ * since the code added by the modules frequently depends on it
+ * being first
+ */
+
+ if (! isset(self::$page['htmlhead'])) {
+ self::$page['htmlhead'] = EMPTY_STR; // needed to silence warning
+ }
+
+ self::$page['htmlhead'] = replace_macros(Theme::get_template('head.tpl'),
+ [
+ '$preload_images' => $preload_images,
+ '$user_scalable' => $user_scalable,
+ '$query' => urlencode(self::$query_string),
+ '$baseurl' => self::get_baseurl(),
+ '$local_channel' => local_channel(),
+ '$metas' => self::$meta->get(),
+ '$plugins' => $x['header'],
+ '$update_interval' => $interval,
+ '$alerts_interval' => $alerts_interval,
+ '$head_css' => Head::get_css(),
+ '$head_js' => Head::get_js(),
+ '$linkrel' => Head::get_links(),
+ '$js_strings' => Stringsjs::strings(),
+ '$zid' => Channel::get_my_address(),
+ '$channel_id' => ((isset(self::$profile) && is_array(self::$profile) && array_key_exists('uid',self::$profile)) ? self::$profile['uid'] : '')
+ ]
+ ) . self::$page['htmlhead'];
+
+ // always put main.js at the end
+ self::$page['htmlhead'] .= Head::get_main_js();
+ }
+
+ /**
+ * @brief Register template engine class.
+ *
+ * If $name is "", is used class static property $class::$name.
+ *
+ * @param string $class
+ * @param string $name
+ */
+ public static function register_template_engine($class, $name = '') {
+ if (! $name) {
+ $v = get_class_vars($class);
+ if (x($v, "name")) {
+ $name = $v['name'];
+ }
+ }
+ if (! $name) {
+ echo "template engine $class cannot be registered without a name.\n";
+ killme();
+ }
+ self::$template_engines[$name] = $class;
+ }
+
+ /**
+ * @brief Return template engine instance.
+ *
+ * If $name is not defined, return engine defined by theme, or default.
+ *
+ * @param string $name Template engine name
+ *
+ * @return void Template Engine instance
+ */
+ public static function template_engine($name = '') {
+ if ($name !== '') {
+ $template_engine = $name;
+ }
+ else {
+ $template_engine = 'smarty3';
+ if (x(self::$theme, 'template_engine')) {
+ $template_engine = self::$theme['template_engine'];
+ }
+ }
+
+ if (isset(self::$template_engines[$template_engine])) {
+ if (isset(self::$template_engine_instance[$template_engine])) {
+ return self::$template_engine_instance[$template_engine];
+ }
+ else {
+ $class = self::$template_engines[$template_engine];
+ $obj = new $class();
+ self::$template_engine_instance[$template_engine] = $obj;
+ return $obj;
+ }
+ }
+
+ // If we fell through to this step, it is considered fatal.
+
+ echo "template engine $template_engine is not registered!\n";
+ killme();
+ }
+
+ /**
+ * @brief Returns the active template engine.
+ *
+ * @return string
+ */
+ public static function get_template_engine() {
+ return self::$theme['template_engine'];
+ }
+
+ public static function set_template_engine($engine = 'smarty3') {
+ self::$theme['template_engine'] = $engine;
+ }
+
+ public static function get_template_ldelim($engine = 'smarty3') {
+ return self::$ldelim[$engine];
+ }
+
+ public static function get_template_rdelim($engine = 'smarty3') {
+ return self::$rdelim[$engine];
+ }
+
+ public static function head_set_icon($icon) {
+ self::$data['pageicon'] = $icon;
+ }
+
+ public static function head_get_icon() {
+ $icon = self::$data['pageicon'];
+ if ($icon && ! strpos($icon,'://')) {
+ $icon = z_root() . $icon;
+ }
+ return $icon;
+ }
} // End App class
@@ -1351,23 +1339,23 @@ class App {
* @return bool|int
*/
function x($s, $k = null) {
- if($k != null) {
- if((is_array($s)) && (array_key_exists($k, $s))) {
- if($s[$k])
- return (int) 1;
- return (int) 0;
- }
- return false;
- }
- else {
- if(isset($s)) {
- if($s) {
- return (int) 1;
- }
- return (int) 0;
- }
- return false;
- }
+ if($k != null) {
+ if((is_array($s)) && (array_key_exists($k, $s))) {
+ if($s[$k])
+ return (int) 1;
+ return (int) 0;
+ }
+ return false;
+ }
+ else {
+ if(isset($s)) {
+ if($s) {
+ return (int) 1;
+ }
+ return (int) 0;
+ }
+ return false;
+ }
}
@@ -1377,25 +1365,25 @@ function x($s, $k = null) {
* @ref include/system_unavailable.php will handle everything further.
*/
function system_unavailable() {
- include('include/system_unavailable.php');
- system_down();
- killme();
+ include('include/system_unavailable.php');
+ system_down();
+ killme();
}
function clean_urls() {
- // if(App::$config['system']['clean_urls'])
- return true;
- // return false;
+ // if(App::$config['system']['clean_urls'])
+ return true;
+ // return false;
}
function z_path() {
- $base = z_root();
- if(! clean_urls())
- $base .= '/?q=';
+ $base = z_root();
+ if(! clean_urls())
+ $base .= '/?q=';
- return $base;
+ return $base;
}
/**
@@ -1406,7 +1394,7 @@ function z_path() {
* @return string
*/
function z_root() {
- return App::get_baseurl();
+ return App::get_baseurl();
}
/**
@@ -1417,18 +1405,18 @@ function z_root() {
* @return string
*/
function absurl($path) {
- if (strpos($path, '/') === 0) {
- return z_path() . $path;
- }
+ if (strpos($path, '/') === 0) {
+ return z_path() . $path;
+ }
- return $path;
+ return $path;
}
function os_mkdir($path, $mode = 0777, $recursive = false) {
- $oldumask = @umask(0);
- $result = @mkdir($path, $mode, $recursive);
- @umask($oldumask);
- return $result;
+ $oldumask = @umask(0);
+ $result = @mkdir($path, $mode, $recursive);
+ @umask($oldumask);
+ return $result;
}
@@ -1439,18 +1427,18 @@ function os_mkdir($path, $mode = 0777, $recursive = false) {
* @return bool
*/
function rrmdir($path) {
- if (is_dir($path) === true) {
- $files = array_diff(scandir($path), array('.', '..'));
- foreach ($files as $file) {
- rrmdir(realpath($path) . '/' . $file);
- }
- return rmdir($path);
- }
- elseif (is_file($path) === true) {
- return unlink($path);
- }
+ if (is_dir($path) === true) {
+ $files = array_diff(scandir($path), array('.', '..'));
+ foreach ($files as $file) {
+ rrmdir(realpath($path) . '/' . $file);
+ }
+ return rmdir($path);
+ }
+ elseif (is_file($path) === true) {
+ return unlink($path);
+ }
- return false;
+ return false;
}
@@ -1460,13 +1448,13 @@ function rrmdir($path) {
* @return bool
*/
function is_ajax() {
- return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
+ return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
}
function killme_if_ajax() {
- if (is_ajax()) {
- killme();
- }
+ if (is_ajax()) {
+ killme();
+ }
}
/**
@@ -1476,46 +1464,46 @@ function killme_if_ajax() {
*/
function check_config() {
- $saved = get_config('system','urlverify');
- if (! $saved) {
- set_config('system','urlverify', bin2hex(z_root()));
- }
-
- if(($saved) && ($saved != bin2hex(z_root()))) {
- // our URL changed. Do something.
+ $saved = get_config('system','urlverify');
+ if (! $saved) {
+ set_config('system','urlverify', bin2hex(z_root()));
+ }
- $oldurl = hex2bin($saved);
- logger('Baseurl changed!');
+ if(($saved) && ($saved != bin2hex(z_root()))) {
+ // our URL changed. Do something.
- $oldhost = substr($oldurl, strpos($oldurl, '//') + 2);
- $host = substr(z_root(), strpos(z_root(), '//') + 2);
+ $oldurl = hex2bin($saved);
+ logger('Baseurl changed!');
- $is_ip_addr = ((preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$host)) ? true : false);
- $was_ip_addr = ((preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$oldhost)) ? true : false);
- // 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()));
- }
- else
- logger('Attempt to change baseurl from a DNS name to an IP address was refused.');
- }
+ $oldhost = substr($oldurl, strpos($oldurl, '//') + 2);
+ $host = substr(z_root(), strpos(z_root(), '//') + 2);
- // This will actually set the url to the one stored in .htconfig, and ignore what
- // we're passing - unless we are installing and it has never been set.
+ $is_ip_addr = ((preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$host)) ? true : false);
+ $was_ip_addr = ((preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$oldhost)) ? true : false);
+ // 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()));
+ }
+ else
+ logger('Attempt to change baseurl from a DNS name to an IP address was refused.');
+ }
- App::set_baseurl(z_root());
+ // This will actually set the url to the one stored in .htconfig, and ignore what
+ // we're passing - unless we are installing and it has never been set.
- // Ensure the site has a system channel and that it has been upgraded.
- // This function will only do work if work is required.
-
- Channel::create_system();
-
- $x = new DB_Upgrade(DB_UPDATE_VERSION);
+ App::set_baseurl(z_root());
- Hook::load();
+ // Ensure the site has a system channel and that it has been upgraded.
+ // This function will only do work if work is required.
- check_cron_broken();
+ Channel::create_system();
+
+ $x = new DB_Upgrade(DB_UPDATE_VERSION);
+
+ Hook::load();
+
+ check_cron_broken();
}
@@ -1523,132 +1511,132 @@ function check_config() {
function fix_system_urls($oldurl, $newurl) {
- logger('fix_system_urls: renaming ' . $oldurl . ' to ' . $newurl);
+ logger('fix_system_urls: renaming ' . $oldurl . ' to ' . $newurl);
- // Basically a site rename, but this can happen if you change from http to https for instance - even if the site name didn't change
- // This should fix URL changes on our site, but other sites will end up with orphan hublocs which they will try to contact and will
- // cause wasted communications.
- // What we need to do after fixing this up is to send a revocation of the old URL to every other site that we communicate with so
- // that they can clean up their hubloc tables (this includes directories).
- // It's a very expensive operation so you don't want to have to do it often or after your site gets to be large.
+ // Basically a site rename, but this can happen if you change from http to https for instance - even if the site name didn't change
+ // This should fix URL changes on our site, but other sites will end up with orphan hublocs which they will try to contact and will
+ // cause wasted communications.
+ // What we need to do after fixing this up is to send a revocation of the old URL to every other site that we communicate with so
+ // that they can clean up their hubloc tables (this includes directories).
+ // It's a very expensive operation so you don't want to have to do it often or after your site gets to be large.
- $r = q("select xchan.*, hubloc.* from xchan left join hubloc on xchan_hash = hubloc_hash where hubloc_url like '%s'",
- dbesc($oldurl . '%')
- );
+ $r = q("select xchan.*, hubloc.* from xchan left join hubloc on xchan_hash = hubloc_hash where hubloc_url like '%s'",
+ dbesc($oldurl . '%')
+ );
- if($r) {
- foreach($r as $rv) {
- $channel_address = substr($rv['hubloc_addr'],0,strpos($rv['hubloc_addr'],'@'));
+ if($r) {
+ foreach($r as $rv) {
+ $channel_address = substr($rv['hubloc_addr'],0,strpos($rv['hubloc_addr'],'@'));
- // get the associated channel. If we don't have a local channel, do nothing for this entry.
+ // get the associated channel. If we don't have a local channel, do nothing for this entry.
- $c = q("select * from channel where channel_hash = '%s' limit 1",
- dbesc($rv['hubloc_hash'])
- );
- if(! $c)
- continue;
+ $c = q("select * from channel where channel_hash = '%s' limit 1",
+ dbesc($rv['hubloc_hash'])
+ );
+ if(! $c)
+ continue;
- $parsed = @parse_url($newurl);
- if(! $parsed)
- continue;
- $newhost = $parsed['host'];
+ $parsed = @parse_url($newurl);
+ if(! $parsed)
+ continue;
+ $newhost = $parsed['host'];
- // sometimes parse_url returns unexpected results.
+ // sometimes parse_url returns unexpected results.
- if(strpos($newhost,'/') !== false)
- $newhost = substr($newhost,0,strpos($newhost,'/'));
+ if(strpos($newhost,'/') !== false)
+ $newhost = substr($newhost,0,strpos($newhost,'/'));
- $rhs = $newhost . (($parsed['port']) ? ':' . $parsed['port'] : '');
+ $rhs = $newhost . (($parsed['port']) ? ':' . $parsed['port'] : '');
- // paths aren't going to work. You have to be at the (sub)domain root
- // . (($parsed['path']) ? $parsed['path'] : '');
+ // paths aren't going to work. You have to be at the (sub)domain root
+ // . (($parsed['path']) ? $parsed['path'] : '');
- // The xchan_url might point to another nomadic identity clone
+ // The xchan_url might point to another nomadic identity clone
- $replace_xchan_url = ((strpos($rv['xchan_url'],$oldurl) !== false) ? true : false);
+ $replace_xchan_url = ((strpos($rv['xchan_url'],$oldurl) !== false) ? true : false);
- $x = q("update xchan set xchan_addr = '%s', xchan_url = '%s', xchan_connurl = '%s', xchan_follow = '%s', xchan_connpage = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_date = '%s' where xchan_hash = '%s'",
- dbesc($channel_address . '@' . $rhs),
- dbesc(($replace_xchan_url) ? str_replace($oldurl,$newurl,$rv['xchan_url']) : $rv['xchan_url']),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_connurl'])),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_follow'])),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_connpage'])),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_l'])),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_m'])),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_s'])),
- dbesc(datetime_convert()),
- dbesc($rv['xchan_hash'])
- );
+ $x = q("update xchan set xchan_addr = '%s', xchan_url = '%s', xchan_connurl = '%s', xchan_follow = '%s', xchan_connpage = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_date = '%s' where xchan_hash = '%s'",
+ dbesc($channel_address . '@' . $rhs),
+ dbesc(($replace_xchan_url) ? str_replace($oldurl,$newurl,$rv['xchan_url']) : $rv['xchan_url']),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_connurl'])),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_follow'])),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_connpage'])),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_l'])),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_m'])),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_s'])),
+ dbesc(datetime_convert()),
+ dbesc($rv['xchan_hash'])
+ );
- $y = q("update hubloc set hubloc_addr = '%s', hubloc_url = '%s', hubloc_id_url = '%s', hubloc_url_sig = '%s', hubloc_site_id = '%s', hubloc_host = '%s', hubloc_callback = '%s' where hubloc_hash = '%s' and hubloc_url = '%s'",
- dbesc($channel_address . '@' . $rhs),
- dbesc($newurl),
- dbesc(str_replace($oldurl,$newurl,$rv['hubloc_id_url'])),
- dbesc(Libzot::sign($newurl,$c[0]['channel_prvkey'])),
- dbesc(Libzot::make_xchan_hash($newurl,Config::Get('system','pubkey'))),
- dbesc($newhost),
- dbesc($newurl . '/post'),
- dbesc($rv['xchan_hash']),
- dbesc($oldurl)
- );
+ $y = q("update hubloc set hubloc_addr = '%s', hubloc_url = '%s', hubloc_id_url = '%s', hubloc_url_sig = '%s', hubloc_site_id = '%s', hubloc_host = '%s', hubloc_callback = '%s' where hubloc_hash = '%s' and hubloc_url = '%s'",
+ dbesc($channel_address . '@' . $rhs),
+ dbesc($newurl),
+ dbesc(str_replace($oldurl,$newurl,$rv['hubloc_id_url'])),
+ dbesc(Libzot::sign($newurl,$c[0]['channel_prvkey'])),
+ dbesc(Libzot::make_xchan_hash($newurl,Config::Get('system','pubkey'))),
+ dbesc($newhost),
+ dbesc($newurl . '/post'),
+ dbesc($rv['xchan_hash']),
+ dbesc($oldurl)
+ );
- $z = q("update profile set photo = '%s', thumb = '%s' where uid = %d",
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_l'])),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_m'])),
- intval($c[0]['channel_id'])
- );
+ $z = q("update profile set photo = '%s', thumb = '%s' where uid = %d",
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_l'])),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_m'])),
+ intval($c[0]['channel_id'])
+ );
- $m = q("select abook_id, abook_instance from abook where abook_instance like '%s' and abook_channel = %d",
- dbesc('%' . $oldurl . '%'),
- intval($c[0]['channel_id'])
- );
- if($m) {
- foreach($m as $mm) {
- q("update abook set abook_instance = '%s' where abook_id = %d",
- dbesc(str_replace($oldurl,$newurl,$mm['abook_instance'])),
- intval($mm['abook_id'])
- );
- }
- }
+ $m = q("select abook_id, abook_instance from abook where abook_instance like '%s' and abook_channel = %d",
+ dbesc('%' . $oldurl . '%'),
+ intval($c[0]['channel_id'])
+ );
+ if($m) {
+ foreach($m as $mm) {
+ q("update abook set abook_instance = '%s' where abook_id = %d",
+ dbesc(str_replace($oldurl,$newurl,$mm['abook_instance'])),
+ intval($mm['abook_id'])
+ );
+ }
+ }
- Run::Summon( [ 'Notifier', 'refresh_all', $c[0]['channel_id'] ]);
- }
- }
+ Run::Summon( [ 'Notifier', 'refresh_all', $c[0]['channel_id'] ]);
+ }
+ }
- // fix links in apps
+ // fix links in apps
- $a = q("select id, app_url, app_photo from app where app_url like '%s' OR app_photo like '%s'",
- dbesc('%' . $oldurl . '%'),
- dbesc('%' . $oldurl . '%')
- );
- if($a) {
- foreach($a as $aa) {
- q("update app set app_url = '%s', app_photo = '%s' where id = %d",
- dbesc(str_replace($oldurl,$newurl,$aa['app_url'])),
- dbesc(str_replace($oldurl,$newurl,$aa['app_photo'])),
- intval($aa['id'])
- );
- }
- }
+ $a = q("select id, app_url, app_photo from app where app_url like '%s' OR app_photo like '%s'",
+ dbesc('%' . $oldurl . '%'),
+ dbesc('%' . $oldurl . '%')
+ );
+ if($a) {
+ foreach($a as $aa) {
+ q("update app set app_url = '%s', app_photo = '%s' where id = %d",
+ dbesc(str_replace($oldurl,$newurl,$aa['app_url'])),
+ dbesc(str_replace($oldurl,$newurl,$aa['app_photo'])),
+ intval($aa['id'])
+ );
+ }
+ }
- // now replace any remote xchans whose photos are stored locally (which will be most if not all remote xchans)
+ // now replace any remote xchans whose photos are stored locally (which will be most if not all remote xchans)
- $r = q("select * from xchan where xchan_photo_l like '%s'",
- dbesc($oldurl . '%')
- );
+ $r = q("select * from xchan where xchan_photo_l like '%s'",
+ dbesc($oldurl . '%')
+ );
- if($r) {
- foreach($r as $rv) {
- $x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s' where xchan_hash = '%s'",
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_l'])),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_m'])),
- dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_s'])),
- dbesc($rv['xchan_hash'])
- );
- }
- }
+ if($r) {
+ foreach($r as $rv) {
+ $x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s' where xchan_hash = '%s'",
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_l'])),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_m'])),
+ dbesc(str_replace($oldurl,$newurl,$rv['xchan_photo_s'])),
+ dbesc($rv['xchan_hash'])
+ );
+ }
+ }
}
@@ -1667,81 +1655,81 @@ function fix_system_urls($oldurl, $newurl) {
*/
function login($register = false, $form_id = 'main-login', $hiddens = false, $login_page = true) {
- $o = '';
- $reg = null;
+ $o = '';
+ $reg = null;
- // Here's the current description of how the register link works (2018-05-15)
+ // Here's the current description of how the register link works (2018-05-15)
- // Register links are enabled on the site home page and login page and navbar.
- // They are not shown by default on other pages which may require login.
+ // Register links are enabled on the site home page and login page and navbar.
+ // They are not shown by default on other pages which may require login.
- // system.register_link can over-ride the default behaviour and redirect to an arbitrary
- // webpage for paid/custom or organisational registrations, regardless of whether
- // registration is allowed.
+ // system.register_link can over-ride the default behaviour and redirect to an arbitrary
+ // webpage for paid/custom or organisational registrations, regardless of whether
+ // registration is allowed.
- // system.register_link may or may not be the same destination as system.sellpage
+ // system.register_link may or may not be the same destination as system.sellpage
- // system.sellpage is the destination linked from the /pubsites page on other sites. If
- // system.sellpage is not set, the 'register' link in /pubsites will go to 'register' on your
- // site.
-
- // If system.register_link is set to the word 'none', no registration link will be shown on
- // your site.
+ // system.sellpage is the destination linked from the /pubsites page on other sites. If
+ // system.sellpage is not set, the 'register' link in /pubsites will go to 'register' on your
+ // site.
+
+ // If system.register_link is set to the word 'none', no registration link will be shown on
+ // your site.
- // If the site supports SSL and this isn't a secure connection, reload the page using https
-
- if (intval($_SERVER['SERVER_PORT']) === 80 && strpos(z_root(), 'https://') !== false) {
- goaway(z_root() . '/' . App::$query_string);
- }
+ // If the site supports SSL and this isn't a secure connection, reload the page using https
- $register_policy = get_config('system','register_policy');
+ if (intval($_SERVER['SERVER_PORT']) === 80 && strpos(z_root(), 'https://') !== false) {
+ goaway(z_root() . '/' . App::$query_string);
+ }
- $reglink = get_config('system', 'register_link', z_root() . '/register');
+ $register_policy = get_config('system','register_policy');
- if($reglink !== 'none') {
- $reg = [
- 'title' => t('Create an account to access services and applications'),
- 'desc' => t('Register'),
- 'link' => $reglink
- ];
- }
+ $reglink = get_config('system', 'register_link', z_root() . '/register');
- $dest_url = z_root() . '/' . App::$query_string;
+ if($reglink !== 'none') {
+ $reg = [
+ 'title' => t('Create an account to access services and applications'),
+ 'desc' => t('Register'),
+ 'link' => $reglink
+ ];
+ }
- if(local_channel()) {
- $tpl = Theme::get_template('logout.tpl');
- }
- else {
- $tpl = Theme::get_template('login.tpl');
- if(strlen(App::$query_string))
- $_SESSION['login_return_url'] = App::$query_string;
- }
+ $dest_url = z_root() . '/' . App::$query_string;
- $o .= replace_macros($tpl, [
- '$dest_url' => $dest_url,
- '$login_page' => $login_page,
- '$logout' => t('Logout'),
- '$login' => t('Login'),
- '$remote_login' => t('Remote Authentication'),
- '$form_id' => $form_id,
- '$lname' => [ 'username', t('Login/Email') , '', '' ],
- '$lpassword' => [ 'password', t('Password'), '', '' ],
- '$remember_me' => [ (($login_page) ? 'remember' : 'remember_me'), t('Remember me'), '', '', [ t('No'),t('Yes') ] ],
- '$hiddens' => $hiddens,
- '$register' => $reg,
- '$lostpass' => t('Forgot your password?'),
- '$lostlink' => t('Password Reset'),
- ]);
+ if(local_channel()) {
+ $tpl = Theme::get_template('logout.tpl');
+ }
+ else {
+ $tpl = Theme::get_template('login.tpl');
+ if(strlen(App::$query_string))
+ $_SESSION['login_return_url'] = App::$query_string;
+ }
- /**
- * @hooks login_hook
- * Called when generating the login form.
- * * \e string with parsed HTML
- */
- Hook::call('login_hook', $o);
+ $o .= replace_macros($tpl, [
+ '$dest_url' => $dest_url,
+ '$login_page' => $login_page,
+ '$logout' => t('Logout'),
+ '$login' => t('Login'),
+ '$remote_login' => t('Remote Authentication'),
+ '$form_id' => $form_id,
+ '$lname' => [ 'username', t('Login/Email') , '', '' ],
+ '$lpassword' => [ 'password', t('Password'), '', '' ],
+ '$remember_me' => [ (($login_page) ? 'remember' : 'remember_me'), t('Remember me'), '', '', [ t('No'),t('Yes') ] ],
+ '$hiddens' => $hiddens,
+ '$register' => $reg,
+ '$lostpass' => t('Forgot your password?'),
+ '$lostlink' => t('Password Reset'),
+ ]);
- return $o;
+ /**
+ * @hooks login_hook
+ * Called when generating the login form.
+ * * \e string with parsed HTML
+ */
+ Hook::call('login_hook', $o);
+
+ return $o;
}
@@ -1750,16 +1738,16 @@ function login($register = false, $form_id = 'main-login', $hiddens = false, $lo
*/
function killme() {
- register_shutdown_function('shutdown');
- exit;
+ register_shutdown_function('shutdown');
+ exit;
}
/**
* @brief Redirect to another URL and terminate this process.
*/
function goaway($s) {
- header("Location: $s");
- killme();
+ header("Location: $s");
+ killme();
}
function shutdown() {
@@ -1777,13 +1765,13 @@ function shutdown() {
function get_account_id() {
- if(isset($_SESSION['account_id']) && intval($_SESSION['account_id']))
- return intval($_SESSION['account_id']);
+ if(isset($_SESSION['account_id']) && intval($_SESSION['account_id']))
+ return intval($_SESSION['account_id']);
- if(App::$account)
- return intval(App::$account['account_id']);
+ if(App::$account)
+ return intval(App::$account['account_id']);
- return false;
+ return false;
}
/**
@@ -1799,12 +1787,12 @@ function get_account_id() {
*/
function local_channel() {
- if(session_id()
- && array_key_exists('authenticated',$_SESSION) && $_SESSION['authenticated']
- && array_key_exists('uid',$_SESSION) && intval($_SESSION['uid']))
- return intval($_SESSION['uid']);
+ if(session_id()
+ && array_key_exists('authenticated',$_SESSION) && $_SESSION['authenticated']
+ && array_key_exists('uid',$_SESSION) && intval($_SESSION['uid']))
+ return intval($_SESSION['uid']);
- return false;
+ return false;
}
/**
@@ -1820,30 +1808,30 @@ function local_channel() {
* @return string|bool visitor_id or false
*/
function remote_channel() {
- if(session_id()
- && array_key_exists('authenticated',$_SESSION) && $_SESSION['authenticated']
- && array_key_exists('visitor_id',$_SESSION) && $_SESSION['visitor_id'])
- return $_SESSION['visitor_id'];
+ if(session_id()
+ && array_key_exists('authenticated',$_SESSION) && $_SESSION['authenticated']
+ && array_key_exists('visitor_id',$_SESSION) && $_SESSION['visitor_id'])
+ return $_SESSION['visitor_id'];
- return false;
+ return false;
}
function can_view_public_stream() {
- if (observer_prohibited(true)) {
- return false;
- }
+ if (observer_prohibited(true)) {
+ return false;
+ }
- if (! (intval(get_config('system','open_pubstream',0)))) {
- if (! local_channel()) {
- return false;
- }
- }
+ if (! (intval(get_config('system','open_pubstream',0)))) {
+ if (! local_channel()) {
+ return false;
+ }
+ }
+
+ $public_stream_mode = intval(get_config('system','public_stream_mode',PUBLIC_STREAM_NONE));
+ return (($public_stream_mode) ? true : false);
- $public_stream_mode = intval(get_config('system','public_stream_mode',PUBLIC_STREAM_NONE));
- return (($public_stream_mode) ? true : false);
-
}
@@ -1859,25 +1847,25 @@ function can_view_public_stream() {
*/
function notice($s) {
- if (! session_id()) {
- return;
- }
+ if (! session_id()) {
+ return;
+ }
- if (! x($_SESSION, 'sysmsg')) {
- $_SESSION['sysmsg'] = [];
- }
+ if (! x($_SESSION, 'sysmsg')) {
+ $_SESSION['sysmsg'] = [];
+ }
- // ignore duplicated error messages which haven't yet been displayed
- // - typically seen as multiple 'permission denied' messages
- // as a result of auto-reloading a protected page with &JS=1
+ // ignore duplicated error messages which haven't yet been displayed
+ // - typically seen as multiple 'permission denied' messages
+ // as a result of auto-reloading a protected page with &JS=1
- if (in_array($s, $_SESSION['sysmsg'])) {
- return;
- }
+ if (in_array($s, $_SESSION['sysmsg'])) {
+ return;
+ }
- if (App::$interactive) {
- $_SESSION['sysmsg'][] = $s;
- }
+ if (App::$interactive) {
+ $_SESSION['sysmsg'][] = $s;
+ }
}
/**
@@ -1891,21 +1879,21 @@ function notice($s) {
* @param string $s Text to display
*/
function info($s) {
- if (! session_id()) {
- return;
- }
-
- if (! x($_SESSION, 'sysmsg_info')) {
- $_SESSION['sysmsg_info'] = [];
- }
+ if (! session_id()) {
+ return;
+ }
- if (in_array($s, $_SESSION['sysmsg_info'])) {
- return;
- }
+ if (! x($_SESSION, 'sysmsg_info')) {
+ $_SESSION['sysmsg_info'] = [];
+ }
- if (App::$interactive) {
- $_SESSION['sysmsg_info'][] = $s;
- }
+ if (in_array($s, $_SESSION['sysmsg_info'])) {
+ return;
+ }
+
+ if (App::$interactive) {
+ $_SESSION['sysmsg_info'][] = $s;
+ }
}
/**
@@ -1914,7 +1902,7 @@ function info($s) {
* @return int
*/
function get_max_import_size() {
- return(intval(get_config('system', 'max_import_size')));
+ return(intval(get_config('system', 'max_import_size')));
}
@@ -1933,72 +1921,72 @@ function get_max_import_size() {
*/
function proc_run() {
- $args = func_get_args();
+ $args = func_get_args();
- if (! count($args))
- return;
+ if (! count($args))
+ return;
- $args = flatten_array_recursive($args);
+ $args = flatten_array_recursive($args);
- $arr = [
- 'args' => $args,
- 'run_cmd' => true
- ];
+ $arr = [
+ 'args' => $args,
+ 'run_cmd' => true
+ ];
- /**
- * @hooks proc_run
- * Called when invoking PHP sub processes.
- * * \e array \b args
- * * \e boolean \b run_cmd
- */
+ /**
+ * @hooks proc_run
+ * Called when invoking PHP sub processes.
+ * * \e array \b args
+ * * \e boolean \b run_cmd
+ */
- Hook::call('proc_run', $arr);
+ Hook::call('proc_run', $arr);
- if (! $arr['run_cmd']) {
- return;
- }
+ if (! $arr['run_cmd']) {
+ return;
+ }
- if (count($args) > 1 && $args[0] === 'php') {
- $php = check_php_cli();
- if (! $php) {
- return;
- }
- $args[0] = $php;
- }
+ if (count($args) > 1 && $args[0] === 'php') {
+ $php = check_php_cli();
+ if (! $php) {
+ return;
+ }
+ $args[0] = $php;
+ }
- $args = array_map('escapeshellarg',$args);
- $cmdline = implode(' ', $args);
+ $args = array_map('escapeshellarg',$args);
+ $cmdline = implode(' ', $args);
- if (is_windows()) {
- $cwd = getcwd();
- $cmd = "cmd /c start \"title\" /D \"$cwd\" /b $cmdline";
- proc_close(proc_open($cmd, [], $foo));
- }
- else {
- if (get_config('system','use_proc_open'))
- proc_close(proc_open($cmdline ." &", [], $foo));
- else
- exec($cmdline . ' > /dev/null &');
- }
+ if (is_windows()) {
+ $cwd = getcwd();
+ $cmd = "cmd /c start \"title\" /D \"$cwd\" /b $cmdline";
+ proc_close(proc_open($cmd, [], $foo));
+ }
+ else {
+ if (get_config('system','use_proc_open'))
+ proc_close(proc_open($cmdline ." &", [], $foo));
+ else
+ exec($cmdline . ' > /dev/null &');
+ }
}
function check_php_cli() {
- $cfg = (isset(App::$config['system']['php_path']))
- ? App::$config['system']['php_path']
- : NULL;
+ $cfg = (isset(App::$config['system']['php_path']))
+ ? App::$config['system']['php_path']
+ : NULL;
- if (isset($cfg) && is_executable(realpath($cfg))) {
- return realpath($cfg);
- }
+ if (isset($cfg) && is_executable(realpath($cfg))) {
+ return realpath($cfg);
+ }
- $path = shell_exec('which php');
- if ($path && is_executable(realpath(trim($path)))) {
- return realpath(trim($path));
- }
+ $path = shell_exec('which php');
+ if ($path && is_executable(realpath(trim($path)))) {
+ return realpath(trim($path));
+ }
- logger('PHP command line interpreter not found.');
- throw new Exception('interpreter not found.');
+ logger('PHP command line interpreter not found.');
+ throw new Exception('interpreter not found.');
}
@@ -2012,7 +2000,7 @@ function check_php_cli() {
*
*/
function is_windows() {
- return ((strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false);
+ return ((strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false);
}
/**
@@ -2024,18 +2012,23 @@ function is_windows() {
*/
function is_site_admin() {
- if(! session_id())
- return false;
+ if(! session_id())
+ return false;
- if(isset($_SESSION['delegate']))
- return false;
+ if(isset($_SESSION['delegate']))
+ return false;
- if(isset($_SESSION['authenticated']) && intval($_SESSION['authenticated'])
- && is_array(App::$account)
- && (App::$account['account_roles'] & ACCOUNT_ROLE_ADMIN))
- return true;
+ if(isset($_SESSION['authenticated']) && intval($_SESSION['authenticated'])) {
+ if (is_array(App::$account) && (App::$account['account_roles'] & ACCOUNT_ROLE_ADMIN)) {
+ return true;
+ }
+ // the system channel is by definition an administrator
+ if (isset(App::$sys_channel) && array_key_exists('channel_id', App::$sys_channel) && intval(App::$sys_channel['channel_id']) === local_channel()) {
+ return true;
+ }
+ }
- return false;
+ return false;
}
/**
@@ -2047,40 +2040,40 @@ function is_site_admin() {
*/
function is_developer() {
- if(! session_id())
- return false;
+ if(! session_id())
+ return false;
- if(isset($_SESSION['authenticated'])
- && (intval($_SESSION['authenticated']))
- && (is_array(App::$account))
- && (App::$account['account_roles'] & ACCOUNT_ROLE_DEVELOPER))
- return true;
+ if(isset($_SESSION['authenticated'])
+ && (intval($_SESSION['authenticated']))
+ && (is_array(App::$account))
+ && (App::$account['account_roles'] & ACCOUNT_ROLE_DEVELOPER))
+ return true;
- return false;
+ return false;
}
function load_contact_links($uid) {
- $ret = [];
+ $ret = [];
- if(! $uid || x(App::$contacts,'empty'))
- return;
+ if(! $uid || x(App::$contacts,'empty'))
+ return;
-// logger('load_contact_links');
+// logger('load_contact_links');
- $r = q("SELECT abook_id, abook_flags, abook_self, abook_incl, abook_excl, abook_my_perms, abook_their_perms, xchan_hash, xchan_photo_m, xchan_name, xchan_url, xchan_addr, xchan_network, xchan_type from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d ",
- intval($uid)
- );
- if($r) {
- foreach($r as $rv) {
- $ret[$rv['xchan_hash']] = $rv;
- }
- }
- else
- $ret['empty'] = true;
+ $r = q("SELECT abook_id, abook_flags, abook_self, abook_incl, abook_excl, xchan_hash, xchan_photo_m, xchan_name, xchan_url, xchan_addr, xchan_network, xchan_type from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d ",
+ intval($uid)
+ );
+ if($r) {
+ foreach($r as $rv) {
+ $ret[$rv['xchan_hash']] = $rv;
+ }
+ }
+ else
+ $ret['empty'] = true;
- App::$contacts = $ret;
+ App::$contacts = $ret;
}
@@ -2093,25 +2086,25 @@ function load_contact_links($uid) {
* @return string
*/
function build_querystring($params, $name = null) {
- $ret = '';
- foreach($params as $key => $val) {
- if(is_array($val)) {
- if($name === null) {
- $ret .= build_querystring($val, $key);
- } else {
- $ret .= build_querystring($val, $name . "[$key]");
- }
- } else {
- $val = urlencode($val);
- if($name != null) {
- $ret .= $name . "[$key]" . "=$val&";
- } else {
- $ret .= "$key=$val&";
- }
- }
- }
+ $ret = '';
+ foreach($params as $key => $val) {
+ if(is_array($val)) {
+ if($name === null) {
+ $ret .= build_querystring($val, $key);
+ } else {
+ $ret .= build_querystring($val, $name . "[$key]");
+ }
+ } else {
+ $val = urlencode($val);
+ if($name != null) {
+ $ret .= $name . "[$key]" . "=$val&";
+ } else {
+ $ret .= "$key=$val&";
+ }
+ }
+ }
- return $ret;
+ return $ret;
}
@@ -2119,18 +2112,18 @@ function build_querystring($params, $name = null) {
* @brief Much better way of dealing with c-style args.
*/
function argc() {
- return App::$argc;
+ return App::$argc;
}
function argv($x) {
- if(array_key_exists($x,App::$argv))
- return App::$argv[$x];
+ if(array_key_exists($x,App::$argv))
+ return App::$argv[$x];
- return '';
+ return '';
}
function dba_timer() {
- return microtime(true);
+ return microtime(true);
}
/**
@@ -2141,11 +2134,11 @@ function dba_timer() {
* @return string xchan_hash from observer, otherwise empty string if no observer
*/
function get_observer_hash() {
- $observer = App::get_observer();
- if (is_array($observer)) {
- return $observer['xchan_hash'];
- }
- return '';
+ $observer = App::get_observer();
+ if (is_array($observer)) {
+ return $observer['xchan_hash'];
+ }
+ return '';
}
/**
@@ -2156,18 +2149,18 @@ function get_observer_hash() {
* @return string
*/
function curPageURL() {
- $pageURL = 'http';
- if ($_SERVER["HTTPS"] == "on") {
- $pageURL .= "s";
- }
- $pageURL .= "://";
- if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") {
- $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
- } else {
- $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
- }
+ $pageURL = 'http';
+ if ($_SERVER["HTTPS"] == "on") {
+ $pageURL .= "s";
+ }
+ $pageURL .= "://";
+ if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") {
+ $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
+ } else {
+ $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
+ }
- return $pageURL;
+ return $pageURL;
}
/**
@@ -2182,9 +2175,9 @@ function curPageURL() {
* @return mixed
*/
function get_custom_nav($navname) {
- if (! $navname)
- return App::$page['nav'];
- // load custom nav menu by name here
+ if (! $navname)
+ return App::$page['nav'];
+ // load custom nav menu by name here
return EMPTY_STR;
}
@@ -2197,54 +2190,54 @@ function get_custom_nav($navname) {
*/
function load_pdl() {
- App::$comanche = new Comanche();
+ App::$comanche = new Comanche();
- if (! count(App::$layout)) {
+ if (! count(App::$layout)) {
- $arr = [
- 'module' => App::$module,
- 'layout' => ''
- ];
- /**
- * @hooks load_pdl
- * Called when we load a PDL file or description.
- * * \e string \b module
- * * \e string \b layout
- */
- Hook::call('load_pdl', $arr);
- $layout = $arr['layout'];
+ $arr = [
+ 'module' => App::$module,
+ 'layout' => ''
+ ];
+ /**
+ * @hooks load_pdl
+ * Called when we load a PDL file or description.
+ * * \e string \b module
+ * * \e string \b layout
+ */
+ Hook::call('load_pdl', $arr);
+ $layout = $arr['layout'];
- $n = 'mod_' . App::$module . '.pdl' ;
- $u = App::$comanche->get_channel_id();
- if($u)
- $s = get_pconfig($u, 'system', $n);
- if(! (isset($s) && $s))
- $s = $layout;
+ $n = 'mod_' . App::$module . '.pdl' ;
+ $u = App::$comanche->get_channel_id();
+ if($u)
+ $s = get_pconfig($u, 'system', $n);
+ if(! (isset($s) && $s))
+ $s = $layout;
- if((! $s) && (($p = Theme::include($n)) != ''))
- $s = @file_get_contents($p);
- elseif(file_exists('addon/'. App::$module . '/' . $n))
- $s = @file_get_contents('addon/'. App::$module . '/' . $n);
+ if((! $s) && (($p = Theme::include($n)) != ''))
+ $s = @file_get_contents($p);
+ elseif(file_exists('addon/'. App::$module . '/' . $n))
+ $s = @file_get_contents('addon/'. App::$module . '/' . $n);
- $arr = [
- 'module' => App::$module,
- 'layout' => $s
- ];
- Hook::call('alter_pdl',$arr);
- $s = $arr['layout'];
+ $arr = [
+ 'module' => App::$module,
+ 'layout' => $s
+ ];
+ Hook::call('alter_pdl',$arr);
+ $s = $arr['layout'];
- if($s) {
- App::$comanche->parse($s);
- App::$pdl = $s;
- }
- }
+ if($s) {
+ App::$comanche->parse($s);
+ App::$pdl = $s;
+ }
+ }
}
function exec_pdl() {
- if(App::$pdl) {
- App::$comanche->parse(App::$pdl,1);
- }
+ if(App::$pdl) {
+ App::$comanche->parse(App::$pdl,1);
+ }
}
@@ -2256,180 +2249,180 @@ function exec_pdl() {
*/
function construct_page() {
- Hook::call('page_end', App::$page['content']);
+ Hook::call('page_end', App::$page['content']);
- exec_pdl();
+ exec_pdl();
- $comanche = ((isset(App::$layout) && is_array(App::$layout) && count(App::$layout)) ? true : false);
+ $comanche = ((isset(App::$layout) && is_array(App::$layout) && count(App::$layout)) ? true : false);
- require_once(Theme::include('theme_init.php'));
+ require_once(Theme::include('theme_init.php'));
- $installing = false;
+ $installing = false;
- $uid = ((App::$profile_uid) ? App::$profile_uid : local_channel());
+ $uid = ((App::$profile_uid) ? App::$profile_uid : local_channel());
- $navbar = get_config('system','navbar','default');
- if($uid) {
- $navbar = get_pconfig($uid,'system','navbar',$navbar);
- }
+ $navbar = get_config('system','navbar','default');
+ if($uid) {
+ $navbar = get_pconfig($uid,'system','navbar',$navbar);
+ }
- if($comanche && isset(App::$layout['navbar'])) {
- $navbar = App::$layout['navbar'];
- }
+ if($comanche && isset(App::$layout['navbar'])) {
+ $navbar = App::$layout['navbar'];
+ }
- if (App::$module == 'setup') {
- $installing = true;
- }
- else {
- Navbar::render($navbar);
- }
+ if (App::$module == 'setup') {
+ $installing = true;
+ }
+ else {
+ Navbar::render($navbar);
+ }
- $current_theme = Theme::current();
+ $current_theme = Theme::current();
- // logger('current_theme: ' . print_r($current_theme,true));
- // Theme::debug();
+ // logger('current_theme: ' . print_r($current_theme,true));
+ // Theme::debug();
- if (($p = Theme::include($current_theme[0] . '.js')) != '')
- Head::add_js('/' . $p);
+ if (($p = Theme::include($current_theme[0] . '.js')) != '')
+ Head::add_js('/' . $p);
- if (($p = Theme::include('mod_' . App::$module . '.php')) != '')
- require_once($p);
+ if (($p = Theme::include('mod_' . App::$module . '.php')) != '')
+ require_once($p);
- if (isset(App::$page['template_style']))
- Head::add_css(App::$page['template_style'] . '.css');
- else
- Head::add_css(((isset(App::$page['template'])) ? App::$page['template'] : 'default' ) . '.css');
+ if (isset(App::$page['template_style']))
+ Head::add_css(App::$page['template_style'] . '.css');
+ else
+ Head::add_css(((isset(App::$page['template'])) ? App::$page['template'] : 'default' ) . '.css');
- if (($p = Theme::include('mod_' . App::$module . '.css')) != '')
- Head::add_css('mod_' . App::$module . '.css');
+ if (($p = Theme::include('mod_' . App::$module . '.css')) != '')
+ Head::add_css('mod_' . App::$module . '.css');
- Head::add_css(Theme::url($installing));
+ Head::add_css(Theme::url($installing));
- if (($p = Theme::include('mod_' . App::$module . '.js')) != '')
- Head::add_js('mod_' . App::$module . '.js');
+ if (($p = Theme::include('mod_' . App::$module . '.js')) != '')
+ Head::add_js('mod_' . App::$module . '.js');
- App::build_pagehead();
+ App::build_pagehead();
- if (isset(App::$page['pdl_content']) && App::$page['pdl_content']) {
- App::$page['content'] = App::$comanche->region(App::$page['content']);
- }
+ if (isset(App::$page['pdl_content']) && App::$page['pdl_content']) {
+ App::$page['content'] = App::$comanche->region(App::$page['content']);
+ }
- // Let's say we have a comanche declaration '[region=nav][/region][region=content]$nav $content[/region]'.
- // The text 'region=' identifies a section of the layout by that name. So what we want to do here is leave
- // App::$page['nav'] empty and put the default content from App::$page['nav'] and App::$page['section']
- // into a new region called App::$data['content']. It is presumed that the chosen layout file for this comanche page
- // has a '' element instead of a ''.
+ // Let's say we have a comanche declaration '[region=nav][/region][region=content]$nav $content[/region]'.
+ // The text 'region=' identifies a section of the layout by that name. So what we want to do here is leave
+ // App::$page['nav'] empty and put the default content from App::$page['nav'] and App::$page['section']
+ // into a new region called App::$data['content']. It is presumed that the chosen layout file for this comanche page
+ // has a '' element instead of a ''.
- // This way the Comanche layout can include any existing content, alter the layout by adding stuff around it or changing the
- // layout completely with a new layout definition, or replace/remove existing content.
+ // This way the Comanche layout can include any existing content, alter the layout by adding stuff around it or changing the
+ // layout completely with a new layout definition, or replace/remove existing content.
- if ($comanche) {
- $arr = [
- 'module' => App::$module,
- 'layout' => App::$layout
- ];
- /**
- * @hooks construct_page
- * General purpose hook to provide content to certain page regions.
- * Called when constructing the Comanche page.
- * * \e string \b module
- * * \e string \b layout
- */
- Hook::call('construct_page', $arr);
- App::$layout = ((isset($arr['layout']) && is_array($arr['layout'])) ? $arr['layout'] : []);
+ if ($comanche) {
+ $arr = [
+ 'module' => App::$module,
+ 'layout' => App::$layout
+ ];
+ /**
+ * @hooks construct_page
+ * General purpose hook to provide content to certain page regions.
+ * Called when constructing the Comanche page.
+ * * \e string \b module
+ * * \e string \b layout
+ */
+ Hook::call('construct_page', $arr);
+ App::$layout = ((isset($arr['layout']) && is_array($arr['layout'])) ? $arr['layout'] : []);
- foreach(App::$layout as $k => $v) {
- if((strpos($k, 'region_') === 0) && strlen($v)) {
- if(strpos($v, '$region_') !== false) {
- $v = preg_replace_callback('/\$region_([a-zA-Z0-9]+)/ism', array(App::$comanche,'replace_region'), $v);
- }
+ foreach(App::$layout as $k => $v) {
+ if((strpos($k, 'region_') === 0) && strlen($v)) {
+ if(strpos($v, '$region_') !== false) {
+ $v = preg_replace_callback('/\$region_([a-zA-Z0-9]+)/ism', array(App::$comanche,'replace_region'), $v);
+ }
- // And a couple of convenience macros
- if(strpos($v, '$htmlhead') !== false) {
- $v = str_replace('$htmlhead', App::$page['htmlhead'], $v);
- }
- if(strpos($v, '$nav') !== false) {
- $v = str_replace('$nav', App::$page['nav'], $v);
- }
- if(strpos($v, '$content') !== false) {
- $v = str_replace('$content', App::$page['content'], $v);
- }
+ // And a couple of convenience macros
+ if(strpos($v, '$htmlhead') !== false) {
+ $v = str_replace('$htmlhead', App::$page['htmlhead'], $v);
+ }
+ if(strpos($v, '$nav') !== false) {
+ $v = str_replace('$nav', App::$page['nav'], $v);
+ }
+ if(strpos($v, '$content') !== false) {
+ $v = str_replace('$content', App::$page['content'], $v);
+ }
- App::$page[substr($k, 7)] = $v;
- }
- }
- }
+ App::$page[substr($k, 7)] = $v;
+ }
+ }
+ }
- $page = App::$page;
- $profile = App::$profile;
+ $page = App::$page;
+ $profile = App::$profile;
- // There's some experimental support for right-to-left text in the view/php/default.php page template.
- // In v1.9 we started providing direction preference in the per language hstrings.php file
- // This requires somebody with fluency in a RTL language to make happen
+ // There's some experimental support for right-to-left text in the view/php/default.php page template.
+ // In v1.9 we started providing direction preference in the per language hstrings.php file
+ // This requires somebody with fluency in a RTL language to make happen
- $page['direction'] = 0; // ((App::$rtl) ? 1 : 0);
+ $page['direction'] = 0; // ((App::$rtl) ? 1 : 0);
- header("Content-type: text/html; charset=utf-8");
+ header("Content-type: text/html; charset=utf-8");
- // security headers - see https://securityheaders.io
+ // security headers - see https://securityheaders.io
- if (App::get_scheme() === 'https' && isset(App::$config['system']['transport_security_header']) && App::$config['system']['transport_security_header']) {
- header("Strict-Transport-Security: max-age=31536000");
- }
+ if (App::get_scheme() === 'https' && isset(App::$config['system']['transport_security_header']) && App::$config['system']['transport_security_header']) {
+ header("Strict-Transport-Security: max-age=31536000");
+ }
- if (isset(App::$config['system']['content_security_policy']) && App::$config['system']['content_security_policy']) {
- $cspsettings = Array (
- 'script-src' => Array ("'self'","'unsafe-inline'","'unsafe-eval'"),
- 'style-src' => Array ("'self'","'unsafe-inline'")
- );
- Hook::call('content_security_policy',$cspsettings);
+ if (isset(App::$config['system']['content_security_policy']) && App::$config['system']['content_security_policy']) {
+ $cspsettings = Array (
+ 'script-src' => Array ("'self'","'unsafe-inline'","'unsafe-eval'"),
+ 'style-src' => Array ("'self'","'unsafe-inline'")
+ );
+ Hook::call('content_security_policy',$cspsettings);
- // Legitimate CSP directives (cxref: https://content-security-policy.com/)
- $validcspdirectives=Array(
- "default-src", "script-src", "style-src",
- "img-src", "connect-src", "font-src",
- "object-src", "media-src", 'frame-src',
- 'sandbox', 'report-uri', 'child-src',
- 'form-action', 'frame-ancestors', 'plugin-types'
- );
- $cspheader = "Content-Security-Policy:";
- foreach ($cspsettings as $cspdirective => $csp) {
- if (! in_array($cspdirective,$validcspdirectives)) {
- logger("INVALID CSP DIRECTIVE: ".$cspdirective,LOGGER_DEBUG);
- continue;
- }
- $cspsettingsarray = array_unique($cspsettings[$cspdirective]);
- $cspsetpolicy = implode(' ',$cspsettingsarray);
- if ($cspsetpolicy) {
- $cspheader .= " $cspdirective $cspsetpolicy;";
- }
- }
- header($cspheader);
- }
+ // Legitimate CSP directives (cxref: https://content-security-policy.com/)
+ $validcspdirectives=Array(
+ "default-src", "script-src", "style-src",
+ "img-src", "connect-src", "font-src",
+ "object-src", "media-src", 'frame-src',
+ 'sandbox', 'report-uri', 'child-src',
+ 'form-action', 'frame-ancestors', 'plugin-types'
+ );
+ $cspheader = "Content-Security-Policy:";
+ foreach ($cspsettings as $cspdirective => $csp) {
+ if (! in_array($cspdirective,$validcspdirectives)) {
+ logger("INVALID CSP DIRECTIVE: ".$cspdirective,LOGGER_DEBUG);
+ continue;
+ }
+ $cspsettingsarray = array_unique($cspsettings[$cspdirective]);
+ $cspsetpolicy = implode(' ',$cspsettingsarray);
+ if ($cspsetpolicy) {
+ $cspheader .= " $cspdirective $cspsetpolicy;";
+ }
+ }
+ header($cspheader);
+ }
- if (isset(App::$config['system']['x_security_headers']) && App::$config['system']['x-security_headers']) {
- header("X-Frame-Options: SAMEORIGIN");
- header("X-Xss-Protection: 1; mode=block;");
- header("X-Content-Type-Options: nosniff");
- }
+ if (isset(App::$config['system']['x_security_headers']) && App::$config['system']['x-security_headers']) {
+ header("X-Frame-Options: SAMEORIGIN");
+ header("X-Xss-Protection: 1; mode=block;");
+ header("X-Content-Type-Options: nosniff");
+ }
- if (isset(App::$config['system']['perm_policy_header']) && App::$config['system']['perm_policy_header']) {
- header("Permissions-Policy: " . App::$config['system']['perm_policy_header']);
- }
- else {
- // opt-out this site from federated browser surveillance
- header("Permissions-Policy: interest-cohort=()");
- }
+ if (isset(App::$config['system']['perm_policy_header']) && App::$config['system']['perm_policy_header']) {
+ header("Permissions-Policy: " . App::$config['system']['perm_policy_header']);
+ }
+ else {
+ // opt-out this site from federated browser surveillance
+ header("Permissions-Policy: interest-cohort=()");
+ }
- if (isset(App::$config['system']['public_key_pins']) && App::$config['system']['public_key_pins']) {
- header("Public-Key-Pins: " . App::$config['system']['public_key_pins']);
- }
+ if (isset(App::$config['system']['public_key_pins']) && App::$config['system']['public_key_pins']) {
+ header("Public-Key-Pins: " . App::$config['system']['public_key_pins']);
+ }
- require_once(Theme::include(
- ((isset(App::$page['template']) && App::$page['template']) ? App::$page['template'] : 'default' ) . '.php' )
- );
+ require_once(Theme::include(
+ ((isset(App::$page['template']) && App::$page['template']) ? App::$page['template'] : 'default' ) . '.php' )
+ );
}
/**
@@ -2438,7 +2431,7 @@ function construct_page() {
* @return string
*/
function appdirpath() {
- return dirname(__FILE__);
+ return dirname(__FILE__);
}
/**
@@ -2448,7 +2441,7 @@ function appdirpath() {
*/
function head_set_icon($icon) {
- App::$data['pageicon'] = $icon;
+ App::$data['pageicon'] = $icon;
}
@@ -2459,23 +2452,11 @@ function head_set_icon($icon) {
*/
function head_get_icon() {
- $icon = ((isset(App::$data['pageicon'])) ? App::$data['pageicon'] : EMPTY_STR);
- if($icon && ! strpos($icon, '://'))
- $icon = z_root() . $icon;
+ $icon = ((isset(App::$data['pageicon'])) ? App::$data['pageicon'] : EMPTY_STR);
+ if($icon && ! strpos($icon, '://'))
+ $icon = z_root() . $icon;
- return $icon;
-}
-
-/**
- * @brief Return the Realm of the directory.
- *
- * @return string
- */
-function get_directory_realm() {
- if($x = get_config('system', 'directory_realm'))
- return $x;
-
- return DIRECTORY_REALM;
+ return $icon;
}
/**
@@ -2484,27 +2465,27 @@ function get_directory_realm() {
* @return string relative date of last completed poller execution
*/
function get_poller_runtime() {
- $t = get_config('system', 'lastpoll');
+ $t = get_config('system', 'lastpoll');
- return relative_date($t);
+ return relative_date($t);
}
function z_get_upload_dir() {
- $upload_dir = get_config('system','uploaddir');
- if(! $upload_dir)
- $upload_dir = ini_get('upload_tmp_dir');
- if(! $upload_dir)
- $upload_dir = sys_get_temp_dir();
+ $upload_dir = get_config('system','uploaddir');
+ if(! $upload_dir)
+ $upload_dir = ini_get('upload_tmp_dir');
+ if(! $upload_dir)
+ $upload_dir = sys_get_temp_dir();
- return $upload_dir;
+ return $upload_dir;
}
function z_get_temp_dir() {
- $temp_dir = get_config('system','tempdir');
- if(! $temp_dir)
- $temp_dir = sys_get_temp_dir();
+ $temp_dir = get_config('system','tempdir');
+ if(! $temp_dir)
+ $temp_dir = sys_get_temp_dir();
- return $temp_dir;
+ return $temp_dir;
}
@@ -2514,15 +2495,15 @@ function z_get_temp_dir() {
* Notify admin if not.
*/
function z_check_cert() {
- if(strpos(z_root(), 'https://') !== false) {
- $x = z_fetch_url(z_root() . '/siteinfo.json');
- if(! $x['success']) {
- $recurse = 0;
- $y = z_fetch_url(z_root() . '/siteinfo.json', false, $recurse, ['novalidate' => true]);
- if($y['success'])
- cert_bad_email();
- }
- }
+ if(strpos(z_root(), 'https://') !== false) {
+ $x = z_fetch_url(z_root() . '/siteinfo.json');
+ if(! $x['success']) {
+ $recurse = 0;
+ $y = z_fetch_url(z_root() . '/siteinfo.json', false, $recurse, ['novalidate' => true]);
+ if($y['success'])
+ cert_bad_email();
+ }
+ }
}
@@ -2532,19 +2513,19 @@ function z_check_cert() {
* If a hub is available over https it must have a publicly valid certificate.
*/
function cert_bad_email() {
- return z_mail(
- [
- 'toEmail' => App::$config['system']['admin_email'],
- 'messageSubject' => sprintf(t('[$Projectname] Website SSL error for %s'), App::get_hostname()),
- 'textVersion' => replace_macros(Theme::get_email_template('cert_bad_eml.tpl'),
- [
- '$sitename' => App::$config['system']['sitename'],
- '$siteurl' => z_root(),
- '$error' => t('Website SSL certificate is not valid. Please correct.')
- ]
- )
- ]
- );
+ return z_mail(
+ [
+ 'toEmail' => App::$config['system']['admin_email'],
+ 'messageSubject' => sprintf(t('[$Projectname] Website SSL error for %s'), App::get_hostname()),
+ 'textVersion' => replace_macros(Theme::get_email_template('cert_bad_eml.tpl'),
+ [
+ '$sitename' => App::$config['system']['sitename'],
+ '$siteurl' => z_root(),
+ '$error' => t('Website SSL certificate is not valid. Please correct.')
+ ]
+ )
+ ]
+ );
}
@@ -2555,46 +2536,46 @@ function cert_bad_email() {
*/
function check_cron_broken() {
- $d = get_config('system','lastcron');
+ $d = get_config('system','lastcron');
- if((! $d) || ($d < datetime_convert('UTC','UTC','now - 4 hours'))) {
- Run::Summon( [ 'Cron' ] );
- set_config('system','lastcron',datetime_convert());
- }
+ if((! $d) || ($d < datetime_convert('UTC','UTC','now - 4 hours'))) {
+ Run::Summon( [ 'Cron' ] );
+ set_config('system','lastcron',datetime_convert());
+ }
- $t = get_config('system','lastcroncheck');
- if(! $t) {
- // never checked before. Start the timer.
- set_config('system','lastcroncheck',datetime_convert());
- return true;
- }
+ $t = get_config('system','lastcroncheck');
+ if(! $t) {
+ // never checked before. Start the timer.
+ set_config('system','lastcroncheck',datetime_convert());
+ return true;
+ }
- if($t > datetime_convert('UTC','UTC','now - 3 days')) {
- // Wait for 3 days before we do anything so as not to swamp the admin with messages
- return true;
- }
+ if($t > datetime_convert('UTC','UTC','now - 3 days')) {
+ // Wait for 3 days before we do anything so as not to swamp the admin with messages
+ return true;
+ }
- set_config('system','lastcroncheck',datetime_convert());
+ set_config('system','lastcroncheck',datetime_convert());
- if(($d) && ($d > datetime_convert('UTC','UTC','now - 3 days'))) {
- // Scheduled tasks have run successfully in the last 3 days.
- return true;
- }
+ if(($d) && ($d > datetime_convert('UTC','UTC','now - 3 days'))) {
+ // Scheduled tasks have run successfully in the last 3 days.
+ return true;
+ }
- return z_mail(
- [
- 'toEmail' => App::$config['system']['admin_email'],
- 'messageSubject' => sprintf(t('[$Projectname] Cron tasks not running on %s'), App::get_hostname()),
- 'textVersion' => replace_macros(Theme::get_email_template('cron_bad_eml.tpl'),
- [
- '$sitename' => App::$config['system']['sitename'],
- '$siteurl' => z_root(),
- '$error' => t('Cron/Scheduled tasks not running.'),
- '$lastdate' => (($d)? $d : t('never'))
- ]
- )
- ]
- );
+ return z_mail(
+ [
+ 'toEmail' => App::$config['system']['admin_email'],
+ 'messageSubject' => sprintf(t('[$Projectname] Cron tasks not running on %s'), App::get_hostname()),
+ 'textVersion' => replace_macros(Theme::get_email_template('cron_bad_eml.tpl'),
+ [
+ '$sitename' => App::$config['system']['sitename'],
+ '$siteurl' => z_root(),
+ '$error' => t('Cron/Scheduled tasks not running.'),
+ '$lastdate' => (($d)? $d : t('never'))
+ ]
+ )
+ ]
+ );
}
@@ -2605,54 +2586,54 @@ function check_cron_broken() {
* @return bool
*/
function observer_prohibited($allow_account = false) {
- if($allow_account) {
- return (((get_config('system', 'block_public')) && (! get_account_id()) && (! remote_channel())) ? true : false );
- }
- return (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false );
+ if($allow_account) {
+ return (((get_config('system', 'block_public')) && (! get_account_id()) && (! remote_channel())) ? true : false );
+ }
+ return (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false );
}
function get_safemode() {
- if (! array_key_exists('safemode', $_SESSION)) {
- $_SESSION['safemode'] = 1;
- }
- return intval($_SESSION['safemode']);
+ if (! array_key_exists('safemode', $_SESSION)) {
+ $_SESSION['safemode'] = 1;
+ }
+ return intval($_SESSION['safemode']);
}
function supported_imagetype($x) {
- return in_array($x, [ IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_WEBP ]);
+ return in_array($x, [ IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_WEBP ]);
}
function get_host() {
- if ($host = ((isset($_SERVER['HTTP_X_FORWARDED_HOST']) && $_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : EMPTY_STR)) {
- $elements = explode(',', $host);
- $host = trim(end($elements));
- }
- else {
- if (! $host = ((isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : EMPTY_STR)) {
- if (! $host = ((isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : EMPTY_STR)) {
- $host = ((isset($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '');
- }
- }
- }
+ if ($host = ((isset($_SERVER['HTTP_X_FORWARDED_HOST']) && $_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : EMPTY_STR)) {
+ $elements = explode(',', $host);
+ $host = trim(end($elements));
+ }
+ else {
+ if (! $host = ((isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : EMPTY_STR)) {
+ if (! $host = ((isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : EMPTY_STR)) {
+ $host = ((isset($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '');
+ }
+ }
+ }
- // Remove port number from host
- if (strpos($host,':') !== false) {
- $host = substr($host,0,strpos($host,':'));
- }
- return trim($host);
+ // Remove port number from host
+ if (strpos($host,':') !== false) {
+ $host = substr($host,0,strpos($host,':'));
+ }
+ return trim($host);
}
function get_loadtime($module) {
- $n = 'loadtime_' . $module;
- if (isset($_SESSION[$n])) {
- return $_SESSION[$n];
- }
- if (local_channel()) {
- $x = PConfig::Get(local_channel(),'system',$n, false);
- if ($x) {
- return ($x);
- }
- }
- return datetime_convert();
+ $n = 'loadtime_' . $module;
+ if (isset($_SESSION[$n])) {
+ return $_SESSION[$n];
+ }
+ if (local_channel()) {
+ $x = PConfig::Get(local_channel(),'system',$n, false);
+ if ($x) {
+ return ($x);
+ }
+ }
+ return datetime_convert();
}
\ No newline at end of file
diff --git a/composer.json b/composer.json
index fa884020c..e461a6ec7 100644
--- a/composer.json
+++ b/composer.json
@@ -1,31 +1,19 @@
{
- "name" : "zot/zap",
+ "name" : "streams/streams",
"type" : "application",
- "description" : "Zot social server",
+ "description" : "social server",
"keywords" : [
"identity",
"decentralisation",
"permission",
"SSO",
- "ZOT",
- "ZOT6",
"Nomad",
"Fediverse",
"activitypub"
],
- "homepage" : "http://codeberg.org/zot/zap/",
- "license" : "Unlicense",
- "authors" : [{
- "name" : "Mike Macgirvin",
- "role" : "founder"
- }
- ],
- "support" : {
- "issues" : "https://z.macgirvin.com/channel/zap",
- "source" : "https://codeberg.org/zot/zap/"
- },
+ "homepage" : "http://codeberg.org/streams/streams/",
"require" : {
- "php" : ">=7.4",
+ "php" : ">=8.0",
"ext-curl" : "*",
"ext-gd" : "*",
"ext-mbstring" : "*",
@@ -74,7 +62,7 @@
},
"minimum-stability" : "stable",
"config" : {
- "platform": { "php": "7.4" },
+ "platform": { "php": "8.0" },
"notify-on-install" : false,
"optimize-autoloader" : true
}
diff --git a/include/attach.php b/include/attach.php
index 0d4b90a13..760dc424d 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -687,7 +687,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null)
$pathname = '';
-
+
// If we were called from the Photos module there is a slightly different mechanism
// for setting the parent path than if we were called from the Files (cloud) module.
@@ -707,6 +707,11 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null)
$pathname = filepath_macro($album);
}
}
+ elseif ($album && !$newalbum) {
+ // We can land here from the profile_photo and cover_photo modules.
+ // Just use the album provided.
+ $pathname = filepath_macro($album);
+ }
if (! $pathname) {
$pathname = filepath_macro($upload_path);
diff --git a/include/connections.php b/include/connections.php
index d89082261..1c8ea256c 100644
--- a/include/connections.php
+++ b/include/connections.php
@@ -19,6 +19,10 @@ function abook_store_lowlevel($arr)
'abook_channel' => ((array_key_exists('abook_channel', $arr)) ? $arr['abook_channel'] : 0),
'abook_xchan' => ((array_key_exists('abook_xchan', $arr)) ? $arr['abook_xchan'] : ''),
'abook_alias' => ((array_key_exists('abook_alias', $arr)) ? $arr['abook_alias'] : ''),
+ // The following two fields are not present in existing schema. We need to set them in case
+ // somebody installs this code over an existing database which has these fields.
+ // create_table_from_array() will include these fields on codebases which support them,
+ // and not store them for fresh database which do not.
'abook_my_perms' => ((array_key_exists('abook_my_perms', $arr)) ? $arr['abook_my_perms'] : 0),
'abook_their_perms' => ((array_key_exists('abook_their_perms', $arr)) ? $arr['abook_their_perms'] : 0),
'abook_closeness' => ((array_key_exists('abook_closeness', $arr)) ? $arr['abook_closeness'] : 99),
diff --git a/include/dba/dba_pdo.php b/include/dba/dba_pdo.php
index 3101ec48b..cd47a3ade 100755
--- a/include/dba/dba_pdo.php
+++ b/include/dba/dba_pdo.php
@@ -167,32 +167,14 @@ class dba_pdo extends dba_driver
}
}
- // These two functions assume that postgres standard_conforming_strings is set to off;
- // which we perform during DB open.
-
public function escapebin($str)
{
- if ($this->driver_dbtype === 'pgsql') {
- return "\\\\x" . bin2hex($str);
- } else {
- return $this->escape($str);
- }
+ return $this->escape($str);
}
public function unescapebin($str)
{
- if (gettype($str) === 'resource') {
- $x = '';
- while (!feof($str)) {
- $x .= fread($str, 8192);
- }
- if (substr($x, 0, 2) === '\\x') {
- $x = hex2bin(substr($x, 2));
- }
- return $x;
- } else {
- return $str;
- }
+ return $str;
}
diff --git a/include/event.php b/include/event.php
index ff2fa5dd5..1f45e26fe 100644
--- a/include/event.php
+++ b/include/event.php
@@ -587,7 +587,7 @@ function event_store_event($arr)
$hash = $arr['event_hash'];
} else {
try {
- $hash = Uuid::v4();
+ $hash = (string) Uuid::v4();
} catch (UnsatisfiedDependencyException $e) {
$hash = random_string(48);
}
diff --git a/include/items.php b/include/items.php
index abb830655..9b9a56827 100644
--- a/include/items.php
+++ b/include/items.php
@@ -170,10 +170,9 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
}
// This is a somewhat expensive operation but important.
- // Don't send this item to anybody who isn't allowed to see it
+ // Don't send this item to anybody who doesn't have the deliver_stream permission
- // Note: commented out - no longer needed in zap and later projects because we do not allow this permission to be changed.
- // $recipients = check_list_permissions($item['uid'],$recipients,'view_stream');
+ $recipients = check_list_permissions($item['uid'],$recipients,'deliver_stream');
// remove any upstream recipients from our list.
// If it is ourself we'll add it back in a second.
@@ -3501,11 +3500,10 @@ function post_is_importable($channel_id,$item,$abook) {
if (! ($ab['abook_incl'] || $ab['abook_excl']) ) {
continue;
}
-
$evaluator = MessageFilter::evaluate($item,$ab['abook_incl'],$ab['abook_excl']);
// A negative assessment for any individual connections
// is an instant fail
- if (! $evaluater) {
+ if (! $evaluator) {
return false;
}
}
@@ -4134,7 +4132,7 @@ function fetch_post_tags($items, $link = false) {
}
else {
if ($t['oid'] == $items[$x]['id']) {
- if (! is_array($items[$x]['term'])) {
+ if (! (isset($items[$x]['term']) && is_array($items[$x]['term']))) {
$items[$x]['term'] = [];
}
$items[$x]['term'][] = $t;
diff --git a/include/permissions.php b/include/permissions.php
index b7be0fece..02cc7d9ef 100644
--- a/include/permissions.php
+++ b/include/permissions.php
@@ -9,7 +9,7 @@ require_once('include/security.php');
/**
* @file include/permissions.php
*
- * This file conntains functions to check and work with permissions.
+ * This file contains functions to check and work with permissions.
*
*/
diff --git a/include/photos.php b/include/photos.php
index 8e68d9360..14c4d09b6 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -413,11 +413,11 @@ function photo_upload($channel, $observer, $args)
if (array_path_exists('/directory/hash',$args)) {
$album_link = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/album/' . $args['directory']['hash'] . ']' . ((strlen($album)) ? $album : '/') . '[/zrl]';
- }
+ $activity_format = sprintf(t('%1$s posted %2$s to %3$s', 'photo_upload'), $author_link, $photo_link, $album_link);
+ }
else {
- $album_link = EMPTY_STR;
+ $activity_format = sprintf(t('%1$s posted %2$s', 'photo_upload'), $author_link, $photo_link);
}
- $activity_format = sprintf(t('%1$s posted %2$s to %3$s', 'photo_upload'), $author_link, $photo_link, $album_link);
$body = (($args['body']) ? $args['body'] : '') . '[footer]' . $activity_format . '[/footer]';
diff --git a/include/text.php b/include/text.php
index e3c899630..0fd06f5a8 100644
--- a/include/text.php
+++ b/include/text.php
@@ -614,7 +614,7 @@ function item_message_id()
{
try {
- $hash = Uuid::v4();
+ $hash = (string) Uuid::v4();
} catch (UnsatisfiedDependencyException $e) {
$hash = random_string(48);
}
@@ -635,7 +635,7 @@ function photo_new_resource()
{
try {
- $hash = Uuid::v4();
+ $hash = (string) Uuid::v4();
} catch (UnsatisfiedDependencyException $e) {
$hash = random_string(48);
}
@@ -670,7 +670,7 @@ function new_uuid()
{
try {
- $hash = Uuid::v4();
+ $hash = (string) Uuid::v4();
} catch (UnsatisfiedDependencyException $e) {
$hash = random_string(48);
}
diff --git a/include/xchan.php b/include/xchan.php
index 5d53b3fd8..db659ae8f 100644
--- a/include/xchan.php
+++ b/include/xchan.php
@@ -286,8 +286,6 @@ function xchan_change_key($oldx, $newx, $data)
'item' => 'owner_xchan',
'item' => 'author_xchan',
'item' => 'source_xchan',
- 'mail' => 'from_xchan',
- 'mail' => 'to_xchan',
'shares' => 'share_xchan',
'source' => 'src_channel_xchan',
'source' => 'src_xchan',
diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql
index 7aa27cfff..ebe600fc7 100644
--- a/install/schema_mysql.sql
+++ b/install/schema_mysql.sql
@@ -2,24 +2,22 @@
CREATE TABLE IF NOT EXISTS `abconfig` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`chan` int(10) unsigned NOT NULL DEFAULT 0 ,
- `xchan` char(191) NOT NULL DEFAULT '',
- `cat` char(191) NOT NULL DEFAULT '',
- `k` char(191) NOT NULL DEFAULT '',
+ `xchan` varchar(255) NOT NULL DEFAULT '',
+ `cat` varchar(255) NOT NULL DEFAULT '',
+ `k` varchar(255) NOT NULL DEFAULT '',
`v` mediumtext NOT NULL,
PRIMARY KEY (`id`),
- KEY `chan_xchan` (`chan`, `xchan`),
- KEY `cat` (`cat`),
- KEY `k` (`k`)
+ KEY `chan_xchan` (`chan`, `xchan`(191)),
+ KEY `cat` (`cat`(191)),
+ KEY `k` (`k`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `abook` (
`abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`abook_account` int(10) unsigned NOT NULL DEFAULT 0 ,
`abook_channel` int(10) unsigned NOT NULL DEFAULT 0 ,
- `abook_xchan` char(191) NOT NULL DEFAULT '',
- `abook_alias` char(191) NOT NULL DEFAULT '',
- `abook_my_perms` int(11) NOT NULL DEFAULT 0 ,
- `abook_their_perms` int(11) NOT NULL DEFAULT 0 ,
+ `abook_xchan` varchar(255) NOT NULL DEFAULT '',
+ `abook_alias` varchar(255) NOT NULL DEFAULT '',
`abook_closeness` tinyint(3) unsigned NOT NULL DEFAULT 99,
`abook_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`abook_updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -37,22 +35,20 @@ CREATE TABLE IF NOT EXISTS `abook` (
`abook_rself` tinyint(4) NOT NULL DEFAULT 0 ,
`abook_feed` tinyint(4) NOT NULL DEFAULT 0 ,
`abook_not_here` tinyint(4) NOT NULL DEFAULT 0 ,
- `abook_profile` char(191) NOT NULL DEFAULT '',
+ `abook_profile` varchar(255) NOT NULL DEFAULT '',
`abook_incl` text NOT NULL,
`abook_excl` text NOT NULL,
`abook_instance` text NOT NULL,
PRIMARY KEY (`abook_id`),
KEY `abook_account` (`abook_account`),
KEY `abook_channel` (`abook_channel`),
- KEY `abook_xchan` (`abook_xchan`),
- KEY `abook_alias` (`abook_alias`),
- KEY `abook_my_perms` (`abook_my_perms`),
- KEY `abook_their_perms` (`abook_their_perms`),
+ KEY `abook_xchan` (`abook_xchan`(191)),
+ KEY `abook_alias` (`abook_alias`(191)),
KEY `abook_closeness` (`abook_closeness`),
KEY `abook_created` (`abook_created`),
KEY `abook_updated` (`abook_updated`),
KEY `abook_flags` (`abook_flags`),
- KEY `abook_profile` (`abook_profile`),
+ KEY `abook_profile` (`abook_profile`(191)),
KEY `abook_dob` (`abook_dob`),
KEY `abook_connected` (`abook_connected`),
KEY `abook_blocked` (`abook_blocked`),
@@ -70,78 +66,78 @@ CREATE TABLE IF NOT EXISTS `account` (
`account_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`account_parent` int(10) unsigned NOT NULL DEFAULT 0 ,
`account_default_channel` int(10) unsigned NOT NULL DEFAULT 0 ,
- `account_salt` char(32) NOT NULL DEFAULT '',
- `account_password` char(191) NOT NULL DEFAULT '',
- `account_email` char(191) NOT NULL DEFAULT '',
- `account_external` char(191) NOT NULL DEFAULT '',
- `account_language` char(16) NOT NULL DEFAULT 'en',
+ `account_salt` varchar(255) NOT NULL DEFAULT '',
+ `account_password` varchar(255) NOT NULL DEFAULT '',
+ `account_email` varchar(255) NOT NULL DEFAULT '',
+ `account_external` varchar(255) NOT NULL DEFAULT '',
+ `account_language` varchar(16) NOT NULL DEFAULT 'en',
`account_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`account_lastlog` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`account_flags` int(10) unsigned NOT NULL DEFAULT 0 ,
`account_roles` int(10) unsigned NOT NULL DEFAULT 0 ,
- `account_reset` char(191) NOT NULL DEFAULT '',
+ `account_reset` varchar(255) NOT NULL DEFAULT '',
`account_expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`account_expire_notified` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `account_service_class` char(32) NOT NULL DEFAULT '',
+ `account_service_class` varchar(255) NOT NULL DEFAULT '',
`account_level` int(10) unsigned NOT NULL DEFAULT 0 ,
`account_password_changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY (`account_id`),
- KEY `account_email` (`account_email`),
- KEY `account_service_class` (`account_service_class`),
+ KEY `account_email` (`account_email`(191)),
+ KEY `account_service_class` (`account_service_class`(191)),
KEY `account_parent` (`account_parent`),
KEY `account_flags` (`account_flags`),
KEY `account_roles` (`account_roles`),
KEY `account_lastlog` (`account_lastlog`),
KEY `account_expires` (`account_expires`),
KEY `account_default_channel` (`account_default_channel`),
- KEY `account_external` (`account_external`),
+ KEY `account_external` (`account_external`(191)),
KEY `account_level` (`account_level`),
KEY `account_password_changed` (`account_password_changed`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `addon` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `aname` char(191) NOT NULL DEFAULT '',
- `version` char(191) NOT NULL DEFAULT '',
+ `aname` varchar(255) NOT NULL DEFAULT '',
+ `version` varchar(255) NOT NULL DEFAULT '',
`installed` tinyint(1) NOT NULL DEFAULT 0 ,
`hidden` tinyint(1) NOT NULL DEFAULT 0 ,
`tstamp` bigint(20) NOT NULL DEFAULT 0 ,
`plugin_admin` tinyint(1) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`),
KEY `hidden` (`hidden`),
- KEY `aname` (`aname`),
+ KEY `aname` (`aname`(191)),
KEY `installed` (`installed`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `app` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `app_id` char(191) NOT NULL DEFAULT '',
- `app_sig` char(191) NOT NULL DEFAULT '',
- `app_author` char(191) NOT NULL DEFAULT '',
- `app_name` char(191) NOT NULL DEFAULT '',
+ `app_id` varchar(255) NOT NULL DEFAULT '',
+ `app_sig` varchar(255) NOT NULL DEFAULT '',
+ `app_author` varchar(255) NOT NULL DEFAULT '',
+ `app_name` varchar(255) NOT NULL DEFAULT '',
`app_desc` text NOT NULL,
- `app_url` char(191) NOT NULL DEFAULT '',
- `app_photo` char(191) NOT NULL DEFAULT '',
- `app_version` char(191) NOT NULL DEFAULT '',
+ `app_url` varchar(255) NOT NULL DEFAULT '',
+ `app_photo` varchar(255) NOT NULL DEFAULT '',
+ `app_version` varchar(255) NOT NULL DEFAULT '',
`app_channel` int(11) NOT NULL DEFAULT 0 ,
- `app_addr` char(191) NOT NULL DEFAULT '',
- `app_price` char(191) NOT NULL DEFAULT '',
- `app_page` char(191) NOT NULL DEFAULT '',
- `app_requires` char(191) NOT NULL DEFAULT '',
+ `app_addr` varchar(255) NOT NULL DEFAULT '',
+ `app_price` varchar(255) NOT NULL DEFAULT '',
+ `app_page` varchar(255) NOT NULL DEFAULT '',
+ `app_requires` varchar(512) NOT NULL DEFAULT '',
`app_deleted` int(11) NOT NULL DEFAULT 0 ,
`app_system` int(11) NOT NULL DEFAULT 0 ,
- `app_plugin` char(191) NOT NULL DEFAULT '',
+ `app_plugin` varchar(255) NOT NULL DEFAULT '',
`app_options` int(11) NOT NULL DEFAULT 0 ,
`app_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`app_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY (`id`),
- KEY `app_id` (`app_id`),
- KEY `app_name` (`app_name`),
- KEY `app_url` (`app_url`),
- KEY `app_photo` (`app_photo`),
- KEY `app_version` (`app_version`),
+ KEY `app_id` (`app_id`(191)),
+ KEY `app_name` (`app_name`(191)),
+ KEY `app_url` (`app_url`(191)),
+ KEY `app_photo` (`app_photo`(191)),
+ KEY `app_version` (`app_version`(191)),
KEY `app_channel` (`app_channel`),
- KEY `app_price` (`app_price`),
+ KEY `app_price` (`app_price`(191)),
KEY `app_created` (`app_created`),
KEY `app_deleted` (`app_deleted`),
KEY `app_system` (`app_system`),
@@ -151,18 +147,18 @@ CREATE TABLE IF NOT EXISTS `app` (
CREATE TABLE IF NOT EXISTS `atoken` (
`atoken_id` int(11) NOT NULL AUTO_INCREMENT,
- `atoken_guid` char(191) NOT NULL DEFAULT '',
+ `atoken_guid` varchar(255) NOT NULL DEFAULT '',
`atoken_aid` int(11) NOT NULL DEFAULT 0 ,
`atoken_uid` int(11) NOT NULL DEFAULT 0 ,
- `atoken_name` char(191) NOT NULL DEFAULT '',
- `atoken_token` char(191) NOT NULL DEFAULT '',
+ `atoken_name` varchar(255) NOT NULL DEFAULT '',
+ `atoken_token` varchar(255) NOT NULL DEFAULT '',
`atoken_expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY (`atoken_id`),
- KEY `atoken_guid` (`atoken_guid`),
+ KEY `atoken_guid` (`atoken_guid`(191)),
KEY `atoken_aid` (`atoken_aid`),
KEY `atoken_uid` (`atoken_uid`),
- KEY `atoken_name` (`atoken_name`),
- KEY `atoken_token` (`atoken_token`),
+ KEY `atoken_name` (`atoken_name`(191)),
+ KEY `atoken_token` (`atoken_token`(191)),
KEY `atoken_expires` (`atoken_expires`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -170,13 +166,13 @@ CREATE TABLE IF NOT EXISTS `attach` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`aid` int(10) unsigned NOT NULL DEFAULT 0 ,
`uid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `hash` char(191) NOT NULL DEFAULT '',
- `creator` char(191) NOT NULL DEFAULT '',
- `filename` char(191) NOT NULL DEFAULT '',
- `filetype` char(191) NOT NULL DEFAULT '',
+ `hash` varchar(255) NOT NULL DEFAULT '',
+ `creator` varchar(255) NOT NULL DEFAULT '',
+ `filename` varchar(4095) NOT NULL DEFAULT '',
+ `filetype` varchar(255) NOT NULL DEFAULT '',
`filesize` int(10) unsigned NOT NULL DEFAULT 0 ,
`revision` int(10) unsigned NOT NULL DEFAULT 0 ,
- `folder` char(191) NOT NULL DEFAULT '',
+ `folder` varchar(255) NOT NULL DEFAULT '',
`flags` int(10) unsigned NOT NULL DEFAULT 0 ,
`is_dir` tinyint(1) NOT NULL DEFAULT 0 ,
`is_photo` tinyint(1) NOT NULL DEFAULT 0 ,
@@ -193,34 +189,25 @@ CREATE TABLE IF NOT EXISTS `attach` (
PRIMARY KEY (`id`),
KEY `aid` (`aid`),
KEY `uid` (`uid`),
- KEY `hash` (`hash`),
- KEY `filename` (`filename`),
- KEY `filetype` (`filetype`),
+ KEY `hash` (`hash`(191)),
+ KEY `filename` (`filename`(191)),
+ KEY `filetype` (`filetype`(191)),
KEY `filesize` (`filesize`),
KEY `created` (`created`),
KEY `edited` (`edited`),
KEY `revision` (`revision`),
- KEY `folder` (`folder`),
+ KEY `folder` (`folder`(191)),
KEY `flags` (`flags`),
- KEY `creator` (`creator`),
+ KEY `creator` (`creator`(191)),
KEY `is_dir` (`is_dir`),
KEY `is_photo` (`is_photo`),
KEY `os_storage` (`os_storage`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE IF NOT EXISTS `auth_codes` (
- `id` varchar(40) NOT NULL DEFAULT '',
- `client_id` varchar(20) NOT NULL DEFAULT '',
- `redirect_uri` varchar(200) NOT NULL DEFAULT '',
- `expires` int(11) NOT NULL DEFAULT 0 ,
- `auth_scope` varchar(512) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
CREATE TABLE IF NOT EXISTS `block` (
`block_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`block_channel_id` int(10) UNSIGNED NOT NULL,
- `block_entity` text NOT NULL,
+ `block_entity` varchar(1023) NOT NULL,
`block_type` int(11) NOT NULL,
`block_comment` mediumtext NOT NULL,
PRIMARY KEY (`block_id`),
@@ -230,46 +217,46 @@ CREATE TABLE IF NOT EXISTS `block` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `cache` (
- `k` char(191) NOT NULL DEFAULT '',
+ `k` varchar(512) NOT NULL DEFAULT '',
`v` text NOT NULL,
`updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY (`k`)
+ PRIMARY KEY (`k`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `cal` (
`cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cal_aid` int(10) unsigned NOT NULL DEFAULT 0 ,
`cal_uid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `cal_hash` varchar(191) NOT NULL DEFAULT '',
- `cal_name` varchar(191) NOT NULL DEFAULT '',
- `uri` varchar(191) NOT NULL DEFAULT '',
- `logname` varchar(191) NOT NULL DEFAULT '',
- `pass` varchar(191) NOT NULL DEFAULT '',
- `ctag` varchar(191) NOT NULL DEFAULT '',
- `synctoken` varchar(191) NOT NULL DEFAULT '',
- `cal_types` varchar(191) NOT NULL DEFAULT '',
+ `cal_hash` varchar(255) NOT NULL DEFAULT '',
+ `cal_name` varchar(255) NOT NULL DEFAULT '',
+ `uri` varchar(1023) NOT NULL DEFAULT '',
+ `logname` varchar(255) NOT NULL DEFAULT '',
+ `pass` varchar(255) NOT NULL DEFAULT '',
+ `ctag` varchar(255) NOT NULL DEFAULT '',
+ `synctoken` varchar(255) NOT NULL DEFAULT '',
+ `cal_types` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`cal_id`),
KEY `cal_aid` (`cal_aid`),
KEY `cal_uid` (`cal_uid`),
- KEY `cal_hash` (`cal_hash`),
- KEY `cal_name` (`cal_name`),
- KEY `cal_types` (`cal_types`)
+ KEY `cal_hash` (`cal_hash`(191)),
+ KEY `cal_name` (`cal_name`(191)),
+ KEY `cal_types` (`cal_types`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `channel` (
`channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`channel_account_id` int(10) unsigned NOT NULL DEFAULT 0 ,
`channel_primary` tinyint(1) unsigned NOT NULL DEFAULT 0 ,
- `channel_name` char(191) NOT NULL DEFAULT '',
- `channel_parent` char(191) NOT NULL DEFAULT '',
- `channel_address` char(191) NOT NULL DEFAULT '',
- `channel_guid` char(191) NOT NULL DEFAULT '',
+ `channel_name` varchar(255) NOT NULL DEFAULT '',
+ `channel_parent` varchar(255) NOT NULL DEFAULT '',
+ `channel_address` varchar(255) NOT NULL DEFAULT '',
+ `channel_guid` varchar(255) NOT NULL DEFAULT '',
`channel_guid_sig` text NOT NULL,
- `channel_hash` char(191) NOT NULL DEFAULT '',
- `channel_timezone` char(128) NOT NULL DEFAULT 'UTC',
- `channel_location` char(191) NOT NULL DEFAULT '',
- `channel_theme` char(191) NOT NULL DEFAULT '',
- `channel_startpage` char(191) NOT NULL DEFAULT '',
+ `channel_hash` varchar(255) NOT NULL DEFAULT '',
+ `channel_timezone` varchar(255) NOT NULL DEFAULT 'UTC',
+ `channel_location` varchar(255) NOT NULL DEFAULT '',
+ `channel_theme` varchar(255) NOT NULL DEFAULT '',
+ `channel_startpage` varchar(255) NOT NULL DEFAULT '',
`channel_pubkey` text NOT NULL,
`channel_prvkey` text NOT NULL,
`channel_notifyflags` int(10) unsigned NOT NULL DEFAULT 65535,
@@ -281,33 +268,33 @@ CREATE TABLE IF NOT EXISTS `channel` (
`channel_max_anon_mail` int(10) unsigned NOT NULL DEFAULT 10,
`channel_max_friend_req` int(10) unsigned NOT NULL DEFAULT 10,
`channel_expire_days` int(11) NOT NULL DEFAULT 0 ,
- `channel_passwd_reset` char(191) NOT NULL DEFAULT '',
- `channel_default_group` char(191) NOT NULL DEFAULT '',
+ `channel_passwd_reset` varchar(255) NOT NULL DEFAULT '',
+ `channel_default_group` varchar(255) NOT NULL DEFAULT '',
`channel_allow_cid` mediumtext NOT NULL,
`channel_allow_gid` mediumtext NOT NULL,
`channel_deny_cid` mediumtext NOT NULL,
`channel_deny_gid` mediumtext NOT NULL,
`channel_removed` tinyint(1) NOT NULL DEFAULT 0 ,
`channel_system` tinyint(1) NOT NULL DEFAULT 0 ,
- `channel_moved` char(191) NOT NULL DEFAULT '',
- `channel_password` varchar(191) NOT NULL,
- `channel_salt` varchar(191) NOT NULL,
+ `channel_moved` varchar(255) NOT NULL DEFAULT '',
+ `channel_password` varchar(255) NOT NULL,
+ `channel_salt` varchar(255) NOT NULL,
PRIMARY KEY (`channel_id`),
- KEY `channel_address` (`channel_address`),
+ KEY `channel_address` (`channel_address`(191)),
KEY `channel_account_id` (`channel_account_id`),
KEY `channel_primary` (`channel_primary`),
- KEY `channel_name` (`channel_name`),
- KEY `channel_parent` (`channel_parent`),
- KEY `channel_timezone` (`channel_timezone`),
- KEY `channel_location` (`channel_location`),
- KEY `channel_theme` (`channel_theme`),
+ KEY `channel_name` (`channel_name`(191)),
+ KEY `channel_parent` (`channel_parent`(191)),
+ KEY `channel_timezone` (`channel_timezone`(191)),
+ KEY `channel_location` (`channel_location`(191)),
+ KEY `channel_theme` (`channel_theme`(191)),
KEY `channel_notifyflags` (`channel_notifyflags`),
KEY `channel_pageflags` (`channel_pageflags`),
KEY `channel_max_anon_mail` (`channel_max_anon_mail`),
KEY `channel_max_friend_req` (`channel_max_friend_req`),
KEY `channel_default_gid` (`channel_default_group`),
- KEY `channel_guid` (`channel_guid`),
- KEY `channel_hash` (`channel_hash`),
+ KEY `channel_guid` (`channel_guid`(191)),
+ KEY `channel_hash` (`channel_hash`(191)),
KEY `channel_expire_days` (`channel_expire_days`),
KEY `channel_deleted` (`channel_deleted`),
KEY `channel_active` (`channel_active`),
@@ -315,40 +302,40 @@ CREATE TABLE IF NOT EXISTS `channel` (
KEY `channel_removed` (`channel_removed`),
KEY `channel_system` (`channel_system`),
KEY `channel_lastpost` (`channel_lastpost`),
- KEY `channel_moved` (`channel_moved`)
+ KEY `channel_moved` (`channel_moved`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `chat` (
`chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`chat_room` int(10) unsigned NOT NULL DEFAULT 0 ,
- `chat_xchan` char(191) NOT NULL DEFAULT '',
+ `chat_xchan` varchar(255) NOT NULL DEFAULT '',
`chat_text` mediumtext NOT NULL,
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY (`chat_id`),
KEY `chat_room` (`chat_room`),
- KEY `chat_xchan` (`chat_xchan`),
+ KEY `chat_xchan` (`chat_xchan`(191)),
KEY `created` (`created`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `chatpresence` (
`cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cp_room` int(10) unsigned NOT NULL DEFAULT 0 ,
- `cp_xchan` char(191) NOT NULL DEFAULT '',
+ `cp_xchan` varchar(255) NOT NULL DEFAULT '',
`cp_last` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `cp_status` char(191) NOT NULL DEFAULT '',
- `cp_client` char(128) NOT NULL DEFAULT '',
+ `cp_status` varchar(255) NOT NULL DEFAULT '',
+ `cp_client` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`cp_id`),
KEY `cp_room` (`cp_room`),
- KEY `cp_xchan` (`cp_xchan`),
+ KEY `cp_xchan` (`cp_xchan`(191)),
KEY `cp_last` (`cp_last`),
- KEY `cp_status` (`cp_status`)
+ KEY `cp_status` (`cp_status`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `chatroom` (
`cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cr_aid` int(10) unsigned NOT NULL DEFAULT 0 ,
`cr_uid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `cr_name` char(191) NOT NULL DEFAULT '',
+ `cr_name` varchar(255) NOT NULL DEFAULT '',
`cr_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`cr_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`cr_expire` int(10) unsigned NOT NULL DEFAULT 0 ,
@@ -359,63 +346,49 @@ CREATE TABLE IF NOT EXISTS `chatroom` (
PRIMARY KEY (`cr_id`),
KEY `cr_aid` (`cr_aid`),
KEY `cr_uid` (`cr_uid`),
- KEY `cr_name` (`cr_name`),
+ KEY `cr_name` (`cr_name`(191)),
KEY `cr_created` (`cr_created`),
KEY `cr_edited` (`cr_edited`),
KEY `cr_expire` (`cr_expire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `clients` (
- `client_id` varchar(191) NOT NULL DEFAULT '',
+ `client_id` varchar(255) NOT NULL DEFAULT '',
`pw` varchar(191) NOT NULL DEFAULT '',
`redirect_uri` varchar(200) NOT NULL DEFAULT '',
`clname` text,
`icon` text,
`uid` int(11) NOT NULL DEFAULT 0 ,
- PRIMARY KEY (`client_id`)
+ PRIMARY KEY (`client_id`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `config` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cat` char(191) NOT NULL DEFAULT '',
- `k` char(191) NOT NULL DEFAULT '',
+ `cat` varchar(255) NOT NULL DEFAULT '',
+ `k` varchar(255) NOT NULL DEFAULT '',
`v` text NOT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `access` (`cat`,`k`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `conv` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `guid` char(191) NOT NULL DEFAULT '',
- `recips` mediumtext NOT NULL,
- `uid` int(11) NOT NULL DEFAULT 0 ,
- `creator` char(191) NOT NULL DEFAULT '',
- `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `subject` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `created` (`created`),
- KEY `updated` (`updated`)
+ UNIQUE KEY `access` (`cat`(191),`k`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `dreport` (
`dreport_id` int(11) NOT NULL AUTO_INCREMENT,
`dreport_channel` int(11) NOT NULL DEFAULT 0 ,
- `dreport_mid` char(191) NOT NULL DEFAULT '',
- `dreport_site` char(191) NOT NULL DEFAULT '',
- `dreport_recip` char(191) NOT NULL DEFAULT '',
- `dreport_name` char(191) NOT NULL DEFAULT '',
- `dreport_result` char(191) NOT NULL DEFAULT '',
+ `dreport_mid` varchar(255) NOT NULL DEFAULT '',
+ `dreport_site` varchar(255) NOT NULL DEFAULT '',
+ `dreport_recip` varchar(255) NOT NULL DEFAULT '',
+ `dreport_name` varchar(255) NOT NULL DEFAULT '',
+ `dreport_result` varchar(255) NOT NULL DEFAULT '',
`dreport_time` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `dreport_xchan` char(191) NOT NULL DEFAULT '',
- `dreport_queue` char(191) NOT NULL DEFAULT '',
+ `dreport_xchan` varchar(255) NOT NULL DEFAULT '',
+ `dreport_queue` varchar(255) NOT NULL DEFAULT '',
`dreport_log` text NOT NULL,
PRIMARY KEY (`dreport_id`),
- KEY `dreport_mid` (`dreport_mid`),
- KEY `dreport_site` (`dreport_site`),
+ KEY `dreport_mid` (`dreport_mid`(191)),
+ KEY `dreport_site` (`dreport_site`(191)),
KEY `dreport_time` (`dreport_time`),
- KEY `dreport_xchan` (`dreport_xchan`),
- KEY `dreport_queue` (`dreport_queue`),
+ KEY `dreport_xchan` (`dreport_xchan`(191)),
+ KEY `dreport_queue` (`dreport_queue`(191)),
KEY `dreport_channel` (`dreport_channel`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -424,8 +397,8 @@ CREATE TABLE IF NOT EXISTS `event` (
`aid` int(10) unsigned NOT NULL DEFAULT 0 ,
`uid` int(11) NOT NULL DEFAULT 0 ,
`cal_id` int(11) unsigned NOT NULL DEFAULT 0 ,
- `event_xchan` char(191) NOT NULL DEFAULT '',
- `event_hash` char(191) NOT NULL DEFAULT '',
+ `event_xchan` varchar(255) NOT NULL DEFAULT '',
+ `event_hash` varchar(255) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`dtstart` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -433,7 +406,7 @@ CREATE TABLE IF NOT EXISTS `event` (
`summary` text NOT NULL,
`description` text NOT NULL,
`location` text NOT NULL,
- `etype` char(191) NOT NULL DEFAULT '',
+ `etype` varchar(255) NOT NULL DEFAULT '',
`nofinish` tinyint(1) NOT NULL DEFAULT 0 ,
`adjust` tinyint(1) NOT NULL DEFAULT 1,
`dismissed` tinyint(1) NOT NULL DEFAULT 0 ,
@@ -441,7 +414,7 @@ CREATE TABLE IF NOT EXISTS `event` (
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
`deny_gid` mediumtext NOT NULL,
- `event_status` char(191) NOT NULL DEFAULT '',
+ `event_status` varchar(255) NOT NULL DEFAULT '',
`event_status_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`event_percent` smallint(6) NOT NULL DEFAULT 0 ,
`event_repeat` text NOT NULL,
@@ -451,57 +424,57 @@ CREATE TABLE IF NOT EXISTS `event` (
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `cal_id` (`cal_id`),
- KEY `etype` (`etype`),
+ KEY `etype` (`etype`(191)),
KEY `dtstart` (`dtstart`),
KEY `dtend` (`dtend`),
KEY `adjust` (`adjust`),
KEY `nofinish` (`nofinish`),
KEY `dismissed` (`dismissed`),
KEY `aid` (`aid`),
- KEY `event_hash` (`event_hash`),
- KEY `event_xchan` (`event_xchan`),
- KEY `event_status` (`event_status`),
+ KEY `event_hash` (`event_hash`(191)),
+ KEY `event_xchan` (`event_xchan`(191)),
+ KEY `event_status` (`event_status`(191)),
KEY `event_sequence` (`event_sequence`),
KEY `event_priority` (`event_priority`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `pgrp` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `hash` char(191) NOT NULL DEFAULT '',
+ `hash` varchar(255) NOT NULL DEFAULT '',
`uid` int(10) unsigned NOT NULL DEFAULT 0 ,
`visible` tinyint(1) NOT NULL DEFAULT 0 ,
`deleted` tinyint(1) NOT NULL DEFAULT 0 ,
- `gname` char(191) NOT NULL DEFAULT '',
- `rule` char(191) NOT NULL DEFAULT '',
+ `gname` varchar(255) NOT NULL DEFAULT '',
+ `rule` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `visible` (`visible`),
KEY `deleted` (`deleted`),
- KEY `hash` (`hash`),
- KEY `gname` (`gname`),
- KEY `rule` (`rule`)
+ KEY `hash` (`hash`(191)),
+ KEY `gname` (`gname`(191)),
+ KEY `rule` (`rule`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `pgrp_member` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT 0 ,
`gid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `xchan` char(191) NOT NULL DEFAULT '',
+ `xchan` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `gid` (`gid`),
- KEY `xchan` (`xchan`)
+ KEY `xchan` (`xchan`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `hook` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `hook` char(191) NOT NULL DEFAULT '',
- `file` char(191) NOT NULL DEFAULT '',
- `fn` char(191) NOT NULL DEFAULT '',
+ `hook` varchar(255) NOT NULL DEFAULT '',
+ `file` varchar(255) NOT NULL DEFAULT '',
+ `fn` varchar(255) NOT NULL DEFAULT '',
`priority` smallint NOT NULL DEFAULT 0 ,
`hook_version` int(11) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`),
- KEY `hook` (`hook`),
+ KEY `hook` (`hook`(191)),
KEY `priority` (`priority`),
KEY `hook_version` (`hook_version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -509,20 +482,20 @@ CREATE TABLE IF NOT EXISTS `hook` (
CREATE TABLE IF NOT EXISTS `hubloc` (
`hubloc_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `hubloc_guid` char(191) NOT NULL DEFAULT '',
+ `hubloc_guid` varchar(255) NOT NULL DEFAULT '',
`hubloc_guid_sig` text NOT NULL,
- `hubloc_id_url` char(191) NOT NULL DEFAULT '0',
- `hubloc_hash` char(191) NOT NULL DEFAULT '',
- `hubloc_addr` char(191) NOT NULL DEFAULT '',
- `hubloc_network` char(32) NOT NULL DEFAULT '',
+ `hubloc_id_url` varchar(255) NOT NULL DEFAULT '0',
+ `hubloc_hash` varchar(255) NOT NULL DEFAULT '',
+ `hubloc_addr` varchar(255) NOT NULL DEFAULT '',
+ `hubloc_network` varchar(255) NOT NULL DEFAULT '',
`hubloc_flags` int(10) unsigned NOT NULL DEFAULT 0 ,
`hubloc_status` int(10) unsigned NOT NULL DEFAULT 0 ,
- `hubloc_url` char(191) NOT NULL DEFAULT '',
+ `hubloc_url` varchar(255) NOT NULL DEFAULT '',
`hubloc_url_sig` text NOT NULL,
- `hubloc_site_id` char(191) NOT NULL DEFAULT '',
- `hubloc_host` char(191) NOT NULL DEFAULT '',
- `hubloc_callback` char(191) NOT NULL DEFAULT '',
- `hubloc_connect` char(191) NOT NULL DEFAULT '',
+ `hubloc_site_id` varchar(255) NOT NULL DEFAULT '',
+ `hubloc_host` varchar(255) NOT NULL DEFAULT '',
+ `hubloc_callback` varchar(255) NOT NULL DEFAULT '',
+ `hubloc_connect` varchar(255) NOT NULL DEFAULT '',
`hubloc_sitekey` text NOT NULL,
`hubloc_updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`hubloc_connected` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -531,19 +504,19 @@ CREATE TABLE IF NOT EXISTS `hubloc` (
`hubloc_error` tinyint(1) NOT NULL DEFAULT 0 ,
`hubloc_deleted` tinyint(1) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`hubloc_id`),
- KEY `hubloc_url` (`hubloc_url`),
- KEY `hubloc_site_id` (`hubloc_site_id`),
- KEY `hubloc_guid` (`hubloc_guid`),
- KEY `hubloc_id_url` (`hubloc_id_url`),
- KEY `hubloc_hash` (`hubloc_hash`),
+ KEY `hubloc_url` (`hubloc_url`(191)),
+ KEY `hubloc_site_id` (`hubloc_site_id`(191)),
+ KEY `hubloc_guid` (`hubloc_guid`(191)),
+ KEY `hubloc_id_url` (`hubloc_id_url`(191)),
+ KEY `hubloc_hash` (`hubloc_hash`(191)),
KEY `hubloc_flags` (`hubloc_flags`),
- KEY `hubloc_connect` (`hubloc_connect`),
- KEY `hubloc_host` (`hubloc_host`),
- KEY `hubloc_addr` (`hubloc_addr`),
+ KEY `hubloc_connect` (`hubloc_connect`(191)),
+ KEY `hubloc_host` (`hubloc_host`(191)),
+ KEY `hubloc_addr` (`hubloc_addr`(191)),
KEY `hubloc_updated` (`hubloc_updated`),
KEY `hubloc_connected` (`hubloc_connected`),
KEY `hubloc_status` (`hubloc_status`),
- KEY `hubloc_network` (`hubloc_network`),
+ KEY `hubloc_network` (`hubloc_network`(191)),
KEY `hubloc_primary` (`hubloc_primary`),
KEY `hubloc_orphancheck` (`hubloc_orphancheck`),
KEY `hubloc_deleted` (`hubloc_deleted`),
@@ -553,43 +526,26 @@ CREATE TABLE IF NOT EXISTS `hubloc` (
CREATE TABLE IF NOT EXISTS `iconfig` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`iid` int(11) NOT NULL DEFAULT 0 ,
- `cat` char(191) NOT NULL DEFAULT '',
- `k` char(191) NOT NULL DEFAULT '',
+ `cat` varchar(255) NOT NULL DEFAULT '',
+ `k` varchar(255) NOT NULL DEFAULT '',
`v` mediumtext NOT NULL,
`sharing` int(11) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`),
KEY `iid` (`iid`),
- KEY `cat` (`cat`),
- KEY `k` (`k`),
+ KEY `cat` (`cat`(191)),
+ KEY `k` (`k`(191)),
KEY `sharing` (`sharing`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE IF NOT EXISTS `issue` (
- `issue_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `issue_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `issue_updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `issue_assigned` char(191) NOT NULL DEFAULT '',
- `issue_priority` int(11) NOT NULL DEFAULT 0 ,
- `issue_status` int(11) NOT NULL DEFAULT 0 ,
- `issue_component` char(191) NOT NULL DEFAULT '',
- PRIMARY KEY (`issue_id`),
- KEY `issue_created` (`issue_created`),
- KEY `issue_updated` (`issue_updated`),
- KEY `issue_assigned` (`issue_assigned`),
- KEY `issue_priority` (`issue_priority`),
- KEY `issue_status` (`issue_status`),
- KEY `issue_component` (`issue_component`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
CREATE TABLE IF NOT EXISTS `item` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `mid` char(191) NOT NULL DEFAULT '',
- `uuid` char(191) NOT NULL DEFAULT '',
+ `mid` varchar(512) NOT NULL DEFAULT '',
+ `uuid` varchar(255) NOT NULL DEFAULT '',
`aid` int(10) unsigned NOT NULL DEFAULT 0 ,
`uid` int(10) unsigned NOT NULL DEFAULT 0 ,
`parent` int(10) unsigned NOT NULL DEFAULT 0 ,
- `parent_mid` char(191) NOT NULL DEFAULT '',
- `thr_parent` char(191) NOT NULL DEFAULT '',
+ `parent_mid` varchar(512) NOT NULL DEFAULT '',
+ `thr_parent` varchar(512) NOT NULL DEFAULT '',
`item_level` int(10) unsigned NOT NULL DEFAULT 0,
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -598,36 +554,36 @@ CREATE TABLE IF NOT EXISTS `item` (
`received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`comments_closed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `owner_xchan` char(191) NOT NULL DEFAULT '',
- `author_xchan` char(191) NOT NULL DEFAULT '',
- `source_xchan` char(191) NOT NULL DEFAULT '',
- `mimetype` char(191) NOT NULL DEFAULT '',
+ `owner_xchan` varchar(255) NOT NULL DEFAULT '',
+ `author_xchan` varchar(255) NOT NULL DEFAULT '',
+ `source_xchan` varchar(255) NOT NULL DEFAULT '',
+ `mimetype` varchar(255) NOT NULL DEFAULT '',
`replyto` text NOT NULL,
`title` text NOT NULL,
`summary` mediumtext NOT NULL,
`body` mediumtext NOT NULL,
`html` mediumtext NOT NULL,
- `app` char(191) NOT NULL DEFAULT '',
- `lang` char(64) NOT NULL DEFAULT '',
+ `app` varchar(255) NOT NULL DEFAULT '',
+ `lang` varchar(255) NOT NULL DEFAULT '',
`revision` int(10) unsigned NOT NULL DEFAULT 0 ,
- `verb` char(191) NOT NULL DEFAULT '',
- `obj_type` char(191) NOT NULL DEFAULT '',
+ `verb` varchar(255) NOT NULL DEFAULT '',
+ `obj_type` varchar(255) NOT NULL DEFAULT '',
`obj` text NOT NULL,
- `tgt_type` char(191) NOT NULL DEFAULT '',
+ `tgt_type` varchar(255) NOT NULL DEFAULT '',
`target` text NOT NULL,
- `layout_mid` char(191) NOT NULL DEFAULT '',
+ `layout_mid` varchar(255) NOT NULL DEFAULT '',
`postopts` text NOT NULL,
`route` text NOT NULL,
- `llink` char(191) NOT NULL DEFAULT '',
- `plink` char(191) NOT NULL DEFAULT '',
- `resource_id` char(191) NOT NULL DEFAULT '',
- `resource_type` char(16) NOT NULL DEFAULT '',
+ `llink` varchar(255) NOT NULL DEFAULT '',
+ `plink` varchar(255) NOT NULL DEFAULT '',
+ `resource_id` varchar(255) NOT NULL DEFAULT '',
+ `resource_type` varchar(255) NOT NULL DEFAULT '',
`attach` mediumtext NOT NULL,
`sig` text NOT NULL,
- `location` char(191) NOT NULL DEFAULT '',
- `coord` char(191) NOT NULL DEFAULT '',
- `public_policy` char(191) NOT NULL DEFAULT '',
- `comment_policy` char(191) NOT NULL DEFAULT '',
+ `location` varchar(255) NOT NULL DEFAULT '',
+ `coord` varchar(255) NOT NULL DEFAULT '',
+ `public_policy` varchar(255) NOT NULL DEFAULT '',
+ `comment_policy` varchar(255) NOT NULL DEFAULT '',
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
@@ -674,25 +630,25 @@ CREATE TABLE IF NOT EXISTS `item` (
KEY `uid_item_retained` (`uid`, `item_retained`),
KEY `uid_item_private` (`uid`, `item_private`),
KEY `uid_resource_type` (`uid`, `resource_type`),
- KEY `owner_xchan` (`owner_xchan`),
- KEY `author_xchan` (`author_xchan`),
- KEY `resource_id` (`resource_id`),
- KEY `resource_type` (`resource_type`),
+ KEY `owner_xchan` (`owner_xchan`(191)),
+ KEY `author_xchan` (`author_xchan`(191)),
+ KEY `resource_id` (`resource_id`(191)),
+ KEY `resource_type` (`resource_type`(191)),
KEY `commented` (`commented`),
- KEY `verb` (`verb`),
- KEY `obj_type` (`obj_type`),
- KEY `llink` (`llink`),
+ KEY `verb` (`verb`(191)),
+ KEY `obj_type` (`obj_type`(191)),
+ KEY `llink` (`llink`(191)),
KEY `expires` (`expires`),
KEY `revision` (`revision`),
- KEY `mimetype` (`mimetype`),
- KEY `mid` (`mid`),
- KEY `uuid` (`uuid`),
- KEY `parent_mid` (`parent_mid`),
- KEY `thr_parent` (`thr_parent`),
- KEY `uid_mid` (`uid`,`mid`),
- KEY `comment_policy` (`comment_policy`),
- KEY `layout_mid` (`layout_mid`),
- KEY `public_policy` (`public_policy`),
+ KEY `mimetype` (`mimetype`(191)),
+ KEY `mid` (`mid`(191)),
+ KEY `uuid` (`uuid`(191)),
+ KEY `parent_mid` (`parent_mid`(191)),
+ KEY `thr_parent` (`thr_parent`(191)),
+ KEY `uid_mid` (`uid`,`mid`(191)),
+ KEY `comment_policy` (`comment_policy`(191)),
+ KEY `layout_mid` (`layout_mid`(191)),
+ KEY `public_policy` (`public_policy`(191)),
KEY `comments_closed` (`comments_closed`),
KEY `changed` (`changed`),
KEY `item_origin` (`item_origin`),
@@ -718,106 +674,61 @@ CREATE TABLE IF NOT EXISTS `item` (
CREATE TABLE IF NOT EXISTS `likes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`channel_id` int(10) unsigned NOT NULL DEFAULT 0 ,
- `liker` char(191) NOT NULL DEFAULT '',
- `likee` char(191) NOT NULL DEFAULT '',
+ `liker` varchar(255) NOT NULL DEFAULT '',
+ `likee` varchar(255) NOT NULL DEFAULT '',
`iid` int(11) unsigned NOT NULL DEFAULT 0 ,
- `i_mid` char(191) NOT NULL DEFAULT '',
- `verb` char(191) NOT NULL DEFAULT '',
- `target_type` char(191) NOT NULL DEFAULT '',
- `target_id` char(191) NOT NULL DEFAULT '',
+ `i_mid` varchar(255) NOT NULL DEFAULT '',
+ `verb` varchar(255) NOT NULL DEFAULT '',
+ `target_type` varchar(255) NOT NULL DEFAULT '',
+ `target_id` varchar(255) NOT NULL DEFAULT '',
`target` mediumtext NOT NULL,
PRIMARY KEY (`id`),
- KEY `liker` (`liker`),
- KEY `likee` (`likee`),
+ KEY `liker` (`liker`(191)),
+ KEY `likee` (`likee`(191)),
KEY `iid` (`iid`),
- KEY `i_mid` (`i_mid`),
- KEY `verb` (`verb`),
- KEY `target_type` (`target_type`),
+ KEY `i_mid` (`i_mid`(191)),
+ KEY `verb` (`verb`(191)),
+ KEY `target_type` (`target_type`(191)),
KEY `channel_id` (`channel_id`),
- KEY `target_id` (`target_id`)
+ KEY `target_id` (`target_id`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `linkid` (
`link_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
- `ident` varchar(191) NOT NULL DEFAULT '',
- `link` varchar(191) NOT NULL DEFAULT '',
+ `ident` varchar(255) NOT NULL DEFAULT '',
+ `link` varchar(255) NOT NULL DEFAULT '',
`ikey` text NOT NULL,
`lkey` text NOT NULL,
`isig` text NOT NULL,
`lsig` text NOT NULL,
`sigtype` int(11) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`link_id`),
- KEY `ident` (`ident`),
- KEY `link` (`link`)
+ KEY `ident` (`ident`(191)),
+ KEY `link` (`link`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS listeners (
id int(11) NOT NULL AUTO_INCREMENT,
- target_id varchar(191) CHARACTER SET utf8mb4 NOT NULL DEFAULT '',
- portable_id varchar(191) CHARACTER SET utf8mb4 NOT NULL DEFAULT '',
+ target_id varchar(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT '',
+ portable_id varchar(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT '',
ltype int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (id),
- KEY target_id (target_id),
- KEY portable_id (portable_id),
+ KEY target_id (target_id(191)),
+ KEY portable_id (portable_id(191)),
KEY ltype (ltype)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE IF NOT EXISTS `mail` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `convid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `conv_guid` char(191) NOT NULL DEFAULT '',
- `mail_flags` int(10) unsigned NOT NULL DEFAULT 0 ,
- `from_xchan` char(191) NOT NULL DEFAULT '',
- `to_xchan` char(191) NOT NULL DEFAULT '',
- `account_id` int(10) unsigned NOT NULL DEFAULT 0 ,
- `channel_id` int(10) unsigned NOT NULL DEFAULT 0 ,
- `mail_mimetype` char(64) NOT NULL DEFAULT 'text/bbcode',
- `title` text NOT NULL,
- `body` mediumtext NOT NULL,
- `sig` text NOT NULL,
- `attach` mediumtext NOT NULL,
- `mid` char(191) NOT NULL DEFAULT '',
- `parent_mid` char(191) NOT NULL DEFAULT '',
- `mail_deleted` tinyint(4) NOT NULL DEFAULT 0 ,
- `mail_replied` tinyint(4) NOT NULL DEFAULT 0 ,
- `mail_isreply` tinyint(4) NOT NULL DEFAULT 0 ,
- `mail_seen` tinyint(4) NOT NULL DEFAULT 0 ,
- `mail_recalled` tinyint(4) NOT NULL DEFAULT 0 ,
- `mail_obscured` smallint(6) NOT NULL DEFAULT 0 ,
- `mail_raw` tinyint(4) NOT NULL DEFAULT 0 ,
- `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY (`id`),
- KEY `created` (`created`),
- KEY `mail_flags` (`mail_flags`),
- KEY `account_id` (`account_id`),
- KEY `channel_id` (`channel_id`),
- KEY `from_xchan` (`from_xchan`),
- KEY `to_xchan` (`to_xchan`),
- KEY `mid` (`mid`),
- KEY `parent_mid` (`parent_mid`),
- KEY `expires` (`expires`),
- KEY `convid` (`convid`),
- KEY `conv_guid` (`conv_guid`),
- KEY `mail_deleted` (`mail_deleted`),
- KEY `mail_replied` (`mail_replied`),
- KEY `mail_isreply` (`mail_isreply`),
- KEY `mail_seen` (`mail_seen`),
- KEY `mail_recalled` (`mail_recalled`),
- KEY `mail_obscured` (`mail_obscured`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
CREATE TABLE IF NOT EXISTS `menu` (
`menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`menu_channel_id` int(10) unsigned NOT NULL DEFAULT 0 ,
- `menu_name` char(191) NOT NULL DEFAULT '',
- `menu_desc` char(191) NOT NULL DEFAULT '',
+ `menu_name` varchar(255) NOT NULL DEFAULT '',
+ `menu_desc` varchar(255) NOT NULL DEFAULT '',
`menu_flags` int(11) NOT NULL DEFAULT 0 ,
`menu_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`menu_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY (`menu_id`),
KEY `menu_channel_id` (`menu_channel_id`),
- KEY `menu_name` (`menu_name`),
+ KEY `menu_name` (`menu_name`(191)),
KEY `menu_flags` (`menu_flags`),
KEY `menu_created` (`menu_created`),
KEY `menu_edited` (`menu_edited`)
@@ -825,8 +736,8 @@ CREATE TABLE IF NOT EXISTS `menu` (
CREATE TABLE IF NOT EXISTS `menu_item` (
`mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `mitem_link` char(191) NOT NULL DEFAULT '',
- `mitem_desc` char(191) NOT NULL DEFAULT '',
+ `mitem_link` varchar(1024) NOT NULL DEFAULT '',
+ `mitem_desc` varchar(1024) NOT NULL DEFAULT '',
`mitem_flags` int(11) NOT NULL DEFAULT 0 ,
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
@@ -843,42 +754,42 @@ CREATE TABLE IF NOT EXISTS `menu_item` (
CREATE TABLE IF NOT EXISTS `notify` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `hash` char(191) NOT NULL DEFAULT '',
- `xname` char(191) NOT NULL DEFAULT '',
- `url` char(191) NOT NULL DEFAULT '',
- `photo` char(191) NOT NULL DEFAULT '',
+ `hash` varchar(255) NOT NULL DEFAULT '',
+ `xname` varchar(255) NOT NULL DEFAULT '',
+ `url` varchar(255) NOT NULL DEFAULT '',
+ `photo` varchar(255) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`msg` mediumtext NOT NULL,
`aid` int(11) NOT NULL DEFAULT 0 ,
`uid` int(11) NOT NULL DEFAULT 0 ,
- `link` char(191) NOT NULL DEFAULT '',
- `parent` char(191) NOT NULL DEFAULT '',
+ `link` varchar(255) NOT NULL DEFAULT '',
+ `parent` varchar(255) NOT NULL DEFAULT '',
`seen` tinyint(1) NOT NULL DEFAULT 0 ,
`ntype` int(11) NOT NULL DEFAULT 0 ,
- `verb` char(191) NOT NULL DEFAULT '',
- `otype` char(16) NOT NULL DEFAULT '',
+ `verb` varchar(255) NOT NULL DEFAULT '',
+ `otype` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `ntype` (`ntype`),
KEY `seen` (`seen`),
KEY `uid` (`uid`),
KEY `created` (`created`),
- KEY `hash` (`hash`),
- KEY `parent` (`parent`),
- KEY `link` (`link`),
- KEY `otype` (`otype`),
+ KEY `hash` (`hash`(191)),
+ KEY `parent` (`parent`(191)),
+ KEY `link` (`link`(191)),
+ KEY `otype` (`otype`(191)),
KEY `aid` (`aid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `obj` (
`obj_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `obj_page` char(64) NOT NULL DEFAULT '',
- `obj_verb` char(191) NOT NULL DEFAULT '',
+ `obj_page` varchar(255) NOT NULL DEFAULT '',
+ `obj_verb` varchar(255) NOT NULL DEFAULT '',
`obj_type` int(10) unsigned NOT NULL DEFAULT 0 ,
- `obj_obj` char(191) NOT NULL DEFAULT '',
+ `obj_obj` varchar(255) NOT NULL DEFAULT '',
`obj_channel` int(10) unsigned NOT NULL DEFAULT 0 ,
- `obj_term` char(191) NOT NULL DEFAULT '',
- `obj_url` char(191) NOT NULL DEFAULT '',
- `obj_imgurl` char(191) NOT NULL DEFAULT '',
+ `obj_term` varchar(255) NOT NULL DEFAULT '',
+ `obj_url` varchar(255) NOT NULL DEFAULT '',
+ `obj_imgurl` varchar(255) NOT NULL DEFAULT '',
`obj_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`obj_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`obj_quantity` int(11) NOT NULL DEFAULT 0 ,
@@ -887,25 +798,25 @@ CREATE TABLE IF NOT EXISTS `obj` (
`deny_cid` mediumtext NOT NULL,
`deny_gid` mediumtext NOT NULL,
PRIMARY KEY (`obj_id`),
- KEY `obj_verb` (`obj_verb`),
- KEY `obj_page` (`obj_page`),
+ KEY `obj_verb` (`obj_verb`(191)),
+ KEY `obj_page` (`obj_page`(191)),
KEY `obj_type` (`obj_type`),
KEY `obj_channel` (`obj_channel`),
- KEY `obj_term` (`obj_term`),
- KEY `obj_url` (`obj_url`),
+ KEY `obj_term` (`obj_term`(191)),
+ KEY `obj_url` (`obj_url`(191)),
KEY `obj_imgurl` (`obj_imgurl`),
KEY `obj_created` (`obj_created`),
KEY `obj_edited` (`obj_edited`),
KEY `obj_quantity` (`obj_quantity`),
- KEY `obj_obj` (`obj_obj`)
+ KEY `obj_obj` (`obj_obj`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `outq` (
- `outq_hash` char(191) NOT NULL,
+ `outq_hash` varchar(255) NOT NULL,
`outq_account` int(10) unsigned NOT NULL DEFAULT 0 ,
`outq_channel` int(10) unsigned NOT NULL DEFAULT 0 ,
- `outq_driver` char(32) NOT NULL DEFAULT '',
- `outq_posturl` char(191) NOT NULL DEFAULT '',
+ `outq_driver` varchar(128) NOT NULL DEFAULT '',
+ `outq_posturl` varchar(255) NOT NULL DEFAULT '',
`outq_async` tinyint(1) NOT NULL DEFAULT 0 ,
`outq_delivered` tinyint(1) NOT NULL DEFAULT 0 ,
`outq_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -914,10 +825,10 @@ CREATE TABLE IF NOT EXISTS `outq` (
`outq_notify` mediumtext NOT NULL,
`outq_msg` mediumtext NOT NULL,
`outq_priority` smallint(6) NOT NULL DEFAULT 0 ,
- PRIMARY KEY (`outq_hash`),
+ PRIMARY KEY (`outq_hash`(191)),
KEY `outq_account` (`outq_account`),
KEY `outq_channel` (`outq_channel`),
- KEY `outq_hub` (`outq_posturl`),
+ KEY `outq_hub` (`outq_posturl`(191)),
KEY `outq_created` (`outq_created`),
KEY `outq_updated` (`outq_updated`),
KEY `outq_scheduled` (`outq_scheduled`),
@@ -930,27 +841,27 @@ CREATE TABLE IF NOT EXISTS `outq` (
CREATE TABLE IF NOT EXISTS `pconfig` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT 0 ,
- `cat` char(191) NOT NULL DEFAULT '',
- `k` char(191) NOT NULL DEFAULT '',
+ `cat` varchar(255) NOT NULL DEFAULT '',
+ `k` varchar(255) NOT NULL DEFAULT '',
`v` mediumtext NOT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `access` (`uid`,`cat`,`k`)
+ UNIQUE KEY `access` (`uid`,`cat`(191),`k`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `photo` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`aid` int(10) unsigned NOT NULL DEFAULT 0 ,
`uid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `xchan` char(191) NOT NULL DEFAULT '',
- `resource_id` char(191) NOT NULL DEFAULT '',
+ `xchan` varchar(255) NOT NULL DEFAULT '',
+ `resource_id` varchar(255) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `title` char(191) NOT NULL DEFAULT '',
+ `title` varchar(255) NOT NULL DEFAULT '',
`description` text NOT NULL,
- `album` char(191) NOT NULL DEFAULT '',
- `filename` char(191) NOT NULL DEFAULT '',
- `mimetype` char(128) NOT NULL DEFAULT 'image/jpeg',
+ `album` varchar(255) NOT NULL DEFAULT '',
+ `filename` varchar(4095) NOT NULL DEFAULT '',
+ `mimetype` varchar(255) NOT NULL DEFAULT 'image/jpeg',
`height` smallint(6) NOT NULL DEFAULT 0 ,
`width` smallint(6) NOT NULL DEFAULT 0 ,
`filesize` int(10) unsigned NOT NULL DEFAULT 0 ,
@@ -969,14 +880,14 @@ CREATE TABLE IF NOT EXISTS `photo` (
`deny_gid` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
- KEY `album` (`album`),
+ KEY `album` (`album`(191)),
KEY `imgscale` (`imgscale`),
KEY `profile` (`profile`),
KEY `expires` (`expires`),
KEY `photo_flags` (`photo_flags`),
- KEY `mimetype` (`mimetype`),
+ KEY `mimetype` (`mimetype`(191)),
KEY `aid` (`aid`),
- KEY `xchan` (`xchan`),
+ KEY `xchan` (`xchan`(191)),
KEY `filesize` (`filesize`),
KEY `resource_id` (`resource_id`),
KEY `is_nsfw` (`is_nsfw`),
@@ -986,30 +897,30 @@ CREATE TABLE IF NOT EXISTS `photo` (
CREATE TABLE IF NOT EXISTS `poll` (
`poll_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `poll_guid` varchar(191) NOT NULL,
+ `poll_guid` varchar(255) NOT NULL,
`poll_channel` int(10) unsigned NOT NULL DEFAULT 0 ,
- `poll_author` varchar(191) NOT NULL,
+ `poll_author` varchar(255) NOT NULL,
`poll_desc` text NOT NULL,
`poll_flags` int(11) NOT NULL DEFAULT 0 ,
`poll_votes` int(11) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`poll_id`),
- KEY `poll_guid` (`poll_guid`),
+ KEY `poll_guid` (`poll_guid`(191)),
KEY `poll_channel` (`poll_channel`),
- KEY `poll_author` (`poll_author`),
+ KEY `poll_author` (`poll_author`(191)),
KEY `poll_flags` (`poll_flags`),
KEY `poll_votes` (`poll_votes`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `poll_elm` (
`pelm_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `pelm_guid` varchar(191) NOT NULL,
+ `pelm_guid` varchar(255) NOT NULL,
`pelm_poll` int(10) unsigned NOT NULL DEFAULT 0 ,
`pelm_desc` text NOT NULL,
`pelm_flags` int(11) NOT NULL DEFAULT 0 ,
`pelm_result` float NOT NULL DEFAULT 0 ,
`pelm_order` int(11) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`pelm_id`),
- KEY `pelm_guid` (`pelm_guid`),
+ KEY `pelm_guid` (`pelm_guid`(191)),
KEY `pelm_poll` (`pelm_poll`),
KEY `pelm_result` (`pelm_result`),
KEY `pelm_order` (`pelm_order`)
@@ -1017,59 +928,59 @@ CREATE TABLE IF NOT EXISTS `poll_elm` (
CREATE TABLE IF NOT EXISTS `profdef` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `field_name` char(191) NOT NULL DEFAULT '',
- `field_type` char(16) NOT NULL DEFAULT '',
- `field_desc` char(191) NOT NULL DEFAULT '',
- `field_help` char(191) NOT NULL DEFAULT '',
+ `field_name` varchar(255) NOT NULL DEFAULT '',
+ `field_type` varchar(255) NOT NULL DEFAULT '',
+ `field_desc` varchar(255) NOT NULL DEFAULT '',
+ `field_help` varchar(255) NOT NULL DEFAULT '',
`field_inputs` mediumtext NOT NULL,
PRIMARY KEY (`id`),
- KEY `field_name` (`field_name`)
+ KEY `field_name` (`field_name`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `profext` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`channel_id` int(10) unsigned NOT NULL DEFAULT 0 ,
- `hash` char(191) NOT NULL DEFAULT '',
- `k` char(191) NOT NULL DEFAULT '',
+ `hash` varchar(255) NOT NULL DEFAULT '',
+ `k` varchar(255) NOT NULL DEFAULT '',
`v` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `channel_id` (`channel_id`),
- KEY `hash` (`hash`),
- KEY `k` (`k`)
+ KEY `hash` (`hash`(191)),
+ KEY `k` (`k`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `profile` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `profile_guid` char(64) NOT NULL DEFAULT '',
+ `profile_guid` varchar(255) NOT NULL DEFAULT '',
`aid` int(10) unsigned NOT NULL DEFAULT 0 ,
`uid` int(11) NOT NULL DEFAULT 0 ,
- `profile_name` char(191) NOT NULL DEFAULT '',
+ `profile_name` varchar(255) NOT NULL DEFAULT '',
`is_default` tinyint(1) NOT NULL DEFAULT 0 ,
`hide_friends` tinyint(1) NOT NULL DEFAULT 0 ,
- `fullname` char(191) NOT NULL DEFAULT '',
- `pdesc` char(191) NOT NULL DEFAULT '',
+ `fullname` varchar(255) NOT NULL DEFAULT '',
+ `pdesc` varchar(255) NOT NULL DEFAULT '',
`chandesc` text NOT NULL,
- `dob` char(32) NOT NULL DEFAULT '0000-00-00',
- `dob_tz` char(191) NOT NULL DEFAULT 'UTC',
- `address` char(191) NOT NULL DEFAULT '',
- `locality` char(191) NOT NULL DEFAULT '',
- `region` char(191) NOT NULL DEFAULT '',
- `postal_code` char(32) NOT NULL DEFAULT '',
- `country_name` char(191) NOT NULL DEFAULT '',
- `hometown` char(191) NOT NULL DEFAULT '',
- `gender` char(32) NOT NULL DEFAULT '',
- `marital` char(191) NOT NULL DEFAULT '',
+ `dob` varchar(255) NOT NULL DEFAULT '0000-00-00',
+ `dob_tz` varchar(255) NOT NULL DEFAULT 'UTC',
+ `address` varchar(255) NOT NULL DEFAULT '',
+ `locality` varchar(255) NOT NULL DEFAULT '',
+ `region` varchar(255) NOT NULL DEFAULT '',
+ `postal_code` varchar(255) NOT NULL DEFAULT '',
+ `country_name` varchar(255) NOT NULL DEFAULT '',
+ `hometown` varchar(255) NOT NULL DEFAULT '',
+ `gender` varchar(255) NOT NULL DEFAULT '',
+ `marital` varchar(255) NOT NULL DEFAULT '',
`partner` text NOT NULL,
`howlong` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `pronouns` char(191) NOT NULL DEFAULT '',
- `sexual` char(191) NOT NULL DEFAULT '',
- `politic` char(191) NOT NULL DEFAULT '',
- `religion` char(191) NOT NULL DEFAULT '',
+ `pronouns` varchar(255) NOT NULL DEFAULT '',
+ `sexual` varchar(255) NOT NULL DEFAULT '',
+ `politic` varchar(255) NOT NULL DEFAULT '',
+ `religion` varchar(255) NOT NULL DEFAULT '',
`keywords` text NOT NULL,
`likes` text NOT NULL,
`dislikes` text NOT NULL,
`about` text NOT NULL,
- `summary` char(191) NOT NULL DEFAULT '',
+ `summary` varchar(8192) NOT NULL DEFAULT '',
`music` text NOT NULL,
`book` text NOT NULL,
`tv` text NOT NULL,
@@ -1080,127 +991,95 @@ CREATE TABLE IF NOT EXISTS `profile` (
`education` text NOT NULL,
`contact` text NOT NULL,
`channels` text NOT NULL,
- `homepage` char(191) NOT NULL DEFAULT '',
- `photo` char(191) NOT NULL DEFAULT '',
- `thumb` char(191) NOT NULL DEFAULT '',
+ `homepage` varchar(255) NOT NULL DEFAULT '',
+ `photo` varchar(255) NOT NULL DEFAULT '',
+ `thumb` varchar(255) NOT NULL DEFAULT '',
`publish` tinyint(1) NOT NULL DEFAULT 0 ,
`profile_vcard` text NOT NULL,
PRIMARY KEY (`id`),
- UNIQUE KEY `guid` (`profile_guid`,`uid`),
+ UNIQUE KEY `guid` (`profile_guid`(191),`uid`),
KEY `uid` (`uid`),
- KEY `locality` (`locality`),
- KEY `hometown` (`hometown`),
- KEY `gender` (`gender`),
- KEY `marital` (`marital`),
- KEY `sexual` (`sexual`),
+ KEY `locality` (`locality`(191)),
+ KEY `hometown` (`hometown`(191)),
+ KEY `gender` (`gender`(191)),
+ KEY `marital` (`marital`(191)),
+ KEY `sexual` (`sexual`(191)),
KEY `publish` (`publish`),
KEY `aid` (`aid`),
KEY `is_default` (`is_default`),
KEY `hide_friends` (`hide_friends`),
- KEY `postal_code` (`postal_code`),
- KEY `country_name` (`country_name`),
- KEY `profile_guid` (`profile_guid`)
+ KEY `postal_code` (`postal_code`(191)),
+ KEY `country_name` (`country_name`(191)),
+ KEY `profile_guid` (`profile_guid`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `register` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `hash` char(191) NOT NULL DEFAULT '',
+ `hash` varchar(255) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`uid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `password` char(191) NOT NULL DEFAULT '',
- `lang` char(16) NOT NULL DEFAULT '',
+ `password` varchar(255) NOT NULL DEFAULT '',
+ `lang` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
- KEY `hash` (`hash`),
+ KEY `hash` (`hash`(191)),
KEY `created` (`created`),
KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `session` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
- `sid` char(191) NOT NULL DEFAULT '',
+ `sid` varchar(255) NOT NULL DEFAULT '',
`sess_data` text NOT NULL,
`expire` bigint(20) unsigned NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`),
- KEY `sid` (`sid`),
+ KEY `sid` (`sid`(191)),
KEY `expire` (`expire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE IF NOT EXISTS `shares` (
- `share_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `share_type` int(11) NOT NULL DEFAULT 0 ,
- `share_target` int(10) unsigned NOT NULL DEFAULT 0 ,
- `share_xchan` char(191) NOT NULL DEFAULT '',
- PRIMARY KEY (`share_id`),
- KEY `share_type` (`share_type`),
- KEY `share_target` (`share_target`),
- KEY `share_xchan` (`share_xchan`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `sign` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `iid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `retract_iid` int(10) unsigned NOT NULL DEFAULT 0 ,
- `signed_text` mediumtext NOT NULL,
- `signature` text NOT NULL,
- `signer` char(191) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`),
- KEY `iid` (`iid`),
- KEY `retract_iid` (`retract_iid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
CREATE TABLE IF NOT EXISTS `site` (
- `site_url` char(191) NOT NULL,
+ `site_url` varchar(255) NOT NULL,
`site_access` int(11) NOT NULL DEFAULT 0 ,
`site_flags` int(11) NOT NULL DEFAULT 0 ,
`site_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`site_pull` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`site_sync` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
- `site_directory` char(191) NOT NULL DEFAULT '',
+ `site_directory` varchar(255) NOT NULL DEFAULT '',
`site_register` int(11) NOT NULL DEFAULT 0 ,
- `site_sellpage` char(191) NOT NULL DEFAULT '',
- `site_location` char(191) NOT NULL DEFAULT '',
- `site_realm` char(191) NOT NULL DEFAULT '',
+ `site_sellpage` varchar(255) NOT NULL DEFAULT '',
+ `site_location` varchar(255) NOT NULL DEFAULT '',
+ `site_realm` varchar(255) NOT NULL DEFAULT '',
`site_valid` smallint NOT NULL DEFAULT 0 ,
`site_dead` smallint NOT NULL DEFAULT 0 ,
`site_type` smallint NOT NULL DEFAULT 0 ,
- `site_project` char(191) NOT NULL DEFAULT '',
- `site_version` varchar(32) NOT NULL DEFAULT '',
+ `site_project` varchar(255) NOT NULL DEFAULT '',
+ `site_version` varchar(255) NOT NULL DEFAULT '',
`site_crypto` text NOT NULL,
PRIMARY KEY (`site_url`),
KEY `site_flags` (`site_flags`),
KEY `site_update` (`site_update`),
- KEY `site_directory` (`site_directory`),
+ KEY `site_directory` (`site_directory`(191)),
KEY `site_register` (`site_register`),
KEY `site_access` (`site_access`),
- KEY `site_sellpage` (`site_sellpage`),
+ KEY `site_sellpage` (`site_sellpage`(191)),
KEY `site_pull` (`site_pull`),
- KEY `site_realm` (`site_realm`),
+ KEY `site_realm` (`site_realm`(191)),
KEY `site_valid` (`site_valid`),
KEY `site_dead` (`site_dead`),
KEY `site_type` (`site_type`),
- KEY `site_project` (`site_project`)
+ KEY `site_project` (`site_project`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `source` (
`src_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`src_channel_id` int(10) unsigned NOT NULL DEFAULT 0 ,
- `src_channel_xchan` char(191) NOT NULL DEFAULT '',
- `src_xchan` char(191) NOT NULL DEFAULT '',
+ `src_channel_xchan` varchar(255) NOT NULL DEFAULT '',
+ `src_xchan` varchar(255) NOT NULL DEFAULT '',
`src_patt` mediumtext NOT NULL,
`src_tag` mediumtext NOT NULL,
PRIMARY KEY (`src_id`),
KEY `src_channel_id` (`src_channel_id`),
- KEY `src_channel_xchan` (`src_channel_xchan`),
- KEY `src_xchan` (`src_xchan`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-CREATE TABLE IF NOT EXISTS `sys_perms` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cat` char(191) NOT NULL DEFAULT '',
- `k` char(191) NOT NULL DEFAULT '',
- `v` mediumtext NOT NULL,
- `public_perm` tinyint(1) unsigned NOT NULL DEFAULT 0 ,
- PRIMARY KEY (`id`)
+ KEY `src_channel_xchan` (`src_channel_xchan`(191)),
+ KEY `src_xchan` (`src_xchan`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `term` (
@@ -1210,99 +1089,72 @@ CREATE TABLE IF NOT EXISTS `term` (
`oid` int(10) unsigned NOT NULL DEFAULT 0 ,
`otype` tinyint(3) unsigned NOT NULL DEFAULT 0 ,
`ttype` tinyint(3) unsigned NOT NULL DEFAULT 0 ,
- `term` char(191) NOT NULL DEFAULT '',
- `url` char(191) NOT NULL DEFAULT '',
- `imgurl` char(191) NOT NULL DEFAULT '',
- `term_hash` char(191) NOT NULL DEFAULT '',
- `parent_hash` char(191) NOT NULL DEFAULT '',
+ `term` varchar(255) NOT NULL DEFAULT '',
+ `url` varchar(255) NOT NULL DEFAULT '',
+ `imgurl` varchar(255) NOT NULL DEFAULT '',
+ `term_hash` varchar(255) NOT NULL DEFAULT '',
+ `parent_hash` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`tid`),
KEY `oid` (`oid`),
KEY `otype` (`otype`),
KEY `ttype` (`ttype`),
- KEY `term` (`term`),
+ KEY `term` (`term`(191)),
KEY `uid` (`uid`),
KEY `aid` (`aid`),
- KEY `imgurl` (`imgurl`),
- KEY `term_hash` (`term_hash`),
- KEY `parent_hash` (`parent_hash`),
+ KEY `imgurl` (`imgurl`(191)),
+ KEY `term_hash` (`term_hash`(191)),
+ KEY `parent_hash` (`parent_hash`(191)),
KEY `term_ttype` (`term`,`ttype`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE IF NOT EXISTS `tokens` (
- `id` varchar(191) NOT NULL DEFAULT '',
- `secret` text NOT NULL,
- `client_id` varchar(191) NOT NULL DEFAULT '',
- `expires` bigint(20) unsigned NOT NULL DEFAULT 0 ,
- `auth_scope` varchar(512) NOT NULL DEFAULT '',
- `uid` int(11) NOT NULL DEFAULT 0 ,
- PRIMARY KEY (`id`),
- KEY `client_id` (`client_id`),
- KEY `expires` (`expires`),
- KEY `uid` (`uid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
CREATE TABLE IF NOT EXISTS `updates` (
`ud_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `ud_hash` char(191) NOT NULL DEFAULT '',
- `ud_guid` char(191) NOT NULL DEFAULT '',
+ `ud_hash` varchar(255) NOT NULL DEFAULT '',
+ `ud_guid` varchar(255) NOT NULL DEFAULT '',
`ud_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`ud_last` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`ud_flags` int(11) NOT NULL DEFAULT 0 ,
- `ud_addr` char(191) NOT NULL DEFAULT '',
+ `ud_addr` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`ud_id`),
KEY `ud_date` (`ud_date`),
- KEY `ud_guid` (`ud_guid`),
- KEY `ud_hash` (`ud_hash`),
+ KEY `ud_guid` (`ud_guid`(191)),
+ KEY `ud_hash` (`ud_hash`(191)),
KEY `ud_flags` (`ud_flags`),
- KEY `ud_addr` (`ud_addr`),
+ KEY `ud_addr` (`ud_addr`(191)),
KEY `ud_last` (`ud_last`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `verify` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`channel` int(10) unsigned NOT NULL DEFAULT 0 ,
- `vtype` char(32) NOT NULL DEFAULT '',
- `token` char(191) NOT NULL DEFAULT '',
- `meta` char(191) NOT NULL DEFAULT '',
+ `vtype` varchar(255) NOT NULL DEFAULT '',
+ `token` varchar(255) NOT NULL DEFAULT '',
+ `meta` varchar(255) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY (`id`),
KEY `channel` (`channel`),
- KEY `vtype` (`vtype`),
- KEY `token` (`token`),
- KEY `meta` (`meta`),
+ KEY `vtype` (`vtype`(191)),
+ KEY `token` (`token`(191)),
+ KEY `meta` (`meta`(191)),
KEY `created` (`created`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-CREATE TABLE IF NOT EXISTS `vote` (
- `vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `vote_guid` varchar(191) NOT NULL,
- `vote_poll` int(11) NOT NULL DEFAULT 0 ,
- `vote_element` int(11) NOT NULL DEFAULT 0 ,
- `vote_result` text NOT NULL,
- `vote_xchan` char(191) NOT NULL DEFAULT '',
- PRIMARY KEY (`vote_id`),
- UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`),
- KEY `vote_guid` (`vote_guid`),
- KEY `vote_poll` (`vote_poll`),
- KEY `vote_element` (`vote_element`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
CREATE TABLE IF NOT EXISTS `xchan` (
- `xchan_hash` char(191) NOT NULL,
- `xchan_guid` char(191) NOT NULL DEFAULT '',
+ `xchan_hash` varchar(255) NOT NULL,
+ `xchan_guid` varchar(255) NOT NULL DEFAULT '',
`xchan_guid_sig` text NOT NULL,
`xchan_pubkey` text NOT NULL,
- `xchan_photo_mimetype` char(32) NOT NULL DEFAULT 'image/jpeg',
- `xchan_photo_l` char(191) NOT NULL DEFAULT '',
- `xchan_photo_m` char(191) NOT NULL DEFAULT '',
- `xchan_photo_s` char(191) NOT NULL DEFAULT '',
- `xchan_addr` char(191) NOT NULL DEFAULT '',
- `xchan_url` char(191) NOT NULL DEFAULT '',
- `xchan_connurl` char(191) NOT NULL DEFAULT '',
- `xchan_follow` char(191) NOT NULL DEFAULT '',
- `xchan_connpage` char(191) NOT NULL DEFAULT '',
- `xchan_name` char(191) NOT NULL DEFAULT '',
- `xchan_network` char(191) NOT NULL DEFAULT '',
+ `xchan_photo_mimetype` varchar(255) NOT NULL DEFAULT 'image/jpeg',
+ `xchan_photo_l` varchar(255) NOT NULL DEFAULT '',
+ `xchan_photo_m` varchar(255) NOT NULL DEFAULT '',
+ `xchan_photo_s` varchar(255) NOT NULL DEFAULT '',
+ `xchan_addr` varchar(255) NOT NULL DEFAULT '',
+ `xchan_url` varchar(255) NOT NULL DEFAULT '',
+ `xchan_connurl` varchar(255) NOT NULL DEFAULT '',
+ `xchan_follow` varchar(255) NOT NULL DEFAULT '',
+ `xchan_connpage` varchar(255) NOT NULL DEFAULT '',
+ `xchan_name` varchar(255) NOT NULL DEFAULT '',
+ `xchan_network` varchar(255) NOT NULL DEFAULT '',
`xchan_created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`xchan_updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`xchan_photo_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -1314,14 +1166,14 @@ CREATE TABLE IF NOT EXISTS `xchan` (
`xchan_system` tinyint(1) NOT NULL DEFAULT 0 ,
`xchan_type` tinyint(1) NOT NULL DEFAULT 0 ,
`xchan_deleted` tinyint(1) NOT NULL DEFAULT 0 ,
- PRIMARY KEY (`xchan_hash`),
- KEY `xchan_guid` (`xchan_guid`),
- KEY `xchan_addr` (`xchan_addr`),
- KEY `xchan_name` (`xchan_name`),
- KEY `xchan_network` (`xchan_network`),
- KEY `xchan_url` (`xchan_url`),
- KEY `xchan_connurl` (`xchan_connurl`),
- KEY `xchan_follow` (`xchan_follow`),
+ PRIMARY KEY (`xchan_hash`(191)),
+ KEY `xchan_guid` (`xchan_guid`(191)),
+ KEY `xchan_addr` (`xchan_addr`(191)),
+ KEY `xchan_name` (`xchan_name`(191)),
+ KEY `xchan_network` (`xchan_network`(191)),
+ KEY `xchan_url` (`xchan_url`(191)),
+ KEY `xchan_connurl` (`xchan_connurl`(191)),
+ KEY `xchan_follow` (`xchan_follow`(191)),
KEY `xchan_hidden` (`xchan_hidden`),
KEY `xchan_orphan` (`xchan_orphan`),
KEY `xchan_censored` (`xchan_censored`),
@@ -1335,50 +1187,50 @@ CREATE TABLE IF NOT EXISTS `xchan` (
CREATE TABLE IF NOT EXISTS `xchat` (
`xchat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xchat_url` char(191) NOT NULL DEFAULT '',
- `xchat_desc` char(191) NOT NULL DEFAULT '',
- `xchat_xchan` char(191) NOT NULL DEFAULT '',
+ `xchat_url` varchar(255) NOT NULL DEFAULT '',
+ `xchat_desc` varchar(255) NOT NULL DEFAULT '',
+ `xchat_xchan` varchar(255) NOT NULL DEFAULT '',
`xchat_edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY (`xchat_id`),
- KEY `xchat_url` (`xchat_url`),
- KEY `xchat_desc` (`xchat_desc`),
- KEY `xchat_xchan` (`xchat_xchan`),
+ KEY `xchat_url` (`xchat_url`(191)),
+ KEY `xchat_desc` (`xchat_desc`(191)),
+ KEY `xchat_xchan` (`xchat_xchan`(191)),
KEY `xchat_edited` (`xchat_edited`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `xconfig` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xchan` char(191) NOT NULL DEFAULT '',
- `cat` char(191) NOT NULL DEFAULT '',
- `k` char(191) NOT NULL DEFAULT '',
+ `xchan` varchar(255) NOT NULL DEFAULT '',
+ `cat` varchar(255) NOT NULL DEFAULT '',
+ `k` varchar(255) NOT NULL DEFAULT '',
`v` mediumtext NOT NULL,
PRIMARY KEY (`id`),
- KEY `xchan` (`xchan`),
- KEY `cat` (`cat`),
- KEY `k` (`k`)
+ KEY `xchan` (`xchan`(191)),
+ KEY `cat` (`cat`(191)),
+ KEY `k` (`k`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `xign` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL DEFAULT 0 ,
- `xchan` char(191) NOT NULL DEFAULT '',
+ `xchan` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
- KEY `xchan` (`xchan`)
+ KEY `xchan` (`xchan`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `xlink` (
`xlink_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xlink_xchan` char(191) NOT NULL DEFAULT '',
- `xlink_link` char(191) NOT NULL DEFAULT '',
+ `xlink_xchan` varchar(255) NOT NULL DEFAULT '',
+ `xlink_link` varchar(255) NOT NULL DEFAULT '',
`xlink_rating` int(11) NOT NULL DEFAULT 0 ,
`xlink_rating_text` text NOT NULL,
`xlink_updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
`xlink_static` tinyint(1) NOT NULL DEFAULT 0 ,
`xlink_sig` text NOT NULL,
PRIMARY KEY (`xlink_id`),
- KEY `xlink_xchan` (`xlink_xchan`),
- KEY `xlink_link` (`xlink_link`),
+ KEY `xlink_xchan` (`xlink_xchan`(191)),
+ KEY `xlink_link` (`xlink_link`(191)),
KEY `xlink_updated` (`xlink_updated`),
KEY `xlink_rating` (`xlink_rating`),
KEY `xlink_static` (`xlink_static`)
@@ -1386,54 +1238,54 @@ CREATE TABLE IF NOT EXISTS `xlink` (
CREATE TABLE IF NOT EXISTS `xperm` (
`xp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xp_client` varchar(20) NOT NULL DEFAULT '',
+ `xp_client` varchar(255) NOT NULL DEFAULT '',
`xp_channel` int(10) unsigned NOT NULL DEFAULT 0 ,
- `xp_perm` varchar(64) NOT NULL DEFAULT '',
+ `xp_perm` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`xp_id`),
- KEY `xp_client` (`xp_client`),
+ KEY `xp_client` (`xp_client`(191)),
KEY `xp_channel` (`xp_channel`),
- KEY `xp_perm` (`xp_perm`)
+ KEY `xp_perm` (`xp_perm`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `xprof` (
- `xprof_hash` char(191) NOT NULL,
+ `xprof_hash` varchar(255) NOT NULL,
`xprof_age` tinyint(3) unsigned NOT NULL DEFAULT 0 ,
- `xprof_desc` char(191) NOT NULL DEFAULT '',
- `xprof_dob` char(12) NOT NULL DEFAULT '',
- `xprof_gender` char(191) NOT NULL DEFAULT '',
- `xprof_marital` char(191) NOT NULL DEFAULT '',
- `xprof_sexual` char(191) NOT NULL DEFAULT '',
- `xprof_locale` char(191) NOT NULL DEFAULT '',
- `xprof_region` char(191) NOT NULL DEFAULT '',
- `xprof_postcode` char(32) NOT NULL DEFAULT '',
- `xprof_country` char(191) NOT NULL DEFAULT '',
+ `xprof_desc` varchar(255) NOT NULL DEFAULT '',
+ `xprof_dob` varchar(255) NOT NULL DEFAULT '',
+ `xprof_gender` varchar(255) NOT NULL DEFAULT '',
+ `xprof_marital` varchar(255) NOT NULL DEFAULT '',
+ `xprof_sexual` varchar(255) NOT NULL DEFAULT '',
+ `xprof_locale` varchar(255) NOT NULL DEFAULT '',
+ `xprof_region` varchar(255) NOT NULL DEFAULT '',
+ `xprof_postcode` varchar(255) NOT NULL DEFAULT '',
+ `xprof_country` varchar(255) NOT NULL DEFAULT '',
`xprof_keywords` text NOT NULL,
`xprof_about` text NOT NULL,
- `xprof_pronouns` char(191) NOT NULL DEFAULT '',
- `xprof_homepage` char(191) NOT NULL DEFAULT '',
- `xprof_hometown` char(191) NOT NULL DEFAULT '',
- PRIMARY KEY (`xprof_hash`),
- KEY `xprof_desc` (`xprof_desc`),
- KEY `xprof_dob` (`xprof_dob`),
- KEY `xprof_gender` (`xprof_gender`),
- KEY `xprof_marital` (`xprof_marital`),
- KEY `xprof_sexual` (`xprof_sexual`),
- KEY `xprof_locale` (`xprof_locale`),
- KEY `xprof_region` (`xprof_region`),
- KEY `xprof_postcode` (`xprof_postcode`),
- KEY `xprof_country` (`xprof_country`),
+ `xprof_pronouns` varchar(255) NOT NULL DEFAULT '',
+ `xprof_homepage` varchar(255) NOT NULL DEFAULT '',
+ `xprof_hometown` varchar(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`xprof_hash`(191)),
+ KEY `xprof_desc` (`xprof_desc`(191)),
+ KEY `xprof_dob` (`xprof_dob`(191)),
+ KEY `xprof_gender` (`xprof_gender`(191)),
+ KEY `xprof_marital` (`xprof_marital`(191)),
+ KEY `xprof_sexual` (`xprof_sexual`(191)),
+ KEY `xprof_locale` (`xprof_locale`(191)),
+ KEY `xprof_region` (`xprof_region`(191)),
+ KEY `xprof_postcode` (`xprof_postcode`(191)),
+ KEY `xprof_country` (`xprof_country`(191)),
KEY `xprof_age` (`xprof_age`),
- KEY `xprof_hometown` (`xprof_hometown`)
+ KEY `xprof_hometown` (`xprof_hometown`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `xtag` (
`xtag_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xtag_hash` char(191) NOT NULL DEFAULT '',
- `xtag_term` char(191) NOT NULL DEFAULT '',
+ `xtag_hash` varchar(255) NOT NULL DEFAULT '',
+ `xtag_term` varchar(255) NOT NULL DEFAULT '',
`xtag_flags` int(11) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`xtag_id`),
- KEY `xtag_term` (`xtag_term`),
- KEY `xtag_hash` (`xtag_hash`),
+ KEY `xtag_term` (`xtag_term`(191)),
+ KEY `xtag_hash` (`xtag_hash`(191)),
KEY `xtag_flags` (`xtag_flags`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -1627,7 +1479,7 @@ CREATE TABLE if not exists oauth_access_tokens (
user_id int(10) unsigned NOT NULL DEFAULT 0,
expires TIMESTAMP NOT NULL,
scope VARCHAR(4000),
- KEY `access_token` (`access_token`(192))
+ KEY `access_token` (`access_token`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE if not exists oauth_authorization_codes (
@@ -1651,9 +1503,9 @@ CREATE TABLE if not exists oauth_refresh_tokens (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE if not exists oauth_scopes (
- scope VARCHAR(191) NOT NULL,
+ scope VARCHAR(255) NOT NULL,
is_default TINYINT(1),
- PRIMARY KEY (scope)
+ PRIMARY KEY (scope(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE if not exists oauth_jwt (
diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql
index c94a0c65a..d6f113c86 100644
--- a/install/schema_postgres.sql
+++ b/install/schema_postgres.sql
@@ -17,8 +17,6 @@ CREATE TABLE "abook" (
"abook_channel" bigint NOT NULL,
"abook_xchan" text NOT NULL DEFAULT '',
"abook_alias" text NOT NULL DEFAULT '',
- "abook_my_perms" bigint NOT NULL,
- "abook_their_perms" bigint NOT NULL,
"abook_closeness" numeric(3) NOT NULL DEFAULT '99',
"abook_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"abook_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -46,8 +44,6 @@ CREATE TABLE "abook" (
create index "abook_channel" on abook ("abook_channel");
create index "abook_xchan" on abook ("abook_xchan");
create index "abook_alias" on abook ("abook_alias");
- create index "abook_my_perms" on abook ("abook_my_perms");
- create index "abook_their_perms" on abook ("abook_their_perms");
create index "abook_closeness" on abook ("abook_closeness");
create index "abook_created" on abook ("abook_created");
create index "abook_updated" on abook ("abook_updated");
@@ -180,7 +176,7 @@ CREATE TABLE "attach" (
"os_storage" smallint NOT NULL DEFAULT '0',
"os_path" text NOT NULL,
"display_path" text NOT NULL,
- "content" bytea NOT NULL,
+ "content" text NOT NULL,
"created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"allow_cid" text NOT NULL,
@@ -373,20 +369,6 @@ CREATE TABLE "config" (
PRIMARY KEY ("id"),
UNIQUE ("cat","k")
);
-CREATE TABLE "conv" (
- "id" serial NOT NULL,
- "guid" text NOT NULL,
- "recips" text NOT NULL,
- "uid" bigint NOT NULL,
- "creator" text NOT NULL,
- "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "subject" text NOT NULL,
- PRIMARY KEY ("id")
-);
-create index "conv_created_idx" on conv ("created");
-create index "conv_updated_idx" on conv ("updated");
-
CREATE TABLE IF NOT EXISTS "dreport" (
"dreport_id" serial NOT NULL,
"dreport_channel" int NOT NULL DEFAULT '0',
@@ -757,51 +739,6 @@ CREATE TABLE listeners (
create index "target_id_idx" on listeners ("target_id");
create index "portable_id_idx" on listeners ("portable_id");
create index "ltype_idx" on listeners ("ltype");
-
-CREATE TABLE "mail" (
- "id" serial NOT NULL,
- "convid" bigint NOT NULL DEFAULT '0',
- "conv_guid" text NOT NULL,
- "mail_flags" bigint NOT NULL DEFAULT '0',
- "from_xchan" text NOT NULL DEFAULT '',
- "to_xchan" text NOT NULL DEFAULT '',
- "account_id" bigint NOT NULL DEFAULT '0',
- "channel_id" bigint NOT NULL DEFAULT '0',
- "mail_mimetype" varchar(64) NOT NULL DEFAULT '0',
- "title" text NOT NULL,
- "body" text NOT NULL,
- "sig" text NOT NULL,
- "attach" text NOT NULL DEFAULT '',
- "mid" text NOT NULL,
- "parent_mid" text NOT NULL,
- "mail_deleted" smallint NOT NULL DEFAULT '0',
- "mail_replied" smallint NOT NULL DEFAULT '0',
- "mail_isreply" smallint NOT NULL DEFAULT '0',
- "mail_seen" smallint NOT NULL DEFAULT '0',
- "mail_recalled" smallint NOT NULL DEFAULT '0',
- "mail_obscured" smallint NOT NULL DEFAULT '0',
- "mail_raw" smallint NOT NULL DEFAULT '0',
- "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "expires" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY ("id")
-);
-create index "mail_convid" on mail ("convid");
-create index "mail_conv_guid" on mail ("conv_guid");
-create index "mail_created" on mail ("created");
-create index "mail_flags" on mail ("mail_flags");
-create index "mail_account_id" on mail ("account_id");
-create index "mail_channel_id" on mail ("channel_id");
-create index "mail_from_xchan" on mail ("from_xchan");
-create index "mail_to_xchan" on mail ("to_xchan");
-create index "mail_mid" on mail ("mid");
-create index "mail_parent_mid" on mail ("parent_mid");
-create index "mail_expires" on mail ("expires");
-create index "mail_deleted" on mail ("mail_deleted");
-create index "mail_replied" on mail ("mail_replied");
-create index "mail_isreply" on mail ("mail_isreply");
-create index "mail_seen" on mail ("mail_seen");
-create index "mail_recalled" on mail ("mail_recalled");
-create index "mail_obscured" on mail ("mail_obscured");
CREATE TABLE "menu" (
"menu_id" serial NOT NULL,
"menu_channel_id" bigint NOT NULL DEFAULT '0',
@@ -948,7 +885,7 @@ CREATE TABLE "photo" (
"height" numeric(6) NOT NULL,
"width" numeric(6) NOT NULL,
"filesize" bigint NOT NULL DEFAULT '0',
- "content" bytea NOT NULL,
+ "content" text NOT NULL,
"imgscale" numeric(3) NOT NULL DEFAULT '0',
"profile" numeric(1) NOT NULL DEFAULT '0',
"photo_usage" smallint NOT NULL DEFAULT '0',
@@ -1433,7 +1370,7 @@ CREATE UNIQUE INDEX addressbooks_ukey
CREATE TABLE cards (
id SERIAL NOT NULL,
addressbookid INTEGER NOT NULL,
- carddata BYTEA,
+ carddata text,
uri VARCHAR(200),
lastmodified INTEGER,
etag VARCHAR(32),
@@ -1462,7 +1399,7 @@ CREATE INDEX addressbookchanges_addressbookid_synctoken_ix
CREATE TABLE calendarobjects (
id SERIAL NOT NULL,
- calendardata BYTEA,
+ calendardata text NOT NULL,
uri VARCHAR(200),
calendarid INTEGER NOT NULL,
lastmodified INTEGER,
@@ -1559,7 +1496,7 @@ CREATE INDEX calendarchanges_calendarid_synctoken_ix
CREATE TABLE schedulingobjects (
id SERIAL NOT NULL,
principaluri VARCHAR(255),
- calendardata BYTEA,
+ calendardata text,
uri VARCHAR(200),
lastmodified INTEGER,
etag VARCHAR(32),
@@ -1616,7 +1553,7 @@ CREATE TABLE propertystorage (
path VARCHAR(1024) NOT NULL,
name VARCHAR(100) NOT NULL,
valuetype INT,
- value BYTEA
+ value text
);
ALTER TABLE ONLY propertystorage
diff --git a/util/Doxyfile b/util/Doxyfile
index 0948c0183..7e82980ae 100644
--- a/util/Doxyfile
+++ b/util/Doxyfile
@@ -1,8 +1,8 @@
INPUT = README.md index.php boot.php include/ install/ util/ view/ Code/
RECURSIVE = YES
-PROJECT_NAME = "Hubzilla"
-PROJECT_LOGO = images/rm-64.png
-EXCLUDE = .htconfig.php library/ doc/ store/ vendor/ .git/ util/zotsh/easywebdav/ util/generate-hooks-index/
+PROJECT_NAME = "Streams"
+PROJECT_LOGO = images/streams-64.png
+EXCLUDE = .htconfig.php library/ doc/ store/ vendor/ .git/ util/generate-hooks-index/
EXCLUDE_PATTERNS = *smarty3* *strings.php *.out *test*
OUTPUT_DIRECTORY = doc
GENERATE_HTML = YES
diff --git a/util/README b/util/README
index 75732bbf4..89dcc9325 100644
--- a/util/README
+++ b/util/README
@@ -102,7 +102,7 @@ When strings are added or modified in source, you could run
to extract strings from source files and join them with the existing .po file:
new strings are added, the existing are not overwritten.
-If you already translated the Hubzilla using strings.php, you could import your old
+If you already translated the project using strings.php, you could import your old
translation to messages.po. Run:
$ php util/php2po.php view//strings.php
diff --git a/util/dcp b/util/dcp
index 45a2d27d0..7bfa8aab4 100755
--- a/util/dcp
+++ b/util/dcp
@@ -7,7 +7,7 @@ use Code\Daemon\Run;
use Code\Lib\Channel;
if(!file_exists('include/cli_startup.php')) {
- echo 'Run dcp from the top level Hubzilla web directory, as util/dcp ' . PHP_EOL;
+ echo 'Run dcp from the top level web directory, as util/dcp ' . PHP_EOL;
exit(1);
}
diff --git a/util/dmkdir b/util/dmkdir
index 90f35fea3..c58171c9c 100755
--- a/util/dmkdir
+++ b/util/dmkdir
@@ -8,7 +8,7 @@ use Code\Lib\Channel;
// file import to DAV utility
if(!file_exists('include/cli_startup.php')) {
- echo 'Run dmkdir from the top level Hubzilla web directory, as util/dmkdir ' . PHP_EOL;
+ echo 'Run dmkdir from the top level web directory, as util/dmkdir ' . PHP_EOL;
exit(1);
}
diff --git a/util/generate-hooks-index/README.md b/util/generate-hooks-index/README.md
index a3d4f7666..0e1685d6d 100644
--- a/util/generate-hooks-index/README.md
+++ b/util/generate-hooks-index/README.md
@@ -1,12 +1,12 @@
# Generate hooks
-This program generates hooks.html documentation from the Hubzilla source.
+This program generates hooks.html documentation from the project source.
## Usage
Download and install leiningen
-Change directory into hubzilla/util/generate-hooks-index
+Change directory into util/generate-hooks-index
At shell prompt, do:
@@ -14,7 +14,7 @@ At shell prompt, do:
lein run
```
-Hooks docs will get dumped into hubzilla/doc/hooks.html
+Hooks docs will get dumped into doc/hooks.html
## Requirements
diff --git a/util/generate-hooks-index/project.clj b/util/generate-hooks-index/project.clj
index dc0b92f51..ea7520efe 100644
--- a/util/generate-hooks-index/project.clj
+++ b/util/generate-hooks-index/project.clj
@@ -1,6 +1,6 @@
(defproject generate-hooks-index "0.1.0-SNAPSHOT"
- :description "Generates Hooks docs for Hubzilla"
- :url "https://framagit.org/hubzilla/core/"
+ :description "Generates Hooks docs from source code"
+ :url "https://codeberg.org/streams/streams"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.7.0"]
diff --git a/util/messages.po b/util/messages.po
index 67334ba89..b9dedfe02 100644
--- a/util/messages.po
+++ b/util/messages.po
@@ -1,14 +1,14 @@
-# zap
-# Copyright (C) 2010-2020 zap
-# This file is distributed under the same license as the zap package.
+# streams
+# Copyright (C) 2010-2022 streams
+# This file is distributed under the same license as the streams package.
# Nobody, 2010
#
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 22.02.17\n"
+"Project-Id-Version: 22.02.25\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-02-16 11:48-0800\n"
+"POT-Creation-Date: 2022-02-24 16:01-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -17,105 +17,6 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: Code/Access/PermissionRoles.php:138
-msgid "Social Networking"
-msgstr ""
-
-#: Code/Access/PermissionRoles.php:139
-msgid "Social - Normal"
-msgstr ""
-
-#: Code/Access/PermissionRoles.php:140
-msgid "Social - Restricted"
-msgstr ""
-
-#: Code/Access/PermissionRoles.php:143
-msgid "Community Group"
-msgstr ""
-
-#: Code/Access/PermissionRoles.php:144
-msgid "Group - Normal"
-msgstr ""
-
-#: Code/Access/PermissionRoles.php:145
-msgid "Group - Restricted"
-msgstr ""
-
-#: Code/Access/PermissionRoles.php:146
-msgid "Group - Moderated"
-msgstr ""
-
-#: Code/Access/Permissions.php:61
-msgid "Grant viewing access to and delivery of your channel stream and posts"
-msgstr ""
-
-#: Code/Access/Permissions.php:62
-msgid "Grant viewing access to your default channel profile"
-msgstr ""
-
-#: Code/Access/Permissions.php:63
-msgid "Grant viewing access to your address book (connections)"
-msgstr ""
-
-#: Code/Access/Permissions.php:64
-msgid "Grant viewing access to your file storage and photos"
-msgstr ""
-
-#: Code/Access/Permissions.php:65
-msgid "Grant permission to post on your channel (wall) page"
-msgstr ""
-
-#: Code/Access/Permissions.php:66
-msgid "Accept delivery of direct messages and personal mail"
-msgstr ""
-
-#: Code/Access/Permissions.php:67
-msgid "Accept delivery of their posts and all comments to their posts"
-msgstr ""
-
-#: Code/Access/Permissions.php:68
-msgid "Accept delivery of their comments and likes on your posts"
-msgstr ""
-
-#: Code/Access/Permissions.php:69
-msgid "Grant upload permissions to your file storage and photos"
-msgstr ""
-
-#: Code/Access/Permissions.php:70
-msgid "Grant permission to republish/mirror your posts"
-msgstr ""
-
-#: Code/Access/Permissions.php:71
-msgid "Accept comments and wall posts only after approval (moderation)"
-msgstr ""
-
-#: Code/Access/Permissions.php:72
-msgid "Grant channel administration (delegation) permission"
-msgstr ""
-
-#: Code/Import/Friendica.php:67 Code/Module/Import.php:165
-#, php-format
-msgid "Your service plan only allows %d channels."
-msgstr ""
-
-#: Code/Import/Friendica.php:198 Code/Lib/Channel.php:453
-msgid "Default Profile"
-msgstr ""
-
-#: Code/Import/Friendica.php:247 Code/Import/Friendica.php:248
-#: Code/Import/Friendica.php:256 Code/Lib/Channel.php:502
-#: Code/Lib/Channel.php:504 Code/Module/Affinity.php:66
-#: Code/Module/Connedit.php:675 Code/Module/Profiles.php:1096
-#: Code/Module/Settings/Channel.php:86 Code/Module/Settings/Channel.php:89
-#: Code/Module/Settings/Channel.php:90 Code/Module/Settings/Channel.php:94
-#: Code/Module/Settings/Channel.php:105 Code/Widget/Affinity.php:31
-msgid "Friends"
-msgstr ""
-
-#: Code/Import/Friendica.php:363 Code/Module/Webpages.php:431
-msgid "Import complete."
-msgstr ""
-
#: Code/Lib/Libprofile.php:41
msgid "Requested channel is not available."
msgstr ""
@@ -126,7 +27,7 @@ msgstr ""
#: Code/Module/Editwebpage.php:45 Code/Module/Hcard.php:19
#: Code/Module/Layouts.php:41 Code/Module/Menu.php:100
#: Code/Module/Profile.php:30 Code/Module/Webpages.php:48
-#: extend/addon/a/gallery/Mod_Gallery.php:52
+#: extend/addon/a/gallery/Mod_Gallery.php:54
msgid "Requested profile is not available."
msgstr ""
@@ -140,7 +41,7 @@ msgid "Edit Profiles"
msgstr ""
#: Code/Lib/Libprofile.php:208 Code/Lib/Libprofile.php:211
-#: Code/Lib/Menu.php:143 Code/Lib/Apps.php:624 Code/Lib/ThreadItem.php:158
+#: Code/Lib/Menu.php:143 Code/Lib/ThreadItem.php:158 Code/Lib/Apps.php:625
#: Code/Module/Admin/Profs.php:192 Code/Module/Blocks.php:173
#: Code/Module/Card_edit.php:110 Code/Module/Connections.php:318
#: Code/Module/Connections.php:357 Code/Module/Connections.php:378
@@ -149,8 +50,8 @@ msgstr ""
#: Code/Module/Lists.php:338 Code/Module/Menu.php:184
#: Code/Module/Settings/Oauth2.php:213 Code/Module/Settings/Oauth.php:166
#: Code/Module/Thing.php:304 Code/Module/Webpages.php:269
-#: Code/Storage/Browser.php:318 Code/Widget/Cdav.php:149
-#: Code/Widget/Cdav.php:184
+#: Code/Widget/Cdav.php:149 Code/Widget/Cdav.php:184
+#: Code/Storage/Browser.php:318
msgid "Edit"
msgstr ""
@@ -175,327 +76,219 @@ msgstr ""
msgid "Edit visibility"
msgstr ""
-#: Code/Lib/Libprofile.php:300 include/connections.php:179
+#: Code/Lib/Libprofile.php:305 include/connections.php:183
#: include/conversation.php:998
msgid "Direct Message"
msgstr ""
-#: Code/Lib/Libprofile.php:313 Code/Module/Directory.php:404
-#: Code/Module/Fedi_id.php:55 Code/Widget/Suggestions.php:49
-#: Code/Widget/Follow.php:41 include/connections.php:151
+#: Code/Lib/Libprofile.php:318 Code/Module/Directory.php:404
+#: Code/Module/Fedi_id.php:55 Code/Widget/Follow.php:41
+#: Code/Widget/Suggestions.php:49 include/connections.php:155
#: include/conversation.php:978
msgid "Connect"
msgstr ""
-#: Code/Lib/Libprofile.php:332 Code/Module/Directory.php:386
+#: Code/Lib/Libprofile.php:337 Code/Module/Directory.php:386
#: include/event.php:84 include/event.php:141
msgid "Location:"
msgstr ""
-#: Code/Lib/Libprofile.php:337 Code/Lib/Libprofile.php:512
+#: Code/Lib/Libprofile.php:342 Code/Lib/Libprofile.php:517
msgid "Gender:"
msgstr ""
-#: Code/Lib/Libprofile.php:338 Code/Lib/Libprofile.php:562
+#: Code/Lib/Libprofile.php:343 Code/Lib/Libprofile.php:567
msgid "Status:"
msgstr ""
-#: Code/Lib/Libprofile.php:339 Code/Lib/Libprofile.php:595
+#: Code/Lib/Libprofile.php:344 Code/Lib/Libprofile.php:600
msgid "Homepage:"
msgstr ""
-#: Code/Lib/Libprofile.php:340 Code/Lib/Libprofile.php:591
+#: Code/Lib/Libprofile.php:345 Code/Lib/Libprofile.php:596
msgid "Pronouns:"
msgstr ""
-#: Code/Lib/Libprofile.php:402 Code/Module/Connections.php:62
+#: Code/Lib/Libprofile.php:407 Code/Module/Connections.php:62
#: Code/Module/Connections.php:121 Code/Module/Connections.php:132
#: Code/Module/Connections.php:292
msgid "Active"
msgstr ""
-#: Code/Lib/Libprofile.php:406
+#: Code/Lib/Libprofile.php:411
msgid "Change your profile photo"
msgstr ""
-#: Code/Lib/Libprofile.php:407
+#: Code/Lib/Libprofile.php:412
msgid "Copy to clipboard"
msgstr ""
-#: Code/Lib/Libprofile.php:408
+#: Code/Lib/Libprofile.php:413
msgid "Address copied to clipboard"
msgstr ""
-#: Code/Lib/Libprofile.php:436 Code/Module/Profiles.php:989
+#: Code/Lib/Libprofile.php:441 Code/Module/Profiles.php:989
#: Code/Module/Profiles.php:1007
msgid "Female"
msgstr ""
-#: Code/Lib/Libprofile.php:439 Code/Module/Profiles.php:989
+#: Code/Lib/Libprofile.php:444 Code/Module/Profiles.php:989
#: Code/Module/Profiles.php:1007
msgid "Male"
msgstr ""
-#: Code/Lib/Libprofile.php:442
+#: Code/Lib/Libprofile.php:447
msgid "Trans"
msgstr ""
-#: Code/Lib/Libprofile.php:445
+#: Code/Lib/Libprofile.php:450
msgid "Inter"
msgstr ""
-#: Code/Lib/Libprofile.php:448 Code/Module/Profiles.php:989
+#: Code/Lib/Libprofile.php:453 Code/Module/Profiles.php:989
msgid "Neuter"
msgstr ""
-#: Code/Lib/Libprofile.php:451 Code/Module/Profiles.php:989
+#: Code/Lib/Libprofile.php:456 Code/Module/Profiles.php:989
msgid "Non-specific"
msgstr ""
-#: Code/Lib/Libprofile.php:465
+#: Code/Lib/Libprofile.php:470
msgid "She"
msgstr ""
-#: Code/Lib/Libprofile.php:468
+#: Code/Lib/Libprofile.php:473
msgid "Him"
msgstr ""
-#: Code/Lib/Libprofile.php:471
+#: Code/Lib/Libprofile.php:476
msgid "Them"
msgstr ""
-#: Code/Lib/Libprofile.php:509
+#: Code/Lib/Libprofile.php:514
msgid "Full Name:"
msgstr ""
-#: Code/Lib/Libprofile.php:546
+#: Code/Lib/Libprofile.php:551
msgid "j F, Y"
msgstr ""
-#: Code/Lib/Libprofile.php:547
+#: Code/Lib/Libprofile.php:552
msgid "j F"
msgstr ""
-#: Code/Lib/Libprofile.php:554
+#: Code/Lib/Libprofile.php:559
msgid "Birthday:"
msgstr ""
-#: Code/Lib/Libprofile.php:558 Code/Module/Directory.php:381
+#: Code/Lib/Libprofile.php:563 Code/Module/Directory.php:381
msgid "Age:"
msgstr ""
-#: Code/Lib/Libprofile.php:570
+#: Code/Lib/Libprofile.php:575
#, php-format
msgid "for %1$d %2$s"
msgstr ""
-#: Code/Lib/Libprofile.php:582
+#: Code/Lib/Libprofile.php:587
msgid "Tags:"
msgstr ""
-#: Code/Lib/Libprofile.php:587
+#: Code/Lib/Libprofile.php:592
msgid "Sexual Preference:"
msgstr ""
-#: Code/Lib/Libprofile.php:599 Code/Module/Directory.php:401
+#: Code/Lib/Libprofile.php:604 Code/Module/Directory.php:401
msgid "Hometown:"
msgstr ""
-#: Code/Lib/Libprofile.php:603
+#: Code/Lib/Libprofile.php:608
msgid "Political Views:"
msgstr ""
-#: Code/Lib/Libprofile.php:607
+#: Code/Lib/Libprofile.php:612
msgid "Religion:"
msgstr ""
-#: Code/Lib/Libprofile.php:611 Code/Module/Directory.php:403
+#: Code/Lib/Libprofile.php:616 Code/Module/Directory.php:403
msgid "About:"
msgstr ""
-#: Code/Lib/Libprofile.php:615
+#: Code/Lib/Libprofile.php:620
msgid "Hobbies/Interests:"
msgstr ""
-#: Code/Lib/Libprofile.php:619
+#: Code/Lib/Libprofile.php:624
msgid "Likes:"
msgstr ""
-#: Code/Lib/Libprofile.php:623
+#: Code/Lib/Libprofile.php:628
msgid "Dislikes:"
msgstr ""
-#: Code/Lib/Libprofile.php:627
+#: Code/Lib/Libprofile.php:632
msgid "Contact information and Social Networks:"
msgstr ""
-#: Code/Lib/Libprofile.php:631
+#: Code/Lib/Libprofile.php:636
msgid "My other channels:"
msgstr ""
-#: Code/Lib/Libprofile.php:635
+#: Code/Lib/Libprofile.php:640
msgid "Musical interests:"
msgstr ""
-#: Code/Lib/Libprofile.php:639
+#: Code/Lib/Libprofile.php:644
msgid "Books, literature:"
msgstr ""
-#: Code/Lib/Libprofile.php:643
+#: Code/Lib/Libprofile.php:648
msgid "Television:"
msgstr ""
-#: Code/Lib/Libprofile.php:647
+#: Code/Lib/Libprofile.php:652
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: Code/Lib/Libprofile.php:651
+#: Code/Lib/Libprofile.php:656
msgid "Love/Romance:"
msgstr ""
-#: Code/Lib/Libprofile.php:655
+#: Code/Lib/Libprofile.php:660
msgid "Work/employment:"
msgstr ""
-#: Code/Lib/Libprofile.php:659
+#: Code/Lib/Libprofile.php:664
msgid "School/education:"
msgstr ""
-#: Code/Lib/Libprofile.php:683 Code/Lib/Activity.php:2895
-#: Code/Lib/Activity.php:2898 Code/Lib/Activity.php:2918 Code/Lib/Apps.php:397
+#: Code/Lib/Libprofile.php:688 Code/Lib/Activity.php:2894
+#: Code/Lib/Activity.php:2897 Code/Lib/Activity.php:2917 Code/Lib/Apps.php:398
#: Code/Module/Profperm.php:131
msgid "Profile"
msgstr ""
-#: Code/Lib/Libprofile.php:685
+#: Code/Lib/Libprofile.php:690
msgid "Like this thing"
msgstr ""
-#: Code/Lib/Libprofile.php:686 Code/Module/Cal.php:359
+#: Code/Lib/Libprofile.php:691 Code/Module/Cal.php:359
#: Code/Module/Events.php:759
msgid "Export"
msgstr ""
-#: Code/Lib/PermissionDescription.php:40 Code/Lib/Libacl.php:39
-msgid "Visible to your default audience"
+#: Code/Lib/DB_Upgrade.php:70
+msgid "Source code of failed update: "
msgstr ""
-#: Code/Lib/PermissionDescription.php:117 Code/Lib/Libacl.php:137
-msgid "Only me"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:119
-msgid "Public"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:121
-msgid "Anybody in the $Projectname network"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:123
+#: Code/Lib/DB_Upgrade.php:93
#, php-format
-msgid "Any account on %s"
+msgid "Update Error at %s"
msgstr ""
-#: Code/Lib/PermissionDescription.php:125
-msgid "Any of my connections"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:127
-msgid "Only connections I specifically allow"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:129
-msgid "Anybody authenticated (could include visitors from other networks)"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:131
-msgid "Any connections including those who haven't yet been approved"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:180
-msgid ""
-"This is your default setting for the audience of your normal stream, and "
-"posts."
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:182
-msgid ""
-"This is your default setting for who can view your default channel profile"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:184
-msgid "This is your default setting for who can view your connections"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:186
-msgid ""
-"This is your default setting for who can view your file storage and photos"
-msgstr ""
-
-#: Code/Lib/PermissionDescription.php:188
-msgid "This is your default setting for the audience of your webpages"
-msgstr ""
-
-#: Code/Lib/Account.php:34
-msgid "Not a valid email address"
-msgstr ""
-
-#: Code/Lib/Account.php:36
-msgid "Your email domain is not among those allowed on this site"
-msgstr ""
-
-#: Code/Lib/Account.php:43
-msgid "Your email address is already registered at this site."
-msgstr ""
-
-#: Code/Lib/Account.php:78
-msgid "An invitation is required."
-msgstr ""
-
-#: Code/Lib/Account.php:82
-msgid "Invitation could not be verified."
-msgstr ""
-
-#: Code/Lib/Account.php:164
-msgid "Please enter the required information."
-msgstr ""
-
-#: Code/Lib/Account.php:228
-msgid "Failed to store account information."
-msgstr ""
-
-#: Code/Lib/Account.php:321
+#: Code/Lib/DB_Upgrade.php:100
#, php-format
-msgid "Registration confirmation for %s"
-msgstr ""
-
-#: Code/Lib/Account.php:398
-#, php-format
-msgid "Registration request at %s"
-msgstr ""
-
-#: Code/Lib/Account.php:422
-msgid "your registration password"
-msgstr ""
-
-#: Code/Lib/Account.php:428 Code/Lib/Account.php:498
-#, php-format
-msgid "Registration details for %s"
-msgstr ""
-
-#: Code/Lib/Account.php:510
-msgid "Account approved."
-msgstr ""
-
-#: Code/Lib/Account.php:557
-#, php-format
-msgid "Registration revoked for %s"
-msgstr ""
-
-#: Code/Lib/Account.php:699 Code/Module/Admin/Accounts.php:103
-#, php-format
-msgid "Account '%s' deleted"
+msgid "Update %s failed. See error logs."
msgstr ""
#: Code/Lib/Libzotdir.php:122
@@ -508,7 +301,7 @@ msgstr ""
#: Code/Lib/Libzotdir.php:124 Code/Lib/Libzotdir.php:125
#: Code/Lib/Libzotdir.php:128 Code/Lib/Libzotdir.php:129
-#: Code/Module/Admin/Site.php:291 Code/Module/Admin/Site.php:339
+#: Code/Module/Admin/Site.php:256 Code/Module/Admin/Site.php:304
#: Code/Module/Ap_probe.php:26 Code/Module/Api.php:113
#: Code/Module/Connedit.php:348 Code/Module/Connedit.php:735
#: Code/Module/Connedit.php:821 Code/Module/Defperms.php:192
@@ -520,19 +313,19 @@ msgstr ""
#: Code/Module/Mitem.php:192 Code/Module/Mitem.php:271
#: Code/Module/Mitem.php:272 Code/Module/Photos.php:738
#: Code/Module/Profiles.php:728 Code/Module/Settings/Permcats.php:117
-#: Code/Module/Settings/Channel.php:420 Code/Module/Settings/Display.php:117
+#: Code/Module/Settings/Channel.php:420 Code/Module/Settings/Display.php:118
#: Code/Module/Zot_probe.php:22 Code/Module/Sources.php:132
-#: Code/Module/Sources.php:168 Code/Storage/Browser.php:435 boot.php:1730
-#: extend/addon/a/content_import/Mod_content_import.php:138
+#: Code/Module/Sources.php:168 Code/Storage/Browser.php:435 boot.php:1718
#: extend/addon/a/content_import/Mod_content_import.php:139
-#: extend/addon/a/zotpost/Mod_zotpost.php:78 include/conversation.php:1436
+#: extend/addon/a/content_import/Mod_content_import.php:140
+#: extend/addon/a/zotpost/Mod_zotpost.php:79 include/conversation.php:1436
#: include/conversation.php:1441 view/theme/redbasic/php/config.php:102
msgid "No"
msgstr ""
#: Code/Lib/Libzotdir.php:124 Code/Lib/Libzotdir.php:125
#: Code/Lib/Libzotdir.php:128 Code/Lib/Libzotdir.php:129
-#: Code/Module/Admin/Site.php:293 Code/Module/Admin/Site.php:339
+#: Code/Module/Admin/Site.php:258 Code/Module/Admin/Site.php:304
#: Code/Module/Ap_probe.php:26 Code/Module/Api.php:112
#: Code/Module/Connedit.php:348 Code/Module/Connedit.php:735
#: Code/Module/Connedit.php:821 Code/Module/Defperms.php:192
@@ -544,12 +337,12 @@ msgstr ""
#: Code/Module/Mitem.php:192 Code/Module/Mitem.php:271
#: Code/Module/Mitem.php:272 Code/Module/Photos.php:738
#: Code/Module/Profiles.php:728 Code/Module/Settings/Permcats.php:117
-#: Code/Module/Settings/Channel.php:420 Code/Module/Settings/Display.php:117
+#: Code/Module/Settings/Channel.php:420 Code/Module/Settings/Display.php:118
#: Code/Module/Zot_probe.php:22 Code/Module/Sources.php:132
-#: Code/Module/Sources.php:168 Code/Storage/Browser.php:435 boot.php:1730
-#: extend/addon/a/content_import/Mod_content_import.php:138
+#: Code/Module/Sources.php:168 Code/Storage/Browser.php:435 boot.php:1718
#: extend/addon/a/content_import/Mod_content_import.php:139
-#: extend/addon/a/zotpost/Mod_zotpost.php:78 include/conversation.php:1436
+#: extend/addon/a/content_import/Mod_content_import.php:140
+#: extend/addon/a/zotpost/Mod_zotpost.php:79 include/conversation.php:1436
#: include/conversation.php:1441 view/theme/redbasic/php/config.php:102
msgid "Yes"
msgstr ""
@@ -566,90 +359,28 @@ msgstr ""
msgid "Recently Updated"
msgstr ""
-#: Code/Lib/Activity.php:2207 Code/Lib/Apps.php:1155 Code/Lib/Apps.php:1247
-#: Code/Module/Cdav.php:865 Code/Module/Cdav.php:866 Code/Module/Cdav.php:872
-#: Code/Module/Embedphotos.php:218 Code/Module/Photos.php:862
-#: Code/Module/Photos.php:1337 Code/Storage/Browser.php:182
-#: Code/Widget/Album.php:96 Code/Widget/Portfolio.php:109
-#: include/conversation.php:1085
-msgid "Unknown"
+#: Code/Lib/Permcat.php:77
+msgctxt "permcat"
+msgid "default"
msgstr ""
-#: Code/Lib/Activity.php:2895
-#, php-format
-msgid "Likes %1$s's %2$s"
+#: Code/Lib/Permcat.php:156
+msgctxt "permcat"
+msgid "follower"
msgstr ""
-#: Code/Lib/Activity.php:2898
-#, php-format
-msgid "Doesn't like %1$s's %2$s"
+#: Code/Lib/Permcat.php:160
+msgctxt "permcat"
+msgid "contributor"
msgstr ""
-#: Code/Lib/Activity.php:2904
-#, php-format
-msgid "Will attend %s's event"
+#: Code/Lib/Permcat.php:164
+msgctxt "permcat"
+msgid "publisher"
msgstr ""
-#: Code/Lib/Activity.php:2907
-#, php-format
-msgid "Will not attend %s's event"
-msgstr ""
-
-#: Code/Lib/Activity.php:2910
-#, php-format
-msgid "May attend %s's event"
-msgstr ""
-
-#: Code/Lib/Activity.php:2913
-#, php-format
-msgid "May not attend %s's event"
-msgstr ""
-
-#: Code/Lib/Activity.php:2918 Code/Lib/Share.php:136 Code/Module/Share.php:119
-#: include/items.php:3295
-#, php-format
-msgid "🔁 Repeated %1$s's %2$s"
-msgstr ""
-
-#: Code/Lib/Activity.php:3393 include/text.php:1697 include/text.php:3152
-#, php-format
-msgid "%1$s (%2$s)"
-msgstr ""
-
-#: Code/Lib/AccessList.php:31
-msgid ""
-"A deleted list with this name was revived. Existing item permissions "
-"may apply to this list and any future members. If this is "
-"not what you intended, please create another list with a different name."
-msgstr ""
-
-#: Code/Lib/AccessList.php:347
-msgid "Add new connections to this access list"
-msgstr ""
-
-#: Code/Lib/AccessList.php:374
-msgid "edit"
-msgstr ""
-
-#: Code/Lib/AccessList.php:393 Code/Lib/Apps.php:377 Code/Lib/Navbar.php:116
-#: Code/Widget/Activity_filter.php:178
-msgid "Lists"
-msgstr ""
-
-#: Code/Lib/AccessList.php:394
-msgid "Edit list"
-msgstr ""
-
-#: Code/Lib/AccessList.php:395
-msgid "Create new list"
-msgstr ""
-
-#: Code/Lib/AccessList.php:396
-msgid "Channels not in any access list"
-msgstr ""
-
-#: Code/Lib/AccessList.php:398 Code/Widget/Savedsearch.php:98
-msgid "add"
+#: Code/Lib/Permcat.php:191
+msgid "custom"
msgstr ""
#: Code/Lib/Oembed.php:166
@@ -672,6 +403,393 @@ msgstr ""
msgid "Embedding disabled"
msgstr ""
+#: Code/Lib/Libsync.php:980
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:120 include/conversation.php:614
+msgid "Public visibility"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:122 include/conversation.php:616
+msgid "Direct message (private mail)"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:125 include/conversation.php:619
+msgid "Restricted visibility"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:150
+msgid ""
+"This comment is part of a private conversation, yet was shared with the "
+"public. Discretion advised."
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:195 Code/Lib/Apps.php:626
+#: Code/Module/Admin/Profs.php:193 Code/Module/Admin/Channels.php:177
+#: Code/Module/Admin/Accounts.php:188 Code/Module/Blocks.php:175
+#: Code/Module/Card_edit.php:140 Code/Module/Cdav.php:1064
+#: Code/Module/Cdav.php:1373 Code/Module/Connections.php:326
+#: Code/Module/Connedit.php:619 Code/Module/Connedit.php:889
+#: Code/Module/Editblock.php:154 Code/Module/Editlayout.php:151
+#: Code/Module/Editwebpage.php:185 Code/Module/Photos.php:1271
+#: Code/Module/Profiles.php:853 Code/Module/Settings/Oauth2.php:214
+#: Code/Module/Settings/Oauth.php:167 Code/Module/Thing.php:305
+#: Code/Module/Webpages.php:271 Code/Storage/Browser.php:319
+#: include/conversation.php:606 include/conversation.php:660
+msgid "Delete"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:198 Code/Storage/Browser.php:306
+msgid "Admin Delete"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:203 include/conversation.php:605
+msgid "Select"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:207 Code/Module/Filer.php:63
+msgid "Save to Folder"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:229
+msgid "I will attend"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:229
+msgid "I will not attend"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:229
+msgid "I might attend"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:230
+msgid "Undo attendance"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:245 Code/Lib/ThreadItem.php:265
+#: Code/Module/Photos.php:1231 Code/Module/Photos.php:1242
+msgid "View all"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:250 Code/Module/Photos.php:1235
+#: include/taxonomy.php:743 include/conversation.php:2153
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Lib/ThreadItem.php:252 Code/Lib/ThreadItem.php:499
+#: Code/Module/Photos.php:1351 include/conversation.php:2155
+msgctxt "noun"
+msgid "Likes"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:258 Code/Module/Photos.php:1239
+#: include/conversation.php:2160
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Lib/ThreadItem.php:260 Code/Lib/ThreadItem.php:500
+#: Code/Module/Photos.php:1352 include/conversation.php:2162
+msgctxt "noun"
+msgid "Dislikes"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:286 Code/Module/Admin/Profs.php:103
+#: Code/Module/Admin/Profs.php:124 Code/Module/Filer.php:62
+#: Code/Widget/Notes.php:26 extend/addon/a/queueworker/Mod_Queueworker.php:118
+#: include/text.php:1053 include/text.php:1066
+msgid "Save"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:295 include/conversation.php:627
+msgid "Message signature validated"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:296 include/conversation.php:628
+msgid "Message signature incorrect"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:302
+msgid "Add Tag"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:322 Code/Module/Photos.php:1172
+msgid "I like this"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:322 Code/Module/Photos.php:1176
+msgid "Undo like"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:323 Code/Module/Photos.php:1175
+msgid "I don't like this"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:323 Code/Module/Photos.php:1177
+msgid "Undo dislike"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:329
+msgid "Repeat This"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:330
+msgid "Share this"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:341
+msgid "Delivery Report"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:370
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Lib/ThreadItem.php:371
+#, php-format
+msgid "%d unseen"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:410 Code/Lib/ThreadItem.php:411
+#, php-format
+msgid "View %s's profile - %s"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:414
+msgid "to"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:415 include/conversation.php:690
+msgid "via"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:416
+msgid "Wall-to-Wall"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:417
+msgid "via Wall-To-Wall:"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:432 include/conversation.php:693
+#, php-format
+msgid "from %s"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:435 include/conversation.php:696
+#, php-format
+msgid "last edited: %s"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:436 include/conversation.php:697
+#, php-format
+msgid "Expires: %s"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:446
+msgid "Attend"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:447
+msgid "Attendance Options"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:448
+msgid "Vote"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:449
+msgid "Voting Options"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:450
+msgid "Reply"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:475 include/conversation.php:712
+msgid "Pinned post"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:477 Code/Lib/Stringsjs.php:47
+#: include/conversation.php:714
+msgid "Unpin this post"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:477 Code/Lib/Stringsjs.php:46
+#: include/conversation.php:714
+msgid "Pin this post"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:479
+msgid "Saved draft"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:480
+msgid "Save Bookmarks"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:481
+msgid "Add to Calendar"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:492 Code/Module/Notifications.php:75
+msgid "Mark all seen"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:505 Code/Lib/Libacl.php:156
+#: Code/Module/Photos.php:1357 Code/Module/Settings/Channel.php:690
+#: include/conversation.php:1500
+msgid "Close"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:510 include/conversation.php:418
+msgid "This is an unsaved preview"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:511 Code/Module/Photos.php:1179
+#: include/conversation.php:717
+msgid "Please wait"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:576 Code/Lib/Stringsjs.php:16
+#, php-format
+msgid "%s show all"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:951 Code/Module/Photos.php:1195
+#: Code/Module/Photos.php:1305
+msgid "This is you"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:953 Code/Lib/Stringsjs.php:15
+#: Code/Module/Photos.php:1197 Code/Module/Photos.php:1307
+msgid "Comment"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:954 Code/Lib/Stringsjs.php:31
+#: Code/Module/Admin/Security.php:172 Code/Module/Admin/Profs.php:195
+#: Code/Module/Admin/Logs.php:87 Code/Module/Admin/Channels.php:175
+#: Code/Module/Admin/Accounts.php:181 Code/Module/Admin/Account_edit.php:81
+#: Code/Module/Admin/Site.php:281 Code/Module/Admin/Addons.php:440
+#: Code/Module/Admin/Themes.php:172 Code/Module/Affinity.php:89
+#: Code/Module/Ap_probe.php:27 Code/Module/Appman.php:163
+#: Code/Module/Cal.php:363 Code/Module/Chat.php:214 Code/Module/Chat.php:250
+#: Code/Module/Connect.php:99 Code/Module/Connedit.php:853
+#: Code/Module/Content_filter.php:68 Code/Module/Defperms.php:258
+#: Code/Module/Editpost.php:119 Code/Module/Email_validation.php:48
+#: Code/Module/Events.php:544 Code/Module/Expire.php:50
+#: Code/Module/Filestorage.php:248 Code/Module/Finger.php:26
+#: Code/Module/Import.php:708 Code/Module/Import_items.php:144
+#: Code/Module/Invite.php:171 Code/Module/Lists.php:202
+#: Code/Module/Lists.php:214 Code/Module/Locs.php:138 Code/Module/Mitem.php:274
+#: Code/Module/Mood.php:170 Code/Module/Pconfig.php:129
+#: Code/Module/Pdledit.php:115 Code/Module/Photos.php:1140
+#: Code/Module/Photos.php:1198 Code/Module/Photos.php:1308
+#: Code/Module/Poke.php:151 Code/Module/Profiles.php:772
+#: Code/Module/Settings/Tokens.php:317 Code/Module/Settings/Permcats.php:146
+#: Code/Module/Settings/Oauth2.php:115 Code/Module/Settings/Oauth.php:98
+#: Code/Module/Settings/Network.php:48 Code/Module/Settings/Features.php:66
+#: Code/Module/Settings/Featured.php:63 Code/Module/Settings/Account.php:117
+#: Code/Module/Settings/Channel.php:631 Code/Module/Settings/Display.php:209
+#: Code/Module/Setup.php:334 Code/Module/Setup.php:379
+#: Code/Module/Zot_probe.php:23 Code/Module/Xchan.php:18
+#: Code/Module/Thing.php:364 Code/Module/Thing.php:419
+#: Code/Module/Zotfinger.php:30 Code/Module/Superblock.php:257
+#: Code/Module/Sources.php:133 Code/Module/Sources.php:171
+#: Code/Widget/Eventstools.php:22
+#: extend/addon/a/content_import/Mod_content_import.php:144
+#: extend/addon/a/faces/Mod_Faces.php:183 extend/addon/a/faces/faces.php:126
+#: extend/addon/a/flashcards/Mod_Flashcards.php:265
+#: extend/addon/a/followlist/Mod_followlist.php:139
+#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:58
+#: extend/addon/a/logrot/logrot.php:37 extend/addon/a/nsfw/Mod_Nsfw.php:52
+#: extend/addon/a/openstreetmap/openstreetmap.php:207
+#: extend/addon/a/zotpost/Mod_zotpost.php:83
+#: view/theme/redbasic/php/config.php:97
+msgid "Submit"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:956 include/conversation.php:1418
+msgid "Bold"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:957 include/conversation.php:1419
+msgid "Italic"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:958 include/conversation.php:1420
+msgid "Underline"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:959 include/conversation.php:1421
+msgid "Quote"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:960 include/conversation.php:1422
+msgid "Code"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:961
+msgid "Image"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:962 include/conversation.php:1423
+msgid "Attach/Upload file"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:963
+msgid "Insert Link"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:964
+msgid "Video"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:965 Code/Module/Events.php:529
+#: Code/Module/Photos.php:1199 Code/Module/Webpages.php:276
+#: include/conversation.php:1307
+msgid "Preview"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:966 Code/Module/Lostpass.php:143
+#: Code/Module/Pdledit.php:72 Code/Module/Pdledit.php:80
+msgid "Reset"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:971 Code/Module/Chat.php:222
+#: include/conversation.php:1492
+msgid "Encrypt text"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:976
+msgid "Your full name (required)"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:977
+msgid "Your email address (required)"
+msgstr ""
+
+#: Code/Lib/ThreadItem.php:978
+msgid "Your website URL (optional)"
+msgstr ""
+
+#: Code/Lib/Share.php:136 Code/Lib/Activity.php:2917 Code/Module/Share.php:119
+#: include/items.php:3294
+#, php-format
+msgid "🔁 Repeated %1$s's %2$s"
+msgstr ""
+
#: Code/Lib/Features.php:62
msgid "General Features"
msgstr ""
@@ -700,7 +818,7 @@ msgstr ""
msgid "Enables a tool to store notes and reminders (note: not encrypted)"
msgstr ""
-#: Code/Lib/Features.php:142 Code/Lib/Apps.php:347 Code/Lib/Navbar.php:508
+#: Code/Lib/Features.php:142 Code/Lib/Apps.php:348 Code/Lib/Navbar.php:508
msgid "Articles"
msgstr ""
@@ -752,7 +870,7 @@ msgstr ""
msgid "Enable management and selection of privacy groups"
msgstr ""
-#: Code/Lib/Features.php:250 Code/Lib/Apps.php:390
+#: Code/Lib/Features.php:250 Code/Lib/Apps.php:391
msgid "Permission Categories"
msgstr ""
@@ -865,7 +983,7 @@ msgstr ""
msgid "Filter stream activity by depth of relationships"
msgstr ""
-#: Code/Lib/Features.php:445 Code/Lib/Apps.php:412
+#: Code/Lib/Features.php:445 Code/Lib/Apps.php:413
#: Code/Module/Settings/Network.php:116
msgid "Suggest Channels"
msgstr ""
@@ -935,448 +1053,10 @@ msgstr ""
msgid "Provide a personal tag cloud on your channel page"
msgstr ""
-#: Code/Lib/Permcat.php:77
-msgctxt "permcat"
-msgid "default"
-msgstr ""
-
-#: Code/Lib/Permcat.php:156
-msgctxt "permcat"
-msgid "follower"
-msgstr ""
-
-#: Code/Lib/Permcat.php:160
-msgctxt "permcat"
-msgid "contributor"
-msgstr ""
-
-#: Code/Lib/Permcat.php:164
-msgctxt "permcat"
-msgid "publisher"
-msgstr ""
-
-#: Code/Lib/Permcat.php:191
-msgid "custom"
-msgstr ""
-
-#: Code/Lib/Libzot.php:787
-msgid "Unable to verify channel signature"
-msgstr ""
-
-#: Code/Lib/Connect.php:50 Code/Lib/Connect.php:172
-msgid "Channel is blocked on this site."
-msgstr ""
-
-#: Code/Lib/Connect.php:55
-msgid "Channel location missing."
-msgstr ""
-
-#: Code/Lib/Connect.php:133
-msgid "Remote channel or protocol unavailable."
-msgstr ""
-
-#: Code/Lib/Connect.php:166
-msgid "Channel discovery failed."
-msgstr ""
-
-#: Code/Lib/Connect.php:180
-msgid "Protocol not supported"
-msgstr ""
-
-#: Code/Lib/Connect.php:193
-msgid "Cannot connect to yourself."
-msgstr ""
-
-#: Code/Lib/Connect.php:271
-msgid "error saving data"
-msgstr ""
-
-#: Code/Lib/ServiceClass.php:35
-msgid "Unable to obtain identity information from database"
-msgstr ""
-
-#: Code/Lib/ServiceClass.php:280 Code/Lib/ServiceClass.php:282
-msgid "Click here to upgrade."
-msgstr ""
-
-#: Code/Lib/ServiceClass.php:290
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr ""
-
-#: Code/Lib/ServiceClass.php:296
-msgid "This action is not available under your subscription plan."
-msgstr ""
-
-#: Code/Lib/Apps.php:345
-msgid "Site Admin"
-msgstr ""
-
-#: Code/Lib/Apps.php:346 Code/Lib/Navbar.php:330
-msgid "Apps"
-msgstr ""
-
-#: Code/Lib/Apps.php:348
-msgid "CalDAV"
-msgstr ""
-
-#: Code/Lib/Apps.php:349
-msgid "CardDAV"
-msgstr ""
-
-#: Code/Lib/Apps.php:350 Code/Lib/Navbar.php:497 Code/Module/Cards.php:215
-#: include/conversation.php:2061
-msgid "Cards"
-msgstr ""
-
-#: Code/Lib/Apps.php:351 Code/Lib/Navbar.php:459 Code/Lib/Navbar.php:462
-#: Code/Storage/Browser.php:157
-msgid "Calendar"
-msgstr ""
-
-#: Code/Lib/Apps.php:352 Code/Module/Cdav.php:1077
-#: Code/Widget/Appcategories.php:52 Code/Widget/Categories.php:87
-#: Code/Widget/Categories.php:135 Code/Widget/Categories.php:186
-#: include/taxonomy.php:467 include/taxonomy.php:561 include/taxonomy.php:583
-#: include/taxonomy.php:606
-msgid "Categories"
-msgstr ""
-
-#: Code/Lib/Apps.php:353
-msgid "Channel Home"
-msgstr ""
-
-#: Code/Lib/Apps.php:354
-msgid "Channel Manager"
-msgstr ""
-
-#: Code/Lib/Apps.php:355 Code/Module/Sources.php:115
-msgid "Channel Sources"
-msgstr ""
-
-#: Code/Lib/Apps.php:356
-msgid "Chat"
-msgstr ""
-
-#: Code/Lib/Apps.php:357 Code/Lib/Navbar.php:473 Code/Lib/Navbar.php:476
-#: Code/Widget/Chatroom_list.php:24 include/conversation.php:2036
-#: include/conversation.php:2039
-msgid "Chatrooms"
-msgstr ""
-
-#: Code/Lib/Apps.php:358
-msgid "Clients"
-msgstr ""
-
-#: Code/Lib/Apps.php:359 include/conversation.php:1445
-msgid "Comment Control"
-msgstr ""
-
-#: Code/Lib/Apps.php:360 Code/Module/Affinity.php:68
-#: Code/Module/Connections.php:367 Code/Module/Connedit.php:677
-#: Code/Module/Stream.php:139 Code/Widget/Activity_filter.php:150
-#: Code/Widget/Affinity.php:33 include/connections.php:968
-msgid "Connections"
-msgstr ""
-
-#: Code/Lib/Apps.php:361
-msgid "Content Filter"
-msgstr ""
-
-#: Code/Lib/Apps.php:362
-#: extend/addon/a/content_import/Mod_content_import.php:136
-msgid "Content Import"
-msgstr ""
-
-#: Code/Lib/Apps.php:363 Code/Module/Directory.php:477
-msgid "Directory"
-msgstr ""
-
-#: Code/Lib/Apps.php:364 Code/Widget/Activity_filter.php:81
-msgid "Drafts"
-msgstr ""
-
-#: Code/Lib/Apps.php:365 Code/Widget/Activity_filter.php:109
-#: include/conversation.php:2022 include/conversation.php:2025
-msgid "Events"
-msgstr ""
-
-#: Code/Lib/Apps.php:366
-msgid "Expire Posts"
-msgstr ""
-
-#: Code/Lib/Apps.php:367
-msgid "Features"
-msgstr ""
-
-#: Code/Lib/Apps.php:368 Code/Lib/Navbar.php:448 Code/Module/Fbrowser.php:95
-#: Code/Storage/Browser.php:298 include/conversation.php:2011
-msgid "Files"
-msgstr ""
-
-#: Code/Lib/Apps.php:369 extend/addon/a/followlist/Mod_followlist.php:130
-msgid "Followlist"
-msgstr ""
-
-#: Code/Lib/Apps.php:370 Code/Module/Connedit.php:666
-msgid "Friend Zoom"
-msgstr ""
-
-#: Code/Lib/Apps.php:371
-msgid "Future Posting"
-msgstr ""
-
-#: Code/Lib/Apps.php:372 extend/addon/a/gallery/Mod_Gallery.php:139
-#: extend/addon/a/gallery/gallery.php:47
-msgid "Gallery"
-msgstr ""
-
-#: Code/Lib/Apps.php:373
-msgid "Guest Pass"
-msgstr ""
-
-#: Code/Lib/Apps.php:374 Code/Lib/Navbar.php:190 Code/Lib/Navbar.php:311
-#: include/help.php:70
-msgid "Help"
-msgstr ""
-
-#: Code/Lib/Apps.php:375
-msgid "Invite"
-msgstr ""
-
-#: Code/Lib/Apps.php:376
-msgid "Language"
-msgstr ""
-
-#: Code/Lib/Apps.php:378 Code/Lib/Navbar.php:141 Code/Lib/Navbar.php:144
-#: boot.php:1725
-msgid "Login"
-msgstr ""
-
-#: Code/Lib/Apps.php:379
-msgid "Mail"
-msgstr ""
-
-#: Code/Lib/Apps.php:380
-msgid "Markup"
-msgstr ""
-
-#: Code/Lib/Apps.php:381 Code/Module/Mood.php:166
-msgid "Mood"
-msgstr ""
-
-#: Code/Lib/Apps.php:382
-msgid "My Chatrooms"
-msgstr ""
-
-#: Code/Lib/Apps.php:383
-msgid "No Comment"
-msgstr ""
-
-#: Code/Lib/Apps.php:384 Code/Widget/Notes.php:24
-msgid "Notes"
-msgstr ""
-
-#: Code/Lib/Apps.php:385 Code/Lib/Navbar.php:334
-#: Code/Module/Settings/Channel.php:691 Code/Widget/Notifications.php:152
-msgid "Notifications"
-msgstr ""
-
-#: Code/Lib/Apps.php:386
-msgid "OAuth Apps Manager"
-msgstr ""
-
-#: Code/Lib/Apps.php:387
-msgid "OAuth2 Apps Manager"
-msgstr ""
-
-#: Code/Lib/Apps.php:388
-msgid "Order Apps"
-msgstr ""
-
-#: Code/Lib/Apps.php:389
-msgid "PDL Editor"
-msgstr ""
-
-#: Code/Lib/Apps.php:391 Code/Lib/Navbar.php:440 Code/Module/Fbrowser.php:37
-#: include/conversation.php:2003
-msgid "Photos"
-msgstr ""
-
-#: Code/Lib/Apps.php:392
-msgid "Photomap"
-msgstr ""
-
-#: Code/Lib/Apps.php:393 Code/Module/Poke.php:142
-msgid "Poke"
-msgstr ""
-
-#: Code/Lib/Apps.php:394
-msgid "Post"
-msgstr ""
-
-#: Code/Lib/Apps.php:395
-msgid "Premium Channel"
-msgstr ""
-
-#: Code/Lib/Apps.php:396
-msgid "Probe"
-msgstr ""
-
-#: Code/Lib/Apps.php:398
-msgid "Profile Photo"
-msgstr ""
-
-#: Code/Lib/Apps.php:399
-msgid "Profiles"
-msgstr ""
-
-#: Code/Lib/Apps.php:400 Code/Module/Pubstream.php:99
-#: Code/Widget/Notifications.php:133
-msgid "Public Stream"
-msgstr ""
-
-#: Code/Lib/Apps.php:401
-msgid "Random Channel"
-msgstr ""
-
-#: Code/Lib/Apps.php:402
-msgid "Remote Diagnostics"
-msgstr ""
-
-#: Code/Lib/Apps.php:403
-msgid "Report Bug"
-msgstr ""
-
-#: Code/Lib/Apps.php:404
-msgid "Roles"
-msgstr ""
-
-#: Code/Lib/Apps.php:405 Code/Lib/Navbar.php:197 Code/Lib/Libacl.php:149
-#: Code/Module/Connections.php:374 Code/Module/Search.php:65
-#: Code/Widget/Sitesearch.php:37 include/text.php:1052 include/text.php:1065
-msgid "Search"
-msgstr ""
-
-#: Code/Lib/Apps.php:406
-msgid "Secrets"
-msgstr ""
-
-#: Code/Lib/Apps.php:407 Code/Lib/Navbar.php:118
-#: Code/Module/Admin/Addons.php:341 Code/Module/Admin/Themes.php:139
-#: Code/Widget/Newmember.php:57 Code/Widget/Settings_menu.php:138
-msgid "Settings"
-msgstr ""
-
-#: Code/Lib/Apps.php:408
-msgid "Sites"
-msgstr ""
-
-#: Code/Lib/Apps.php:409
-msgid "Stream"
-msgstr ""
-
-#: Code/Lib/Apps.php:410 Code/Widget/Stream_order.php:139
-msgid "Stream Order"
-msgstr ""
-
-#: Code/Lib/Apps.php:411
-msgid "Suggest"
-msgstr ""
-
-#: Code/Lib/Apps.php:413
-msgid "Tagadelic"
-msgstr ""
-
-#: Code/Lib/Apps.php:414 Code/Widget/Tasklist.php:30
-msgid "Tasks"
-msgstr ""
-
-#: Code/Lib/Apps.php:415
-msgid "View Bookmarks"
-msgstr ""
-
-#: Code/Lib/Apps.php:416 Code/Lib/Navbar.php:130 Code/Module/Connedit.php:551
-msgid "View Profile"
-msgstr ""
-
-#: Code/Lib/Apps.php:417
-msgid "Virtual Lists"
-msgstr ""
-
-#: Code/Lib/Apps.php:418 Code/Lib/Navbar.php:520 Code/Module/Webpages.php:266
-#: include/conversation.php:2083
-msgid "Webpages"
-msgstr ""
-
-#: Code/Lib/Apps.php:419 Code/Lib/Navbar.php:535 include/conversation.php:2099
-msgid "Wiki"
-msgstr ""
-
-#: Code/Lib/Apps.php:420 extend/addon/a/zotpost/Mod_zotpost.php:55
-msgid "ZotPost"
-msgstr ""
-
-#: Code/Lib/Apps.php:597
-msgid "Installed"
-msgstr ""
-
-#: Code/Lib/Apps.php:597 Code/Module/Admin/Addons.php:422
-msgid "Install"
-msgstr ""
-
-#: Code/Lib/Apps.php:621
-msgid "Purchase"
-msgstr ""
-
-#: Code/Lib/Apps.php:625 Code/Lib/ThreadItem.php:195
-#: Code/Module/Admin/Accounts.php:188 Code/Module/Admin/Channels.php:177
-#: Code/Module/Admin/Profs.php:193 Code/Module/Blocks.php:175
-#: Code/Module/Card_edit.php:140 Code/Module/Cdav.php:1064
-#: Code/Module/Cdav.php:1373 Code/Module/Connections.php:326
-#: Code/Module/Connedit.php:619 Code/Module/Connedit.php:889
-#: Code/Module/Editblock.php:154 Code/Module/Editlayout.php:151
-#: Code/Module/Editwebpage.php:185 Code/Module/Photos.php:1271
-#: Code/Module/Profiles.php:853 Code/Module/Settings/Oauth2.php:214
-#: Code/Module/Settings/Oauth.php:167 Code/Module/Thing.php:305
-#: Code/Module/Webpages.php:271 Code/Storage/Browser.php:319
-#: include/conversation.php:606 include/conversation.php:660
-msgid "Delete"
-msgstr ""
-
-#: Code/Lib/Apps.php:626
-msgid "Undelete"
-msgstr ""
-
-#: Code/Lib/Apps.php:636
-msgid "Add to app-tray"
-msgstr ""
-
-#: Code/Lib/Apps.php:637
-msgid "Remove from app-tray"
-msgstr ""
-
-#: Code/Lib/Apps.php:638
-msgid "Pin to navbar"
-msgstr ""
-
-#: Code/Lib/Apps.php:639
-msgid "Unpin from navbar"
-msgstr ""
-
#: Code/Lib/Stringsjs.php:14 include/conversation.php:1301
msgid "Delete this item?"
msgstr ""
-#: Code/Lib/Stringsjs.php:15 Code/Lib/ThreadItem.php:953
-#: Code/Module/Photos.php:1197 Code/Module/Photos.php:1307
-msgid "Comment"
-msgstr ""
-
-#: Code/Lib/Stringsjs.php:16 Code/Lib/ThreadItem.php:576
-#, php-format
-msgid "%s show all"
-msgstr ""
-
#: Code/Lib/Stringsjs.php:17
#, php-format
msgid "%s show less"
@@ -1436,49 +1116,6 @@ msgstr ""
msgid "Describe (optional)"
msgstr ""
-#: Code/Lib/Stringsjs.php:31 Code/Lib/ThreadItem.php:954
-#: Code/Module/Admin/Account_edit.php:81 Code/Module/Admin/Accounts.php:181
-#: Code/Module/Admin/Addons.php:438 Code/Module/Admin/Channels.php:175
-#: Code/Module/Admin/Logs.php:87 Code/Module/Admin/Site.php:316
-#: Code/Module/Admin/Profs.php:195 Code/Module/Admin/Security.php:172
-#: Code/Module/Admin/Themes.php:172 Code/Module/Affinity.php:89
-#: Code/Module/Ap_probe.php:27 Code/Module/Appman.php:163
-#: Code/Module/Cal.php:363 Code/Module/Chat.php:214 Code/Module/Chat.php:250
-#: Code/Module/Connect.php:99 Code/Module/Connedit.php:853
-#: Code/Module/Content_filter.php:68 Code/Module/Defperms.php:258
-#: Code/Module/Editpost.php:119 Code/Module/Email_validation.php:48
-#: Code/Module/Events.php:544 Code/Module/Expire.php:50
-#: Code/Module/Filestorage.php:248 Code/Module/Finger.php:26
-#: Code/Module/Import.php:708 Code/Module/Import_items.php:144
-#: Code/Module/Invite.php:171 Code/Module/Lists.php:202
-#: Code/Module/Lists.php:214 Code/Module/Locs.php:138 Code/Module/Mitem.php:274
-#: Code/Module/Mood.php:170 Code/Module/Pconfig.php:129
-#: Code/Module/Pdledit.php:115 Code/Module/Photos.php:1140
-#: Code/Module/Photos.php:1198 Code/Module/Photos.php:1308
-#: Code/Module/Poke.php:151 Code/Module/Profiles.php:772
-#: Code/Module/Settings/Oauth2.php:115 Code/Module/Settings/Permcats.php:146
-#: Code/Module/Settings/Tokens.php:317 Code/Module/Settings/Channel.php:631
-#: Code/Module/Settings/Account.php:117 Code/Module/Settings/Display.php:208
-#: Code/Module/Settings/Featured.php:63 Code/Module/Settings/Features.php:66
-#: Code/Module/Settings/Network.php:48 Code/Module/Settings/Oauth.php:98
-#: Code/Module/Setup.php:334 Code/Module/Setup.php:379
-#: Code/Module/Thing.php:364 Code/Module/Thing.php:419
-#: Code/Module/Zot_probe.php:23 Code/Module/Xchan.php:18
-#: Code/Module/Sources.php:133 Code/Module/Sources.php:171
-#: Code/Module/Superblock.php:257 Code/Module/Zotfinger.php:30
-#: Code/Widget/Eventstools.php:22
-#: extend/addon/a/content_import/Mod_content_import.php:143
-#: extend/addon/a/faces/faces.php:126 extend/addon/a/faces/Mod_Faces.php:181
-#: extend/addon/a/flashcards/Mod_Flashcards.php:265
-#: extend/addon/a/followlist/Mod_followlist.php:137
-#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:56
-#: extend/addon/a/logrot/logrot.php:36 extend/addon/a/nsfw/Mod_Nsfw.php:50
-#: extend/addon/a/openstreetmap/openstreetmap.php:206
-#: extend/addon/a/zotpost/Mod_zotpost.php:82
-#: view/theme/redbasic/php/config.php:97
-msgid "Submit"
-msgstr ""
-
#: Code/Lib/Stringsjs.php:32
msgid "Please enter a link URL"
msgstr ""
@@ -1540,16 +1177,6 @@ msgstr ""
msgid "Pinned"
msgstr ""
-#: Code/Lib/Stringsjs.php:46 Code/Lib/ThreadItem.php:477
-#: include/conversation.php:714
-msgid "Pin this post"
-msgstr ""
-
-#: Code/Lib/Stringsjs.php:47 Code/Lib/ThreadItem.php:477
-#: include/conversation.php:714
-msgid "Unpin this post"
-msgstr ""
-
#: Code/Lib/Stringsjs.php:48
msgid "Please accept terms to continue"
msgstr ""
@@ -1850,243 +1477,158 @@ msgid ""
"language or topic. Replies are sent back to your main channel"
msgstr ""
-#: Code/Lib/Channel.php:52
-msgid "Empty name"
-msgstr ""
-
-#: Code/Lib/Channel.php:56
-msgid "Name too long"
-msgstr ""
-
-#: Code/Lib/Channel.php:241
-msgid "No account identifier"
-msgstr ""
-
-#: Code/Lib/Channel.php:253
-msgid "Nickname is required."
-msgstr ""
-
-#: Code/Lib/Channel.php:267 Code/Lib/Channel.php:722
-#: Code/Module/Changeaddr.php:72
-msgid "Reserved nickname. Please choose another."
-msgstr ""
-
-#: Code/Lib/Channel.php:272 Code/Lib/Channel.php:727
-#: Code/Module/Changeaddr.php:77
+#: Code/Lib/AccessList.php:31
msgid ""
-"Nickname has unsupported characters or is already being used on this site."
+"A deleted list with this name was revived. Existing item permissions "
+"may apply to this list and any future members. If this is "
+"not what you intended, please create another list with a different name."
msgstr ""
-#: Code/Lib/Channel.php:344
-msgid "Unable to retrieve created identity"
+#: Code/Lib/AccessList.php:347
+msgid "Add new connections to this access list"
msgstr ""
-#: Code/Lib/Channel.php:648 Code/Lib/Channel.php:746
-msgid "Unable to retrieve modified identity"
+#: Code/Lib/AccessList.php:374
+msgid "edit"
msgstr ""
-#: Code/Lib/Channel.php:1813 Code/Module/Cover_photo.php:293
-msgid "cover photo"
+#: Code/Lib/AccessList.php:393 Code/Lib/Apps.php:378 Code/Lib/Navbar.php:116
+#: Code/Widget/Activity_filter.php:178
+msgid "Lists"
msgstr ""
-#: Code/Lib/Channel.php:2114 Code/Module/Rmagic.php:88 boot.php:1726
-msgid "Remote Authentication"
+#: Code/Lib/AccessList.php:394
+msgid "Edit list"
msgstr ""
-#: Code/Lib/Channel.php:2115 Code/Module/Rmagic.php:89
-msgid "Enter your channel address (e.g. channel@example.com)"
+#: Code/Lib/AccessList.php:395
+msgid "Create new list"
msgstr ""
-#: Code/Lib/Channel.php:2116 Code/Module/Rmagic.php:92
-msgid "Authenticate"
+#: Code/Lib/AccessList.php:396
+msgid "Channels not in any access list"
msgstr ""
-#: Code/Lib/Navbar.php:108
-msgid "Remote authentication"
+#: Code/Lib/AccessList.php:398 Code/Widget/Savedsearch.php:98
+msgid "add"
msgstr ""
-#: Code/Lib/Navbar.php:108
-msgid "Click to authenticate to your home hub"
+#: Code/Lib/Chatroom.php:30
+msgid "Missing room name"
msgstr ""
-#: Code/Lib/Navbar.php:113 Code/Module/Admin.php:147
-#: Code/Module/Admin/Channels.php:174 Code/Module/Manage.php:187
-#: Code/Widget/Admin.php:33
-msgid "Channels"
+#: Code/Lib/Chatroom.php:40
+msgid "Duplicate room name"
msgstr ""
-#: Code/Lib/Navbar.php:113
-msgid "Manage your channels"
+#: Code/Lib/Chatroom.php:96 Code/Lib/Chatroom.php:105
+msgid "Invalid room specifier."
msgstr ""
-#: Code/Lib/Navbar.php:116
-msgid "Manage your access lists"
+#: Code/Lib/Chatroom.php:143
+msgid "Room not found."
msgstr ""
-#: Code/Lib/Navbar.php:118
-msgid "Account/Channel Settings"
+#: Code/Lib/Chatroom.php:155 Code/Module/Admin/Profile_photo.php:312
+#: Code/Module/Admin/Profile_photo.php:330
+#: Code/Module/Admin/Cover_photo.php:283 Code/Module/Admin/Cover_photo.php:307
+#: Code/Module/Api.php:38 Code/Module/Appman.php:100 Code/Module/Block.php:31
+#: Code/Module/Block.php:84 Code/Module/Blocks.php:82 Code/Module/Blocks.php:89
+#: Code/Module/Calendar.php:264 Code/Module/Card_edit.php:63
+#: Code/Module/Cards.php:89 Code/Module/Channel.php:242
+#: Code/Module/Channel.php:420 Code/Module/Channel.php:458
+#: Code/Module/Chat.php:115 Code/Module/Chat.php:120 Code/Module/Common.php:48
+#: Code/Module/Connections.php:35 Code/Module/Connedit.php:341
+#: Code/Module/Cover_photo.php:340 Code/Module/Cover_photo.php:354
+#: Code/Module/Defperms.php:179 Code/Module/Defperms.php:185
+#: Code/Module/Display.php:512 Code/Module/Editblock.php:79
+#: Code/Module/Editlayout.php:77 Code/Module/Editlayout.php:100
+#: Code/Module/Editpost.php:26 Code/Module/Editwebpage.php:82
+#: Code/Module/Editwebpage.php:103 Code/Module/Editwebpage.php:122
+#: Code/Module/Editwebpage.php:138 Code/Module/Events.php:310
+#: Code/Module/Filestorage.php:29 Code/Module/Filestorage.php:115
+#: Code/Module/Filestorage.php:131 Code/Module/Filestorage.php:159
+#: Code/Module/Filestorage.php:192 Code/Module/Filestorage.php:199
+#: Code/Module/Inspect.php:19 Code/Module/Invite.php:102
+#: Code/Module/Item.php:615 Code/Module/Item.php:637 Code/Module/Item.php:649
+#: Code/Module/Item.php:1819 Code/Module/Layouts.php:82
+#: Code/Module/Layouts.php:89 Code/Module/Layouts.php:100
+#: Code/Module/Lists.php:88 Code/Module/Lists.php:100 Code/Module/Lists.php:131
+#: Code/Module/Locs.php:109 Code/Module/Manage.php:23 Code/Module/Menu.php:138
+#: Code/Module/Menu.php:149 Code/Module/Mitem.php:143
+#: Code/Module/Moderate.php:21 Code/Module/Mood.php:136
+#: Code/Module/New_channel.php:125 Code/Module/New_channel.php:150
+#: Code/Module/Notifications.php:19 Code/Module/Page.php:42
+#: Code/Module/Page.php:147 Code/Module/Pdledit.php:37
+#: Code/Module/Photos.php:78 Code/Module/Poke.php:118
+#: Code/Module/Profile.php:110 Code/Module/Profile.php:125
+#: Code/Module/Profile_photo.php:348 Code/Module/Profile_photo.php:362
+#: Code/Module/Profiles.php:219 Code/Module/Profiles.php:680
+#: Code/Module/Register.php:92 Code/Module/Regmod.php:25
+#: Code/Module/Service_limits.php:16 Code/Module/Settings.php:71
+#: Code/Module/Setup.php:232 Code/Module/Sharedwithme.php:24
+#: Code/Module/Vote.php:23 Code/Module/Viewsrc.php:24 Code/Module/Thing.php:317
+#: Code/Module/Thing.php:338 Code/Module/Thing.php:380
+#: Code/Module/Suggestions.php:35 Code/Module/Webpages.php:143
+#: Code/Module/Viewconnections.php:37 Code/Module/Viewconnections.php:42
+#: Code/Module/Sources.php:92 Code/Web/WebServer.php:72 include/items.php:3857
+#: include/attach.php:163 include/attach.php:212 include/attach.php:290
+#: include/attach.php:416 include/attach.php:431 include/attach.php:438
+#: include/attach.php:517 include/attach.php:1139 include/attach.php:1216
+#: include/attach.php:1387 include/photos.php:40
+msgid "Permission denied."
msgstr ""
-#: Code/Lib/Navbar.php:120
-msgid "(is on)"
+#: Code/Lib/Chatroom.php:166
+msgid "Room is full"
msgstr ""
-#: Code/Lib/Navbar.php:120
-msgid "(is off)"
+#: Code/Lib/Activity.php:2206 Code/Lib/Apps.php:1156 Code/Lib/Apps.php:1248
+#: Code/Module/Cdav.php:865 Code/Module/Cdav.php:866 Code/Module/Cdav.php:872
+#: Code/Module/Embedphotos.php:218 Code/Module/Photos.php:862
+#: Code/Module/Photos.php:1337 Code/Widget/Portfolio.php:109
+#: Code/Widget/Album.php:96 Code/Storage/Browser.php:182
+#: include/conversation.php:1085
+msgid "Unknown"
msgstr ""
-#: Code/Lib/Navbar.php:120
-msgid "Content filtering"
-msgstr ""
-
-#: Code/Lib/Navbar.php:127 Code/Lib/Navbar.php:154 Code/Lib/Navbar.php:172
-#: boot.php:1724
-msgid "Logout"
-msgstr ""
-
-#: Code/Lib/Navbar.php:127 Code/Lib/Navbar.php:154
-msgid "End this session"
-msgstr ""
-
-#: Code/Lib/Navbar.php:130
-msgid "Your profile page"
-msgstr ""
-
-#: Code/Lib/Navbar.php:133
-msgid "Manage/Edit profiles"
-msgstr ""
-
-#: Code/Lib/Navbar.php:135 Code/Widget/Newmember.php:39
-msgid "Edit your profile"
-msgstr ""
-
-#: Code/Lib/Navbar.php:141 Code/Lib/Navbar.php:144
-msgid "Sign in"
-msgstr ""
-
-#: Code/Lib/Navbar.php:170
-msgid "Take me home"
-msgstr ""
-
-#: Code/Lib/Navbar.php:172
-msgid "Log me out of this site"
-msgstr ""
-
-#: Code/Lib/Navbar.php:177 Code/Module/Register.php:308
-#: Code/Module/Sites.php:57 boot.php:1705
-msgid "Register"
-msgstr ""
-
-#: Code/Lib/Navbar.php:177
-msgid "Create an account"
-msgstr ""
-
-#: Code/Lib/Navbar.php:190
-msgid "Help and documentation"
-msgstr ""
-
-#: Code/Lib/Navbar.php:197
-msgid "Search site @name, #tag, ?doc, content"
-msgstr ""
-
-#: Code/Lib/Navbar.php:203 Code/Widget/Admin.php:64
-msgid "Admin"
-msgstr ""
-
-#: Code/Lib/Navbar.php:203
-msgid "Site Setup and Configuration"
-msgstr ""
-
-#: Code/Lib/Navbar.php:310
-msgid "Powered by $Projectname"
-msgstr ""
-
-#: Code/Lib/Navbar.php:315 Code/Module/Connedit.php:816
-#: Code/Module/Defperms.php:249 Code/Module/New_channel.php:174
-#: Code/Module/New_channel.php:181 Code/Widget/Notifications.php:154
-msgid "Loading"
-msgstr ""
-
-#: Code/Lib/Navbar.php:321
-msgid "Side Panel"
-msgstr ""
-
-#: Code/Lib/Navbar.php:322
-msgid "@name, #tag, ?doc, content"
-msgstr ""
-
-#: Code/Lib/Navbar.php:323
-msgid "Please wait..."
-msgstr ""
-
-#: Code/Lib/Navbar.php:329 Code/Module/Apps.php:59 Code/Widget/Appstore.php:17
-msgid "Installed Apps"
-msgstr ""
-
-#: Code/Lib/Navbar.php:331 Code/Module/Apps.php:59 Code/Widget/Appstore.php:18
-msgid "Available Apps"
-msgstr ""
-
-#: Code/Lib/Navbar.php:332 Code/Module/Apporder.php:49
-msgid "Arrange Apps"
-msgstr ""
-
-#: Code/Lib/Navbar.php:333
-msgid "Toggle System Apps"
-msgstr ""
-
-#: Code/Lib/Navbar.php:417 Code/Module/Admin/Channels.php:182
-#: include/conversation.php:1980
-msgid "Channel"
-msgstr ""
-
-#: Code/Lib/Navbar.php:420 include/conversation.php:1983
-msgid "Status Messages and Posts"
-msgstr ""
-
-#: Code/Lib/Navbar.php:430 include/conversation.php:1993
-msgid "About"
-msgstr ""
-
-#: Code/Lib/Navbar.php:433 include/conversation.php:1996
-msgid "Profile Details"
-msgstr ""
-
-#: Code/Lib/Navbar.php:443 include/photos.php:759 include/conversation.php:2006
-msgid "Photo Albums"
-msgstr ""
-
-#: Code/Lib/Navbar.php:451 include/conversation.php:2014
-msgid "Files and Storage"
-msgstr ""
-
-#: Code/Lib/Navbar.php:486 include/conversation.php:2050
-msgid "Bookmarks"
-msgstr ""
-
-#: Code/Lib/Navbar.php:489 include/conversation.php:2053
-msgid "Saved Bookmarks"
-msgstr ""
-
-#: Code/Lib/Navbar.php:500 include/conversation.php:2064
-msgid "View Cards"
-msgstr ""
-
-#: Code/Lib/Navbar.php:511 include/conversation.php:2075
-msgid "View Articles"
-msgstr ""
-
-#: Code/Lib/Navbar.php:523 include/conversation.php:2086
-msgid "View Webpages"
-msgstr ""
-
-#: Code/Lib/Navbar.php:532 include/conversation.php:2096
-msgid "Wikis"
-msgstr ""
-
-#: Code/Lib/Libsync.php:980
+#: Code/Lib/Activity.php:2894
#, php-format
-msgid "Unable to verify site signature for %s"
+msgid "Likes %1$s's %2$s"
+msgstr ""
+
+#: Code/Lib/Activity.php:2897
+#, php-format
+msgid "Doesn't like %1$s's %2$s"
+msgstr ""
+
+#: Code/Lib/Activity.php:2903
+#, php-format
+msgid "Will attend %s's event"
+msgstr ""
+
+#: Code/Lib/Activity.php:2906
+#, php-format
+msgid "Will not attend %s's event"
+msgstr ""
+
+#: Code/Lib/Activity.php:2909
+#, php-format
+msgid "May attend %s's event"
+msgstr ""
+
+#: Code/Lib/Activity.php:2912
+#, php-format
+msgid "May not attend %s's event"
+msgstr ""
+
+#: Code/Lib/Activity.php:3392 include/text.php:1697 include/text.php:3152
+#, php-format
+msgid "%1$s (%2$s)"
+msgstr ""
+
+#: Code/Lib/Libzot.php:787
+msgid "Unable to verify channel signature"
msgstr ""
#: Code/Lib/Enotify.php:74
@@ -2112,7 +1654,7 @@ msgid "This email was sent by %1$s at %2$s."
msgstr ""
#: Code/Lib/Enotify.php:80 Code/Module/Home.php:144 Code/Module/Home.php:153
-#: extend/addon/a/opensearch/Mod_opensearch.php:28
+#: extend/addon/a/opensearch/Mod_opensearch.php:30
msgid "$Projectname"
msgstr ""
@@ -2399,90 +1941,605 @@ msgstr ""
msgid "edited a comment dated %s"
msgstr ""
-#: Code/Lib/DB_Upgrade.php:70
-msgid "Source code of failed update: "
+#: Code/Lib/Apps.php:346
+msgid "Site Admin"
msgstr ""
-#: Code/Lib/DB_Upgrade.php:93
+#: Code/Lib/Apps.php:347 Code/Lib/Navbar.php:330
+msgid "Apps"
+msgstr ""
+
+#: Code/Lib/Apps.php:349
+msgid "CalDAV"
+msgstr ""
+
+#: Code/Lib/Apps.php:350
+msgid "CardDAV"
+msgstr ""
+
+#: Code/Lib/Apps.php:351 Code/Lib/Navbar.php:497 Code/Module/Cards.php:215
+#: include/conversation.php:2061
+msgid "Cards"
+msgstr ""
+
+#: Code/Lib/Apps.php:352 Code/Lib/Navbar.php:459 Code/Lib/Navbar.php:462
+#: Code/Storage/Browser.php:157
+msgid "Calendar"
+msgstr ""
+
+#: Code/Lib/Apps.php:353 Code/Module/Cdav.php:1077
+#: Code/Widget/Appcategories.php:52 Code/Widget/Categories.php:87
+#: Code/Widget/Categories.php:135 Code/Widget/Categories.php:186
+#: include/taxonomy.php:467 include/taxonomy.php:561 include/taxonomy.php:583
+#: include/taxonomy.php:606
+msgid "Categories"
+msgstr ""
+
+#: Code/Lib/Apps.php:354
+msgid "Channel Home"
+msgstr ""
+
+#: Code/Lib/Apps.php:355
+msgid "Channel Manager"
+msgstr ""
+
+#: Code/Lib/Apps.php:356 Code/Module/Sources.php:115
+msgid "Channel Sources"
+msgstr ""
+
+#: Code/Lib/Apps.php:357
+msgid "Chat"
+msgstr ""
+
+#: Code/Lib/Apps.php:358 Code/Lib/Navbar.php:473 Code/Lib/Navbar.php:476
+#: Code/Widget/Chatroom_list.php:24 include/conversation.php:2036
+#: include/conversation.php:2039
+msgid "Chatrooms"
+msgstr ""
+
+#: Code/Lib/Apps.php:359
+msgid "Clients"
+msgstr ""
+
+#: Code/Lib/Apps.php:360 include/conversation.php:1445
+msgid "Comment Control"
+msgstr ""
+
+#: Code/Lib/Apps.php:361 Code/Module/Affinity.php:68
+#: Code/Module/Connections.php:367 Code/Module/Connedit.php:677
+#: Code/Module/Stream.php:139 Code/Widget/Affinity.php:33
+#: Code/Widget/Activity_filter.php:150 include/connections.php:972
+msgid "Connections"
+msgstr ""
+
+#: Code/Lib/Apps.php:362
+msgid "Content Filter"
+msgstr ""
+
+#: Code/Lib/Apps.php:363
+#: extend/addon/a/content_import/Mod_content_import.php:137
+msgid "Content Import"
+msgstr ""
+
+#: Code/Lib/Apps.php:364 Code/Module/Directory.php:477
+msgid "Directory"
+msgstr ""
+
+#: Code/Lib/Apps.php:365 Code/Widget/Activity_filter.php:81
+msgid "Drafts"
+msgstr ""
+
+#: Code/Lib/Apps.php:366 Code/Widget/Activity_filter.php:109
+#: include/conversation.php:2022 include/conversation.php:2025
+msgid "Events"
+msgstr ""
+
+#: Code/Lib/Apps.php:367
+msgid "Expire Posts"
+msgstr ""
+
+#: Code/Lib/Apps.php:368
+msgid "Features"
+msgstr ""
+
+#: Code/Lib/Apps.php:369 Code/Lib/Navbar.php:448 Code/Module/Fbrowser.php:95
+#: Code/Storage/Browser.php:298 include/conversation.php:2011
+msgid "Files"
+msgstr ""
+
+#: Code/Lib/Apps.php:370 extend/addon/a/followlist/Mod_followlist.php:132
+msgid "Followlist"
+msgstr ""
+
+#: Code/Lib/Apps.php:371 Code/Module/Connedit.php:666
+msgid "Friend Zoom"
+msgstr ""
+
+#: Code/Lib/Apps.php:372
+msgid "Future Posting"
+msgstr ""
+
+#: Code/Lib/Apps.php:373 extend/addon/a/gallery/Mod_Gallery.php:141
+#: extend/addon/a/gallery/gallery.php:49
+msgid "Gallery"
+msgstr ""
+
+#: Code/Lib/Apps.php:374
+msgid "Guest Pass"
+msgstr ""
+
+#: Code/Lib/Apps.php:375 Code/Lib/Navbar.php:190 Code/Lib/Navbar.php:311
+#: include/help.php:70
+msgid "Help"
+msgstr ""
+
+#: Code/Lib/Apps.php:376
+msgid "Invite"
+msgstr ""
+
+#: Code/Lib/Apps.php:377
+msgid "Language"
+msgstr ""
+
+#: Code/Lib/Apps.php:379 Code/Lib/Navbar.php:141 Code/Lib/Navbar.php:144
+#: boot.php:1713
+msgid "Login"
+msgstr ""
+
+#: Code/Lib/Apps.php:380
+msgid "Mail"
+msgstr ""
+
+#: Code/Lib/Apps.php:381
+msgid "Markup"
+msgstr ""
+
+#: Code/Lib/Apps.php:382 Code/Module/Mood.php:166
+msgid "Mood"
+msgstr ""
+
+#: Code/Lib/Apps.php:383
+msgid "My Chatrooms"
+msgstr ""
+
+#: Code/Lib/Apps.php:384
+msgid "No Comment"
+msgstr ""
+
+#: Code/Lib/Apps.php:385 Code/Widget/Notes.php:24
+msgid "Notes"
+msgstr ""
+
+#: Code/Lib/Apps.php:386 Code/Lib/Navbar.php:334
+#: Code/Module/Settings/Channel.php:691 Code/Widget/Notifications.php:152
+msgid "Notifications"
+msgstr ""
+
+#: Code/Lib/Apps.php:387
+msgid "OAuth Apps Manager"
+msgstr ""
+
+#: Code/Lib/Apps.php:388
+msgid "OAuth2 Apps Manager"
+msgstr ""
+
+#: Code/Lib/Apps.php:389
+msgid "Order Apps"
+msgstr ""
+
+#: Code/Lib/Apps.php:390
+msgid "PDL Editor"
+msgstr ""
+
+#: Code/Lib/Apps.php:392 Code/Lib/Navbar.php:440 Code/Module/Fbrowser.php:37
+#: include/conversation.php:2003
+msgid "Photos"
+msgstr ""
+
+#: Code/Lib/Apps.php:393
+msgid "Photomap"
+msgstr ""
+
+#: Code/Lib/Apps.php:394 Code/Module/Poke.php:142
+msgid "Poke"
+msgstr ""
+
+#: Code/Lib/Apps.php:395
+msgid "Post"
+msgstr ""
+
+#: Code/Lib/Apps.php:396
+msgid "Premium Channel"
+msgstr ""
+
+#: Code/Lib/Apps.php:397
+msgid "Probe"
+msgstr ""
+
+#: Code/Lib/Apps.php:399
+msgid "Profile Photo"
+msgstr ""
+
+#: Code/Lib/Apps.php:400
+msgid "Profiles"
+msgstr ""
+
+#: Code/Lib/Apps.php:401 Code/Module/Pubstream.php:99
+#: Code/Widget/Notifications.php:133
+msgid "Public Stream"
+msgstr ""
+
+#: Code/Lib/Apps.php:402
+msgid "Random Channel"
+msgstr ""
+
+#: Code/Lib/Apps.php:403
+msgid "Remote Diagnostics"
+msgstr ""
+
+#: Code/Lib/Apps.php:404
+msgid "Report Bug"
+msgstr ""
+
+#: Code/Lib/Apps.php:405
+msgid "Roles"
+msgstr ""
+
+#: Code/Lib/Apps.php:406 Code/Lib/Navbar.php:197 Code/Lib/Libacl.php:149
+#: Code/Module/Connections.php:374 Code/Module/Search.php:65
+#: Code/Widget/Sitesearch.php:37 include/text.php:1052 include/text.php:1065
+msgid "Search"
+msgstr ""
+
+#: Code/Lib/Apps.php:407
+msgid "Secrets"
+msgstr ""
+
+#: Code/Lib/Apps.php:408 Code/Lib/Navbar.php:118
+#: Code/Module/Admin/Addons.php:343 Code/Module/Admin/Themes.php:139
+#: Code/Widget/Newmember.php:57 Code/Widget/Settings_menu.php:138
+msgid "Settings"
+msgstr ""
+
+#: Code/Lib/Apps.php:409
+msgid "Sites"
+msgstr ""
+
+#: Code/Lib/Apps.php:410
+msgid "Stream"
+msgstr ""
+
+#: Code/Lib/Apps.php:411 Code/Widget/Stream_order.php:139
+msgid "Stream Order"
+msgstr ""
+
+#: Code/Lib/Apps.php:412
+msgid "Suggest"
+msgstr ""
+
+#: Code/Lib/Apps.php:414
+msgid "Tagadelic"
+msgstr ""
+
+#: Code/Lib/Apps.php:415 Code/Widget/Tasklist.php:30
+msgid "Tasks"
+msgstr ""
+
+#: Code/Lib/Apps.php:416
+msgid "View Bookmarks"
+msgstr ""
+
+#: Code/Lib/Apps.php:417 Code/Lib/Navbar.php:130 Code/Module/Connedit.php:551
+msgid "View Profile"
+msgstr ""
+
+#: Code/Lib/Apps.php:418
+msgid "Virtual Lists"
+msgstr ""
+
+#: Code/Lib/Apps.php:419 Code/Lib/Navbar.php:520 Code/Module/Webpages.php:266
+#: include/conversation.php:2083
+msgid "Webpages"
+msgstr ""
+
+#: Code/Lib/Apps.php:420 Code/Lib/Navbar.php:535 include/conversation.php:2099
+msgid "Wiki"
+msgstr ""
+
+#: Code/Lib/Apps.php:421 extend/addon/a/zotpost/Mod_zotpost.php:56
+msgid "ZotPost"
+msgstr ""
+
+#: Code/Lib/Apps.php:598
+msgid "Installed"
+msgstr ""
+
+#: Code/Lib/Apps.php:598 Code/Module/Admin/Addons.php:424
+msgid "Install"
+msgstr ""
+
+#: Code/Lib/Apps.php:622
+msgid "Purchase"
+msgstr ""
+
+#: Code/Lib/Apps.php:627
+msgid "Undelete"
+msgstr ""
+
+#: Code/Lib/Apps.php:637
+msgid "Add to app-tray"
+msgstr ""
+
+#: Code/Lib/Apps.php:638
+msgid "Remove from app-tray"
+msgstr ""
+
+#: Code/Lib/Apps.php:639
+msgid "Pin to navbar"
+msgstr ""
+
+#: Code/Lib/Apps.php:640
+msgid "Unpin from navbar"
+msgstr ""
+
+#: Code/Lib/ServiceClass.php:35
+msgid "Unable to obtain identity information from database"
+msgstr ""
+
+#: Code/Lib/ServiceClass.php:280 Code/Lib/ServiceClass.php:282
+msgid "Click here to upgrade."
+msgstr ""
+
+#: Code/Lib/ServiceClass.php:290
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr ""
+
+#: Code/Lib/ServiceClass.php:296
+msgid "This action is not available under your subscription plan."
+msgstr ""
+
+#: Code/Lib/PermissionDescription.php:40 Code/Lib/Libacl.php:39
+msgid "Visible to your default audience"
+msgstr ""
+
+#: Code/Lib/PermissionDescription.php:117 Code/Lib/Libacl.php:137
+msgid "Only me"
+msgstr ""
+
+#: Code/Lib/PermissionDescription.php:119
+msgid "Public"
+msgstr ""
+
+#: Code/Lib/PermissionDescription.php:121
+msgid "Anybody in the $Projectname network"
+msgstr ""
+
+#: Code/Lib/PermissionDescription.php:123
#, php-format
-msgid "Update Error at %s"
+msgid "Any account on %s"
msgstr ""
-#: Code/Lib/DB_Upgrade.php:100
-#, php-format
-msgid "Update %s failed. See error logs."
+#: Code/Lib/PermissionDescription.php:125
+msgid "Any of my connections"
msgstr ""
-#: Code/Lib/Chatroom.php:30
-msgid "Missing room name"
+#: Code/Lib/PermissionDescription.php:127
+msgid "Only connections I specifically allow"
msgstr ""
-#: Code/Lib/Chatroom.php:40
-msgid "Duplicate room name"
+#: Code/Lib/PermissionDescription.php:129
+msgid "Anybody authenticated (could include visitors from other networks)"
msgstr ""
-#: Code/Lib/Chatroom.php:96 Code/Lib/Chatroom.php:105
-msgid "Invalid room specifier."
+#: Code/Lib/PermissionDescription.php:131
+msgid "Any connections including those who haven't yet been approved"
msgstr ""
-#: Code/Lib/Chatroom.php:143
-msgid "Room not found."
+#: Code/Lib/PermissionDescription.php:180
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
msgstr ""
-#: Code/Lib/Chatroom.php:155 Code/Module/Admin/Cover_photo.php:283
-#: Code/Module/Admin/Cover_photo.php:307
-#: Code/Module/Admin/Profile_photo.php:312
-#: Code/Module/Admin/Profile_photo.php:330 Code/Module/Api.php:38
-#: Code/Module/Appman.php:100 Code/Module/Block.php:31 Code/Module/Block.php:84
-#: Code/Module/Blocks.php:82 Code/Module/Blocks.php:89
-#: Code/Module/Calendar.php:264 Code/Module/Card_edit.php:63
-#: Code/Module/Cards.php:89 Code/Module/Channel.php:242
-#: Code/Module/Channel.php:420 Code/Module/Channel.php:458
-#: Code/Module/Chat.php:115 Code/Module/Chat.php:120 Code/Module/Common.php:48
-#: Code/Module/Connections.php:35 Code/Module/Connedit.php:341
-#: Code/Module/Cover_photo.php:340 Code/Module/Cover_photo.php:354
-#: Code/Module/Defperms.php:179 Code/Module/Defperms.php:185
-#: Code/Module/Display.php:514 Code/Module/Editblock.php:79
-#: Code/Module/Editlayout.php:77 Code/Module/Editlayout.php:100
-#: Code/Module/Editpost.php:26 Code/Module/Editwebpage.php:82
-#: Code/Module/Editwebpage.php:103 Code/Module/Editwebpage.php:122
-#: Code/Module/Editwebpage.php:138 Code/Module/Events.php:310
-#: Code/Module/Filestorage.php:29 Code/Module/Filestorage.php:115
-#: Code/Module/Filestorage.php:131 Code/Module/Filestorage.php:159
-#: Code/Module/Filestorage.php:192 Code/Module/Filestorage.php:199
-#: Code/Module/Inspect.php:19 Code/Module/Invite.php:102
-#: Code/Module/Item.php:615 Code/Module/Item.php:637 Code/Module/Item.php:649
-#: Code/Module/Item.php:1803 Code/Module/Layouts.php:82
-#: Code/Module/Layouts.php:89 Code/Module/Layouts.php:100
-#: Code/Module/Lists.php:88 Code/Module/Lists.php:100 Code/Module/Lists.php:131
-#: Code/Module/Locs.php:109 Code/Module/Manage.php:23 Code/Module/Menu.php:138
-#: Code/Module/Menu.php:149 Code/Module/Mitem.php:143
-#: Code/Module/Moderate.php:21 Code/Module/Mood.php:136
-#: Code/Module/New_channel.php:125 Code/Module/New_channel.php:150
-#: Code/Module/Notifications.php:19 Code/Module/Page.php:42
-#: Code/Module/Page.php:147 Code/Module/Pdledit.php:37
-#: Code/Module/Photos.php:78 Code/Module/Poke.php:118
-#: Code/Module/Profile.php:110 Code/Module/Profile.php:125
-#: Code/Module/Profile_photo.php:348 Code/Module/Profile_photo.php:362
-#: Code/Module/Profiles.php:219 Code/Module/Profiles.php:680
-#: Code/Module/Register.php:92 Code/Module/Regmod.php:25
-#: Code/Module/Service_limits.php:16 Code/Module/Settings.php:71
-#: Code/Module/Setup.php:232 Code/Module/Sharedwithme.php:24
-#: Code/Module/Thing.php:317 Code/Module/Thing.php:338
-#: Code/Module/Thing.php:380 Code/Module/Viewconnections.php:37
-#: Code/Module/Viewconnections.php:42 Code/Module/Suggestions.php:35
-#: Code/Module/Viewsrc.php:24 Code/Module/Vote.php:23
-#: Code/Module/Sources.php:92 Code/Module/Webpages.php:143
-#: Code/Web/WebServer.php:72 include/attach.php:163 include/attach.php:212
-#: include/attach.php:290 include/attach.php:416 include/attach.php:431
-#: include/attach.php:438 include/attach.php:517 include/attach.php:1134
-#: include/attach.php:1211 include/attach.php:1382 include/photos.php:40
-#: include/items.php:3858
-msgid "Permission denied."
+#: Code/Lib/PermissionDescription.php:182
+msgid ""
+"This is your default setting for who can view your default channel profile"
msgstr ""
-#: Code/Lib/Chatroom.php:166
-msgid "Room is full"
+#: Code/Lib/PermissionDescription.php:184
+msgid "This is your default setting for who can view your connections"
+msgstr ""
+
+#: Code/Lib/PermissionDescription.php:186
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr ""
+
+#: Code/Lib/PermissionDescription.php:188
+msgid "This is your default setting for the audience of your webpages"
+msgstr ""
+
+#: Code/Lib/Navbar.php:108
+msgid "Remote authentication"
+msgstr ""
+
+#: Code/Lib/Navbar.php:108
+msgid "Click to authenticate to your home hub"
+msgstr ""
+
+#: Code/Lib/Navbar.php:113 Code/Module/Admin.php:147
+#: Code/Module/Admin/Channels.php:174 Code/Module/Manage.php:187
+#: Code/Widget/Admin.php:33
+msgid "Channels"
+msgstr ""
+
+#: Code/Lib/Navbar.php:113
+msgid "Manage your channels"
+msgstr ""
+
+#: Code/Lib/Navbar.php:116
+msgid "Manage your access lists"
+msgstr ""
+
+#: Code/Lib/Navbar.php:118
+msgid "Account/Channel Settings"
+msgstr ""
+
+#: Code/Lib/Navbar.php:120
+msgid "(is on)"
+msgstr ""
+
+#: Code/Lib/Navbar.php:120
+msgid "(is off)"
+msgstr ""
+
+#: Code/Lib/Navbar.php:120
+msgid "Content filtering"
+msgstr ""
+
+#: Code/Lib/Navbar.php:127 Code/Lib/Navbar.php:154 Code/Lib/Navbar.php:172
+#: boot.php:1712
+msgid "Logout"
+msgstr ""
+
+#: Code/Lib/Navbar.php:127 Code/Lib/Navbar.php:154
+msgid "End this session"
+msgstr ""
+
+#: Code/Lib/Navbar.php:130
+msgid "Your profile page"
+msgstr ""
+
+#: Code/Lib/Navbar.php:133
+msgid "Manage/Edit profiles"
+msgstr ""
+
+#: Code/Lib/Navbar.php:135 Code/Widget/Newmember.php:39
+msgid "Edit your profile"
+msgstr ""
+
+#: Code/Lib/Navbar.php:141 Code/Lib/Navbar.php:144
+msgid "Sign in"
+msgstr ""
+
+#: Code/Lib/Navbar.php:170
+msgid "Take me home"
+msgstr ""
+
+#: Code/Lib/Navbar.php:172
+msgid "Log me out of this site"
+msgstr ""
+
+#: Code/Lib/Navbar.php:177 Code/Module/Register.php:308
+#: Code/Module/Sites.php:57 boot.php:1693
+msgid "Register"
+msgstr ""
+
+#: Code/Lib/Navbar.php:177
+msgid "Create an account"
+msgstr ""
+
+#: Code/Lib/Navbar.php:190
+msgid "Help and documentation"
+msgstr ""
+
+#: Code/Lib/Navbar.php:197
+msgid "Search site @name, #tag, ?doc, content"
+msgstr ""
+
+#: Code/Lib/Navbar.php:203 Code/Widget/Admin.php:64
+msgid "Admin"
+msgstr ""
+
+#: Code/Lib/Navbar.php:203
+msgid "Site Setup and Configuration"
+msgstr ""
+
+#: Code/Lib/Navbar.php:310
+msgid "Powered by $Projectname"
+msgstr ""
+
+#: Code/Lib/Navbar.php:315 Code/Module/Connedit.php:816
+#: Code/Module/Defperms.php:249 Code/Module/New_channel.php:174
+#: Code/Module/New_channel.php:181 Code/Widget/Notifications.php:154
+msgid "Loading"
+msgstr ""
+
+#: Code/Lib/Navbar.php:321
+msgid "Side Panel"
+msgstr ""
+
+#: Code/Lib/Navbar.php:322
+msgid "@name, #tag, ?doc, content"
+msgstr ""
+
+#: Code/Lib/Navbar.php:323
+msgid "Please wait..."
+msgstr ""
+
+#: Code/Lib/Navbar.php:329 Code/Module/Apps.php:59 Code/Widget/Appstore.php:17
+msgid "Installed Apps"
+msgstr ""
+
+#: Code/Lib/Navbar.php:331 Code/Module/Apps.php:59 Code/Widget/Appstore.php:18
+msgid "Available Apps"
+msgstr ""
+
+#: Code/Lib/Navbar.php:332 Code/Module/Apporder.php:53
+msgid "Arrange Apps"
+msgstr ""
+
+#: Code/Lib/Navbar.php:333
+msgid "Toggle System Apps"
+msgstr ""
+
+#: Code/Lib/Navbar.php:417 Code/Module/Admin/Channels.php:182
+#: include/conversation.php:1980
+msgid "Channel"
+msgstr ""
+
+#: Code/Lib/Navbar.php:420 include/conversation.php:1983
+msgid "Status Messages and Posts"
+msgstr ""
+
+#: Code/Lib/Navbar.php:430 include/conversation.php:1993
+msgid "About"
+msgstr ""
+
+#: Code/Lib/Navbar.php:433 include/conversation.php:1996
+msgid "Profile Details"
+msgstr ""
+
+#: Code/Lib/Navbar.php:443 include/photos.php:759 include/conversation.php:2006
+msgid "Photo Albums"
+msgstr ""
+
+#: Code/Lib/Navbar.php:451 include/conversation.php:2014
+msgid "Files and Storage"
+msgstr ""
+
+#: Code/Lib/Navbar.php:486 include/conversation.php:2050
+msgid "Bookmarks"
+msgstr ""
+
+#: Code/Lib/Navbar.php:489 include/conversation.php:2053
+msgid "Saved Bookmarks"
+msgstr ""
+
+#: Code/Lib/Navbar.php:500 include/conversation.php:2064
+msgid "View Cards"
+msgstr ""
+
+#: Code/Lib/Navbar.php:511 include/conversation.php:2075
+msgid "View Articles"
+msgstr ""
+
+#: Code/Lib/Navbar.php:523 include/conversation.php:2086
+msgid "View Webpages"
+msgstr ""
+
+#: Code/Lib/Navbar.php:532 include/conversation.php:2096
+msgid "Wikis"
msgstr ""
#: Code/Lib/Markdown.php:219 include/bbcode.php:684
@@ -2490,8 +2547,8 @@ msgstr ""
msgid "%1$s wrote the following %2$s %3$s"
msgstr ""
-#: Code/Lib/Markdown.php:221 Code/Module/Tagger.php:93 include/bbcode.php:678
-#: include/conversation.php:167 include/text.php:2386
+#: Code/Lib/Markdown.php:221 Code/Module/Tagger.php:93 include/text.php:2386
+#: include/bbcode.php:678 include/conversation.php:167
msgid "post"
msgstr ""
@@ -2549,326 +2606,182 @@ msgstr ""
#: Code/Module/Connedit.php:640 Code/Module/Filestorage.php:233
#: Code/Module/Photos.php:744 Code/Module/Photos.php:1129
#: Code/Module/Thing.php:357 Code/Module/Thing.php:412
-#: extend/addon/a/faces/Mod_Faces.php:173
+#: extend/addon/a/faces/Mod_Faces.php:175
#: extend/addon/a/flashcards/Mod_Flashcards.php:257
msgid "Permissions"
msgstr ""
-#: Code/Lib/Libacl.php:156 Code/Lib/ThreadItem.php:505
-#: Code/Module/Photos.php:1357 Code/Module/Settings/Channel.php:690
-#: include/conversation.php:1500
-msgid "Close"
-msgstr ""
-
#: Code/Lib/Libacl.php:182
msgid ""
"Post permissions cannot be changed after a post is shared.
These "
"permissions set who is allowed to view the post."
msgstr ""
-#: Code/Lib/ThreadItem.php:120 include/conversation.php:614
-msgid "Public visibility"
+#: Code/Lib/Connect.php:50 Code/Lib/Connect.php:172
+msgid "Channel is blocked on this site."
msgstr ""
-#: Code/Lib/ThreadItem.php:122 include/conversation.php:616
-msgid "Direct message (private mail)"
+#: Code/Lib/Connect.php:55
+msgid "Channel location missing."
msgstr ""
-#: Code/Lib/ThreadItem.php:125 include/conversation.php:619
-msgid "Restricted visibility"
+#: Code/Lib/Connect.php:133
+msgid "Remote channel or protocol unavailable."
msgstr ""
-#: Code/Lib/ThreadItem.php:150
+#: Code/Lib/Connect.php:166
+msgid "Channel discovery failed."
+msgstr ""
+
+#: Code/Lib/Connect.php:180
+msgid "Protocol not supported"
+msgstr ""
+
+#: Code/Lib/Connect.php:193
+msgid "Cannot connect to yourself."
+msgstr ""
+
+#: Code/Lib/Connect.php:271
+msgid "error saving data"
+msgstr ""
+
+#: Code/Lib/Account.php:34
+msgid "Not a valid email address"
+msgstr ""
+
+#: Code/Lib/Account.php:36
+msgid "Your email domain is not among those allowed on this site"
+msgstr ""
+
+#: Code/Lib/Account.php:43
+msgid "Your email address is already registered at this site."
+msgstr ""
+
+#: Code/Lib/Account.php:78
+msgid "An invitation is required."
+msgstr ""
+
+#: Code/Lib/Account.php:82
+msgid "Invitation could not be verified."
+msgstr ""
+
+#: Code/Lib/Account.php:164
+msgid "Please enter the required information."
+msgstr ""
+
+#: Code/Lib/Account.php:228
+msgid "Failed to store account information."
+msgstr ""
+
+#: Code/Lib/Account.php:321
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr ""
+
+#: Code/Lib/Account.php:398
+#, php-format
+msgid "Registration request at %s"
+msgstr ""
+
+#: Code/Lib/Account.php:422
+msgid "your registration password"
+msgstr ""
+
+#: Code/Lib/Account.php:428 Code/Lib/Account.php:498
+#, php-format
+msgid "Registration details for %s"
+msgstr ""
+
+#: Code/Lib/Account.php:510
+msgid "Account approved."
+msgstr ""
+
+#: Code/Lib/Account.php:557
+#, php-format
+msgid "Registration revoked for %s"
+msgstr ""
+
+#: Code/Lib/Account.php:699 Code/Module/Admin/Accounts.php:103
+#, php-format
+msgid "Account '%s' deleted"
+msgstr ""
+
+#: Code/Lib/Channel.php:53
+msgid "Empty name"
+msgstr ""
+
+#: Code/Lib/Channel.php:57
+msgid "Name too long"
+msgstr ""
+
+#: Code/Lib/Channel.php:282
+msgid "No account identifier"
+msgstr ""
+
+#: Code/Lib/Channel.php:294
+msgid "Nickname is required."
+msgstr ""
+
+#: Code/Lib/Channel.php:308 Code/Lib/Channel.php:772
+#: Code/Module/Changeaddr.php:72
+msgid "Reserved nickname. Please choose another."
+msgstr ""
+
+#: Code/Lib/Channel.php:313 Code/Lib/Channel.php:777
+#: Code/Module/Changeaddr.php:77
msgid ""
-"This comment is part of a private conversation, yet was shared with the "
-"public. Discretion advised."
+"Nickname has unsupported characters or is already being used on this site."
msgstr ""
-#: Code/Lib/ThreadItem.php:198 Code/Storage/Browser.php:306
-msgid "Admin Delete"
+#: Code/Lib/Channel.php:393
+msgid "Unable to retrieve created identity"
msgstr ""
-#: Code/Lib/ThreadItem.php:203 include/conversation.php:605
-msgid "Select"
+#: Code/Lib/Channel.php:503 Code/Import/Friendica.php:198
+msgid "Default Profile"
msgstr ""
-#: Code/Lib/ThreadItem.php:207 Code/Module/Filer.php:63
-msgid "Save to Folder"
+#: Code/Lib/Channel.php:552 Code/Lib/Channel.php:554
+#: Code/Module/Affinity.php:66 Code/Module/Connedit.php:675
+#: Code/Module/Profiles.php:1096 Code/Module/Settings/Channel.php:86
+#: Code/Module/Settings/Channel.php:89 Code/Module/Settings/Channel.php:90
+#: Code/Module/Settings/Channel.php:94 Code/Module/Settings/Channel.php:105
+#: Code/Widget/Affinity.php:31 Code/Import/Friendica.php:247
+#: Code/Import/Friendica.php:248 Code/Import/Friendica.php:256
+msgid "Friends"
msgstr ""
-#: Code/Lib/ThreadItem.php:229
-msgid "I will attend"
+#: Code/Lib/Channel.php:698 Code/Lib/Channel.php:796
+msgid "Unable to retrieve modified identity"
msgstr ""
-#: Code/Lib/ThreadItem.php:229
-msgid "I will not attend"
+#: Code/Lib/Channel.php:1863 Code/Module/Cover_photo.php:293
+msgid "cover photo"
msgstr ""
-#: Code/Lib/ThreadItem.php:229
-msgid "I might attend"
+#: Code/Lib/Channel.php:2164 Code/Module/Rmagic.php:88 boot.php:1714
+msgid "Remote Authentication"
msgstr ""
-#: Code/Lib/ThreadItem.php:230
-msgid "Undo attendance"
+#: Code/Lib/Channel.php:2165 Code/Module/Rmagic.php:89
+msgid "Enter your channel address (e.g. channel@example.com)"
msgstr ""
-#: Code/Lib/ThreadItem.php:245 Code/Lib/ThreadItem.php:265
-#: Code/Module/Photos.php:1231 Code/Module/Photos.php:1242
-msgid "View all"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:250 Code/Module/Photos.php:1235
-#: include/conversation.php:2153 include/taxonomy.php:743
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Lib/ThreadItem.php:252 Code/Lib/ThreadItem.php:499
-#: Code/Module/Photos.php:1351 include/conversation.php:2155
-msgctxt "noun"
-msgid "Likes"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:258 Code/Module/Photos.php:1239
-#: include/conversation.php:2160
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Lib/ThreadItem.php:260 Code/Lib/ThreadItem.php:500
-#: Code/Module/Photos.php:1352 include/conversation.php:2162
-msgctxt "noun"
-msgid "Dislikes"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:286 Code/Module/Admin/Profs.php:103
-#: Code/Module/Admin/Profs.php:124 Code/Module/Filer.php:62
-#: Code/Widget/Notes.php:26 extend/addon/a/queueworker/Mod_Queueworker.php:116
-#: include/text.php:1053 include/text.php:1066
-msgid "Save"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:295 include/conversation.php:627
-msgid "Message signature validated"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:296 include/conversation.php:628
-msgid "Message signature incorrect"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:302
-msgid "Add Tag"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:322 Code/Module/Photos.php:1172
-msgid "I like this"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:322 Code/Module/Photos.php:1176
-msgid "Undo like"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:323 Code/Module/Photos.php:1175
-msgid "I don't like this"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:323 Code/Module/Photos.php:1177
-msgid "Undo dislike"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:329
-msgid "Repeat This"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:330
-msgid "Share this"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:341
-msgid "Delivery Report"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:370
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Lib/ThreadItem.php:371
-#, php-format
-msgid "%d unseen"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:410 Code/Lib/ThreadItem.php:411
-#, php-format
-msgid "View %s's profile - %s"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:414
-msgid "to"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:415 include/conversation.php:690
-msgid "via"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:416
-msgid "Wall-to-Wall"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:417
-msgid "via Wall-To-Wall:"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:432 include/conversation.php:693
-#, php-format
-msgid "from %s"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:435 include/conversation.php:696
-#, php-format
-msgid "last edited: %s"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:436 include/conversation.php:697
-#, php-format
-msgid "Expires: %s"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:446
-msgid "Attend"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:447
-msgid "Attendance Options"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:448
-msgid "Vote"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:449
-msgid "Voting Options"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:450
-msgid "Reply"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:475 include/conversation.php:712
-msgid "Pinned post"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:479
-msgid "Saved draft"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:480
-msgid "Save Bookmarks"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:481
-msgid "Add to Calendar"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:492 Code/Module/Notifications.php:75
-msgid "Mark all seen"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:510 include/conversation.php:418
-msgid "This is an unsaved preview"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:511 Code/Module/Photos.php:1179
-#: include/conversation.php:717
-msgid "Please wait"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:951 Code/Module/Photos.php:1195
-#: Code/Module/Photos.php:1305
-msgid "This is you"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:956 include/conversation.php:1418
-msgid "Bold"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:957 include/conversation.php:1419
-msgid "Italic"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:958 include/conversation.php:1420
-msgid "Underline"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:959 include/conversation.php:1421
-msgid "Quote"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:960 include/conversation.php:1422
-msgid "Code"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:961
-msgid "Image"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:962 include/conversation.php:1423
-msgid "Attach/Upload file"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:963
-msgid "Insert Link"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:964
-msgid "Video"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:965 Code/Module/Events.php:529
-#: Code/Module/Photos.php:1199 Code/Module/Webpages.php:276
-#: include/conversation.php:1307
-msgid "Preview"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:966 Code/Module/Lostpass.php:143
-#: Code/Module/Pdledit.php:72 Code/Module/Pdledit.php:80
-msgid "Reset"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:971 Code/Module/Chat.php:222
-#: include/conversation.php:1492
-msgid "Encrypt text"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:976
-msgid "Your full name (required)"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:977
-msgid "Your email address (required)"
-msgstr ""
-
-#: Code/Lib/ThreadItem.php:978
-msgid "Your website URL (optional)"
+#: Code/Lib/Channel.php:2166 Code/Module/Rmagic.php:92
+msgid "Authenticate"
msgstr ""
#: Code/Module/Acloader.php:260
msgid "network"
msgstr ""
-#: Code/Module/Admin.php:94 Code/Module/Admin/Addons.php:262
+#: Code/Module/Admin.php:94 Code/Module/Admin/Addons.php:264
#: Code/Module/Admin/Themes.php:82 Code/Module/Display.php:69
-#: Code/Module/Display.php:517 Code/Module/Filestorage.php:41
+#: Code/Module/Display.php:515 Code/Module/Filestorage.php:41
#: Code/Module/Inspect.php:35 Code/Module/Search.php:189
-#: Code/Module/Thing.php:110 Code/Module/Viewsrc.php:29
+#: Code/Module/Viewsrc.php:29 Code/Module/Thing.php:110
#: extend/addon/a/flashcards/Mod_Flashcards.php:287
-#: extend/addon/a/flashcards/Mod_Flashcards.php:288 include/items.php:3756
+#: extend/addon/a/flashcards/Mod_Flashcards.php:288 include/items.php:3755
msgid "Item not found."
msgstr ""
@@ -2905,10 +2818,10 @@ msgstr ""
msgid "Your software should be updated"
msgstr ""
-#: Code/Module/Admin.php:173 Code/Module/Admin/Accounts.php:179
-#: Code/Module/Admin/Addons.php:338 Code/Module/Admin/Addons.php:436
-#: Code/Module/Admin/Channels.php:173 Code/Module/Admin/Logs.php:85
-#: Code/Module/Admin/Site.php:314 Code/Module/Admin/Security.php:138
+#: Code/Module/Admin.php:173 Code/Module/Admin/Security.php:138
+#: Code/Module/Admin/Logs.php:85 Code/Module/Admin/Channels.php:173
+#: Code/Module/Admin/Accounts.php:179 Code/Module/Admin/Site.php:279
+#: Code/Module/Admin/Addons.php:340 Code/Module/Admin/Addons.php:438
#: Code/Module/Admin/Themes.php:136 Code/Module/Admin/Themes.php:170
msgid "Administration"
msgstr ""
@@ -2945,1216 +2858,6 @@ msgstr ""
msgid "Repository version (dev)"
msgstr ""
-#: Code/Module/Admin/Account_edit.php:34
-#, php-format
-msgid "Password changed for account %d."
-msgstr ""
-
-#: Code/Module/Admin/Account_edit.php:50
-msgid "Account settings updated."
-msgstr ""
-
-#: Code/Module/Admin/Account_edit.php:69
-msgid "Account not found."
-msgstr ""
-
-#: Code/Module/Admin/Account_edit.php:76
-msgid "Account Edit"
-msgstr ""
-
-#: Code/Module/Admin/Account_edit.php:77
-msgid "New Password"
-msgstr ""
-
-#: Code/Module/Admin/Account_edit.php:78
-msgid "New Password again"
-msgstr ""
-
-#: Code/Module/Admin/Account_edit.php:79
-msgid "Account language (for emails)"
-msgstr ""
-
-#: Code/Module/Admin/Account_edit.php:80
-msgid "Service class"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:44
-#, php-format
-msgid "%s account blocked/unblocked"
-msgid_plural "%s accounts blocked/unblocked"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Module/Admin/Accounts.php:52
-#, php-format
-msgid "%s account deleted"
-msgid_plural "%s accounts deleted"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Module/Admin/Accounts.php:92
-msgid "Account not found"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:112
-#, php-format
-msgid "Account '%s' blocked"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:121
-#, php-format
-msgid "Account '%s' unblocked"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:182 Code/Module/Admin/Channels.php:176
-msgid "select all"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:183
-msgid "Registrations waiting for confirm"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:184
-msgid "Request date"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:184 Code/Module/Admin/Accounts.php:196
-#: Code/Module/Cdav.php:1360 Code/Module/Connedit.php:876
-#: Code/Module/Profiles.php:840 include/network.php:1762
-msgid "Email"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:185
-msgid "No registrations."
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:186 Code/Module/Connections.php:340
-#: include/conversation.php:659
-msgid "Approve"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:187 Code/Module/Authorize.php:42
-msgid "Deny"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:189 Code/Module/Connedit.php:579
-#: Code/Widget/Sblock.php:23
-msgid "Block"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:190 Code/Module/Connedit.php:579
-msgid "Unblock"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:195
-msgid "ID"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:197
-msgid "All Channels"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:198
-msgid "Register date"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:199
-msgid "Last login"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:200
-msgid "Expires"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:201
-msgid "Service Class"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:203
-msgid ""
-"Selected accounts will be deleted!\\n\\nEverything these accounts had posted "
-"on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-
-#: Code/Module/Admin/Accounts.php:204
-msgid ""
-"The account {0} will be deleted!\\n\\nEverything this account has posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:286
-#, php-format
-msgid "Plugin %s disabled."
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:290
-#, php-format
-msgid "Plugin %s enabled."
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:306 Code/Module/Admin/Themes.php:107
-msgid "Disable"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:309 Code/Module/Admin/Themes.php:110
-msgid "Enable"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:339 Code/Module/Admin/Addons.php:437
-#: Code/Widget/Admin.php:36
-msgid "Addons"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:340 Code/Module/Admin/Themes.php:138
-msgid "Toggle"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:348 Code/Module/Admin/Themes.php:148
-msgid "Author: "
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:349 Code/Module/Admin/Themes.php:149
-msgid "Maintainer: "
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:350
-msgid "Minimum project version: "
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:351
-msgid "Maximum project version: "
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:352
-msgid "Minimum PHP version: "
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:353
-msgid "Compatible Server Roles: "
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:354
-msgid "Requires: "
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:355 Code/Module/Admin/Addons.php:442
-msgid "Disabled - version incompatibility"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:410
-msgid "Enter the public git repository URL of the addon repo."
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:411
-msgid "Addon repo git URL"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:412
-msgid "Custom repo name"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:412
-msgid "(optional)"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:413
-msgid "Download Addon Repo"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:421
-msgid "Install new repo"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:423 Code/Module/Admin/Cover_photo.php:382
-#: Code/Module/Admin/Profile_photo.php:478 Code/Module/Card_edit.php:142
-#: Code/Module/Cdav.php:1066 Code/Module/Cdav.php:1374
-#: Code/Module/Connedit.php:890 Code/Module/Cover_photo.php:428
-#: Code/Module/Editblock.php:156 Code/Module/Editlayout.php:153
-#: Code/Module/Editpost.php:150 Code/Module/Editwebpage.php:187
-#: Code/Module/Fbrowser.php:75 Code/Module/Fbrowser.php:98
-#: Code/Module/Filer.php:64 Code/Module/Profile_photo.php:517
-#: Code/Module/Profiles.php:854 Code/Module/Settings/Oauth2.php:116
-#: Code/Module/Settings/Oauth2.php:146 Code/Module/Settings/Oauth.php:99
-#: Code/Module/Settings/Oauth.php:127 Code/Module/Tagrm.php:21
-#: Code/Module/Tagrm.php:152 include/conversation.php:1429
-#: include/conversation.php:1495 include/conversation.php:1497
-#: include/conversation.php:1499
-msgid "Cancel"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:445
-msgid "Manage Repos"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:446
-msgid "Installed Addon Repositories"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:447
-msgid "Install a New Addon Repository"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:453 Code/Module/Cdav.php:1061
-#: Code/Module/Cdav.php:1372 Code/Module/Connedit.php:888
-#: Code/Module/Profiles.php:852 Code/Module/Settings/Oauth2.php:57
-#: Code/Module/Settings/Oauth2.php:145 Code/Module/Settings/Oauth.php:48
-#: Code/Module/Settings/Oauth.php:126
-msgid "Update"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:454
-msgid "Switch branch"
-msgstr ""
-
-#: Code/Module/Admin/Addons.php:455 Code/Module/Photos.php:1076
-#: Code/Module/Tagrm.php:151 Code/Module/Superblock.php:236
-#: Code/Module/Superblock.php:253
-msgid "Remove"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:41
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channels censored/uncensored"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Module/Admin/Channels.php:51
-#, php-format
-msgid "%s channel code allowed/disallowed"
-msgid_plural "%s channels code allowed/disallowed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Module/Admin/Channels.php:57
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Module/Admin/Channels.php:78
-msgid "Channel not found"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:89
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:104
-#, php-format
-msgid "Channel '%s' censored"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:104
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:118
-#, php-format
-msgid "Channel '%s' code allowed"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:118
-#, php-format
-msgid "Channel '%s' code disallowed"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:178 Code/Module/Connedit.php:595
-#: Code/Module/Directory.php:396
-msgid "Censor"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:179 Code/Module/Connedit.php:595
-#: Code/Module/Directory.php:396
-msgid "Uncensor"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:180
-msgid "Allow Code"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:181
-msgid "Disallow Code"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:186
-msgid "UID"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:187 Code/Module/Cdav.php:1356
-#: Code/Module/Chat.php:259 Code/Module/Connections.php:235
-#: Code/Module/Connedit.php:872 Code/Module/Lists.php:206
-#: Code/Module/Settings/Oauth2.php:117 Code/Module/Settings/Oauth2.php:147
-#: Code/Module/Settings/Oauth.php:100 Code/Module/Settings/Oauth.php:128
-#: Code/Module/Sharedwithme.php:109 Code/Storage/Browser.php:313
-#: Code/Widget/Activity_filter.php:298
-msgid "Name"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:188 Code/Module/Cdav.php:1363
-#: Code/Module/Connedit.php:879 Code/Module/Locs.php:135
-#: Code/Module/Profiles.php:533 Code/Module/Profiles.php:843
-msgid "Address"
-msgstr ""
-
-#: Code/Module/Admin/Channels.php:190
-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 ""
-
-#: Code/Module/Admin/Channels.php:191
-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?"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:68 Code/Module/Admin/Profile_photo.php:71
-#: Code/Module/Cover_photo.php:68 Code/Module/Profile_photo.php:68
-msgid "Image uploaded but image cropping failed."
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:179 Code/Module/Admin/Cover_photo.php:263
-#: Code/Module/Cover_photo.php:179 Code/Module/Cover_photo.php:266
-msgid "Cover Photos"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:203
-#: Code/Module/Admin/Profile_photo.php:149 Code/Module/Cover_photo.php:203
-#: Code/Module/Profile_photo.php:148
-msgid "Image resize failed."
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:212
-#: Code/Module/Admin/Profile_photo.php:195 Code/Module/Cover_photo.php:215
-#: Code/Module/Profile_photo.php:231 include/photos.php:204
-msgid "Unable to process image"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:321 Code/Module/Admin/Cover_photo.php:337
-#: Code/Module/Admin/Profile_photo.php:358
-#: Code/Module/Admin/Profile_photo.php:401 Code/Module/Cover_photo.php:368
-#: Code/Module/Cover_photo.php:384 Code/Module/Profile_photo.php:390
-#: Code/Module/Profile_photo.php:441
-msgid "Photo not available."
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:373 Code/Module/Cover_photo.php:419
-msgid "Your cover photo may be visible to anybody on the internet"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:375
-#: Code/Module/Admin/Profile_photo.php:469 Code/Module/Cover_photo.php:421
-#: Code/Module/Profile_photo.php:508
-msgid "Upload File:"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:376
-#: Code/Module/Admin/Profile_photo.php:470 Code/Module/Cover_photo.php:422
-#: Code/Module/Profile_photo.php:509
-msgid "Select a profile:"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:377 Code/Module/Cover_photo.php:423
-msgid "Change Cover Photo"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:378
-#: Code/Module/Admin/Profile_photo.php:472 Code/Module/Cover_photo.php:424
-#: Code/Module/Embedphotos.php:229 Code/Module/Photos.php:754
-#: Code/Module/Profile_photo.php:511 Code/Storage/Browser.php:422
-#: Code/Widget/Cdav.php:157 Code/Widget/Cdav.php:191 Code/Widget/Album.php:109
-#: Code/Widget/Portfolio.php:124
-msgid "Upload"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:380 Code/Module/Admin/Cover_photo.php:381
-#: Code/Module/Admin/Profile_photo.php:476
-#: Code/Module/Admin/Profile_photo.php:477 Code/Module/Cover_photo.php:426
-#: Code/Module/Cover_photo.php:427 Code/Module/Profile_photo.php:515
-#: Code/Module/Profile_photo.php:516
-msgid "Use a photo from your albums"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:383
-#: Code/Module/Admin/Profile_photo.php:479 Code/Module/Cover_photo.php:429
-#: Code/Module/Profile_photo.php:518 include/conversation.php:1430
-#: include/conversation.php:1494 include/conversation.php:1496
-#: include/conversation.php:1498
-msgid "OK"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:384
-#: Code/Module/Admin/Profile_photo.php:480 Code/Module/Cover_photo.php:430
-#: Code/Module/Profile_photo.php:519 include/conversation.php:1294
-msgid "Choose images to embed"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:385
-#: Code/Module/Admin/Profile_photo.php:481 Code/Module/Cover_photo.php:431
-#: Code/Module/Profile_photo.php:520 include/conversation.php:1295
-msgid "Choose an album"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:386
-#: Code/Module/Admin/Profile_photo.php:482 Code/Module/Cover_photo.php:432
-#: Code/Module/Profile_photo.php:521
-msgid "Choose a different album"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:387
-#: Code/Module/Admin/Profile_photo.php:483 Code/Module/Cover_photo.php:433
-#: Code/Module/Profile_photo.php:522 include/conversation.php:1297
-msgid "Error getting album list"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:388
-#: Code/Module/Admin/Profile_photo.php:484 Code/Module/Cover_photo.php:434
-#: Code/Module/Profile_photo.php:523 include/conversation.php:1298
-msgid "Error getting photo link"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:389
-#: Code/Module/Admin/Profile_photo.php:485 Code/Module/Cover_photo.php:435
-#: Code/Module/Profile_photo.php:524 include/conversation.php:1299
-msgid "Error getting album"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:391
-#: Code/Module/Admin/Profile_photo.php:487 Code/Module/Cover_photo.php:437
-#: Code/Module/Profile_photo.php:526
-msgid "Select previously uploaded photo"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:407
-#: Code/Module/Admin/Profile_photo.php:502 Code/Module/Cover_photo.php:453
-#: Code/Module/Profile_photo.php:541
-msgid "Crop Image"
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:408
-#: Code/Module/Admin/Profile_photo.php:503 Code/Module/Cover_photo.php:454
-#: Code/Module/Profile_photo.php:542
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr ""
-
-#: Code/Module/Admin/Cover_photo.php:410
-#: Code/Module/Admin/Profile_photo.php:505 Code/Module/Cover_photo.php:456
-#: Code/Module/Profile_photo.php:544
-msgid "Done Editing"
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:23 Code/Module/Admin/Dbsync.php:58
-msgid "Update has been marked successful"
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:35
-#, php-format
-msgid "Verification of update %s failed. Check system logs."
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:37 Code/Module/Admin/Dbsync.php:72
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:40
-#, php-format
-msgid "Verifying update %s did not return a status. Unknown if it succeeded."
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:43
-#, php-format
-msgid "Update %s does not contain a verification function."
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:46 Code/Module/Admin/Dbsync.php:78
-#, php-format
-msgid "Update function %s could not be found."
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:70
-#, php-format
-msgid "Executing update procedure %s failed. Check system logs."
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:75
-#, php-format
-msgid ""
-"Update %s did not return a status. It cannot be determined if it was "
-"successful."
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:98
-msgid "Failed Updates"
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:100
-msgid "Mark success (if update was manually applied)"
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:101
-msgid "Attempt to verify this update if a verification procedure exists"
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:102
-msgid "Attempt to execute this update step automatically"
-msgstr ""
-
-#: Code/Module/Admin/Dbsync.php:106
-msgid "No failed updates."
-msgstr ""
-
-#: Code/Module/Admin/Logs.php:31
-msgid "Log settings updated."
-msgstr ""
-
-#: Code/Module/Admin/Logs.php:86 Code/Widget/Admin.php:57
-#: Code/Widget/Admin.php:67
-msgid "Logs"
-msgstr ""
-
-#: Code/Module/Admin/Logs.php:88
-msgid "Clear"
-msgstr ""
-
-#: Code/Module/Admin/Logs.php:94
-msgid "Debugging"
-msgstr ""
-
-#: Code/Module/Admin/Logs.php:95
-msgid "Log file"
-msgstr ""
-
-#: Code/Module/Admin/Logs.php:95
-msgid ""
-"Must be writable by web server. Relative to your top-level webserver "
-"directory."
-msgstr ""
-
-#: Code/Module/Admin/Logs.php:96
-msgid "Log level"
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:125
-#: Code/Module/Admin/Profile_photo.php:255 Code/Module/Profile_photo.php:122
-#: Code/Module/Profile_photo.php:291 include/photo_factory.php:540
-msgid "Profile Photos"
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:193 Code/Module/Profile_photo.php:226
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:270 Code/Module/Profile_photo.php:306
-msgid "Image upload failed."
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:289 Code/Module/Profile_photo.php:325
-msgid "Unable to process image."
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:467 Code/Module/Profile_photo.php:506
-msgid ""
-"Your default profile photo is visible to anybody on the internet. Profile "
-"photos for alternate profiles will inherit the permissions of the profile"
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:467
-msgid ""
-"Your site photo is visible to anybody on the internet and may be distributed "
-"to other websites."
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:471
-msgid "Use Photo for Site Logo"
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:471
-msgid "Change Site Logo"
-msgstr ""
-
-#: Code/Module/Admin/Profile_photo.php:472 Code/Module/Profile_photo.php:511
-msgid "Use"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:196
-msgid "Site settings updated."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:225 include/text.php:3579
-#: view/theme/redbasic/php/config.php:19
-msgid "Default"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:236 Code/Module/Settings/Display.php:151
-#, php-format
-msgid "%s - (Incompatible)"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:244
-msgid "mobile"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:247
-msgid "experimental"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:250
-msgid "unsupported"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:292
-msgid "Yes - with approval"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:298
-msgid "My site is not a public server"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:299
-msgid "My site provides free public access"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:300
-msgid "My site provides paid public access"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:301
-msgid "My site provides free public access and premium paid plans"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:307
-msgid "Default permission role for new accounts"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:307
-msgid ""
-"This role will be used for the first channel created after registration."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:315 Code/Widget/Admin.php:29
-msgid "Site"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:317
-msgid "Site Configuration"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:318 Code/Module/Register.php:292
-msgid "Registration"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:319
-msgid "File upload"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:320
-msgid "Policies"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:321 Code/Widget/Findpeople.php:29
-msgid "Advanced"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:323
-msgid "Site name"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:324
-msgid "Administrator Information"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:324
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode may be used here."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:325 Code/Module/Siteinfo.php:41
-msgid "Site Information"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:325
-msgid ""
-"Publicly visible description of this site. Displayed on siteinfo page. "
-"BBCode may be used here."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:326
-msgid "System language"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:327
-msgid "System theme"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:327
-msgid ""
-"Default system theme - may be over-ridden by user profiles - change theme settings"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:330
-msgid "ActivityPub protocol"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:330
-msgid "Provides access to software supporting the ActivityPub protocol."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:331
-msgid "Maximum image size"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:331
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:332
-msgid "Cache all public images"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:332
-msgid "If disabled, proxy non-SSL images, but do not store locally"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:333
-msgid "Does this site allow new member registration?"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:334
-msgid "Invitation only"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:334
-msgid ""
-"Only allow new member registrations with an invitation code. New member "
-"registration must be allowed for this to work."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:336
-msgid "Minimum age"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:336
-msgid "Minimum age (in years) for who may register on this site."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:337
-msgid "Which best describes the types of account offered by this hub?"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:337
-msgid ""
-"If a public server policy is selected, this information may be displayed on "
-"the public server site list."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:338
-msgid "Register text"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:338
-msgid "Will be displayed prominently on the registration page."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:339
-msgid "Require acceptance of Terms of Service"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:341
-msgid "Site homepage to show visitors (default: login box)"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:341
-msgid ""
-"example: 'public' to show public stream, 'page/sys/home' to show a system "
-"webpage called 'home' or 'include:home.html' to include a file."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:342
-msgid "Preserve site homepage URL"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:342
-msgid ""
-"Present the site homepage in a frame at the original location instead of "
-"redirecting"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:343
-msgid "Accounts abandoned after x days"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:343
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:344 Code/Module/Admin/Security.php:143
-msgid "Block directory from visitors"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:344 Code/Module/Admin/Security.php:143
-msgid "Only allow authenticated access to directory."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:345
-msgid "Verify Email Addresses"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:345
-msgid ""
-"Check to verify email addresses used in account registration (recommended)."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:346
-msgid "Force publish in directory"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:346
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:348
-msgid "Public stream"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:348
-msgid "Provide a Public stream on your site. This content is unmoderated."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:349
-msgid "the Public stream is disabled"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:350
-msgid "the Public stream contains public conversations from this site only"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:351
-msgid ""
-"the Public stream contains public conversations from anywhere on the internet"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:354
-msgid "Allow anybody on the internet to access the Public stream"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:354
-msgid ""
-"Default is to only allow viewing by site members. Warning: this content is "
-"unmoderated."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:355
-msgid "Show numbers of likes and dislikes in conversations"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:355
-msgid ""
-"If disabled, the presence of likes and dislikes will be shown, but without "
-"totals."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:356
-msgid "Permit animated profile photos"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:356
-msgid "Changing this may take several days to work through the system"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:357
-msgid "Only import Public stream posts with this text"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:357 Code/Module/Admin/Site.php:358
-msgid ""
-"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
-"all posts"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:358
-msgid "Do not import Public stream posts with this text"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:359
-msgid "Maximum number of imported friends of friends"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:359
-msgid ""
-"Warning: higher numbers will improve the quality of friend suggestions and "
-"directory results but can exponentially increase resource usage"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:360
-msgid "Login on Homepage"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:360
-msgid ""
-"Present a login box to visitors on the home page if no other content has "
-"been configured."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:361
-msgid "Enable context help"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:361
-msgid ""
-"Display contextual help for the current page when the help button is pressed."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:362
-msgid "Reply-to email address for system generated email."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:363
-msgid "Sender (From) email address for system generated email."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:364
-msgid "Display name of email sender for system generated email."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:365
-msgid "Directory Server URL"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:365
-msgid "Default directory server"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:366
-msgid "Proxy user"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:367
-msgid "Proxy URL"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:368
-msgid "Network fetch timeout"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:368 Code/Module/Admin/Site.php:369
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:369
-msgid "Network post timeout"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:370
-msgid "Delivery interval"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:370
-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 ""
-
-#: Code/Module/Admin/Site.php:371
-msgid "Deliveries per process"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:371
-msgid ""
-"Number of deliveries to attempt in a single operating system process. Adjust "
-"if necessary to tune system performance. Recommend: 1-5."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:372
-msgid "Queue Threshold"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:372
-msgid ""
-"Always defer immediate delivery if queue contains more than this number of "
-"entries."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:373
-msgid "Poll interval"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:373
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:374
-msgid "Path to ImageMagick convert program"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:374
-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 ""
-
-#: Code/Module/Admin/Site.php:375
-msgid "Maximum Load Average"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:375
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr ""
-
-#: Code/Module/Admin/Site.php:376
-msgid "Expiration period in days for imported streams and cached images"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:376
-msgid "0 for no expiration of imported content"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:377
-msgid ""
-"Do not expire any posts which have comments less than this many days ago"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:378
-msgid ""
-"Public servers: Optional landing (marketing) webpage for new registrants"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:378
-#, php-format
-msgid "Create this page first. Default is %s/register"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:379
-msgid "Page to display after creating a new channel"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:379
-msgid "Default: profiles"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:380
-msgid "Site location"
-msgstr ""
-
-#: Code/Module/Admin/Site.php:380
-msgid "Region or country - shared with other sites"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:98
-msgid "New Profile Field"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:99 Code/Module/Admin/Profs.php:120
-msgid "Field nickname"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:99 Code/Module/Admin/Profs.php:120
-msgid "System name of field"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:100 Code/Module/Admin/Profs.php:121
-msgid "Input type"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:101 Code/Module/Admin/Profs.php:122
-msgid "Field Name"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:101 Code/Module/Admin/Profs.php:122
-msgid "Label on profile pages"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:102 Code/Module/Admin/Profs.php:123
-msgid "Help text"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:102 Code/Module/Admin/Profs.php:123
-msgid "Additional info (optional)"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:113
-msgid "Field definition not found"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:119
-msgid "Edit Profile Field"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:185
-msgid "Profile Fields"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:186
-msgid "Basic Profile Fields"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:187
-msgid "Advanced Profile Fields"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:187
-msgid "(In addition to basic fields)"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:189
-msgid "All available fields"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:190
-msgid "Custom Fields"
-msgstr ""
-
-#: Code/Module/Admin/Profs.php:194
-msgid "Create Custom Field"
-msgstr ""
-
-#: Code/Module/Admin/Queue.php:38
-msgid "Queue Statistics"
-msgstr ""
-
-#: Code/Module/Admin/Queue.php:39
-msgid "Total Entries"
-msgstr ""
-
-#: Code/Module/Admin/Queue.php:40
-msgid "Priority"
-msgstr ""
-
-#: Code/Module/Admin/Queue.php:41
-msgid "Destination URL"
-msgstr ""
-
-#: Code/Module/Admin/Queue.php:42
-msgid "Mark hub permanently offline"
-msgstr ""
-
-#: Code/Module/Admin/Queue.php:43
-msgid "Empty queue for this hub"
-msgstr ""
-
-#: Code/Module/Admin/Queue.php:44
-msgid "Last known contact"
-msgstr ""
-
#: Code/Module/Admin/Security.php:129
msgid ""
"By default, unfiltered HTML is allowed in embedded media. This is inherently "
@@ -4202,6 +2905,14 @@ msgid ""
"Prevent access to search content unless you are currently authenticated."
msgstr ""
+#: Code/Module/Admin/Security.php:143 Code/Module/Admin/Site.php:309
+msgid "Block directory from visitors"
+msgstr ""
+
+#: Code/Module/Admin/Security.php:143 Code/Module/Admin/Site.php:309
+msgid "Only allow authenticated access to directory."
+msgstr ""
+
#: Code/Module/Admin/Security.php:144
msgid "Hide local directory"
msgstr ""
@@ -4335,6 +3046,1200 @@ msgstr ""
msgid "Block embedded HTML from these domains"
msgstr ""
+#: Code/Module/Admin/Queue.php:38
+msgid "Queue Statistics"
+msgstr ""
+
+#: Code/Module/Admin/Queue.php:39
+msgid "Total Entries"
+msgstr ""
+
+#: Code/Module/Admin/Queue.php:40
+msgid "Priority"
+msgstr ""
+
+#: Code/Module/Admin/Queue.php:41
+msgid "Destination URL"
+msgstr ""
+
+#: Code/Module/Admin/Queue.php:42
+msgid "Mark hub permanently offline"
+msgstr ""
+
+#: Code/Module/Admin/Queue.php:43
+msgid "Empty queue for this hub"
+msgstr ""
+
+#: Code/Module/Admin/Queue.php:44
+msgid "Last known contact"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:98
+msgid "New Profile Field"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:99 Code/Module/Admin/Profs.php:120
+msgid "Field nickname"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:99 Code/Module/Admin/Profs.php:120
+msgid "System name of field"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:100 Code/Module/Admin/Profs.php:121
+msgid "Input type"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:101 Code/Module/Admin/Profs.php:122
+msgid "Field Name"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:101 Code/Module/Admin/Profs.php:122
+msgid "Label on profile pages"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:102 Code/Module/Admin/Profs.php:123
+msgid "Help text"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:102 Code/Module/Admin/Profs.php:123
+msgid "Additional info (optional)"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:113
+msgid "Field definition not found"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:119
+msgid "Edit Profile Field"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:185
+msgid "Profile Fields"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:186
+msgid "Basic Profile Fields"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:187
+msgid "Advanced Profile Fields"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:187
+msgid "(In addition to basic fields)"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:189
+msgid "All available fields"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:190
+msgid "Custom Fields"
+msgstr ""
+
+#: Code/Module/Admin/Profs.php:194
+msgid "Create Custom Field"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:71 Code/Module/Admin/Cover_photo.php:68
+#: Code/Module/Cover_photo.php:68 Code/Module/Profile_photo.php:68
+msgid "Image uploaded but image cropping failed."
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:125
+#: Code/Module/Admin/Profile_photo.php:255 Code/Module/Profile_photo.php:122
+#: Code/Module/Profile_photo.php:291 include/photo_factory.php:540
+msgid "Profile Photos"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:149
+#: Code/Module/Admin/Cover_photo.php:203 Code/Module/Cover_photo.php:203
+#: Code/Module/Profile_photo.php:148
+msgid "Image resize failed."
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:193 Code/Module/Profile_photo.php:226
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:195
+#: Code/Module/Admin/Cover_photo.php:212 Code/Module/Cover_photo.php:215
+#: Code/Module/Profile_photo.php:231 include/photos.php:204
+msgid "Unable to process image"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:270 Code/Module/Profile_photo.php:306
+msgid "Image upload failed."
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:289 Code/Module/Profile_photo.php:325
+msgid "Unable to process image."
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:358
+#: Code/Module/Admin/Profile_photo.php:401
+#: Code/Module/Admin/Cover_photo.php:321 Code/Module/Admin/Cover_photo.php:337
+#: Code/Module/Cover_photo.php:368 Code/Module/Cover_photo.php:384
+#: Code/Module/Profile_photo.php:390 Code/Module/Profile_photo.php:441
+msgid "Photo not available."
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:467 Code/Module/Profile_photo.php:506
+msgid ""
+"Your default profile photo is visible to anybody on the internet. Profile "
+"photos for alternate profiles will inherit the permissions of the profile"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:467
+msgid ""
+"Your site photo is visible to anybody on the internet and may be distributed "
+"to other websites."
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:469
+#: Code/Module/Admin/Cover_photo.php:375 Code/Module/Cover_photo.php:421
+#: Code/Module/Profile_photo.php:508
+msgid "Upload File:"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:470
+#: Code/Module/Admin/Cover_photo.php:376 Code/Module/Cover_photo.php:422
+#: Code/Module/Profile_photo.php:509
+msgid "Select a profile:"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:471
+msgid "Use Photo for Site Logo"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:471
+msgid "Change Site Logo"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:472 Code/Module/Profile_photo.php:511
+msgid "Use"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:472
+#: Code/Module/Admin/Cover_photo.php:378 Code/Module/Cover_photo.php:424
+#: Code/Module/Embedphotos.php:229 Code/Module/Photos.php:754
+#: Code/Module/Profile_photo.php:511 Code/Widget/Portfolio.php:124
+#: Code/Widget/Cdav.php:157 Code/Widget/Cdav.php:191 Code/Widget/Album.php:109
+#: Code/Storage/Browser.php:422
+msgid "Upload"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:476
+#: Code/Module/Admin/Profile_photo.php:477
+#: Code/Module/Admin/Cover_photo.php:380 Code/Module/Admin/Cover_photo.php:381
+#: Code/Module/Cover_photo.php:426 Code/Module/Cover_photo.php:427
+#: Code/Module/Profile_photo.php:515 Code/Module/Profile_photo.php:516
+msgid "Use a photo from your albums"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:478
+#: Code/Module/Admin/Cover_photo.php:382 Code/Module/Admin/Addons.php:425
+#: Code/Module/Card_edit.php:142 Code/Module/Cdav.php:1066
+#: Code/Module/Cdav.php:1374 Code/Module/Connedit.php:890
+#: Code/Module/Cover_photo.php:428 Code/Module/Editblock.php:156
+#: Code/Module/Editlayout.php:153 Code/Module/Editpost.php:150
+#: Code/Module/Editwebpage.php:187 Code/Module/Fbrowser.php:75
+#: Code/Module/Fbrowser.php:98 Code/Module/Filer.php:64
+#: Code/Module/Profile_photo.php:517 Code/Module/Profiles.php:854
+#: Code/Module/Settings/Oauth2.php:116 Code/Module/Settings/Oauth2.php:146
+#: Code/Module/Settings/Oauth.php:99 Code/Module/Settings/Oauth.php:127
+#: Code/Module/Tagrm.php:21 Code/Module/Tagrm.php:152
+#: include/conversation.php:1429 include/conversation.php:1495
+#: include/conversation.php:1497 include/conversation.php:1499
+msgid "Cancel"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:479
+#: Code/Module/Admin/Cover_photo.php:383 Code/Module/Cover_photo.php:429
+#: Code/Module/Profile_photo.php:518 include/conversation.php:1430
+#: include/conversation.php:1494 include/conversation.php:1496
+#: include/conversation.php:1498
+msgid "OK"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:480
+#: Code/Module/Admin/Cover_photo.php:384 Code/Module/Cover_photo.php:430
+#: Code/Module/Profile_photo.php:519 include/conversation.php:1294
+msgid "Choose images to embed"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:481
+#: Code/Module/Admin/Cover_photo.php:385 Code/Module/Cover_photo.php:431
+#: Code/Module/Profile_photo.php:520 include/conversation.php:1295
+msgid "Choose an album"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:482
+#: Code/Module/Admin/Cover_photo.php:386 Code/Module/Cover_photo.php:432
+#: Code/Module/Profile_photo.php:521
+msgid "Choose a different album"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:483
+#: Code/Module/Admin/Cover_photo.php:387 Code/Module/Cover_photo.php:433
+#: Code/Module/Profile_photo.php:522 include/conversation.php:1297
+msgid "Error getting album list"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:484
+#: Code/Module/Admin/Cover_photo.php:388 Code/Module/Cover_photo.php:434
+#: Code/Module/Profile_photo.php:523 include/conversation.php:1298
+msgid "Error getting photo link"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:485
+#: Code/Module/Admin/Cover_photo.php:389 Code/Module/Cover_photo.php:435
+#: Code/Module/Profile_photo.php:524 include/conversation.php:1299
+msgid "Error getting album"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:487
+#: Code/Module/Admin/Cover_photo.php:391 Code/Module/Cover_photo.php:437
+#: Code/Module/Profile_photo.php:526
+msgid "Select previously uploaded photo"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:502
+#: Code/Module/Admin/Cover_photo.php:407 Code/Module/Cover_photo.php:453
+#: Code/Module/Profile_photo.php:541
+msgid "Crop Image"
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:503
+#: Code/Module/Admin/Cover_photo.php:408 Code/Module/Cover_photo.php:454
+#: Code/Module/Profile_photo.php:542
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr ""
+
+#: Code/Module/Admin/Profile_photo.php:505
+#: Code/Module/Admin/Cover_photo.php:410 Code/Module/Cover_photo.php:456
+#: Code/Module/Profile_photo.php:544
+msgid "Done Editing"
+msgstr ""
+
+#: Code/Module/Admin/Logs.php:31
+msgid "Log settings updated."
+msgstr ""
+
+#: Code/Module/Admin/Logs.php:86 Code/Widget/Admin.php:57
+#: Code/Widget/Admin.php:67
+msgid "Logs"
+msgstr ""
+
+#: Code/Module/Admin/Logs.php:88
+msgid "Clear"
+msgstr ""
+
+#: Code/Module/Admin/Logs.php:94
+msgid "Debugging"
+msgstr ""
+
+#: Code/Module/Admin/Logs.php:95
+msgid "Log file"
+msgstr ""
+
+#: Code/Module/Admin/Logs.php:95
+msgid ""
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr ""
+
+#: Code/Module/Admin/Logs.php:96
+msgid "Log level"
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:23 Code/Module/Admin/Dbsync.php:58
+msgid "Update has been marked successful"
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:35
+#, php-format
+msgid "Verification of update %s failed. Check system logs."
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:37 Code/Module/Admin/Dbsync.php:72
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:40
+#, php-format
+msgid "Verifying update %s did not return a status. Unknown if it succeeded."
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:43
+#, php-format
+msgid "Update %s does not contain a verification function."
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:46 Code/Module/Admin/Dbsync.php:78
+#, php-format
+msgid "Update function %s could not be found."
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:70
+#, php-format
+msgid "Executing update procedure %s failed. Check system logs."
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:75
+#, php-format
+msgid ""
+"Update %s did not return a status. It cannot be determined if it was "
+"successful."
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:98
+msgid "Failed Updates"
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:100
+msgid "Mark success (if update was manually applied)"
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:101
+msgid "Attempt to verify this update if a verification procedure exists"
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:102
+msgid "Attempt to execute this update step automatically"
+msgstr ""
+
+#: Code/Module/Admin/Dbsync.php:106
+msgid "No failed updates."
+msgstr ""
+
+#: Code/Module/Admin/Cover_photo.php:179 Code/Module/Admin/Cover_photo.php:263
+#: Code/Module/Cover_photo.php:179 Code/Module/Cover_photo.php:266
+msgid "Cover Photos"
+msgstr ""
+
+#: Code/Module/Admin/Cover_photo.php:373 Code/Module/Cover_photo.php:419
+msgid "Your cover photo may be visible to anybody on the internet"
+msgstr ""
+
+#: Code/Module/Admin/Cover_photo.php:377 Code/Module/Cover_photo.php:423
+msgid "Change Cover Photo"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:41
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Module/Admin/Channels.php:51
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Module/Admin/Channels.php:57
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Module/Admin/Channels.php:78
+msgid "Channel not found"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:89
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:104
+#, php-format
+msgid "Channel '%s' censored"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:104
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:118
+#, php-format
+msgid "Channel '%s' code allowed"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:118
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:176 Code/Module/Admin/Accounts.php:182
+msgid "select all"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:178 Code/Module/Connedit.php:595
+#: Code/Module/Directory.php:396
+msgid "Censor"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:179 Code/Module/Connedit.php:595
+#: Code/Module/Directory.php:396
+msgid "Uncensor"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:180
+msgid "Allow Code"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:181
+msgid "Disallow Code"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:186
+msgid "UID"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:187 Code/Module/Cdav.php:1356
+#: Code/Module/Chat.php:259 Code/Module/Connections.php:235
+#: Code/Module/Connedit.php:872 Code/Module/Lists.php:206
+#: Code/Module/Settings/Oauth2.php:117 Code/Module/Settings/Oauth2.php:147
+#: Code/Module/Settings/Oauth.php:100 Code/Module/Settings/Oauth.php:128
+#: Code/Module/Sharedwithme.php:109 Code/Widget/Activity_filter.php:298
+#: Code/Storage/Browser.php:313
+msgid "Name"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:188 Code/Module/Cdav.php:1363
+#: Code/Module/Connedit.php:879 Code/Module/Locs.php:135
+#: Code/Module/Profiles.php:533 Code/Module/Profiles.php:843
+msgid "Address"
+msgstr ""
+
+#: Code/Module/Admin/Channels.php:190
+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 ""
+
+#: Code/Module/Admin/Channels.php:191
+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?"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:44
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s accounts blocked/unblocked"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Module/Admin/Accounts.php:52
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Module/Admin/Accounts.php:92
+msgid "Account not found"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:112
+#, php-format
+msgid "Account '%s' blocked"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:121
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:183
+msgid "Registrations waiting for confirm"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:184
+msgid "Request date"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:184 Code/Module/Admin/Accounts.php:196
+#: Code/Module/Cdav.php:1360 Code/Module/Connedit.php:876
+#: Code/Module/Profiles.php:840 include/network.php:1762
+msgid "Email"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:185
+msgid "No registrations."
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:186 Code/Module/Connections.php:340
+#: include/conversation.php:659
+msgid "Approve"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:187 Code/Module/Authorize.php:42
+msgid "Deny"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:189 Code/Module/Connedit.php:579
+#: Code/Widget/Sblock.php:23
+msgid "Block"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:190 Code/Module/Connedit.php:579
+msgid "Unblock"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:195
+msgid "ID"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:197
+msgid "All Channels"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:198
+msgid "Register date"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:199
+msgid "Last login"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:200
+msgid "Expires"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:201
+msgid "Service Class"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:203
+msgid ""
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted "
+"on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr ""
+
+#: Code/Module/Admin/Accounts.php:204
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr ""
+
+#: Code/Module/Admin/Account_edit.php:34
+#, php-format
+msgid "Password changed for account %d."
+msgstr ""
+
+#: Code/Module/Admin/Account_edit.php:50
+msgid "Account settings updated."
+msgstr ""
+
+#: Code/Module/Admin/Account_edit.php:69
+msgid "Account not found."
+msgstr ""
+
+#: Code/Module/Admin/Account_edit.php:76
+msgid "Account Edit"
+msgstr ""
+
+#: Code/Module/Admin/Account_edit.php:77
+msgid "New Password"
+msgstr ""
+
+#: Code/Module/Admin/Account_edit.php:78
+msgid "New Password again"
+msgstr ""
+
+#: Code/Module/Admin/Account_edit.php:79
+msgid "Account language (for emails)"
+msgstr ""
+
+#: Code/Module/Admin/Account_edit.php:80
+msgid "Service class"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:184
+msgid "Site settings updated."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:213 include/text.php:3579
+#: view/theme/redbasic/php/config.php:19
+msgid "Default"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:224 Code/Module/Settings/Display.php:152
+#, php-format
+msgid "%s - (Incompatible)"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:232
+msgid "mobile"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:235
+msgid "experimental"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:238
+msgid "unsupported"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:257
+msgid "Yes - with approval"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:263
+msgid "My site is not a public server"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:264
+msgid "My site provides free public access"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:265
+msgid "My site provides paid public access"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:266
+msgid "My site provides free public access and premium paid plans"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:272
+msgid "Default permission role for new accounts"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:272
+msgid ""
+"This role will be used for the first channel created after registration."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:280 Code/Widget/Admin.php:29
+msgid "Site"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:282
+msgid "Site Configuration"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:283 Code/Module/Register.php:292
+msgid "Registration"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:284
+msgid "File upload"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:285
+msgid "Policies"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:286 Code/Widget/Findpeople.php:29
+msgid "Advanced"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:288
+msgid "Site name"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:289
+msgid "Administrator Information"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:289
+msgid ""
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode may be used here."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:290 Code/Module/Siteinfo.php:41
+msgid "Site Information"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:290
+msgid ""
+"Publicly visible description of this site. Displayed on siteinfo page. "
+"BBCode may be used here."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:291
+msgid "System language"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:292
+msgid "System theme"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:292
+msgid ""
+"Default system theme - may be over-ridden by user profiles - change theme settings"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:295
+msgid "ActivityPub protocol"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:295
+msgid "Provides access to software supporting the ActivityPub protocol."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:296
+msgid "Maximum image size"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:296
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:297
+msgid "Cache all public images"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:297
+msgid "If disabled, proxy non-SSL images, but do not store locally"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:298
+msgid "Does this site allow new member registration?"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:299
+msgid "Invitation only"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:299
+msgid ""
+"Only allow new member registrations with an invitation code. New member "
+"registration must be allowed for this to work."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:301
+msgid "Minimum age"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:301
+msgid "Minimum age (in years) for who may register on this site."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:302
+msgid "Which best describes the types of account offered by this site?"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:302
+msgid ""
+"If a public server policy is selected, this information may be displayed on "
+"the public server site list."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:303
+msgid "Register text"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:303
+msgid "Will be displayed prominently on the registration page."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:304
+msgid "Require acceptance of Terms of Service"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:306
+msgid "Site homepage to show visitors (default: login box)"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:306
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:307
+msgid "Preserve site homepage URL"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:307
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:308
+msgid "Accounts abandoned after x days"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:308
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:310
+msgid "Verify Email Addresses"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:310
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:311
+msgid "Force publish in directory"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:311
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:313
+msgid "Public stream"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:313
+msgid "Provide a Public stream on your site. This content is unmoderated."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:314
+msgid "the Public stream is disabled"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:315
+msgid "the Public stream contains public conversations from this site only"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:316
+msgid ""
+"the Public stream contains public conversations from anywhere on the internet"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:319
+msgid "Allow anybody on the internet to access the Public stream"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:319
+msgid ""
+"Default is to only allow viewing by site members. Warning: this content is "
+"unmoderated."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:320
+msgid "Show numbers of likes and dislikes in conversations"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:320
+msgid ""
+"If disabled, the presence of likes and dislikes will be shown, but without "
+"totals."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:321
+msgid "Permit animated profile photos"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:321
+msgid "Changing this may take several days to work through the system"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:322
+msgid "Only import Public stream posts with this text"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:322 Code/Module/Admin/Site.php:323
+msgid ""
+"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
+"all posts"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:323
+msgid "Do not import Public stream posts with this text"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:324
+msgid "Maximum number of imported friends of friends"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:324
+msgid ""
+"Warning: higher numbers will improve the quality of friend suggestions and "
+"directory results but can exponentially increase resource usage"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:325
+msgid "Login on Homepage"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:325
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:326
+msgid "Enable context help"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:326
+msgid ""
+"Display contextual help for the current page when the help button is pressed."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:327
+msgid "Reply-to email address for system generated email."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:328
+msgid "Sender (From) email address for system generated email."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:329
+msgid "Display name of email sender for system generated email."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:330
+msgid "Proxy user"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:331
+msgid "Proxy URL"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:332
+msgid "Network fetch timeout"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:332 Code/Module/Admin/Site.php:333
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:333
+msgid "Network post timeout"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:334
+msgid "Delivery interval"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:334
+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 ""
+
+#: Code/Module/Admin/Site.php:335
+msgid "Deliveries per process"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:335
+msgid ""
+"Number of deliveries to attempt in a single operating system process. Adjust "
+"if necessary to tune system performance. Recommend: 1-5."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:336
+msgid "Queue Threshold"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:336
+msgid ""
+"Always defer immediate delivery if queue contains more than this number of "
+"entries."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:337
+msgid "Poll interval"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:337
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:338
+msgid "Path to ImageMagick convert program"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:338
+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 ""
+
+#: Code/Module/Admin/Site.php:339
+msgid "Maximum Load Average"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:339
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr ""
+
+#: Code/Module/Admin/Site.php:340
+msgid "Expiration period in days for imported streams and cached images"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:340
+msgid "0 for no expiration of imported content"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:341
+msgid ""
+"Do not expire any posts which have comments less than this many days ago"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:342
+msgid ""
+"Public servers: Optional landing (marketing) webpage for new registrants"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:342
+#, php-format
+msgid "Create this page first. Default is %s/register"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:343
+msgid "Page to display after creating a new channel"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:343
+msgid "Default: profiles"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:344
+msgid "Site location"
+msgstr ""
+
+#: Code/Module/Admin/Site.php:344
+msgid "Region or country - shared with other sites"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:288
+#, php-format
+msgid "Plugin %s disabled."
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:292
+#, php-format
+msgid "Plugin %s enabled."
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:308 Code/Module/Admin/Themes.php:107
+msgid "Disable"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:311 Code/Module/Admin/Themes.php:110
+msgid "Enable"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:341 Code/Module/Admin/Addons.php:439
+#: Code/Widget/Admin.php:36
+msgid "Addons"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:342 Code/Module/Admin/Themes.php:138
+msgid "Toggle"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:350 Code/Module/Admin/Themes.php:148
+msgid "Author: "
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:351 Code/Module/Admin/Themes.php:149
+msgid "Maintainer: "
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:352
+msgid "Minimum project version: "
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:353
+msgid "Maximum project version: "
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:354
+msgid "Minimum PHP version: "
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:355
+msgid "Compatible Server Roles: "
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:356
+msgid "Requires: "
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:357 Code/Module/Admin/Addons.php:444
+msgid "Disabled - version incompatibility"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:412
+msgid "Enter the public git repository URL of the addon repo."
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:413
+msgid "Addon repo git URL"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:414
+msgid "Custom repo name"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:414
+msgid "(optional)"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:415
+msgid "Download Addon Repo"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:423
+msgid "Install new repo"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:447
+msgid "Manage Repos"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:448
+msgid "Installed Addon Repositories"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:449
+msgid "Install a New Addon Repository"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:455 Code/Module/Cdav.php:1061
+#: Code/Module/Cdav.php:1372 Code/Module/Connedit.php:888
+#: Code/Module/Profiles.php:852 Code/Module/Settings/Oauth2.php:57
+#: Code/Module/Settings/Oauth2.php:145 Code/Module/Settings/Oauth.php:48
+#: Code/Module/Settings/Oauth.php:126
+msgid "Update"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:456
+msgid "Switch branch"
+msgstr ""
+
+#: Code/Module/Admin/Addons.php:457 Code/Module/Photos.php:1076
+#: Code/Module/Tagrm.php:151 Code/Module/Superblock.php:236
+#: Code/Module/Superblock.php:253
+msgid "Remove"
+msgstr ""
+
#: Code/Module/Admin/Themes.php:31
msgid "Theme settings updated."
msgstr ""
@@ -4505,21 +4410,21 @@ msgstr ""
msgid "Location (URL) to purchase app"
msgstr ""
-#: Code/Module/Apporder.php:50
+#: Code/Module/Apporder.php:54
msgid "Change order of pinned navbar apps"
msgstr ""
-#: Code/Module/Apporder.php:50
+#: Code/Module/Apporder.php:54
msgid "Change order of app tray apps"
msgstr ""
-#: Code/Module/Apporder.php:51
+#: Code/Module/Apporder.php:55
msgid ""
"Use arrows to move the corresponding app left (top) or right (bottom) in the "
"navbar"
msgstr ""
-#: Code/Module/Apporder.php:52
+#: Code/Module/Apporder.php:56
msgid "Use arrows to move the corresponding app up or down in the app tray"
msgstr ""
@@ -4559,7 +4464,7 @@ msgstr ""
#: Code/Module/Block.php:49 Code/Module/Cal.php:74 Code/Module/Card_edit.php:56
#: Code/Module/Chanview.php:104 Code/Module/Page.php:85
#: Code/Module/Wall_upload.php:37 Code/Module/Superblock.php:66
-#: include/items.php:4405
+#: include/items.php:4404
msgid "Channel not found."
msgstr ""
@@ -4598,8 +4503,8 @@ msgstr ""
#: Code/Module/Connedit.php:887 Code/Module/Layouts.php:201
#: Code/Module/Menu.php:190 Code/Module/New_channel.php:206
#: Code/Module/Profiles.php:851 Code/Module/Webpages.php:268
-#: Code/Storage/Browser.php:302 Code/Storage/Browser.php:420
#: Code/Widget/Cdav.php:151 Code/Widget/Cdav.php:187
+#: Code/Storage/Browser.php:302 Code/Storage/Browser.php:420
msgid "Create"
msgstr ""
@@ -4674,8 +4579,8 @@ msgid "Event not found."
msgstr ""
#: Code/Module/Calendar.php:254 Code/Module/Events.php:300
-#: Code/Module/Like.php:176 Code/Module/Tagger.php:89 include/event.php:1339
-#: include/conversation.php:138 include/text.php:2383
+#: Code/Module/Like.php:176 Code/Module/Tagger.php:89 include/text.php:2383
+#: include/event.php:1339 include/conversation.php:138
msgid "event"
msgstr ""
@@ -4770,8 +4675,8 @@ msgstr ""
msgid "CardDAV App"
msgstr ""
-#: Code/Module/Cdav.php:893 extend/addon/a/fuzzloc/Mod_Fuzzloc.php:37
-#: extend/addon/a/gallery/Mod_Gallery.php:61
+#: Code/Module/Cdav.php:893 extend/addon/a/fuzzloc/Mod_Fuzzloc.php:39
+#: extend/addon/a/gallery/Mod_Gallery.php:63
msgid "Not Installed"
msgstr ""
@@ -4872,19 +4777,19 @@ msgid "Note"
msgstr ""
#: Code/Module/Cdav.php:1365 Code/Module/Connedit.php:881
-#: Code/Module/Profiles.php:845 include/connections.php:839
+#: Code/Module/Profiles.php:845 include/connections.php:843
#: include/event.php:1515
msgid "Mobile"
msgstr ""
#: Code/Module/Cdav.php:1366 Code/Module/Connedit.php:882
-#: Code/Module/Profiles.php:846 include/connections.php:840
+#: Code/Module/Profiles.php:846 include/connections.php:844
#: include/event.php:1516
msgid "Home"
msgstr ""
#: Code/Module/Cdav.php:1367 Code/Module/Connedit.php:883
-#: Code/Module/Profiles.php:847 include/connections.php:843
+#: Code/Module/Profiles.php:847 include/connections.php:847
#: include/event.php:1519
msgid "Work"
msgstr ""
@@ -4892,8 +4797,8 @@ msgstr ""
#: Code/Module/Cdav.php:1368 Code/Module/Connedit.php:884
#: Code/Module/Profiles.php:848 Code/Module/Profiles.php:989
#: Code/Module/Profiles.php:1007 Code/Module/Profiles.php:1077
-#: Code/Module/Profiles.php:1114 include/connections.php:846
-#: include/connections.php:852 include/event.php:1522 include/event.php:1528
+#: Code/Module/Profiles.php:1114 include/connections.php:850
+#: include/connections.php:856 include/event.php:1522 include/event.php:1528
msgid "Other"
msgstr ""
@@ -5008,7 +4913,7 @@ msgstr ""
msgid "Reset form"
msgstr ""
-#: Code/Module/Channel.php:562 Code/Module/Display.php:442
+#: Code/Module/Channel.php:562 Code/Module/Display.php:440
msgid ""
"You must enable javascript for your browser to be able to view this content."
msgstr ""
@@ -5114,7 +5019,7 @@ msgid ""
"access your channel."
msgstr ""
-#: Code/Module/Cloud.php:132 Code/Module/Item.php:1755
+#: Code/Module/Cloud.php:132 Code/Module/Item.php:1771
msgid "Not found"
msgstr ""
@@ -5123,7 +5028,7 @@ msgstr ""
#: Code/Module/Like.php:111 Code/Module/Lists.php:173 Code/Module/Lists.php:219
#: Code/Module/Lists.php:248 Code/Module/Lists.php:290
#: Code/Module/Profperm.php:35 Code/Module/Share.php:82
-#: Code/Module/Subthread.php:99 Code/Web/WebServer.php:71 include/items.php:475
+#: Code/Module/Subthread.php:99 Code/Web/WebServer.php:71 include/items.php:474
msgid "Permission denied"
msgstr ""
@@ -5564,7 +5469,7 @@ msgstr ""
msgid "Connection Default Permissions"
msgstr ""
-#: Code/Module/Connedit.php:814 include/items.php:4402
+#: Code/Module/Connedit.php:814 include/items.php:4401
#, php-format
msgid "Connection: %s"
msgstr ""
@@ -5641,7 +5546,7 @@ msgstr ""
msgid "Do not import posts with this text"
msgstr ""
-#: Code/Module/Connedit.php:842 extend/addon/a/zotpost/Mod_zotpost.php:70
+#: Code/Module/Connedit.php:842 extend/addon/a/zotpost/Mod_zotpost.php:71
msgid "Nickname"
msgstr ""
@@ -5669,12 +5574,12 @@ msgid "Their Settings"
msgstr ""
#: Code/Module/Connedit.php:857 Code/Module/Defperms.php:259
-#: Code/Module/Settings/Permcats.php:138 Code/Module/Settings/Tokens.php:310
+#: Code/Module/Settings/Tokens.php:310 Code/Module/Settings/Permcats.php:138
msgid "My Settings"
msgstr ""
#: Code/Module/Connedit.php:859 Code/Module/Defperms.php:262
-#: Code/Module/Settings/Permcats.php:144 Code/Module/Settings/Tokens.php:315
+#: Code/Module/Settings/Tokens.php:315 Code/Module/Settings/Permcats.php:144
msgid "Individual Permissions"
msgstr ""
@@ -5721,32 +5626,32 @@ msgstr ""
msgid "Content Filter Settings"
msgstr ""
-#: Code/Module/Cover_photo.php:285 include/items.php:4759
+#: Code/Module/Cover_photo.php:285 include/items.php:4758
msgid "female"
msgstr ""
-#: Code/Module/Cover_photo.php:286 include/items.php:4760
+#: Code/Module/Cover_photo.php:286 include/items.php:4759
#, php-format
msgid "%1$s updated her %2$s"
msgstr ""
-#: Code/Module/Cover_photo.php:287 include/items.php:4761
+#: Code/Module/Cover_photo.php:287 include/items.php:4760
msgid "male"
msgstr ""
-#: Code/Module/Cover_photo.php:288 include/items.php:4762
+#: Code/Module/Cover_photo.php:288 include/items.php:4761
#, php-format
msgid "%1$s updated his %2$s"
msgstr ""
-#: Code/Module/Cover_photo.php:290 include/items.php:4764
+#: Code/Module/Cover_photo.php:290 include/items.php:4763
#, php-format
msgid "%1$s updated their %2$s"
msgstr ""
#: Code/Module/Defperms.php:106 Code/Module/Settings/Channel.php:365
-#: extend/addon/a/faces/faces.php:209 extend/addon/a/logrot/logrot.php:55
-#: extend/addon/a/openstreetmap/openstreetmap.php:223
+#: extend/addon/a/faces/faces.php:209 extend/addon/a/logrot/logrot.php:56
+#: extend/addon/a/openstreetmap/openstreetmap.php:224
msgid "Settings updated."
msgstr ""
@@ -5759,8 +5664,8 @@ msgstr ""
msgid "Automatic approval settings"
msgstr ""
-#: Code/Module/Defperms.php:257 Code/Module/Settings/Permcats.php:141
-#: Code/Module/Settings/Tokens.php:312
+#: Code/Module/Defperms.php:257 Code/Module/Settings/Tokens.php:312
+#: Code/Module/Settings/Permcats.php:141
msgid "inherited"
msgstr ""
@@ -5865,50 +5770,50 @@ msgstr ""
msgid "No entries (some entries may be hidden)."
msgstr ""
-#: Code/Module/Display.php:395
+#: Code/Module/Display.php:393
#, php-format
msgid "\"%1$s\", shared by %2$s with %3$s"
msgstr ""
-#: Code/Module/Display.php:396
+#: Code/Module/Display.php:394
#, php-format
msgid "%1$s shared this post with %2$s"
msgstr ""
-#: Code/Module/Display.php:400
+#: Code/Module/Display.php:398
msgid "Not much to read, click to see the post."
msgstr ""
-#: Code/Module/Display.php:404
+#: Code/Module/Display.php:402
#, php-format
msgid "%1$s shared a reaction to \"%2$s\""
msgstr ""
-#: Code/Module/Display.php:405
+#: Code/Module/Display.php:403
#, php-format
msgid "%s shared a reaction to this post/conversation"
msgstr ""
-#: Code/Module/Display.php:412
+#: Code/Module/Display.php:410
#, php-format
msgid "%1$s commented \"%2$s\""
msgstr ""
-#: Code/Module/Display.php:413
+#: Code/Module/Display.php:411
#, php-format
msgid "%s shared a comment of this post/conversation"
msgstr ""
-#: Code/Module/Display.php:417
+#: Code/Module/Display.php:415
#, php-format
msgid "%1$s wrote this: \"%2$s\""
msgstr ""
-#: Code/Module/Display.php:459
+#: Code/Module/Display.php:457
msgid "Article"
msgstr ""
-#: Code/Module/Display.php:512
+#: Code/Module/Display.php:510
msgid "Item has been removed."
msgstr ""
@@ -6064,20 +5969,20 @@ msgstr ""
msgid "Validation token"
msgstr ""
-#: Code/Module/Embedphotos.php:107 include/bbcode.php:259
-#: include/bbcode.php:1126 include/bbcode.php:2032 include/bbcode.php:2034
-#: include/bbcode.php:2037 include/text.php:1838 include/text.php:1839
+#: Code/Module/Embedphotos.php:107 include/text.php:1838 include/text.php:1839
+#: include/bbcode.php:259 include/bbcode.php:1126 include/bbcode.php:2032
+#: include/bbcode.php:2034 include/bbcode.php:2037
msgid "Image/photo"
msgstr ""
#: Code/Module/Embedphotos.php:212 Code/Module/Photos.php:856
-#: Code/Module/Photos.php:1413 Code/Widget/Album.php:90
-#: Code/Widget/Portfolio.php:101
+#: Code/Module/Photos.php:1413 Code/Widget/Portfolio.php:101
+#: Code/Widget/Album.php:90
msgid "View Photo"
msgstr ""
#: Code/Module/Embedphotos.php:227 Code/Module/Photos.php:887
-#: Code/Widget/Album.php:107 Code/Widget/Portfolio.php:122
+#: Code/Widget/Portfolio.php:122 Code/Widget/Album.php:107
msgid "Edit Album"
msgstr ""
@@ -6258,7 +6163,7 @@ msgstr ""
msgid "Move to directory"
msgstr ""
-#: Code/Module/Filestorage.php:242 extend/addon/a/faces/Mod_Faces.php:180
+#: Code/Module/Filestorage.php:242 extend/addon/a/faces/Mod_Faces.php:182
#: extend/addon/a/flashcards/Mod_Flashcards.php:264
msgid "Set/edit permissions"
msgstr ""
@@ -6389,6 +6294,11 @@ msgstr ""
msgid "Imported file is empty."
msgstr ""
+#: Code/Module/Import.php:165 Code/Import/Friendica.php:67
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr ""
+
#: Code/Module/Import.php:193
msgid "No channel. Import failed."
msgstr ""
@@ -6574,38 +6484,38 @@ msgstr ""
msgid "Empty post discarded."
msgstr ""
-#: Code/Module/Item.php:1518
+#: Code/Module/Item.php:1534
msgid "Duplicate post suppressed."
msgstr ""
-#: Code/Module/Item.php:1565
+#: Code/Module/Item.php:1581
msgid ""
"Draft saved. Use Drafts app to continue "
"editing."
msgstr ""
-#: Code/Module/Item.php:1609
+#: Code/Module/Item.php:1625
msgid "Your comment has been posted."
msgstr ""
-#: Code/Module/Item.php:1678
+#: Code/Module/Item.php:1694
msgid "System error. Post not saved."
msgstr ""
-#: Code/Module/Item.php:1720
+#: Code/Module/Item.php:1736
msgid "Your post/comment is awaiting approval."
msgstr ""
-#: Code/Module/Item.php:1889
+#: Code/Module/Item.php:1905
msgid "Unable to obtain post information from database."
msgstr ""
-#: Code/Module/Item.php:1897
+#: Code/Module/Item.php:1913
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr ""
-#: Code/Module/Item.php:1903
+#: Code/Module/Item.php:1919
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr ""
@@ -6626,8 +6536,9 @@ msgstr ""
msgid "Download PDL file"
msgstr ""
-#: Code/Module/Like.php:174 Code/Module/Subthread.php:126
-#: Code/Module/Tagger.php:85 include/conversation.php:135 include/text.php:2380
+#: Code/Module/Like.php:174 Code/Module/Tagger.php:85
+#: Code/Module/Subthread.php:126 include/text.php:2380
+#: include/conversation.php:135
msgid "photo"
msgstr ""
@@ -6674,7 +6585,7 @@ msgstr ""
msgid "Could not create access list."
msgstr ""
-#: Code/Module/Lists.php:133 Code/Module/Lists.php:279 include/items.php:4368
+#: Code/Module/Lists.php:133 Code/Module/Lists.php:279 include/items.php:4367
msgid "Access list not found."
msgstr ""
@@ -6811,7 +6722,7 @@ msgid ""
"Password reset failed."
msgstr ""
-#: Code/Module/Lostpass.php:104 boot.php:1734
+#: Code/Module/Lostpass.php:104 boot.php:1722
msgid "Password Reset"
msgstr ""
@@ -7218,14 +7129,6 @@ msgstr ""
msgid "A notification with that id was not found for channel '%s'"
msgstr ""
-#: Code/Module/Oexchange.php:30
-msgid "Unable to find your site."
-msgstr ""
-
-#: Code/Module/Oexchange.php:44
-msgid "Post successful."
-msgstr ""
-
#: Code/Module/Page.php:188
msgid ""
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
@@ -8283,6 +8186,78 @@ msgstr ""
msgid "No service class restrictions found."
msgstr ""
+#: Code/Module/Settings/Tokens.php:48
+#, php-format
+msgid "This channel is limited to %d tokens"
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:54
+msgid "Name and Password are required."
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:190
+msgid "Token saved."
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:261
+msgid ""
+"Use this form to create temporary access identifiers to share things with "
+"non-members. These identities may be used in Access Control Lists and "
+"visitors may login using these credentials to access private content."
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:263
+msgid ""
+"You may also provide dropbox style access links to friends and "
+"associates by adding the Login Password to any specific site URL as shown. "
+"Examples:"
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:298
+msgid "Guest Access Tokens"
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:306
+msgid "Login Name"
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:307
+msgid "Login Password"
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:308
+msgid "Expires (yyyy-mm-dd)"
+msgstr ""
+
+#: Code/Module/Settings/Tokens.php:316
+msgid ""
+"Some permissions may be inherited from your channel's privacy settings, which have higher priority than "
+"individual settings. You can not change those settings here."
+msgstr ""
+
+#: Code/Module/Settings/Permcats.php:33
+msgid "Permission Name is required."
+msgstr ""
+
+#: Code/Module/Settings/Permcats.php:52
+msgid "Permission role saved."
+msgstr ""
+
+#: Code/Module/Settings/Permcats.php:79
+msgid ""
+"Use this form to create permission rules for various classes of people or "
+"connections."
+msgstr ""
+
+#: Code/Module/Settings/Permcats.php:129 Code/Widget/Settings_menu.php:113
+msgid "Permission Roles"
+msgstr ""
+
+#: Code/Module/Settings/Permcats.php:137
+msgid "Role name"
+msgstr ""
+
#: Code/Module/Settings/Oauth2.php:53
msgid "ID and Secret are required"
msgstr ""
@@ -8361,76 +8336,145 @@ msgstr ""
msgid "Remove authorization"
msgstr ""
-#: Code/Module/Settings/Permcats.php:33
-msgid "Permission Name is required."
+#: Code/Module/Settings/Oauth.php:40
+msgid "Name is required"
msgstr ""
-#: Code/Module/Settings/Permcats.php:52
-msgid "Permission role saved."
+#: Code/Module/Settings/Oauth.php:44
+msgid "Key and Secret are required"
msgstr ""
-#: Code/Module/Settings/Permcats.php:79
-msgid ""
-"Use this form to create permission rules for various classes of people or "
-"connections."
+#: Code/Module/Settings/Oauth.php:101 Code/Module/Settings/Oauth.php:129
+msgid "Consumer Key"
msgstr ""
-#: Code/Module/Settings/Permcats.php:129 Code/Widget/Settings_menu.php:113
-msgid "Permission Roles"
+#: Code/Module/Settings/Oauth.php:104 Code/Module/Settings/Oauth.php:132
+msgid "Icon url"
msgstr ""
-#: Code/Module/Settings/Permcats.php:137
-msgid "Role name"
+#: Code/Module/Settings/Oauth.php:104 Code/Module/Sources.php:131
+#: Code/Module/Sources.php:167
+msgid "Optional"
msgstr ""
-#: Code/Module/Settings/Tokens.php:48
-#, php-format
-msgid "This channel is limited to %d tokens"
+#: Code/Module/Settings/Oauth.php:117
+msgid "Application not found."
msgstr ""
-#: Code/Module/Settings/Tokens.php:54
-msgid "Name and Password are required."
+#: Code/Module/Settings/Oauth.php:164
+msgid "Connected Apps"
msgstr ""
-#: Code/Module/Settings/Tokens.php:190
-msgid "Token saved."
+#: Code/Module/Settings/Network.php:37 Code/Module/Settings/Features.php:54
+msgid "Off"
msgstr ""
-#: Code/Module/Settings/Tokens.php:261
-msgid ""
-"Use this form to create temporary access identifiers to share things with "
-"non-members. These identities may be used in Access Control Lists and "
-"visitors may login using these credentials to access private content."
+#: Code/Module/Settings/Network.php:37 Code/Module/Settings/Features.php:54
+msgid "On"
msgstr ""
-#: Code/Module/Settings/Tokens.php:263
-msgid ""
-"You may also provide dropbox style access links to friends and "
-"associates by adding the Login Password to any specific site URL as shown. "
-"Examples:"
+#: Code/Module/Settings/Network.php:45
+msgid "Activity Settings"
msgstr ""
-#: Code/Module/Settings/Tokens.php:298
-msgid "Guest Access Tokens"
+#: Code/Module/Settings/Features.php:62
+msgid "Additional Features"
msgstr ""
-#: Code/Module/Settings/Tokens.php:306
-msgid "Login Name"
+#: Code/Module/Settings/Featured.php:32
+msgid "Affinity Slider settings updated."
msgstr ""
-#: Code/Module/Settings/Tokens.php:307
-msgid "Login Password"
+#: Code/Module/Settings/Featured.php:47
+msgid "No feature settings configured"
msgstr ""
-#: Code/Module/Settings/Tokens.php:308
-msgid "Expires (yyyy-mm-dd)"
+#: Code/Module/Settings/Featured.php:54
+msgid "Default maximum affinity level"
msgstr ""
-#: Code/Module/Settings/Tokens.php:316
-msgid ""
-"Some permissions may be inherited from your channel's privacy settings, which have higher priority than "
-"individual settings. You can not change those settings here."
+#: Code/Module/Settings/Featured.php:54
+msgid "0-99 default 99"
+msgstr ""
+
+#: Code/Module/Settings/Featured.php:59
+msgid "Default minimum affinity level"
+msgstr ""
+
+#: Code/Module/Settings/Featured.php:59
+msgid "0-99 - default 0"
+msgstr ""
+
+#: Code/Module/Settings/Featured.php:63
+msgid "Affinity Slider Settings"
+msgstr ""
+
+#: Code/Module/Settings/Featured.php:76
+msgid "Addon Settings"
+msgstr ""
+
+#: Code/Module/Settings/Featured.php:77
+msgid "Please save/submit changes to any panel before opening another."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:26
+msgid "Not valid email."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:30
+msgid "Protected email address. Cannot change to that email."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:40
+msgid "System failure storing new email. Please try again."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:58
+msgid "Password verification failed."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:65
+msgid "Passwords do not match. Password unchanged."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:69
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:84
+msgid "Password changed."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:86
+msgid "Password update failed. Please try again."
+msgstr ""
+
+#: Code/Module/Settings/Account.php:113
+msgid "Account Settings"
+msgstr ""
+
+#: Code/Module/Settings/Account.php:114
+msgid "Current Password"
+msgstr ""
+
+#: Code/Module/Settings/Account.php:115
+msgid "Enter New Password"
+msgstr ""
+
+#: Code/Module/Settings/Account.php:116
+msgid "Confirm New Password"
+msgstr ""
+
+#: Code/Module/Settings/Account.php:116
+msgid "Leave password fields blank unless changing"
+msgstr ""
+
+#: Code/Module/Settings/Account.php:118
+msgid "Email Address:"
+msgstr ""
+
+#: Code/Module/Settings/Account.php:120
+msgid "Remove this account including all its channels"
msgstr ""
#: Code/Module/Settings/Channel.php:440 include/conversation.php:1357
@@ -8890,242 +8934,101 @@ msgstr ""
msgid "This varies by country/culture"
msgstr ""
-#: Code/Module/Settings/Account.php:26
-msgid "Not valid email."
-msgstr ""
-
-#: Code/Module/Settings/Account.php:30
-msgid "Protected email address. Cannot change to that email."
-msgstr ""
-
-#: Code/Module/Settings/Account.php:40
-msgid "System failure storing new email. Please try again."
-msgstr ""
-
-#: Code/Module/Settings/Account.php:58
-msgid "Password verification failed."
-msgstr ""
-
-#: Code/Module/Settings/Account.php:65
-msgid "Passwords do not match. Password unchanged."
-msgstr ""
-
-#: Code/Module/Settings/Account.php:69
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr ""
-
-#: Code/Module/Settings/Account.php:84
-msgid "Password changed."
-msgstr ""
-
-#: Code/Module/Settings/Account.php:86
-msgid "Password update failed. Please try again."
-msgstr ""
-
-#: Code/Module/Settings/Account.php:113
-msgid "Account Settings"
-msgstr ""
-
-#: Code/Module/Settings/Account.php:114
-msgid "Current Password"
-msgstr ""
-
-#: Code/Module/Settings/Account.php:115
-msgid "Enter New Password"
-msgstr ""
-
-#: Code/Module/Settings/Account.php:116
-msgid "Confirm New Password"
-msgstr ""
-
-#: Code/Module/Settings/Account.php:116
-msgid "Leave password fields blank unless changing"
-msgstr ""
-
-#: Code/Module/Settings/Account.php:118
-msgid "Email Address:"
-msgstr ""
-
-#: Code/Module/Settings/Account.php:120
-msgid "Remove this account including all its channels"
-msgstr ""
-
-#: Code/Module/Settings/Display.php:160
+#: Code/Module/Settings/Display.php:161
#, php-format
msgid "%s - (Experimental)"
msgstr ""
-#: Code/Module/Settings/Display.php:203
+#: Code/Module/Settings/Display.php:204
msgid "Display Settings"
msgstr ""
-#: Code/Module/Settings/Display.php:204
+#: Code/Module/Settings/Display.php:205
msgid "Theme Settings"
msgstr ""
-#: Code/Module/Settings/Display.php:205
+#: Code/Module/Settings/Display.php:206
msgid "Custom Theme Settings"
msgstr ""
-#: Code/Module/Settings/Display.php:206
+#: Code/Module/Settings/Display.php:207
msgid "Content Settings"
msgstr ""
-#: Code/Module/Settings/Display.php:212
+#: Code/Module/Settings/Display.php:213
msgid "Display Theme:"
msgstr ""
-#: Code/Module/Settings/Display.php:213
+#: Code/Module/Settings/Display.php:214
msgid "Select scheme"
msgstr ""
-#: Code/Module/Settings/Display.php:215
+#: Code/Module/Settings/Display.php:216
msgid "Preload images before rendering the page"
msgstr ""
-#: Code/Module/Settings/Display.php:215
+#: Code/Module/Settings/Display.php:216
msgid ""
"The subjective page load time will be longer but the page will be ready when "
"displayed"
msgstr ""
-#: Code/Module/Settings/Display.php:216
+#: Code/Module/Settings/Display.php:217
msgid "Enable user zoom on mobile devices"
msgstr ""
-#: Code/Module/Settings/Display.php:217
+#: Code/Module/Settings/Display.php:218
msgid "Update notifications every xx seconds"
msgstr ""
-#: Code/Module/Settings/Display.php:217
+#: Code/Module/Settings/Display.php:218
msgid "Minimum of 15 seconds, no maximum"
msgstr ""
-#: Code/Module/Settings/Display.php:218
+#: Code/Module/Settings/Display.php:219
msgid "Maximum number of conversations to load at any time:"
msgstr ""
-#: Code/Module/Settings/Display.php:218
+#: Code/Module/Settings/Display.php:219
msgid "Maximum of 100 items"
msgstr ""
-#: Code/Module/Settings/Display.php:219
+#: Code/Module/Settings/Display.php:220
msgid "Show emoticons (smilies) as images"
msgstr ""
-#: Code/Module/Settings/Display.php:220
+#: Code/Module/Settings/Display.php:221
msgid "Provide channel menu in navigation bar"
msgstr ""
-#: Code/Module/Settings/Display.php:220
+#: Code/Module/Settings/Display.php:221
msgid "Default: channel menu located in app menu"
msgstr ""
-#: Code/Module/Settings/Display.php:221
+#: Code/Module/Settings/Display.php:222
msgid "System Page Layout Editor - (advanced)"
msgstr ""
-#: Code/Module/Settings/Display.php:224
+#: Code/Module/Settings/Display.php:225
msgid "Channel page max height of content (in pixels)"
msgstr ""
-#: Code/Module/Settings/Display.php:224 Code/Module/Settings/Display.php:225
+#: Code/Module/Settings/Display.php:225 Code/Module/Settings/Display.php:226
msgid "click to expand content exceeding this height"
msgstr ""
-#: Code/Module/Settings/Display.php:225
+#: Code/Module/Settings/Display.php:226
msgid "Stream page max height of content (in pixels)"
msgstr ""
-#: Code/Module/Settings/Display.php:226
+#: Code/Module/Settings/Display.php:227
msgid "Indent threaded comments this many pixels from the parent"
msgstr ""
-#: Code/Module/Settings/Display.php:226
+#: Code/Module/Settings/Display.php:227
msgid "0-20"
msgstr ""
-#: Code/Module/Settings/Featured.php:32
-msgid "Affinity Slider settings updated."
-msgstr ""
-
-#: Code/Module/Settings/Featured.php:47
-msgid "No feature settings configured"
-msgstr ""
-
-#: Code/Module/Settings/Featured.php:54
-msgid "Default maximum affinity level"
-msgstr ""
-
-#: Code/Module/Settings/Featured.php:54
-msgid "0-99 default 99"
-msgstr ""
-
-#: Code/Module/Settings/Featured.php:59
-msgid "Default minimum affinity level"
-msgstr ""
-
-#: Code/Module/Settings/Featured.php:59
-msgid "0-99 - default 0"
-msgstr ""
-
-#: Code/Module/Settings/Featured.php:63
-msgid "Affinity Slider Settings"
-msgstr ""
-
-#: Code/Module/Settings/Featured.php:76
-msgid "Addon Settings"
-msgstr ""
-
-#: Code/Module/Settings/Featured.php:77
-msgid "Please save/submit changes to any panel before opening another."
-msgstr ""
-
-#: Code/Module/Settings/Features.php:54 Code/Module/Settings/Network.php:37
-msgid "Off"
-msgstr ""
-
-#: Code/Module/Settings/Features.php:54 Code/Module/Settings/Network.php:37
-msgid "On"
-msgstr ""
-
-#: Code/Module/Settings/Features.php:62
-msgid "Additional Features"
-msgstr ""
-
-#: Code/Module/Settings/Network.php:45
-msgid "Activity Settings"
-msgstr ""
-
-#: Code/Module/Settings/Oauth.php:40
-msgid "Name is required"
-msgstr ""
-
-#: Code/Module/Settings/Oauth.php:44
-msgid "Key and Secret are required"
-msgstr ""
-
-#: Code/Module/Settings/Oauth.php:101 Code/Module/Settings/Oauth.php:129
-msgid "Consumer Key"
-msgstr ""
-
-#: Code/Module/Settings/Oauth.php:104 Code/Module/Settings/Oauth.php:132
-msgid "Icon url"
-msgstr ""
-
-#: Code/Module/Settings/Oauth.php:104 Code/Module/Sources.php:131
-#: Code/Module/Sources.php:167
-msgid "Optional"
-msgstr ""
-
-#: Code/Module/Settings/Oauth.php:117
-msgid "Application not found."
-msgstr ""
-
-#: Code/Module/Settings/Oauth.php:164
-msgid "Connected Apps"
-msgstr ""
-
#: Code/Module/Setup.php:194
msgid "$Projectname Server - Setup"
msgstr ""
@@ -9694,51 +9597,48 @@ msgstr ""
msgid "Affiliated Sites"
msgstr ""
-#: Code/Module/Tasks.php:106
-msgid "This app provides a simple personal and task list."
+#: Code/Module/Zot_probe.php:20
+msgid "Zot6 Probe Diagnostic"
msgstr ""
-#: Code/Module/Vlists.php:16
-msgid ""
-"This app creates dynamic access lists corresponding to [1] all connections, "
-"[2] all ActivityPub protocol connections, and [3] all Nomad or Zot/6 "
-"protocol connections. These additional selections will be found within the "
-"Permissions setting tool."
+#: Code/Module/Xchan.php:13
+msgid "Xchan Lookup"
msgstr ""
-#: Code/Module/Vlists.php:23
-msgid "This app is installed. "
+#: Code/Module/Xchan.php:16
+msgid "Lookup xchan beginning with (or webbie): "
msgstr ""
-#: Code/Module/Stream.php:143 Code/Widget/Activity_filter.php:153
-#: include/network.php:1765 include/network.php:1766
-msgid "Nomad"
+#: Code/Module/Vote.php:42
+msgid "Poll not found."
msgstr ""
-#: Code/Module/Stream.php:147 Code/Widget/Activity_filter.php:156
-#: include/network.php:1761
-msgid "ActivityPub"
+#: Code/Module/Vote.php:73
+msgid "Invalid response."
msgstr ""
-#: Code/Module/Stream.php:162
-msgid "Access list not found"
+#: Code/Module/Vote.php:132
+msgid "Response submitted. Updates may not appear instantly."
msgstr ""
-#: Code/Module/Stream.php:206
-msgid "No such channel"
+#: Code/Module/Viewsrc.php:49
+msgid "item"
msgstr ""
-#: Code/Module/Stream.php:292
-msgid "Access list is empty"
+#: Code/Module/Viewsrc.php:59
+msgid "Inspect"
msgstr ""
-#: Code/Module/Stream.php:306 include/items.php:4392
-#, php-format
-msgid "Access list: %s"
+#: Code/Module/Viewsrc.php:64
+msgid "Local id:"
msgstr ""
-#: Code/Module/Stream.php:349 extend/addon/a/zotpost/Mod_zotpost.php:30
-msgid "Invalid channel."
+#: Code/Module/Viewsrc.php:64
+msgid "Permanent link"
+msgstr ""
+
+#: Code/Module/Viewsrc.php:64
+msgid "Local link"
msgstr ""
#: Code/Module/Thing.php:141
@@ -9798,6 +9698,137 @@ msgstr ""
msgid "Add Thing to your Profile"
msgstr ""
+#: Code/Module/Tagrm.php:59 Code/Module/Tagrm.php:111
+msgid "Tag removed"
+msgstr ""
+
+#: Code/Module/Tagrm.php:137
+msgid "Remove Item Tag"
+msgstr ""
+
+#: Code/Module/Tagrm.php:139
+msgid "Select a tag to remove: "
+msgstr ""
+
+#: Code/Module/Tagadelic.php:31
+msgid "This app displays a hashtag cloud on your channel homepage."
+msgstr ""
+
+#: Code/Module/Tagadelic.php:39
+msgid ""
+"This app is installed. It displays a hashtag cloud on your channel homepage."
+msgstr ""
+
+#: Code/Module/Suggestions.php:43
+msgid ""
+"This app (when installed) displays a small number of friend suggestions on "
+"selected pages or you can run the app to display a full list of channel "
+"suggestions."
+msgstr ""
+
+#: Code/Module/Stream.php:143 Code/Widget/Activity_filter.php:153
+#: include/network.php:1765 include/network.php:1766
+msgid "Nomad"
+msgstr ""
+
+#: Code/Module/Stream.php:147 Code/Widget/Activity_filter.php:156
+#: include/network.php:1761
+msgid "ActivityPub"
+msgstr ""
+
+#: Code/Module/Stream.php:162
+msgid "Access list not found"
+msgstr ""
+
+#: Code/Module/Stream.php:206
+msgid "No such channel"
+msgstr ""
+
+#: Code/Module/Stream.php:292
+msgid "Access list is empty"
+msgstr ""
+
+#: Code/Module/Stream.php:306 include/items.php:4391
+#, php-format
+msgid "Access list: %s"
+msgstr ""
+
+#: Code/Module/Stream.php:349 extend/addon/a/zotpost/Mod_zotpost.php:31
+msgid "Invalid channel."
+msgstr ""
+
+#: Code/Module/Zotfinger.php:28
+msgid "Zotfinger Diagnostic"
+msgstr ""
+
+#: Code/Module/Zotfinger.php:29
+msgid "Lookup URL"
+msgstr ""
+
+#: Code/Module/Webpages.php:58
+msgid "Provide managed web pages on your channel"
+msgstr ""
+
+#: Code/Module/Webpages.php:78
+msgid "Import Webpage Elements"
+msgstr ""
+
+#: Code/Module/Webpages.php:79
+msgid "Import selected"
+msgstr ""
+
+#: Code/Module/Webpages.php:102
+msgid "Export Webpage Elements"
+msgstr ""
+
+#: Code/Module/Webpages.php:103
+msgid "Export selected"
+msgstr ""
+
+#: Code/Module/Webpages.php:277
+msgid "Actions"
+msgstr ""
+
+#: Code/Module/Webpages.php:278
+msgid "Page Link"
+msgstr ""
+
+#: Code/Module/Webpages.php:279
+msgid "Page Title"
+msgstr ""
+
+#: Code/Module/Webpages.php:309
+msgid "Invalid file type."
+msgstr ""
+
+#: Code/Module/Webpages.php:321
+msgid "Error opening zip file"
+msgstr ""
+
+#: Code/Module/Webpages.php:331
+msgid "Invalid folder path."
+msgstr ""
+
+#: Code/Module/Webpages.php:357
+msgid "No webpage elements detected."
+msgstr ""
+
+#: Code/Module/Webpages.php:431 Code/Import/Friendica.php:363
+msgid "Import complete."
+msgstr ""
+
+#: Code/Module/Vlists.php:16
+msgid ""
+"This app creates dynamic access lists corresponding to [1] all connections, "
+"[2] all ActivityPub protocol connections, and [3] all Nomad or Zot/6 "
+"protocol connections. These additional selections will be found within the "
+"Permissions setting tool."
+msgstr ""
+
+#: Code/Module/Vlists.php:23
+msgid "This app is installed. "
+msgstr ""
+
#: Code/Module/Viewconnections.php:68
msgid "No connections."
msgstr ""
@@ -9811,44 +9842,111 @@ msgstr ""
msgid "View Connections"
msgstr ""
-#: Code/Module/Zot_probe.php:20
-msgid "Zot6 Probe Diagnostic"
+#: Code/Module/Uexport.php:67 Code/Module/Uexport.php:68
+msgid "Export Channel"
msgstr ""
-#: Code/Module/Suggestions.php:43
+#: Code/Module/Uexport.php:69
msgid ""
-"This app (when installed) displays a small number of friend suggestions on "
-"selected pages or you can run the app to display a full list of channel "
-"suggestions."
+"Export your basic channel information to a file. This acts as a backup of "
+"your connections, permissions, profile and basic data, which can be used to "
+"import your data to a new server hub, but does not contain your content."
msgstr ""
-#: Code/Module/Tagadelic.php:31
-msgid "This app displays a hashtag cloud on your channel homepage."
+#: Code/Module/Uexport.php:70
+msgid "Export Content"
msgstr ""
-#: Code/Module/Tagadelic.php:39
+#: Code/Module/Uexport.php:71
msgid ""
-"This app is installed. It displays a hashtag cloud on your channel homepage."
+"Export your channel information and recent content to a JSON backup that can "
+"be restored or imported to another server hub. This backs up all of your "
+"connections, permissions, profile data and several months of posts. This "
+"file may be VERY large. Please be patient - it may take several minutes for "
+"this download to begin."
msgstr ""
-#: Code/Module/Tagrm.php:59 Code/Module/Tagrm.php:111
-msgid "Tag removed"
+#: Code/Module/Uexport.php:73
+msgid "Export your posts from a given year."
msgstr ""
-#: Code/Module/Tagrm.php:137
-msgid "Remove Item Tag"
+#: Code/Module/Uexport.php:75
+msgid ""
+"You may also export your posts and conversations for a particular year or "
+"month. Adjust the date in your browser location bar to select other dates. "
+"If the export fails (possibly due to memory exhaustion on your server hub), "
+"please try again selecting a more limited date range."
msgstr ""
-#: Code/Module/Tagrm.php:139
-msgid "Select a tag to remove: "
+#: Code/Module/Uexport.php:76
+#, php-format
+msgid ""
+"To select all posts for a given year, such as this year, visit %2$s"
msgstr ""
-#: Code/Module/Xchan.php:13
-msgid "Xchan Lookup"
+#: Code/Module/Uexport.php:77
+#, php-format
+msgid ""
+"To select all posts for a given month, such as January of this year, visit "
+"%2$s"
msgstr ""
-#: Code/Module/Xchan.php:16
-msgid "Lookup xchan beginning with (or webbie): "
+#: Code/Module/Uexport.php:78
+#, php-format
+msgid ""
+"These content files may be imported or restored by visiting "
+"%2$s on any site containing your channel. For best results please import "
+"or restore these in date order (oldest first)."
+msgstr ""
+
+#: Code/Module/Tasks.php:106
+msgid "This app provides a simple personal and task list."
+msgstr ""
+
+#: Code/Module/Tagger.php:63
+msgid "Post not found."
+msgstr ""
+
+#: Code/Module/Tagger.php:95 include/text.php:2388 include/conversation.php:169
+msgid "comment"
+msgstr ""
+
+#: Code/Module/Tagger.php:136
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr ""
+
+#: Code/Module/Superblock.php:38
+msgid "Blocking this site is not permitted."
+msgstr ""
+
+#: Code/Module/Superblock.php:95
+msgid "Added by Superblock"
+msgstr ""
+
+#: Code/Module/Superblock.php:201
+msgid "superblock settings updated"
+msgstr ""
+
+#: Code/Module/Superblock.php:232
+msgid "Blocked channels"
+msgstr ""
+
+#: Code/Module/Superblock.php:234
+msgid "No channels currently blocked"
+msgstr ""
+
+#: Code/Module/Superblock.php:249
+msgid "Blocked servers"
+msgstr ""
+
+#: Code/Module/Superblock.php:251
+msgid "No servers currently blocked"
+msgstr ""
+
+#: Code/Module/Superblock.php:257 Code/Widget/Settings_menu.php:67
+msgid "Manage Blocks"
msgstr ""
#: Code/Module/Subthread.php:141
@@ -9861,51 +9959,6 @@ msgstr ""
msgid "%1$s stopped following %2$s's %3$s"
msgstr ""
-#: Code/Module/Tagger.php:63
-msgid "Post not found."
-msgstr ""
-
-#: Code/Module/Tagger.php:95 include/conversation.php:169 include/text.php:2388
-msgid "comment"
-msgstr ""
-
-#: Code/Module/Tagger.php:136
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr ""
-
-#: Code/Module/Viewsrc.php:49
-msgid "item"
-msgstr ""
-
-#: Code/Module/Viewsrc.php:59
-msgid "Inspect"
-msgstr ""
-
-#: Code/Module/Viewsrc.php:64
-msgid "Local id:"
-msgstr ""
-
-#: Code/Module/Viewsrc.php:64
-msgid "Permanent link"
-msgstr ""
-
-#: Code/Module/Viewsrc.php:64
-msgid "Local link"
-msgstr ""
-
-#: Code/Module/Vote.php:42
-msgid "Poll not found."
-msgstr ""
-
-#: Code/Module/Vote.php:73
-msgid "Invalid response."
-msgstr ""
-
-#: Code/Module/Vote.php:132
-msgid "Response submitted. Updates may not appear instantly."
-msgstr ""
-
#: Code/Module/Sources.php:52
msgid "Failed to create source. No channel selected."
msgstr ""
@@ -9982,224 +10035,144 @@ msgstr ""
msgid "Unable to remove source."
msgstr ""
-#: Code/Module/Superblock.php:38
-msgid "Blocking this site is not permitted."
+#: Code/Widget/Tagcloud.php:25 include/taxonomy.php:366
+#: include/taxonomy.php:511 include/taxonomy.php:534
+msgid "Tags"
msgstr ""
-#: Code/Module/Superblock.php:95
-msgid "Added by Superblock"
+#: Code/Widget/Suggestedchats.php:41
+msgid "Suggested Chatrooms"
msgstr ""
-#: Code/Module/Superblock.php:201
-msgid "superblock settings updated"
+#: Code/Widget/Site_projects.php:35
+msgid "Projects"
msgstr ""
-#: Code/Module/Superblock.php:232
-msgid "Blocked channels"
+#: Code/Widget/Site_projects.php:37
+msgid "All projects"
msgstr ""
-#: Code/Module/Superblock.php:234
-msgid "No channels currently blocked"
+#: Code/Widget/Sblock.php:20
+msgid "Block channel or site"
msgstr ""
-#: Code/Module/Superblock.php:249
-msgid "Blocked servers"
+#: Code/Widget/Sblock.php:21
+msgid "Enter channel address or URL"
msgstr ""
-#: Code/Module/Superblock.php:251
-msgid "No servers currently blocked"
+#: Code/Widget/Sblock.php:22 Code/Widget/Follow.php:40
+msgid "Examples: bob@example.com, https://example.com/barbara"
msgstr ""
-#: Code/Module/Superblock.php:257 Code/Widget/Settings_menu.php:67
-msgid "Manage Blocks"
+#: Code/Widget/Groups.php:114 Code/Widget/Notifications.php:110
+#: Code/Widget/Notifications.php:111 Code/Widget/Activity_filter.php:209
+msgid "Groups"
msgstr ""
-#: Code/Module/Uexport.php:67 Code/Module/Uexport.php:68
-msgid "Export Channel"
+#: Code/Widget/Common_friends.php:47
+msgid "Common Connections"
msgstr ""
-#: Code/Module/Uexport.php:69
-msgid ""
-"Export your basic channel information to a file. This acts as a backup of "
-"your connections, permissions, profile and basic data, which can be used to "
-"import your data to a new server hub, but does not contain your content."
-msgstr ""
-
-#: Code/Module/Uexport.php:70
-msgid "Export Content"
-msgstr ""
-
-#: Code/Module/Uexport.php:71
-msgid ""
-"Export your channel information and recent content to a JSON backup that can "
-"be restored or imported to another server hub. This backs up all of your "
-"connections, permissions, profile data and several months of posts. This "
-"file may be VERY large. Please be patient - it may take several minutes for "
-"this download to begin."
-msgstr ""
-
-#: Code/Module/Uexport.php:73
-msgid "Export your posts from a given year."
-msgstr ""
-
-#: Code/Module/Uexport.php:75
-msgid ""
-"You may also export your posts and conversations for a particular year or "
-"month. Adjust the date in your browser location bar to select other dates. "
-"If the export fails (possibly due to memory exhaustion on your server hub), "
-"please try again selecting a more limited date range."
-msgstr ""
-
-#: Code/Module/Uexport.php:76
+#: Code/Widget/Common_friends.php:52
#, php-format
-msgid ""
-"To select all posts for a given year, such as this year, visit %2$s"
+msgid "View all %d common connections"
msgstr ""
-#: Code/Module/Uexport.php:77
+#: Code/Widget/Affinity.php:42
+msgid "Friend zoom in/out"
+msgstr ""
+
+#: Code/Widget/Appcategories.php:55 Code/Widget/Filer.php:39
+#: Code/Widget/Categories.php:90 Code/Widget/Categories.php:138
+#: Code/Widget/Categories.php:189
+msgid "Everything"
+msgstr ""
+
+#: Code/Widget/Photo.php:55 Code/Widget/Photo_rand.php:72
+msgid "photo/image"
+msgstr ""
+
+#: Code/Widget/Newmember.php:35
+msgid "Profile Creation"
+msgstr ""
+
+#: Code/Widget/Newmember.php:37
+msgid "Upload profile photo"
+msgstr ""
+
+#: Code/Widget/Newmember.php:38
+msgid "Upload cover photo"
+msgstr ""
+
+#: Code/Widget/Newmember.php:42
+msgid "Find and Connect with others"
+msgstr ""
+
+#: Code/Widget/Newmember.php:44
+msgid "View the directory"
+msgstr ""
+
+#: Code/Widget/Newmember.php:45
+msgid "View friend suggestions"
+msgstr ""
+
+#: Code/Widget/Newmember.php:46
+msgid "Manage your connections"
+msgstr ""
+
+#: Code/Widget/Newmember.php:49
+msgid "Communicate"
+msgstr ""
+
+#: Code/Widget/Newmember.php:51
+msgid "View your channel homepage"
+msgstr ""
+
+#: Code/Widget/Newmember.php:52
+msgid "View your stream"
+msgstr ""
+
+#: Code/Widget/Newmember.php:65
+msgid "View public stream"
+msgstr ""
+
+#: Code/Widget/Hq_controls.php:21
+msgid "HQ Control Panel"
+msgstr ""
+
+#: Code/Widget/Hq_controls.php:24
+msgid "Create a new post"
+msgstr ""
+
+#: Code/Widget/Findpeople.php:24
#, php-format
-msgid ""
-"To select all posts for a given month, such as January of this year, visit "
-"%2$s"
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] ""
+msgstr[1] ""
+
+#: Code/Widget/Findpeople.php:32
+msgid "Find Channels"
msgstr ""
-#: Code/Module/Uexport.php:78
-#, php-format
-msgid ""
-"These content files may be imported or restored by visiting "
-"%2$s on any site containing your channel. For best results please import "
-"or restore these in date order (oldest first)."
+#: Code/Widget/Findpeople.php:33
+msgid "Enter name or interest"
msgstr ""
-#: Code/Module/Webpages.php:58
-msgid "Provide managed web pages on your channel"
+#: Code/Widget/Findpeople.php:34
+msgid "Connect/Follow"
msgstr ""
-#: Code/Module/Webpages.php:78
-msgid "Import Webpage Elements"
+#: Code/Widget/Findpeople.php:35
+msgid "Examples: Robert Morgenstein, Fishing"
msgstr ""
-#: Code/Module/Webpages.php:79
-msgid "Import selected"
+#: Code/Widget/Findpeople.php:40
+msgid "Affiliated sites"
msgstr ""
-#: Code/Module/Webpages.php:102
-msgid "Export Webpage Elements"
-msgstr ""
-
-#: Code/Module/Webpages.php:103
-msgid "Export selected"
-msgstr ""
-
-#: Code/Module/Webpages.php:277
-msgid "Actions"
-msgstr ""
-
-#: Code/Module/Webpages.php:278
-msgid "Page Link"
-msgstr ""
-
-#: Code/Module/Webpages.php:279
-msgid "Page Title"
-msgstr ""
-
-#: Code/Module/Webpages.php:309
-msgid "Invalid file type."
-msgstr ""
-
-#: Code/Module/Webpages.php:321
-msgid "Error opening zip file"
-msgstr ""
-
-#: Code/Module/Webpages.php:331
-msgid "Invalid folder path."
-msgstr ""
-
-#: Code/Module/Webpages.php:357
-msgid "No webpage elements detected."
-msgstr ""
-
-#: Code/Module/Zotfinger.php:28
-msgid "Zotfinger Diagnostic"
-msgstr ""
-
-#: Code/Module/Zotfinger.php:29
-msgid "Lookup URL"
-msgstr ""
-
-#: Code/Storage/Browser.php:120 Code/Storage/Browser.php:317
-msgid "parent"
-msgstr ""
-
-#: Code/Storage/Browser.php:151
-msgid "Principal"
-msgstr ""
-
-#: Code/Storage/Browser.php:154
-msgid "Addressbook"
-msgstr ""
-
-#: Code/Storage/Browser.php:160
-msgid "Schedule Inbox"
-msgstr ""
-
-#: Code/Storage/Browser.php:163
-msgid "Schedule Outbox"
-msgstr ""
-
-#: Code/Storage/Browser.php:299
-msgid "Total"
-msgstr ""
-
-#: Code/Storage/Browser.php:301
-msgid "Shared"
-msgstr ""
-
-#: Code/Storage/Browser.php:303
-msgid "Add Files"
-msgstr ""
-
-#: Code/Storage/Browser.php:310
-msgid "View photos"
-msgstr ""
-
-#: Code/Storage/Browser.php:314
-msgid "Type"
-msgstr ""
-
-#: Code/Storage/Browser.php:392
-#, php-format
-msgid "You are using %1$s of your available file storage."
-msgstr ""
-
-#: Code/Storage/Browser.php:396
-#, php-format
-msgid "You are using %1$s of %2$s available file storage. (%3$s%)"
-msgstr ""
-
-#: Code/Storage/Browser.php:407
-msgid "WARNING:"
-msgstr ""
-
-#: Code/Storage/Browser.php:419
-msgid "Create new folder"
-msgstr ""
-
-#: Code/Storage/Browser.php:421
-msgid "Upload file"
-msgstr ""
-
-#: Code/Storage/Browser.php:434
-msgid "Drop files here to immediately upload"
-msgstr ""
-
-#: Code/Update/_1239.php:25
-msgid "Added by superblock"
-msgstr ""
-
-#: Code/Widget/Archive.php:52
-msgid "Archives"
+#: Code/Widget/Findpeople.php:43
+msgid "Advanced example: name=fred and country=iceland"
msgstr ""
#: Code/Widget/Cdav.php:46
@@ -10278,45 +10251,130 @@ msgstr ""
msgid "Select an addressbook to import to"
msgstr ""
+#: Code/Widget/Archive.php:52
+msgid "Archives"
+msgstr ""
+
+#: Code/Widget/Activity.php:59
+msgctxt "widget"
+msgid "Activity"
+msgstr ""
+
+#: Code/Widget/Stream_order.php:106
+msgid "Commented Date"
+msgstr ""
+
+#: Code/Widget/Stream_order.php:110
+msgid "Order by last commented date"
+msgstr ""
+
+#: Code/Widget/Stream_order.php:113
+msgid "Posted Date"
+msgstr ""
+
+#: Code/Widget/Stream_order.php:117
+msgid "Order by last posted date"
+msgstr ""
+
+#: Code/Widget/Stream_order.php:120
+msgid "Date Unthreaded"
+msgstr ""
+
+#: Code/Widget/Stream_order.php:124
+msgid "Order unthreaded by date"
+msgstr ""
+
+#: Code/Widget/Savedsearch.php:89
+msgid "Remove term"
+msgstr ""
+
#: Code/Widget/Chatroom_list.php:28
msgid "Overview"
msgstr ""
-#: Code/Widget/Filer.php:39 Code/Widget/Appcategories.php:55
-#: Code/Widget/Categories.php:90 Code/Widget/Categories.php:138
-#: Code/Widget/Categories.php:189
-msgid "Everything"
+#: Code/Widget/Appstore.php:15
+msgid "App Collections"
msgstr ""
-#: Code/Widget/Findpeople.php:24
+#: Code/Widget/Admin.php:32 Code/Widget/Admin.php:69
+msgid "Member registrations waiting for confirmation"
+msgstr ""
+
+#: Code/Widget/Admin.php:38
+msgid "Inspect queue"
+msgstr ""
+
+#: Code/Widget/Admin.php:40
+msgid "DB updates"
+msgstr ""
+
+#: Code/Widget/Admin.php:65
+msgid "Addon Features"
+msgstr ""
+
+#: Code/Widget/Follow.php:32
#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] ""
-msgstr[1] ""
-
-#: Code/Widget/Findpeople.php:32
-msgid "Find Channels"
+msgid "You have %1$.0f of %2$.0f allowed connections."
msgstr ""
-#: Code/Widget/Findpeople.php:33
-msgid "Enter name or interest"
+#: Code/Widget/Follow.php:38
+msgid "Add New Connection"
msgstr ""
-#: Code/Widget/Findpeople.php:34
-msgid "Connect/Follow"
+#: Code/Widget/Follow.php:39
+msgid "Enter channel address"
msgstr ""
-#: Code/Widget/Findpeople.php:35
-msgid "Examples: Robert Morgenstein, Fishing"
+#: Code/Widget/Cover_photo.php:96
+msgid "Click to show more"
msgstr ""
-#: Code/Widget/Findpeople.php:40
-msgid "Affiliated sites"
+#: Code/Widget/Suggestions.php:51
+msgid "Ignore/Hide"
msgstr ""
-#: Code/Widget/Findpeople.php:43
-msgid "Advanced example: name=fred and country=iceland"
+#: Code/Widget/Suggestions.php:56
+msgid "Suggestions"
+msgstr ""
+
+#: Code/Widget/Suggestions.php:57
+msgid "See more..."
+msgstr ""
+
+#: Code/Widget/Settings_menu.php:47
+msgid "Account settings"
+msgstr ""
+
+#: Code/Widget/Settings_menu.php:53
+msgid "Channel settings"
+msgstr ""
+
+#: Code/Widget/Settings_menu.php:61
+msgid "Display settings"
+msgstr ""
+
+#: Code/Widget/Settings_menu.php:75
+msgid "Manage locations"
+msgstr ""
+
+#: Code/Widget/Settings_menu.php:82
+msgid "Export channel"
+msgstr ""
+
+#: Code/Widget/Settings_menu.php:97
+msgid "Client apps"
+msgstr ""
+
+#: Code/Widget/Rating.php:59
+msgid "Rating Tools"
+msgstr ""
+
+#: Code/Widget/Rating.php:63 Code/Widget/Rating.php:65
+msgid "Rate Me"
+msgstr ""
+
+#: Code/Widget/Rating.php:69
+msgid "View Ratings"
msgstr ""
#: Code/Widget/Notifications.php:22
@@ -10405,11 +10463,6 @@ msgstr ""
msgid "Mark all notices seen"
msgstr ""
-#: Code/Widget/Notifications.php:110 Code/Widget/Notifications.php:111
-#: Code/Widget/Groups.php:114 Code/Widget/Activity_filter.php:209
-msgid "Groups"
-msgstr ""
-
#: Code/Widget/Notifications.php:123
msgid "New Registrations"
msgstr ""
@@ -10430,110 +10483,44 @@ msgstr ""
msgid "Sorry, you have got no notifications at the moment"
msgstr ""
-#: Code/Widget/Rating.php:59
-msgid "Rating Tools"
+#: Code/Widget/Mailmenu.php:19
+msgid "Private Mail Menu"
msgstr ""
-#: Code/Widget/Rating.php:63 Code/Widget/Rating.php:65
-msgid "Rate Me"
+#: Code/Widget/Mailmenu.php:21
+msgid "Combined View"
msgstr ""
-#: Code/Widget/Rating.php:69
-msgid "View Ratings"
+#: Code/Widget/Mailmenu.php:26
+msgid "Inbox"
msgstr ""
-#: Code/Widget/Admin.php:32 Code/Widget/Admin.php:69
-msgid "Member registrations waiting for confirmation"
+#: Code/Widget/Mailmenu.php:31
+msgid "Outbox"
msgstr ""
-#: Code/Widget/Admin.php:38
-msgid "Inspect queue"
+#: Code/Widget/Mailmenu.php:36
+msgid "New Message"
msgstr ""
-#: Code/Widget/Admin.php:40
-msgid "DB updates"
+#: Code/Widget/Eventstools.php:19
+msgid "Events Tools"
msgstr ""
-#: Code/Widget/Admin.php:65
-msgid "Addon Features"
+#: Code/Widget/Eventstools.php:20
+msgid "Export Calendar"
+msgstr ""
+
+#: Code/Widget/Eventstools.php:21
+msgid "Import Calendar"
msgstr ""
#: Code/Widget/Chatroom_members.php:16
msgid "Chat Members"
msgstr ""
-#: Code/Widget/Hq_controls.php:21
-msgid "HQ Control Panel"
-msgstr ""
-
-#: Code/Widget/Hq_controls.php:24
-msgid "Create a new post"
-msgstr ""
-
-#: Code/Widget/Savedsearch.php:89
-msgid "Remove term"
-msgstr ""
-
-#: Code/Widget/Activity.php:59
-msgctxt "widget"
-msgid "Activity"
-msgstr ""
-
-#: Code/Widget/Photo.php:55 Code/Widget/Photo_rand.php:72
-msgid "photo/image"
-msgstr ""
-
-#: Code/Widget/Tagcloud.php:25 include/taxonomy.php:366
-#: include/taxonomy.php:511 include/taxonomy.php:534
-msgid "Tags"
-msgstr ""
-
-#: Code/Widget/Site_projects.php:35
-msgid "Projects"
-msgstr ""
-
-#: Code/Widget/Site_projects.php:37
-msgid "All projects"
-msgstr ""
-
-#: Code/Widget/Stream_order.php:106
-msgid "Commented Date"
-msgstr ""
-
-#: Code/Widget/Stream_order.php:110
-msgid "Order by last commented date"
-msgstr ""
-
-#: Code/Widget/Stream_order.php:113
-msgid "Posted Date"
-msgstr ""
-
-#: Code/Widget/Stream_order.php:117
-msgid "Order by last posted date"
-msgstr ""
-
-#: Code/Widget/Stream_order.php:120
-msgid "Date Unthreaded"
-msgstr ""
-
-#: Code/Widget/Stream_order.php:124
-msgid "Order unthreaded by date"
-msgstr ""
-
-#: Code/Widget/Suggestedchats.php:41
-msgid "Suggested Chatrooms"
-msgstr ""
-
-#: Code/Widget/Suggestions.php:51
-msgid "Ignore/Hide"
-msgstr ""
-
-#: Code/Widget/Suggestions.php:56
-msgid "Suggestions"
-msgstr ""
-
-#: Code/Widget/Suggestions.php:57
-msgid "See more..."
+#: Code/Widget/Bookmarkedchats.php:34
+msgid "Bookmarked Chatrooms"
msgstr ""
#: Code/Widget/Activity_filter.php:40
@@ -10635,211 +10622,211 @@ msgstr ""
msgid "Stream Filters"
msgstr ""
-#: Code/Widget/Bookmarkedchats.php:34
-msgid "Bookmarked Chatrooms"
+#: Code/Access/PermissionRoles.php:138
+msgid "Social Networking"
msgstr ""
-#: Code/Widget/Cover_photo.php:96
-msgid "Click to show more"
+#: Code/Access/PermissionRoles.php:139
+msgid "Social - Normal"
msgstr ""
-#: Code/Widget/Eventstools.php:19
-msgid "Events Tools"
+#: Code/Access/PermissionRoles.php:140
+msgid "Social - Restricted"
msgstr ""
-#: Code/Widget/Eventstools.php:20
-msgid "Export Calendar"
+#: Code/Access/PermissionRoles.php:143
+msgid "Community Group"
msgstr ""
-#: Code/Widget/Eventstools.php:21
-msgid "Import Calendar"
+#: Code/Access/PermissionRoles.php:144
+msgid "Group - Normal"
msgstr ""
-#: Code/Widget/Follow.php:32
+#: Code/Access/PermissionRoles.php:145
+msgid "Group - Restricted"
+msgstr ""
+
+#: Code/Access/PermissionRoles.php:146
+msgid "Group - Moderated"
+msgstr ""
+
+#: Code/Access/Permissions.php:61
+msgid "Grant viewing access to your channel stream and posts"
+msgstr ""
+
+#: Code/Access/Permissions.php:62
+msgid "Permit delivery of your channel stream and posts"
+msgstr ""
+
+#: Code/Access/Permissions.php:63
+msgid "Grant viewing access to your default channel profile"
+msgstr ""
+
+#: Code/Access/Permissions.php:64
+msgid "Grant viewing access to your address book (connections)"
+msgstr ""
+
+#: Code/Access/Permissions.php:65
+msgid "Grant viewing access to your file storage and photos"
+msgstr ""
+
+#: Code/Access/Permissions.php:66
+msgid "Grant permission to post on your channel (wall) page"
+msgstr ""
+
+#: Code/Access/Permissions.php:67
+msgid "Accept delivery of direct messages and personal mail"
+msgstr ""
+
+#: Code/Access/Permissions.php:68
+msgid "Accept delivery of their posts and all comments to their posts"
+msgstr ""
+
+#: Code/Access/Permissions.php:69
+msgid "Accept delivery of their comments and likes on your posts"
+msgstr ""
+
+#: Code/Access/Permissions.php:70
+msgid "Grant upload permissions to your file storage and photos"
+msgstr ""
+
+#: Code/Access/Permissions.php:71
+msgid "Grant permission to republish/mirror your posts"
+msgstr ""
+
+#: Code/Access/Permissions.php:72
+msgid "Accept comments and wall posts only after approval (moderation)"
+msgstr ""
+
+#: Code/Access/Permissions.php:73
+msgid "Grant channel administration (delegation) permission"
+msgstr ""
+
+#: Code/Storage/Browser.php:120 Code/Storage/Browser.php:317
+msgid "parent"
+msgstr ""
+
+#: Code/Storage/Browser.php:151
+msgid "Principal"
+msgstr ""
+
+#: Code/Storage/Browser.php:154
+msgid "Addressbook"
+msgstr ""
+
+#: Code/Storage/Browser.php:160
+msgid "Schedule Inbox"
+msgstr ""
+
+#: Code/Storage/Browser.php:163
+msgid "Schedule Outbox"
+msgstr ""
+
+#: Code/Storage/Browser.php:299
+msgid "Total"
+msgstr ""
+
+#: Code/Storage/Browser.php:301
+msgid "Shared"
+msgstr ""
+
+#: Code/Storage/Browser.php:303
+msgid "Add Files"
+msgstr ""
+
+#: Code/Storage/Browser.php:310
+msgid "View photos"
+msgstr ""
+
+#: Code/Storage/Browser.php:314
+msgid "Type"
+msgstr ""
+
+#: Code/Storage/Browser.php:392
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
+msgid "You are using %1$s of your available file storage."
msgstr ""
-#: Code/Widget/Follow.php:38
-msgid "Add New Connection"
-msgstr ""
-
-#: Code/Widget/Follow.php:39
-msgid "Enter channel address"
-msgstr ""
-
-#: Code/Widget/Follow.php:40 Code/Widget/Sblock.php:22
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr ""
-
-#: Code/Widget/Newmember.php:35
-msgid "Profile Creation"
-msgstr ""
-
-#: Code/Widget/Newmember.php:37
-msgid "Upload profile photo"
-msgstr ""
-
-#: Code/Widget/Newmember.php:38
-msgid "Upload cover photo"
-msgstr ""
-
-#: Code/Widget/Newmember.php:42
-msgid "Find and Connect with others"
-msgstr ""
-
-#: Code/Widget/Newmember.php:44
-msgid "View the directory"
-msgstr ""
-
-#: Code/Widget/Newmember.php:45
-msgid "View friend suggestions"
-msgstr ""
-
-#: Code/Widget/Newmember.php:46
-msgid "Manage your connections"
-msgstr ""
-
-#: Code/Widget/Newmember.php:49
-msgid "Communicate"
-msgstr ""
-
-#: Code/Widget/Newmember.php:51
-msgid "View your channel homepage"
-msgstr ""
-
-#: Code/Widget/Newmember.php:52
-msgid "View your stream"
-msgstr ""
-
-#: Code/Widget/Newmember.php:65
-msgid "View public stream"
-msgstr ""
-
-#: Code/Widget/Sblock.php:20
-msgid "Block channel or site"
-msgstr ""
-
-#: Code/Widget/Sblock.php:21
-msgid "Enter channel address or URL"
-msgstr ""
-
-#: Code/Widget/Settings_menu.php:47
-msgid "Account settings"
-msgstr ""
-
-#: Code/Widget/Settings_menu.php:53
-msgid "Channel settings"
-msgstr ""
-
-#: Code/Widget/Settings_menu.php:61
-msgid "Display settings"
-msgstr ""
-
-#: Code/Widget/Settings_menu.php:75
-msgid "Manage locations"
-msgstr ""
-
-#: Code/Widget/Settings_menu.php:82
-msgid "Export channel"
-msgstr ""
-
-#: Code/Widget/Settings_menu.php:97
-msgid "Client apps"
-msgstr ""
-
-#: Code/Widget/Affinity.php:42
-msgid "Friend zoom in/out"
-msgstr ""
-
-#: Code/Widget/Appstore.php:15
-msgid "App Collections"
-msgstr ""
-
-#: Code/Widget/Common_friends.php:47
-msgid "Common Connections"
-msgstr ""
-
-#: Code/Widget/Common_friends.php:52
+#: Code/Storage/Browser.php:396
#, php-format
-msgid "View all %d common connections"
+msgid "You are using %1$s of %2$s available file storage. (%3$s%)"
msgstr ""
-#: Code/Widget/Mailmenu.php:19
-msgid "Private Mail Menu"
+#: Code/Storage/Browser.php:407
+msgid "WARNING:"
msgstr ""
-#: Code/Widget/Mailmenu.php:21
-msgid "Combined View"
+#: Code/Storage/Browser.php:419
+msgid "Create new folder"
msgstr ""
-#: Code/Widget/Mailmenu.php:26
-msgid "Inbox"
+#: Code/Storage/Browser.php:421
+msgid "Upload file"
msgstr ""
-#: Code/Widget/Mailmenu.php:31
-msgid "Outbox"
+#: Code/Storage/Browser.php:434
+msgid "Drop files here to immediately upload"
msgstr ""
-#: Code/Widget/Mailmenu.php:36
-msgid "New Message"
+#: Code/Update/_1239.php:25
+msgid "Added by superblock"
msgstr ""
-#: boot.php:1704
+#: boot.php:1692
msgid "Create an account to access services and applications"
msgstr ""
-#: boot.php:1728
+#: boot.php:1716
msgid "Login/Email"
msgstr ""
-#: boot.php:1729
+#: boot.php:1717
msgid "Password"
msgstr ""
-#: boot.php:1730
+#: boot.php:1718
msgid "Remember me"
msgstr ""
-#: boot.php:1733
+#: boot.php:1721
msgid "Forgot your password?"
msgstr ""
-#: boot.php:2538
+#: boot.php:2519
#, php-format
msgid "[$Projectname] Website SSL error for %s"
msgstr ""
-#: boot.php:2543
+#: boot.php:2524
msgid "Website SSL certificate is not valid. Please correct."
msgstr ""
-#: boot.php:2587
+#: boot.php:2568
#, php-format
msgid "[$Projectname] Cron tasks not running on %s"
msgstr ""
-#: boot.php:2592
+#: boot.php:2573
msgid "Cron/Scheduled tasks not running."
msgstr ""
-#: boot.php:2593 include/datetime.php:282
+#: boot.php:2574 include/datetime.php:282
msgid "never"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:28
+#: extend/addon/a/content_import/Mod_content_import.php:29
msgid "No server specified"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:74
+#: extend/addon/a/content_import/Mod_content_import.php:75
msgid "Posts imported"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:114
+#: extend/addon/a/content_import/Mod_content_import.php:115
msgid "Files imported"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:123
+#: extend/addon/a/content_import/Mod_content_import.php:124
msgid ""
"This addon app copies existing content and file storage to a cloned/copied "
"channel. Once the app is installed, visit the newly installed app. This will "
@@ -10847,137 +10834,137 @@ msgid ""
"range of files/conversations to copy."
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:137
+#: extend/addon/a/content_import/Mod_content_import.php:138
msgid ""
"This will import all your conversations and cloud files from a cloned "
"channel on another server. This may take a while if you have lots of posts "
"and or files."
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:138
+#: extend/addon/a/content_import/Mod_content_import.php:139
msgid "Include posts"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:138
+#: extend/addon/a/content_import/Mod_content_import.php:139
msgid "Conversations, Articles, Cards, and other posted content"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:139
+#: extend/addon/a/content_import/Mod_content_import.php:140
msgid "Include files"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:139
+#: extend/addon/a/content_import/Mod_content_import.php:140
msgid "Files, Photos and other cloud storage"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:140
+#: extend/addon/a/content_import/Mod_content_import.php:141
msgid "Original Server base URL"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:141
+#: extend/addon/a/content_import/Mod_content_import.php:142
msgid "Since modified date yyyy-mm-dd"
msgstr ""
-#: extend/addon/a/content_import/Mod_content_import.php:142
+#: extend/addon/a/content_import/Mod_content_import.php:143
msgid "Until modified date yyyy-mm-dd"
msgstr ""
+#: extend/addon/a/faces/Mod_Faces.php:63
+#: extend/addon/a/flashcards/Mod_Flashcards.php:55
+msgid "Profile Unavailable."
+msgstr ""
+
+#: extend/addon/a/faces/Mod_Faces.php:1697
+msgid "Face detection is not activated"
+msgstr ""
+
+#: extend/addon/a/faces/Mod_Faces.php:1707
+msgid "Face detection is still busy"
+msgstr ""
+
#: extend/addon/a/faces/faces.php:238
msgid "Errors encountered deleting all rows of database table "
msgstr ""
-#: extend/addon/a/faces/Mod_Faces.php:61
-#: extend/addon/a/flashcards/Mod_Flashcards.php:55
-msgid "Profile Unavailable."
-msgstr ""
-
-#: extend/addon/a/faces/Mod_Faces.php:1695
-msgid "Face detection is not activated"
-msgstr ""
-
-#: extend/addon/a/faces/Mod_Faces.php:1705
-msgid "Face detection is still busy"
-msgstr ""
-
#: extend/addon/a/flashcards/Mod_Flashcards.php:222
msgid "Not allowed."
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:73
+#: extend/addon/a/followlist/Mod_followlist.php:75
msgid "Adding connections"
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:87
+#: extend/addon/a/followlist/Mod_followlist.php:89
msgid "Connect failed: "
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:87
+#: extend/addon/a/followlist/Mod_followlist.php:89
msgid " Reason: "
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:90
+#: extend/addon/a/followlist/Mod_followlist.php:92
msgid "Finished adding connections"
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:97
+#: extend/addon/a/followlist/Mod_followlist.php:99
msgid ""
"This app allows you to connect to everybody in a pre-defined ActivityPub "
"collection or CSV file, such as follower/following lists. Install the app "
"and revisit this page to input the source URL."
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:131
+#: extend/addon/a/followlist/Mod_followlist.php:133
#, php-format
msgid "You may import up to %d records"
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:134
+#: extend/addon/a/followlist/Mod_followlist.php:136
msgid ""
"Enter the URL of an ActivityPub followers/following collection to import"
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:135
+#: extend/addon/a/followlist/Mod_followlist.php:137
msgid "Or upload an ActivityPub or CSV followers file from your device"
msgstr ""
-#: extend/addon/a/followlist/Mod_followlist.php:136
+#: extend/addon/a/followlist/Mod_followlist.php:138
msgid "URL of followers/following list"
msgstr ""
-#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:24
+#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:26
msgid "Fuzzloc Settings updated."
msgstr ""
-#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:37
+#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:39
msgid "Fuzzy Location App"
msgstr ""
-#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:38
+#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:40
msgid ""
"Blur your precise location if your channel uses browser location mapping"
msgstr ""
-#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:43
+#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:45
msgid "Minimum offset in meters"
msgstr ""
-#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:47
+#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:49
msgid "Maximum offset in meters"
msgstr ""
-#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:53
+#: extend/addon/a/fuzzloc/Mod_Fuzzloc.php:55
msgid "Fuzzy Location"
msgstr ""
-#: extend/addon/a/gallery/Mod_Gallery.php:61
+#: extend/addon/a/gallery/Mod_Gallery.php:63
msgid "Gallery App"
msgstr ""
-#: extend/addon/a/gallery/Mod_Gallery.php:62
+#: extend/addon/a/gallery/Mod_Gallery.php:64
msgid "A simple gallery for your photo albums"
msgstr ""
-#: extend/addon/a/gallery/gallery.php:50
+#: extend/addon/a/gallery/gallery.php:52
msgid "Photo Gallery"
msgstr ""
@@ -10989,52 +10976,22 @@ msgstr ""
msgid "Authentication successful but rejected: account creation is disabled."
msgstr ""
-#: extend/addon/a/logrot/logrot.php:37
+#: extend/addon/a/logrot/logrot.php:38
msgid "Logfile archive directory"
msgstr ""
-#: extend/addon/a/logrot/logrot.php:37
+#: extend/addon/a/logrot/logrot.php:38
msgid "Directory to store rotated logs"
msgstr ""
-#: extend/addon/a/logrot/logrot.php:38
+#: extend/addon/a/logrot/logrot.php:39
msgid "Logfile size in bytes before rotating, example 10M"
msgstr ""
-#: extend/addon/a/logrot/logrot.php:39
+#: extend/addon/a/logrot/logrot.php:40
msgid "Number of logfiles to retain"
msgstr ""
-#: extend/addon/a/nsfw/Mod_Nsfw.php:20
-msgid "NSFW Settings saved."
-msgstr ""
-
-#: extend/addon/a/nsfw/Mod_Nsfw.php:30
-msgid ""
-"This addon app looks in posts for the words/text you specify below, and "
-"collapses any content containing those keywords so it is not displayed at "
-"inappropriate times, such as sexual innuendo that may be improper in a work "
-"setting. It is polite and recommended to tag any content containing nudity "
-"with #NSFW. This filter can also match any other word/text you specify, and "
-"can thereby be used as a general purpose content filter."
-msgstr ""
-
-#: extend/addon/a/nsfw/Mod_Nsfw.php:42
-msgid "Comma separated list of keywords to hide"
-msgstr ""
-
-#: extend/addon/a/nsfw/Mod_Nsfw.php:42
-msgid "Word, /regular-expression/, lang=xx, lang!=xx"
-msgstr ""
-
-#: extend/addon/a/nsfw/Mod_Nsfw.php:50
-msgid "Not Safe For Work Settings"
-msgstr ""
-
-#: extend/addon/a/nsfw/Mod_Nsfw.php:50
-msgid "General Purpose Content Filter"
-msgstr ""
-
#: extend/addon/a/nsfw/nsfw.php:162
msgid "Conversation muted"
msgstr ""
@@ -11048,8 +11005,34 @@ msgstr ""
msgid "%s - view"
msgstr ""
-#: extend/addon/a/opensearch/Mod_opensearch.php:29
-msgid "Search $Projectname"
+#: extend/addon/a/nsfw/Mod_Nsfw.php:22
+msgid "NSFW Settings saved."
+msgstr ""
+
+#: extend/addon/a/nsfw/Mod_Nsfw.php:32
+msgid ""
+"This addon app looks in posts for the words/text you specify below, and "
+"collapses any content containing those keywords so it is not displayed at "
+"inappropriate times, such as sexual innuendo that may be improper in a work "
+"setting. It is polite and recommended to tag any content containing nudity "
+"with #NSFW. This filter can also match any other word/text you specify, and "
+"can thereby be used as a general purpose content filter."
+msgstr ""
+
+#: extend/addon/a/nsfw/Mod_Nsfw.php:44
+msgid "Comma separated list of keywords to hide"
+msgstr ""
+
+#: extend/addon/a/nsfw/Mod_Nsfw.php:44
+msgid "Word, /regular-expression/, lang=xx, lang!=xx"
+msgstr ""
+
+#: extend/addon/a/nsfw/Mod_Nsfw.php:52
+msgid "Not Safe For Work Settings"
+msgstr ""
+
+#: extend/addon/a/nsfw/Mod_Nsfw.php:52
+msgid "General Purpose Content Filter"
msgstr ""
#: extend/addon/a/opensearch/opensearch.php:34
@@ -11063,92 +11046,96 @@ msgctxt "opensearch"
msgid "$Projectname"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:145
+#: extend/addon/a/opensearch/Mod_opensearch.php:31
+msgid "Search $Projectname"
+msgstr ""
+
+#: extend/addon/a/openstreetmap/openstreetmap.php:146
msgid "View Larger"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:207
+#: extend/addon/a/openstreetmap/openstreetmap.php:208
msgid "Tile Server URL"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:207
+#: extend/addon/a/openstreetmap/openstreetmap.php:208
msgid ""
"A list of public tile servers"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:208
+#: extend/addon/a/openstreetmap/openstreetmap.php:209
msgid "Nominatim (reverse geocoding) Server URL"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:208
+#: extend/addon/a/openstreetmap/openstreetmap.php:209
msgid ""
"A list of Nominatim servers"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:209
+#: extend/addon/a/openstreetmap/openstreetmap.php:210
msgid "Default zoom"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:209
+#: extend/addon/a/openstreetmap/openstreetmap.php:210
msgid ""
"The default zoom level. (1:world, 18:highest, also depends on tile server)"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:210
+#: extend/addon/a/openstreetmap/openstreetmap.php:211
msgid "Include marker on map"
msgstr ""
-#: extend/addon/a/openstreetmap/openstreetmap.php:210
+#: extend/addon/a/openstreetmap/openstreetmap.php:211
msgid "Include a marker on the map."
msgstr ""
-#: extend/addon/a/qrator/Mod_qrator.php:10
-msgid "QR Generator (Qrator)"
-msgstr ""
-
-#: extend/addon/a/qrator/Mod_qrator.php:11
-msgid "Enter some text"
-msgstr ""
-
#: extend/addon/a/qrator/qrator.php:44
msgid "QR code"
msgstr ""
-#: extend/addon/a/queueworker/Mod_Queueworker.php:77
-msgid "Max queueworker threads"
+#: extend/addon/a/qrator/Mod_qrator.php:12
+msgid "QR Generator (Qrator)"
+msgstr ""
+
+#: extend/addon/a/qrator/Mod_qrator.php:13
+msgid "Enter some text"
msgstr ""
#: extend/addon/a/queueworker/Mod_Queueworker.php:79
+msgid "Max queueworker threads"
+msgstr ""
+
+#: extend/addon/a/queueworker/Mod_Queueworker.php:81
msgid "Minimum 4, default 4"
msgstr ""
-#: extend/addon/a/queueworker/Mod_Queueworker.php:90
+#: extend/addon/a/queueworker/Mod_Queueworker.php:92
msgid "Assume workers dead after"
msgstr ""
-#: extend/addon/a/queueworker/Mod_Queueworker.php:92
+#: extend/addon/a/queueworker/Mod_Queueworker.php:94
msgid "Minimum 120, default 300 seconds"
msgstr ""
-#: extend/addon/a/queueworker/Mod_Queueworker.php:103
+#: extend/addon/a/queueworker/Mod_Queueworker.php:105
msgid "Pause before starting next task"
msgstr ""
-#: extend/addon/a/queueworker/Mod_Queueworker.php:105
+#: extend/addon/a/queueworker/Mod_Queueworker.php:107
msgid "Minimum 100, default 100 microseconds"
msgstr ""
-#: extend/addon/a/queueworker/Mod_Queueworker.php:113
+#: extend/addon/a/queueworker/Mod_Queueworker.php:115
msgid "Queueworker Settings"
msgstr ""
-#: extend/addon/a/rainbowtag/Mod_Rainbowtag.php:15
+#: extend/addon/a/rainbowtag/Mod_Rainbowtag.php:17
msgid "Add some colour to tag clouds"
msgstr ""
-#: extend/addon/a/rainbowtag/Mod_Rainbowtag.php:34
+#: extend/addon/a/rainbowtag/Mod_Rainbowtag.php:36
msgid "Rainbow Tag"
msgstr ""
@@ -11177,140 +11164,79 @@ msgstr ""
msgid "Post to Zot"
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:25
+#: extend/addon/a/zotpost/Mod_zotpost.php:26
msgid "Channel is required."
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:38
+#: extend/addon/a/zotpost/Mod_zotpost.php:39
msgid "Zotpost Settings saved."
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:46
+#: extend/addon/a/zotpost/Mod_zotpost.php:47
msgid ""
"This addon app allows you to cross-post to other Zot services and channels. "
"After installing the app, select it to configure the destination settings "
"and preferences."
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:66
+#: extend/addon/a/zotpost/Mod_zotpost.php:67
msgid "Zot server URL"
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:66
+#: extend/addon/a/zotpost/Mod_zotpost.php:67
msgid "https://example.com"
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:70
+#: extend/addon/a/zotpost/Mod_zotpost.php:71
msgid "Zot channel name"
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:74
+#: extend/addon/a/zotpost/Mod_zotpost.php:75
msgid "Zot password"
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:78
+#: extend/addon/a/zotpost/Mod_zotpost.php:79
msgid "Send public postings to Zot channel by default"
msgstr ""
-#: extend/addon/a/zotpost/Mod_zotpost.php:82
+#: extend/addon/a/zotpost/Mod_zotpost.php:83
msgid "Zotpost Settings"
msgstr ""
-#: include/bbcode.php:317
-msgid "Encrypted content"
-msgstr ""
-
-#: include/bbcode.php:360
-#, php-format
-msgid "(Embedded app '%s' could not be displayed)."
-msgstr ""
-
-#: include/bbcode.php:403
-#, php-format
-msgid "Install %1$s element %2$s"
-msgstr ""
-
-#: include/bbcode.php:406
-#, php-format
-msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr ""
-
-#: include/bbcode.php:674
-msgid "card"
-msgstr ""
-
-#: include/bbcode.php:676
-msgid "article"
-msgstr ""
-
-#: include/bbcode.php:772 include/bbcode.php:781
-msgid "Click to open/close"
-msgstr ""
-
-#: include/bbcode.php:781
-msgid "spoiler"
-msgstr ""
-
-#: include/bbcode.php:1413 include/bbcode.php:1684
-msgid "Different viewers will see this text differently"
-msgstr ""
-
-#: include/bbcode.php:2011
-msgid "$1 wrote:"
-msgstr ""
-
-#: include/security.php:646
-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/zid.php:399
-#, php-format
-msgid "OpenWebAuth: %1$s welcomes %2$s"
-msgstr ""
-
-#: include/dba/dba_driver.php:190
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr ""
-
-#: include/connections.php:200
+#: include/connections.php:204
msgid "New window"
msgstr ""
-#: include/connections.php:201
+#: include/connections.php:205
msgid "Open the selected location in a different window or browser tab"
msgstr ""
-#: include/connections.php:841 include/event.php:1517
+#: include/connections.php:845 include/event.php:1517
msgid "Home, Voice"
msgstr ""
-#: include/connections.php:842 include/event.php:1518
+#: include/connections.php:846 include/event.php:1518
msgid "Home, Fax"
msgstr ""
-#: include/connections.php:844 include/event.php:1520
+#: include/connections.php:848 include/event.php:1520
msgid "Work, Voice"
msgstr ""
-#: include/connections.php:845 include/event.php:1521
+#: include/connections.php:849 include/event.php:1521
msgid "Work, Fax"
msgstr ""
-#: include/connections.php:956
+#: include/connections.php:960
msgid "No connections"
msgstr ""
-#: include/connections.php:987
+#: include/connections.php:991
#, php-format
msgid "View all %s connections"
msgstr ""
-#: include/connections.php:1024
+#: include/connections.php:1028
#, php-format
msgid "Network: %s"
msgstr ""
@@ -11405,108 +11331,6 @@ msgstr ""
msgid "Happy Birthday %1$s"
msgstr ""
-#: include/event.php:37 include/event.php:123
-msgid "l F d, Y \\@ g:i A"
-msgstr ""
-
-#: include/event.php:45 include/event.php:129
-msgid "Starts:"
-msgstr ""
-
-#: include/event.php:63 include/event.php:133
-msgid "Finishes:"
-msgstr ""
-
-#: include/event.php:1191
-msgid "This event has been added to your calendar."
-msgstr ""
-
-#: include/event.php:1422
-msgid "Not specified"
-msgstr ""
-
-#: include/event.php:1423
-msgid "Needs Action"
-msgstr ""
-
-#: include/event.php:1424
-msgid "Completed"
-msgstr ""
-
-#: include/event.php:1425
-msgid "In Process"
-msgstr ""
-
-#: include/event.php:1426
-msgid "Cancelled"
-msgstr ""
-
-#: include/attach.php:285 include/attach.php:411
-msgid "Item was not found."
-msgstr ""
-
-#: include/attach.php:303
-msgid "Unknown error."
-msgstr ""
-
-#: include/attach.php:606
-msgid "No source file."
-msgstr ""
-
-#: include/attach.php:630
-msgid "Cannot locate file to replace"
-msgstr ""
-
-#: include/attach.php:651
-msgid "Cannot locate file to revise/update"
-msgstr ""
-
-#: include/attach.php:810
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr ""
-
-#: include/attach.php:833
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr ""
-
-#: include/attach.php:1040
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr ""
-
-#: include/attach.php:1071
-msgid "Stored file could not be verified. Upload failed."
-msgstr ""
-
-#: include/attach.php:1149 include/attach.php:1166
-msgid "Path not available."
-msgstr ""
-
-#: include/attach.php:1216 include/attach.php:1387
-msgid "Empty pathname"
-msgstr ""
-
-#: include/attach.php:1244
-msgid "duplicate filename or path"
-msgstr ""
-
-#: include/attach.php:1269
-msgid "Path not found."
-msgstr ""
-
-#: include/attach.php:1340
-msgid "mkdir failed."
-msgstr ""
-
-#: include/attach.php:1343
-msgid "database storage failed."
-msgstr ""
-
-#: include/attach.php:1393
-msgid "Empty path"
-msgstr ""
-
#: include/import.php:34
msgid "Unable to import a removed channel."
msgstr ""
@@ -11530,351 +11354,11 @@ msgstr ""
msgid "Cloned channel not found. Import failed."
msgstr ""
-#: include/photos.php:158
+#: include/dba/dba_driver.php:190
#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
+msgid "Cannot locate DNS info for database server '%s'"
msgstr ""
-#: include/photos.php:169
-msgid "Image file is empty."
-msgstr ""
-
-#: include/photos.php:363
-msgid "Photo storage failed."
-msgstr ""
-
-#: include/photos.php:412
-msgid "a new photo"
-msgstr ""
-
-#: include/photos.php:420
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr ""
-
-#: include/photos.php:764
-msgid "Upload New Photos"
-msgstr ""
-
-#: include/conversation.php:188
-#, php-format
-msgid "%1$s repeated %2$s's %3$s"
-msgstr ""
-
-#: include/conversation.php:194
-#, php-format
-msgid "likes %1$s's %2$s"
-msgstr ""
-
-#: include/conversation.php:196
-#, php-format
-msgid "doesn't like %1$s's %2$s"
-msgstr ""
-
-#: include/conversation.php:198
-#, php-format
-msgid "repeated %1$s's %2$s"
-msgstr ""
-
-#: include/conversation.php:240
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr ""
-
-#: include/conversation.php:280
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr ""
-
-#: include/conversation.php:284 include/text.php:1192 include/text.php:1196
-msgid "poked"
-msgstr ""
-
-#: include/conversation.php:610
-msgid "Toggle Star Status"
-msgstr ""
-
-#: include/conversation.php:663
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr ""
-
-#: include/conversation.php:685
-msgid "Categories:"
-msgstr ""
-
-#: include/conversation.php:686
-msgid "Filed under:"
-msgstr ""
-
-#: include/conversation.php:715
-msgid "View Conversation"
-msgstr ""
-
-#: include/conversation.php:805
-msgid "remove"
-msgstr ""
-
-#: include/conversation.php:809
-msgid "Loading..."
-msgstr ""
-
-#: include/conversation.php:810
-msgid "Delete Selected Items"
-msgstr ""
-
-#: include/conversation.php:856
-msgid "View Source"
-msgstr ""
-
-#: include/conversation.php:866
-msgid "Follow Thread"
-msgstr ""
-
-#: include/conversation.php:875
-msgid "Unfollow Thread"
-msgstr ""
-
-#: include/conversation.php:988
-msgid "Edit Connection"
-msgstr ""
-
-#: include/conversation.php:1018
-msgid "Block author's site"
-msgstr ""
-
-#: include/conversation.php:1025
-msgid "Block author"
-msgstr ""
-
-#: include/conversation.php:1138
-#, php-format
-msgid "%s likes this."
-msgstr ""
-
-#: include/conversation.php:1138
-#, php-format
-msgid "%s doesn't like this."
-msgstr ""
-
-#: include/conversation.php:1142
-#, php-format
-msgid "%2$d people like this."
-msgid_plural "%2$d people like this."
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:1144
-#, 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:1151
-msgid "and"
-msgstr ""
-
-#: include/conversation.php:1155
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:1157
-#, php-format
-msgid "%s like this."
-msgstr ""
-
-#: include/conversation.php:1157
-#, php-format
-msgid "%s don't like this."
-msgstr ""
-
-#: include/conversation.php:1222
-msgid "Set your location"
-msgstr ""
-
-#: include/conversation.php:1223
-msgid "Clear browser location"
-msgstr ""
-
-#: include/conversation.php:1244
-msgid "Embed (existing) photo from your photo albums"
-msgstr ""
-
-#: include/conversation.php:1290
-msgid "Tag term:"
-msgstr ""
-
-#: include/conversation.php:1291
-msgid "Where are you right now?"
-msgstr ""
-
-#: include/conversation.php:1296
-msgid "Choose a different album..."
-msgstr ""
-
-#: include/conversation.php:1375
-msgid "Accept delivery of comments and likes on this post from"
-msgstr ""
-
-#: include/conversation.php:1412
-msgid "Page link name"
-msgstr ""
-
-#: include/conversation.php:1415
-msgid "Post as"
-msgstr ""
-
-#: include/conversation.php:1417
-msgid "Text styles"
-msgstr ""
-
-#: include/conversation.php:1425
-msgid "Please enter a link location (URL)"
-msgstr ""
-
-#: include/conversation.php:1426
-msgid "Insert link only"
-msgstr ""
-
-#: include/conversation.php:1426
-msgid "Embed content if possible"
-msgstr ""
-
-#: include/conversation.php:1428
-msgid "Embed an image from your albums"
-msgstr ""
-
-#: include/conversation.php:1432
-msgid "Toggle poll"
-msgstr ""
-
-#: include/conversation.php:1433
-msgid "Option"
-msgstr ""
-
-#: include/conversation.php:1434
-msgid "Add option"
-msgstr ""
-
-#: include/conversation.php:1435
-msgid "Minutes"
-msgstr ""
-
-#: include/conversation.php:1435
-msgid "Hours"
-msgstr ""
-
-#: include/conversation.php:1435
-msgid "Days"
-msgstr ""
-
-#: include/conversation.php:1436
-msgid "Allow multiple answers"
-msgstr ""
-
-#: include/conversation.php:1439
-msgid "Disable comments"
-msgstr ""
-
-#: include/conversation.php:1440
-msgid "Toggle comments"
-msgstr ""
-
-#: include/conversation.php:1441
-msgid "Allow comments on this post"
-msgstr ""
-
-#: include/conversation.php:1447
-msgid "Optional: disable comments after (date)"
-msgstr ""
-
-#: include/conversation.php:1456
-msgid "Categories (optional, comma-separated list)"
-msgstr ""
-
-#: include/conversation.php:1480
-msgid "Other networks and post services"
-msgstr ""
-
-#: include/conversation.php:1481
-msgid "Collections"
-msgstr ""
-
-#: include/conversation.php:1484
-msgid "Set expiration date"
-msgstr ""
-
-#: include/conversation.php:1489
-msgid "Set publish date"
-msgstr ""
-
-#: include/conversation.php:1507
-msgid "Load remote media players"
-msgstr ""
-
-#: include/conversation.php:1508
-msgid "This may subject viewers of this post to behaviour tracking"
-msgstr ""
-
-#: include/conversation.php:1510
-msgid "Find shareable objects (Zot)"
-msgstr ""
-
-#: include/conversation.php:1537
-msgid "Post to Collections"
-msgstr ""
-
-#: include/conversation.php:2072
-msgid "articles"
-msgstr ""
-
-#: include/conversation.php:2166
-msgctxt "noun"
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:2169
-msgctxt "noun"
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:2172
-msgctxt "noun"
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:2175
-msgctxt "noun"
-msgid "Agree"
-msgid_plural "Agrees"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:2178
-msgctxt "noun"
-msgid "Disagree"
-msgid_plural "Disagrees"
-msgstr[0] ""
-msgstr[1] ""
-
-#: include/conversation.php:2181
-msgctxt "noun"
-msgid "Abstain"
-msgid_plural "Abstains"
-msgstr[0] ""
-msgstr[1] ""
-
#: include/language.php:432 include/text.php:2197
msgid "default"
msgstr ""
@@ -11923,6 +11407,11 @@ msgstr ""
msgid "dislikes"
msgstr ""
+#: include/zid.php:399
+#, php-format
+msgid "OpenWebAuth: %1$s welcomes %2$s"
+msgstr ""
+
#: include/text.php:526
msgid "prev"
msgstr ""
@@ -11951,6 +11440,10 @@ msgstr ""
msgid "poke"
msgstr ""
+#: include/text.php:1192 include/text.php:1196 include/conversation.php:284
+msgid "poked"
+msgstr ""
+
#: include/text.php:1197
msgid "ping"
msgstr ""
@@ -12236,66 +11729,6 @@ msgstr ""
msgid "Specify folder"
msgstr ""
-#: include/items.php:1026
-msgid "(Unknown)"
-msgstr ""
-
-#: include/items.php:1213
-msgid "Visible to anybody on the internet."
-msgstr ""
-
-#: include/items.php:1215
-msgid "Visible to you only."
-msgstr ""
-
-#: include/items.php:1217
-msgid "Visible to anybody in this network."
-msgstr ""
-
-#: include/items.php:1219
-msgid "Visible to anybody authenticated."
-msgstr ""
-
-#: include/items.php:1221
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr ""
-
-#: include/items.php:1223
-msgid "Visible to all connections."
-msgstr ""
-
-#: include/items.php:1225
-msgid "Visible to approved connections."
-msgstr ""
-
-#: include/items.php:1227
-msgid "Visible to specific connections."
-msgstr ""
-
-#: include/items.php:4385
-msgid "Privacy group is empty."
-msgstr ""
-
-#: include/items.php:4766
-msgid "profile photo"
-msgstr ""
-
-#: include/items.php:4969
-#, php-format
-msgid "[Edited %s]"
-msgstr ""
-
-#: include/items.php:4969
-msgctxt "edit_activity"
-msgid "Post"
-msgstr ""
-
-#: include/items.php:4969
-msgctxt "edit_activity"
-msgid "Comment"
-msgstr ""
-
#: include/network.php:505
msgid "url: "
msgstr ""
@@ -12352,6 +11785,207 @@ msgstr ""
msgid "MySpace"
msgstr ""
+#: include/items.php:1025
+msgid "(Unknown)"
+msgstr ""
+
+#: include/items.php:1212
+msgid "Visible to anybody on the internet."
+msgstr ""
+
+#: include/items.php:1214
+msgid "Visible to you only."
+msgstr ""
+
+#: include/items.php:1216
+msgid "Visible to anybody in this network."
+msgstr ""
+
+#: include/items.php:1218
+msgid "Visible to anybody authenticated."
+msgstr ""
+
+#: include/items.php:1220
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr ""
+
+#: include/items.php:1222
+msgid "Visible to all connections."
+msgstr ""
+
+#: include/items.php:1224
+msgid "Visible to approved connections."
+msgstr ""
+
+#: include/items.php:1226
+msgid "Visible to specific connections."
+msgstr ""
+
+#: include/items.php:4384
+msgid "Privacy group is empty."
+msgstr ""
+
+#: include/items.php:4765
+msgid "profile photo"
+msgstr ""
+
+#: include/items.php:4968
+#, php-format
+msgid "[Edited %s]"
+msgstr ""
+
+#: include/items.php:4968
+msgctxt "edit_activity"
+msgid "Post"
+msgstr ""
+
+#: include/items.php:4968
+msgctxt "edit_activity"
+msgid "Comment"
+msgstr ""
+
+#: include/attach.php:285 include/attach.php:411
+msgid "Item was not found."
+msgstr ""
+
+#: include/attach.php:303
+msgid "Unknown error."
+msgstr ""
+
+#: include/attach.php:606
+msgid "No source file."
+msgstr ""
+
+#: include/attach.php:630
+msgid "Cannot locate file to replace"
+msgstr ""
+
+#: include/attach.php:651
+msgid "Cannot locate file to revise/update"
+msgstr ""
+
+#: include/attach.php:815
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr ""
+
+#: include/attach.php:838
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr ""
+
+#: include/attach.php:1045
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr ""
+
+#: include/attach.php:1076
+msgid "Stored file could not be verified. Upload failed."
+msgstr ""
+
+#: include/attach.php:1154 include/attach.php:1171
+msgid "Path not available."
+msgstr ""
+
+#: include/attach.php:1221 include/attach.php:1392
+msgid "Empty pathname"
+msgstr ""
+
+#: include/attach.php:1249
+msgid "duplicate filename or path"
+msgstr ""
+
+#: include/attach.php:1274
+msgid "Path not found."
+msgstr ""
+
+#: include/attach.php:1345
+msgid "mkdir failed."
+msgstr ""
+
+#: include/attach.php:1348
+msgid "database storage failed."
+msgstr ""
+
+#: include/attach.php:1398
+msgid "Empty path"
+msgstr ""
+
+#: include/photos.php:158
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr ""
+
+#: include/photos.php:169
+msgid "Image file is empty."
+msgstr ""
+
+#: include/photos.php:363
+msgid "Photo storage failed."
+msgstr ""
+
+#: include/photos.php:412
+msgid "a new photo"
+msgstr ""
+
+#: include/photos.php:416
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr ""
+
+#: include/photos.php:419
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s"
+msgstr ""
+
+#: include/photos.php:764
+msgid "Upload New Photos"
+msgstr ""
+
+#: include/security.php:646
+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/event.php:37 include/event.php:123
+msgid "l F d, Y \\@ g:i A"
+msgstr ""
+
+#: include/event.php:45 include/event.php:129
+msgid "Starts:"
+msgstr ""
+
+#: include/event.php:63 include/event.php:133
+msgid "Finishes:"
+msgstr ""
+
+#: include/event.php:1191
+msgid "This event has been added to your calendar."
+msgstr ""
+
+#: include/event.php:1422
+msgid "Not specified"
+msgstr ""
+
+#: include/event.php:1423
+msgid "Needs Action"
+msgstr ""
+
+#: include/event.php:1424
+msgid "Completed"
+msgstr ""
+
+#: include/event.php:1425
+msgid "In Process"
+msgstr ""
+
+#: include/event.php:1426
+msgid "Cancelled"
+msgstr ""
+
#: include/api_auth.php:169
msgid "This api method requires authentication"
msgstr ""
@@ -12376,8 +12010,367 @@ msgstr ""
msgid "Login failed."
msgstr ""
+#: include/bbcode.php:317
+msgid "Encrypted content"
+msgstr ""
+
+#: include/bbcode.php:360
+#, php-format
+msgid "(Embedded app '%s' could not be displayed)."
+msgstr ""
+
+#: include/bbcode.php:403
+#, php-format
+msgid "Install %1$s element %2$s"
+msgstr ""
+
+#: include/bbcode.php:406
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr ""
+
+#: include/bbcode.php:674
+msgid "card"
+msgstr ""
+
+#: include/bbcode.php:676
+msgid "article"
+msgstr ""
+
+#: include/bbcode.php:772 include/bbcode.php:781
+msgid "Click to open/close"
+msgstr ""
+
+#: include/bbcode.php:781
+msgid "spoiler"
+msgstr ""
+
+#: include/bbcode.php:1413 include/bbcode.php:1684
+msgid "Different viewers will see this text differently"
+msgstr ""
+
+#: include/bbcode.php:2011
+msgid "$1 wrote:"
+msgstr ""
+
+#: include/conversation.php:188
+#, php-format
+msgid "%1$s repeated %2$s's %3$s"
+msgstr ""
+
+#: include/conversation.php:194
+#, php-format
+msgid "likes %1$s's %2$s"
+msgstr ""
+
+#: include/conversation.php:196
+#, php-format
+msgid "doesn't like %1$s's %2$s"
+msgstr ""
+
+#: include/conversation.php:198
+#, php-format
+msgid "repeated %1$s's %2$s"
+msgstr ""
+
+#: include/conversation.php:240
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr ""
+
+#: include/conversation.php:280
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr ""
+
+#: include/conversation.php:610
+msgid "Toggle Star Status"
+msgstr ""
+
+#: include/conversation.php:663
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr ""
+
+#: include/conversation.php:685
+msgid "Categories:"
+msgstr ""
+
+#: include/conversation.php:686
+msgid "Filed under:"
+msgstr ""
+
+#: include/conversation.php:715
+msgid "View Conversation"
+msgstr ""
+
+#: include/conversation.php:805
+msgid "remove"
+msgstr ""
+
+#: include/conversation.php:809
+msgid "Loading..."
+msgstr ""
+
+#: include/conversation.php:810
+msgid "Delete Selected Items"
+msgstr ""
+
+#: include/conversation.php:856
+msgid "View Source"
+msgstr ""
+
+#: include/conversation.php:866
+msgid "Follow Thread"
+msgstr ""
+
+#: include/conversation.php:875
+msgid "Unfollow Thread"
+msgstr ""
+
+#: include/conversation.php:988
+msgid "Edit Connection"
+msgstr ""
+
+#: include/conversation.php:1018
+msgid "Block author's site"
+msgstr ""
+
+#: include/conversation.php:1025
+msgid "Block author"
+msgstr ""
+
+#: include/conversation.php:1138
+#, php-format
+msgid "%s likes this."
+msgstr ""
+
+#: include/conversation.php:1138
+#, php-format
+msgid "%s doesn't like this."
+msgstr ""
+
+#: include/conversation.php:1142
+#, php-format
+msgid "%2$d people like this."
+msgid_plural "%2$d people like this."
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:1144
+#, 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:1151
+msgid "and"
+msgstr ""
+
+#: include/conversation.php:1155
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:1157
+#, php-format
+msgid "%s like this."
+msgstr ""
+
+#: include/conversation.php:1157
+#, php-format
+msgid "%s don't like this."
+msgstr ""
+
+#: include/conversation.php:1222
+msgid "Set your location"
+msgstr ""
+
+#: include/conversation.php:1223
+msgid "Clear browser location"
+msgstr ""
+
+#: include/conversation.php:1244
+msgid "Embed (existing) photo from your photo albums"
+msgstr ""
+
+#: include/conversation.php:1290
+msgid "Tag term:"
+msgstr ""
+
+#: include/conversation.php:1291
+msgid "Where are you right now?"
+msgstr ""
+
+#: include/conversation.php:1296
+msgid "Choose a different album..."
+msgstr ""
+
+#: include/conversation.php:1375
+msgid "Accept delivery of comments and likes on this post from"
+msgstr ""
+
+#: include/conversation.php:1412
+msgid "Page link name"
+msgstr ""
+
+#: include/conversation.php:1415
+msgid "Post as"
+msgstr ""
+
+#: include/conversation.php:1417
+msgid "Text styles"
+msgstr ""
+
+#: include/conversation.php:1425
+msgid "Please enter a link location (URL)"
+msgstr ""
+
+#: include/conversation.php:1426
+msgid "Insert link only"
+msgstr ""
+
+#: include/conversation.php:1426
+msgid "Embed content if possible"
+msgstr ""
+
+#: include/conversation.php:1428
+msgid "Embed an image from your albums"
+msgstr ""
+
+#: include/conversation.php:1432
+msgid "Toggle poll"
+msgstr ""
+
+#: include/conversation.php:1433
+msgid "Option"
+msgstr ""
+
+#: include/conversation.php:1434
+msgid "Add option"
+msgstr ""
+
+#: include/conversation.php:1435
+msgid "Minutes"
+msgstr ""
+
+#: include/conversation.php:1435
+msgid "Hours"
+msgstr ""
+
+#: include/conversation.php:1435
+msgid "Days"
+msgstr ""
+
+#: include/conversation.php:1436
+msgid "Allow multiple answers"
+msgstr ""
+
+#: include/conversation.php:1439
+msgid "Disable comments"
+msgstr ""
+
+#: include/conversation.php:1440
+msgid "Toggle comments"
+msgstr ""
+
+#: include/conversation.php:1441
+msgid "Allow comments on this post"
+msgstr ""
+
+#: include/conversation.php:1447
+msgid "Optional: disable comments after (date)"
+msgstr ""
+
+#: include/conversation.php:1456
+msgid "Categories (optional, comma-separated list)"
+msgstr ""
+
+#: include/conversation.php:1480
+msgid "Other networks and post services"
+msgstr ""
+
+#: include/conversation.php:1481
+msgid "Collections"
+msgstr ""
+
+#: include/conversation.php:1484
+msgid "Set expiration date"
+msgstr ""
+
+#: include/conversation.php:1489
+msgid "Set publish date"
+msgstr ""
+
+#: include/conversation.php:1507
+msgid "Load remote media players"
+msgstr ""
+
+#: include/conversation.php:1508
+msgid "This may subject viewers of this post to behaviour tracking"
+msgstr ""
+
+#: include/conversation.php:1510
+msgid "Find shareable objects (Zot)"
+msgstr ""
+
+#: include/conversation.php:1537
+msgid "Post to Collections"
+msgstr ""
+
+#: include/conversation.php:2072
+msgid "articles"
+msgstr ""
+
+#: include/conversation.php:2166
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:2169
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:2172
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:2175
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:2178
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] ""
+msgstr[1] ""
+
+#: include/conversation.php:2181
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] ""
+msgstr[1] ""
+
#: view/theme/redbasic/php/config.php:20 view/theme/redbasic/php/config.php:23
-msgid "Focus (Hubzilla default)"
+msgid "Focus (default)"
msgstr ""
#: view/theme/redbasic/php/config.php:101
diff --git a/util/run_xgettext.sh b/util/run_xgettext.sh
index d881145ef..72b62a3a5 100755
--- a/util/run_xgettext.sh
+++ b/util/run_xgettext.sh
@@ -4,7 +4,7 @@
VINFO=`echo ", YEAR./Nobody, 2010/g" "$OUTFILE"
sed -i "s/PACKAGE VERSION/$F9KVERSION/g" "$OUTFILE"
sed -i "s/PACKAGE/$PROJECTNAME/g" "$OUTFILE"
diff --git a/util/storageconv b/util/storageconv
index 356056a09..1f2ed8095 100755
--- a/util/storageconv
+++ b/util/storageconv
@@ -1,10 +1,10 @@
#!/usr/bin/env php
dd > li {
margin: 0 10px;
padding: 10px 0;
}
+
+.screenshot img {
+ max-width: 100%;
+}
diff --git a/view/theme/redbasic/php/config.php b/view/theme/redbasic/php/config.php
index 440307304..0d117ea42 100644
--- a/view/theme/redbasic/php/config.php
+++ b/view/theme/redbasic/php/config.php
@@ -17,10 +17,10 @@ class RedbasicConfig {
if(in_array('view/theme/redbasic/schema/default.php', $files)) {
$scheme_choices['---'] = t('Default');
- $scheme_choices['focus'] = t('Focus (Hubzilla default)');
+ $scheme_choices['focus'] = t('Focus (default)');
}
else {
- $scheme_choices['---'] = t('Focus (Hubzilla default)');
+ $scheme_choices['---'] = t('Focus (default)');
}
foreach($files as $file) {
diff --git a/view/theme/redbasic/php/theme.php b/view/theme/redbasic/php/theme.php
index e5614b9df..bed666638 100644
--- a/view/theme/redbasic/php/theme.php
+++ b/view/theme/redbasic/php/theme.php
@@ -2,7 +2,7 @@
/**
* * Name: Redbasic
- * * Description: Hubzilla standard theme
+ * * Description: standard theme
* * Version: 2.1
* * Author: Fabrixxm
* * Maintainer: Mike Macgirvin
diff --git a/view/tpl/admin_plugins_details.tpl b/view/tpl/admin_plugins_details.tpl
index 8b831aacb..ce5212749 100755
--- a/view/tpl/admin_plugins_details.tpl
+++ b/view/tpl/admin_plugins_details.tpl
@@ -9,12 +9,17 @@
{{/if}}
{{$info.description}}
-
+ {{if is_array($info.author) }}
{{foreach $info.author as $a}}
{{$str_author}}
- {{$a.name}}{{if $a.link}} {{$a.link}}{{/if}}
+ {{$a}}
{{/foreach}}
+ {{else}}
+ {{$str_author}}
+ {{$info.author}}
+
+ {{/if}}
{{if $info.minversion}}
{{$str_minversion}}{{$info.minversion}}
@@ -32,12 +37,17 @@
{{$str_requires}}{{$info.requires}}
{{/if}}
-
+ {{if is_array($info.maintainer) }}
{{foreach $info.maintainer as $a}}
{{$str_maintainer}}
- {{$a.name}}{{if $a.link}} {{$a.link}}{{/if}}
+ {{$a}}
{{/foreach}}
+ {{else}}
+ {{$str_maintainer}}
+ {{$info.maintainer}}
+
+ {{/if}}
{{if $screenshot}}
diff --git a/view/tpl/chat.tpl b/view/tpl/chat.tpl
index c189cbd15..4660a83be 100644
--- a/view/tpl/chat.tpl
+++ b/view/tpl/chat.tpl
@@ -160,7 +160,7 @@ function update_inroom(inroom) {
memberChange = chatRoomMembersChange(inroom); // get list of arrivals and departures
if(memberChange.membersArriving.length > 0) {
// Issue pop-up notification if anyone enters the room.
- chat_issue_notification(JSON.stringify(memberChange.membersArriving.pop().name) + ' entered the room', 'Hubzilla Chat');
+ chat_issue_notification(JSON.stringify(memberChange.membersArriving.pop().name) + ' entered the room', 'Chat');
}
$('#chatMembers').html(html);
}
@@ -201,7 +201,7 @@ function update_chats(chats) {
else {
newNode.setAttribute('class', 'chat-item clear');
$(newNode).html('' + item.name + ' ' + item.localtime + '
' + item.text + '
');
- chat_issue_notification(item.name + ':\n' + item.text, 'Hubzilla Chat');
+ chat_issue_notification(item.name + ':\n' + item.text, 'Chat');
}
$('#chatLineHolder').append(newNode);
$(".autotime").timeago();
diff --git a/view/tpl/cover_photo_widget.tpl b/view/tpl/cover_photo_widget.tpl
index 7739d24b8..b4785cf80 100755
--- a/view/tpl/cover_photo_widget.tpl
+++ b/view/tpl/cover_photo_widget.tpl
@@ -16,7 +16,7 @@
}
$('#cover-photo').removeClass('d-none');
- cover_height = Math.ceil($(window).width()/2.75862069);
+ cover_height = Math.ceil($(window).width()/1.77777778);
$('#cover-photo').css('height', cover_height + 'px');
datasrc2src('#cover-photo > img');
@@ -52,7 +52,7 @@
});
$(window).resize(function () {
- cover_height = Math.ceil($(window).width()/2.75862069);
+ cover_height = Math.ceil($(window).width()/1.77777778)
$('#cover-photo').css('height', cover_height + 'px');
if($(window).width() < 755) {
$('#cover-photo').remove();
diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl
index 83e87f003..26ddb6770 100755
--- a/view/tpl/jot-header.tpl
+++ b/view/tpl/jot-header.tpl
@@ -1,9 +1,9 @@