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}} {{$screenshot.1}} 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.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 @@