diff options
author | Max Kostikov <max@kostikov.co> | 2021-01-20 13:15:40 +0100 |
---|---|---|
committer | Max Kostikov <max@kostikov.co> | 2021-01-20 13:15:40 +0100 |
commit | 9612a69a6448331ae3296503e97ef6ce204d9be1 (patch) | |
tree | afae1ea1fa8c63db4c23836e0ebfe57b56b808ec | |
parent | 308e94ea799b7851287fbc7635480ac13bfe3c61 (diff) | |
parent | 08264f8d11d349bbda92233d984ad52c16c6b2d6 (diff) | |
download | volse-hubzilla-9612a69a6448331ae3296503e97ef6ce204d9be1.tar.gz volse-hubzilla-9612a69a6448331ae3296503e97ef6ce204d9be1.tar.bz2 volse-hubzilla-9612a69a6448331ae3296503e97ef6ce204d9be1.zip |
Merge branch 'dev' into 'dev'
Dev sync
See merge request kostikov/core!1
111 files changed, 6599 insertions, 6438 deletions
@@ -1,3 +1,70 @@ +Hubzilla 5.2.1 (2021-01-16) + - Fix attach_upgrade() to catch all broken entries in attach + - Fix collect_recipients() public policy filter for zot6 + - Fix leaking of duplicate tasks in queueworker addon_common + + +Hubzilla 5.2 (2021-01-13) + - Use libzotdir for directory + - Streamline usage of channel url for keyId + - Basic work on PHP8 compatibility + - Improve performance for forum post edit action + - Improve File App tiles view + - Update es strings + - Update ru strings + - Implement directory download via zip files in Files App + - Implement bulk file download via zip files in Files App + - Deprecate ! and !! forum tags - use direct messages to post to forums + - Do not show forums where we do not have permission to post in ACL selector + - Implement lockview for Files App + - Implement file and directory rename functionality Files App + - Implement file and directory copy functionality in Files App + - Implement file and directory move functionality in Files App + - Implement categories for files and directories in Files App + - Implement drag and drop move action for files and directories in Files App + - Implement bulk file actions for move, copy, categories and permissions + - Implement a files categories widget + - Implement a breadcrumb view for file paths + - Rewrite xchan_vcard template + - Update composer libs + + Bugfixes + - Fix direct messages by forum channel turned into group item + - Fix ID3Parser composer autoload + - Fix issue where directory_fallback_servers were not accessible from static function + - Fix missing constant defenition for HUBLOC_OFFLINE + - Fix sync_directories() including known dead sites + - Fix undefined variable in poller preventing Onedirsync from running + - Fix w2w posts not editable/deletable from local server + - Fix issue where categories were not saved on forum wall posts + - Fix no channel_id provided for contact_remove() in reply_purge() + - Fix typo in notifier command + - Fix profile title/description allowed more than 191 characters + + + Addons + - Queueworker: cleanup whitespace + - Queueworker: add some tweaks to prevent deadlocks for postgresql + - Flashcards: compatibility for the changes in the Files App + - Openstreemap: fix hostname parsing from URL + - Openstreemap: fix content security policy + - Pubcrawl: fix peertube video display + - Pubcrawl: deliver updates to anyone owning the item + + +Hubzilla 5.0.8 (2020-12-30) + - Fix single quotes not escaped in the notifications title (issue 1503) + - Return zot6 xchans for random_profile() + - Return zot6 entries in dirsearch + - Fix comment sync issue + - Fix duplicate entries in contact autocomplete + - Fix issue where direct message notifications where not displayed for wall items + - Do not revalidate cached photos + - Implement imagemagic resource consumption limiting + - Specify key in mod owa + - Fix issue where array was passed to get_key() + + Hubzilla 5.0.7 (2020-12-21) - Fix CardDAV addressbook ID - Use Zot6 for CardDAV and CalDAV sync between clones @@ -3,27 +3,28 @@ |Name|Version|License|Source| |----|-------|-------|------| |blueimp/jquery-file-upload|10.31.0.0|MIT|https://github.com/vkhramtsov/jQuery-File-Upload.git| +|brick/math|0.9.1.0|MIT|https://github.com/brick/math.git| |bshaffer/oauth2-server-php|1.11.1.0|MIT|https://github.com/bshaffer/oauth2-server-php.git| -|commerceguys/intl|1.0.5.0|MIT|https://github.com/commerceguys/intl.git| +|commerceguys/intl|1.0.7.0|MIT|https://github.com/commerceguys/intl.git| |desandro/imagesloaded|4.1.4.0|MIT|https://github.com/desandro/imagesloaded.git| |ezyang/htmlpurifier|4.13.0.0|LGPL-2.1-or-later|https://github.com/ezyang/htmlpurifier.git| |league/html-to-markdown|4.10.0.0|MIT|https://github.com/thephpleague/html-to-markdown.git| |lukasreschke/id3parser|0.0.3.0|GPL|https://github.com/LukasReschke/ID3Parser.git| |michelf/php-markdown|1.9.0.0|BSD-3-Clause|https://github.com/michelf/php-markdown.git| -|paragonie/random_compat|9.99.99.0|MIT|https://github.com/paragonie/random_compat.git| -|pear/text_languagedetect|1.0.0.0|BSD-2-Clause|https://github.com/pear/Text_LanguageDetect.git| +|pear/text_languagedetect|1.0.1.0|BSD-2-Clause|https://github.com/pear/Text_LanguageDetect.git| |psr/log|1.1.3.0|MIT|https://github.com/php-fig/log.git| -|ramsey/uuid|3.9.3.0|MIT|https://github.com/ramsey/uuid.git| -|sabre/dav|4.1.1.0|BSD-3-Clause|https://github.com/sabre-io/dav.git| -|sabre/event|5.1.0.0|BSD-3-Clause|https://github.com/sabre-io/event.git| -|sabre/http|5.1.0.0|BSD-3-Clause|https://github.com/sabre-io/http.git| -|sabre/uri|2.2.0.0|BSD-3-Clause|https://github.com/sabre-io/uri.git| -|sabre/vobject|4.3.1.0|BSD-3-Clause|https://github.com/sabre-io/vobject.git| -|sabre/xml|2.2.1.0|BSD-3-Clause|https://github.com/sabre-io/xml.git| -|simplepie/simplepie|1.5.5.0|BSD-3-Clause|https://github.com/simplepie/simplepie.git| +|ramsey/collection|1.1.1.0|MIT|https://github.com/ramsey/collection.git| +|ramsey/uuid|4.1.1.0|MIT|https://github.com/ramsey/uuid.git| +|sabre/dav|4.1.3.0|BSD-3-Clause|https://github.com/sabre-io/dav.git| +|sabre/event|5.1.2.0|BSD-3-Clause|https://github.com/sabre-io/event.git| +|sabre/http|5.1.1.0|BSD-3-Clause|https://github.com/sabre-io/http.git| +|sabre/uri|2.2.1.0|BSD-3-Clause|https://github.com/sabre-io/uri.git| +|sabre/vobject|4.3.3.0|BSD-3-Clause|https://github.com/sabre-io/vobject.git| +|sabre/xml|2.2.3.0|BSD-3-Clause|https://github.com/sabre-io/xml.git| +|simplepie/simplepie|1.5.6.0|BSD-3-Clause|https://github.com/simplepie/simplepie.git| |smarty/smarty|3.1.36.0|LGPL-3.0|https://github.com/smarty-php/smarty.git| -|symfony/polyfill-ctype|1.13.1.0|MIT|https://github.com/symfony/polyfill-ctype.git| -|twbs/bootstrap|4.5.2.0|MIT|https://github.com/twbs/bootstrap.git| +|symfony/polyfill-ctype|1.20.0.0|MIT|https://github.com/symfony/polyfill-ctype.git| +|twbs/bootstrap|4.5.3.0|MIT|https://github.com/twbs/bootstrap.git| |fullcalendar/fullcalendar|4.4.2.0|MIT|https://github.com/fullcalendar/fullcalendar.git| |miromannino/Justified-Gallery|3.8.1.0|MIT|https://github.com/miromannino/Justified-Gallery.git| |fengyuanchen/cropperjs|1.5.7.0|MIT|https://github.com/fengyuanchen/cropperjs.git| diff --git a/Zotlabs/Access/AccessList.php b/Zotlabs/Access/AccessList.php index 7cf7b5587..af6c4b7a6 100644 --- a/Zotlabs/Access/AccessList.php +++ b/Zotlabs/Access/AccessList.php @@ -54,7 +54,7 @@ class AccessList { * * \e string \b channel_deny_gid => string of denied gids */ function __construct($channel) { - if($channel) { + if ($channel) { $this->allow_cid = $channel['channel_allow_cid']; $this->allow_gid = $channel['channel_allow_gid']; $this->deny_cid = $channel['channel_deny_cid']; @@ -99,7 +99,6 @@ class AccessList { $this->allow_gid = $arr['allow_gid']; $this->deny_cid = $arr['deny_cid']; $this->deny_gid = $arr['deny_gid']; - $this->explicit = $explicit; } diff --git a/Zotlabs/Access/PermissionLimits.php b/Zotlabs/Access/PermissionLimits.php index c11dc95e6..fb5fe6133 100644 --- a/Zotlabs/Access/PermissionLimits.php +++ b/Zotlabs/Access/PermissionLimits.php @@ -2,6 +2,7 @@ namespace Zotlabs\Access; +use App; use Zotlabs\Lib\PConfig; /** @@ -39,10 +40,10 @@ class PermissionLimits { */ static public function Std_Limits() { $limits = []; - $perms = Permissions::Perms(); + $perms = Permissions::Perms(); - foreach($perms as $k => $v) { - if(strstr($k, 'view')) + foreach ($perms as $k => $v) { + if (strstr($k, 'view')) $limits[$k] = PERMS_PUBLIC; else $limits[$k] = PERMS_SPECIFIC; @@ -77,14 +78,14 @@ class PermissionLimits { * * \b array with all permission limits, if $perm is not set */ static public function Get($channel_id, $perm = '') { - if($perm) { + if ($perm) { return intval(PConfig::Get($channel_id, 'perm_limits', $perm)); } PConfig::Load($channel_id); - if(array_key_exists($channel_id, \App::$config) - && array_key_exists('perm_limits', \App::$config[$channel_id])) - return \App::$config[$channel_id]['perm_limits']; + if (array_key_exists($channel_id, App::$config) + && array_key_exists('perm_limits', App::$config[$channel_id])) + return App::$config[$channel_id]['perm_limits']; return false; } diff --git a/Zotlabs/Access/PermissionRoles.php b/Zotlabs/Access/PermissionRoles.php index 82df0c34b..2bcce4eb4 100644 --- a/Zotlabs/Access/PermissionRoles.php +++ b/Zotlabs/Access/PermissionRoles.php @@ -218,13 +218,13 @@ class PermissionRoles { // set permissionlimits for this permission here, for example: // if($perm === 'mynewperm') - // \Zotlabs\Access\PermissionLimits::Set($uid,$perm,1); + // PermissionLimits::Set($uid,$perm,1); if($perm === 'view_wiki') - \Zotlabs\Access\PermissionLimits::Set($uid, $perm, PERMS_PUBLIC); + PermissionLimits::Set($uid, $perm, PERMS_PUBLIC); if($perm === 'write_wiki') - \Zotlabs\Access\PermissionLimits::Set($uid, $perm, PERMS_SPECIFIC); + PermissionLimits::Set($uid, $perm, PERMS_SPECIFIC); // set autoperms here if applicable @@ -262,11 +262,11 @@ class PermissionRoles { case 'view_wiki': set_abconfig($uid,$ab['abook_xchan'],'my_perms',$perm, intval(get_abconfig($uid,$ab['abook_xchan'],'my_perms','view_pages'))); - + break; case 'write_wiki': set_abconfig($uid,$ab['abook_xchan'],'my_perms',$perm, intval(get_abconfig($uid,$ab['abook_xchan'],'my_perms','write_pages'))); - + break; default: break; } diff --git a/Zotlabs/Access/Permissions.php b/Zotlabs/Access/Permissions.php index 35016ed57..df5472cc3 100644 --- a/Zotlabs/Access/Permissions.php +++ b/Zotlabs/Access/Permissions.php @@ -75,7 +75,7 @@ class Permissions { $x = [ 'permissions' => $perms, - 'filter' => $filter + 'filter' => $filter ]; /** * @hooks permissions_list @@ -84,7 +84,7 @@ class Permissions { */ call_hooks('permissions_list', $x); - return($x['permissions']); + return ($x['permissions']); } /** @@ -96,10 +96,10 @@ class Permissions { */ static public function BlockedAnonPerms() { - $res = []; + $res = []; $perms = PermissionLimits::Std_limits(); - foreach($perms as $perm => $limit) { - if($limit != PERMS_PUBLIC) { + foreach ($perms as $perm => $limit) { + if ($limit != PERMS_PUBLIC) { $res[] = $perm; } } @@ -111,7 +111,7 @@ class Permissions { */ call_hooks('write_perms', $x); - return($x['permissions']); + return ($x['permissions']); } /** @@ -120,20 +120,20 @@ class Permissions { * Converts [ 0 => 'view_stream', ... ] * to [ 'view_stream' => 1 ] for any permissions in $arr; * Undeclared permissions which exist in Perms() are added and set to 0. - * + * * @param array $arr * @return array */ static public function FilledPerms($arr) { - if(is_null($arr)) { + if (is_null($arr)) { btlogger('FilledPerms: null'); $arr = []; } $everything = self::Perms(); - $ret = []; - foreach($everything as $k => $v) { - if(in_array($k, $arr)) + $ret = []; + foreach ($everything as $k => $v) { + if (in_array($k, $arr)) $ret[$k] = 1; else $ret[$k] = 0; @@ -155,9 +155,9 @@ class Permissions { */ static public function OPerms($arr) { $ret = []; - if($arr) { - foreach($arr as $k => $v) { - $ret[] = [ 'name' => $k, 'value' => $v ]; + if ($arr) { + foreach ($arr as $k => $v) { + $ret[] = ['name' => $k, 'value' => $v]; } } return $ret; @@ -170,15 +170,16 @@ class Permissions { * @return boolean|array */ static public function FilledAutoperms($channel_id) { - if(! intval(get_pconfig($channel_id,'system','autoperms'))) + if (!intval(get_pconfig($channel_id, 'system', 'autoperms'))) return false; $arr = []; + $r = q("select * from pconfig where uid = %d and cat = 'autoperms'", intval($channel_id) ); - if($r) { - foreach($r as $rr) { + if ($r) { + foreach ($r as $rr) { $arr[$rr['k']] = intval($rr['v']); } } @@ -193,11 +194,11 @@ class Permissions { * @return boolean true if all perms from $p1 exist also in $p2 */ static public function PermsCompare($p1, $p2) { - foreach($p1 as $k => $v) { - if(! array_key_exists($k, $p2)) + foreach ($p1 as $k => $v) { + if (!array_key_exists($k, $p2)) return false; - if($p1[$k] != $p2[$k]) + if ($p1[$k] != $p2[$k]) return false; } @@ -214,18 +215,18 @@ class Permissions { */ static public function connect_perms($channel_id) { - $my_perms = []; - $permcat = null; + $my_perms = []; + $permcat = null; $automatic = 0; // If a default permcat exists, use that - $pc = ((feature_enabled($channel_id,'permcats')) ? get_pconfig($channel_id,'system','default_permcat') : 'default'); - if(! in_array($pc, [ '','default' ])) { - $pcp = new Zlib\Permcat($channel_id); + $pc = ((feature_enabled($channel_id, 'permcats')) ? get_pconfig($channel_id, 'system', 'default_permcat') : 'default'); + if (!in_array($pc, ['', 'default'])) { + $pcp = new Zlib\Permcat($channel_id); $permcat = $pcp->fetch($pc); - if($permcat && $permcat['perms']) { - foreach($permcat['perms'] as $p) { + if ($permcat && $permcat['perms']) { + foreach ($permcat['perms'] as $p) { $my_perms[$p['name']] = $p['value']; } } @@ -235,15 +236,15 @@ class Permissions { // and if there was no permcat or a default permcat, set the perms // from the role - $role = get_pconfig($channel_id,'system','permissions_role'); - if($role) { + $role = get_pconfig($channel_id, 'system', 'permissions_role'); + if ($role) { $xx = PermissionRoles::role_perms($role); - if($xx['perms_auto']) + if ($xx['perms_auto']) $automatic = 1; - if((! $my_perms) && ($xx['perms_connect'])) { + if ((!$my_perms) && ($xx['perms_connect'])) { $default_perms = $xx['perms_connect']; - $my_perms = Permissions::FilledPerms($default_perms); + $my_perms = Permissions::FilledPerms($default_perms); } } @@ -251,11 +252,11 @@ class Permissions { // it is likely a custom permissions role. First see if there are any // automatic permissions. - if(! $my_perms) { + if (!$my_perms) { $m = Permissions::FilledAutoperms($channel_id); - if($m) { + if ($m) { $automatic = 1; - $my_perms = $m; + $my_perms = $m; } } @@ -263,35 +264,35 @@ class Permissions { // custom perms but they are not automatic. They will be stored in abconfig with // the channel's channel_hash (the 'self' connection). - if(! $my_perms) { + if (!$my_perms) { $r = q("select channel_hash from channel where channel_id = %d", intval($channel_id) ); - if($r) { + if ($r) { $x = q("select * from abconfig where chan = %d and xchan = '%s' and cat = 'my_perms'", intval($channel_id), dbesc($r[0]['channel_hash']) ); - if($x) { - foreach($x as $xv) { + if ($x) { + foreach ($x as $xv) { $my_perms[$xv['k']] = intval($xv['v']); } } } } - return ( [ 'perms' => $my_perms, 'automatic' => $automatic ] ); + return (['perms' => $my_perms, 'automatic' => $automatic]); } static public function serialise($p) { $n = []; - if($p) { - foreach($p as $k => $v) { - if(intval($v)) { + if ($p) { + foreach ($p as $k => $v) { + if (intval($v)) { $n[] = $k; } } } - return implode(',',$n); + return implode(',', $n); } } diff --git a/Zotlabs/Daemon/Addon.php b/Zotlabs/Daemon/Addon.php index c2889e596..c6778750d 100644 --- a/Zotlabs/Daemon/Addon.php +++ b/Zotlabs/Daemon/Addon.php @@ -2,13 +2,12 @@ namespace Zotlabs\Daemon; -require_once('include/zot.php'); - class Addon { - static public function run($argc,$argv) { + static public function run($argc, $argv) { - call_hooks('daemon_addon',$argv); + call_hooks('daemon_addon', $argv); } + } diff --git a/Zotlabs/Daemon/Cache_embeds.php b/Zotlabs/Daemon/Cache_embeds.php index 08088abd6..9e5b8d2bb 100644 --- a/Zotlabs/Daemon/Cache_embeds.php +++ b/Zotlabs/Daemon/Cache_embeds.php @@ -2,7 +2,6 @@ namespace Zotlabs\Daemon; - class Cache_embeds { static public function run($argc,$argv) { diff --git a/Zotlabs/Daemon/Checksites.php b/Zotlabs/Daemon/Checksites.php index 3bcfdd7cf..7227e96e4 100644 --- a/Zotlabs/Daemon/Checksites.php +++ b/Zotlabs/Daemon/Checksites.php @@ -6,34 +6,35 @@ require_once('include/hubloc.php'); class Checksites { - static public function run($argc,$argv) { + static public function run($argc, $argv) { logger('checksites: start'); - - if(($argc > 1) && ($argv[1])) + + if (($argc > 1) && ($argv[1])) $site_id = $argv[1]; - if($site_id) + if ($site_id) $sql_options = " and site_url = '" . dbesc($argv[1]) . "' "; - $days = intval(get_config('system','sitecheckdays')); - if($days < 1) + $days = intval(get_config('system', 'sitecheckdays')); + if ($days < 1) $days = 30; $r = q("select * from site where site_dead = 0 and site_update < %s - INTERVAL %s and site_type = %d $sql_options ", - db_utcnow(), db_quoteinterval($days . ' DAY'), + db_utcnow(), + db_quoteinterval($days . ' DAY'), intval(SITE_TYPE_ZOT) ); - if(! $r) + if (!$r) return; - foreach($r as $rr) { - if(! strcasecmp($rr['site_url'],z_root())) + foreach ($r as $rr) { + if (!strcasecmp($rr['site_url'], z_root())) continue; $x = ping_site($rr['site_url']); - if($x['success']) { + if ($x['success']) { logger('checksites: ' . $rr['site_url']); q("update site set site_update = '%s' where site_url = '%s' ", dbesc(datetime_convert()), diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php index 703d6ce08..e8fa3244f 100644 --- a/Zotlabs/Daemon/Cron.php +++ b/Zotlabs/Daemon/Cron.php @@ -6,14 +6,14 @@ use Zotlabs\Lib\Libsync; class Cron { - static public function run($argc,$argv) { + static public function run($argc, $argv) { - $maxsysload = intval(get_config('system','maxloadavg')); - if($maxsysload < 1) + $maxsysload = intval(get_config('system', 'maxloadavg')); + if ($maxsysload < 1) $maxsysload = 50; - if(function_exists('sys_getloadavg')) { + if (function_exists('sys_getloadavg')) { $load = sys_getloadavg(); - if(intval($load[0]) > $maxsysload) { + if (intval($load[0]) > $maxsysload) { logger('system: load ' . $load . ' too high. Cron deferred to next scheduled run.'); return; } @@ -21,17 +21,18 @@ class Cron { // Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it. $lockfile = 'store/[data]/cron'; - if((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600)) - && (! get_config('system','override_cron_lockfile'))) { + if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600)) + && (!get_config('system', 'override_cron_lockfile'))) { logger("cron: Already running"); return; } - + // Create a lockfile. Needs two vars, but $x doesn't need to contain anything. + $x = ''; file_put_contents($lockfile, $x); logger('cron: start'); - + // run queue delivery process in the background Master::Summon(array('Queue')); @@ -46,7 +47,7 @@ class Cron { db_utcnow(), db_quoteinterval('3 MINUTE') ); - + // expire any expired mail q("delete from mail where expires > '%s' and expires < %s ", @@ -54,19 +55,23 @@ class Cron { db_utcnow() ); + $interval = get_config('system', 'delivery_interval', 3); + // expire any expired items $r = q("select id,item_wall from item where expires > '2001-01-01 00:00:00' and expires < %s and item_deleted = 0 ", db_utcnow() ); - if($r) { + if ($r) { require_once('include/items.php'); - foreach($r as $rr) { - drop_item($rr['id'],false,(($rr['item_wall']) ? DROPITEM_PHASE1 : DROPITEM_NORMAL)); - if($rr['item_wall']) { + foreach ($r as $rr) { + drop_item($rr['id'], false, (($rr['item_wall']) ? DROPITEM_PHASE1 : DROPITEM_NORMAL)); + if ($rr['item_wall']) { // The notifier isn't normally invoked unless item_drop is interactive. - Master::Summon( [ 'Notifier', 'drop', $rr['id'] ] ); + Master::Summon(['Notifier', 'drop', $rr['id']]); + if ($interval) + @time_sleep_until(microtime(true) + (float)$interval); } } } @@ -78,9 +83,9 @@ class Cron { dbesc(NULL_DATE), db_utcnow() ); - if($r) { + if ($r) { require_once('include/security.php'); - foreach($r as $rr) { + foreach ($r as $rr) { atoken_delete($rr['atoken_id']); } } @@ -90,33 +95,33 @@ class Cron { // or dead entries. $r = q("select channel_id from channel where channel_dirdate < %s - INTERVAL %s and channel_removed = 0", - db_utcnow(), + db_utcnow(), db_quoteinterval('30 DAY') ); - if($r) { - foreach($r as $rr) { - Master::Summon(array('Directory',$rr['channel_id'],'force')); - if($interval) - @time_sleep_until(microtime(true) + (float) $interval); + if ($r) { + foreach ($r as $rr) { + Master::Summon(array('Directory', $rr['channel_id'], 'force')); + if ($interval) + @time_sleep_until(microtime(true) + (float)$interval); } } - + // Clean expired photos from cache - + $r = q("SELECT DISTINCT xchan, content FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s", intval(PHOTO_CACHE), db_utcnow(), - db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY') + db_quoteinterval(get_config('system', 'active_expire_days', '30') . ' DAY') ); - if($r) { + if ($r) { q("DELETE FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s", intval(PHOTO_CACHE), db_utcnow(), - db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY') + db_quoteinterval(get_config('system', 'active_expire_days', '30') . ' DAY') ); - foreach($r as $rr) { + foreach ($r as $rr) { $file = dbunescbin($rr['content']); - if(is_file($file)) { + if (is_file($file)) { @unlink($file); @rmdir(dirname($file)); logger('info: deleted cached photo file ' . $file, LOGGER_DEBUG); @@ -130,27 +135,29 @@ class Cron { $r = q("select id from item where item_delayed = 1 and created <= %s and created > '%s' ", db_utcnow(), - dbesc(datetime_convert('UTC','UTC','now - 2 days')) + dbesc(datetime_convert('UTC', 'UTC', 'now - 2 days')) ); - if($r) { - foreach($r as $rr) { + if ($r) { + foreach ($r as $rr) { $x = q("update item set item_delayed = 0 where id = %d", intval($rr['id']) ); - if($x) { + if ($x) { $z = q("select * from item where id = %d", - intval($message_id) + intval($rr['id']) ); - if($z) { + if ($z) { xchan_query($z); $sync_item = fetch_post_tags($z); Libsync::build_sync_packet($sync_item[0]['uid'], - [ - 'item' => [ encode_item($sync_item[0],true) ] + [ + 'item' => [encode_item($sync_item[0], true)] ] ); } - Master::Summon(array('Notifier','wall-new',$rr['id'])); + Master::Summon(array('Notifier', 'wall-new', $rr['id'])); + if ($interval) + @time_sleep_until(microtime(true) + (float)$interval); } } } @@ -163,27 +170,27 @@ class Cron { require_once('include/attach.php'); attach_upgrade(); - $abandon_days = intval(get_config('system','account_abandon_days')); - if($abandon_days < 1) + $abandon_days = intval(get_config('system', 'account_abandon_days')); + if ($abandon_days < 1) $abandon_days = 0; - + // once daily run birthday_updates and then expire in background // FIXME: add birthday updates, both locally and for xprof for use // by directory servers - $d1 = intval(get_config('system','last_expire_day')); - $d2 = intval(datetime_convert('UTC','UTC','now','d')); + $d1 = intval(get_config('system', 'last_expire_day')); + $d2 = intval(datetime_convert('UTC', 'UTC', 'now', 'd')); // Allow somebody to staggger daily activities if they have more than one site on their server, // or if it happens at an inconvenient (busy) hour. - $h1 = intval(get_config('system','cron_hour')); - $h2 = intval(datetime_convert('UTC','UTC','now','G')); + $h1 = intval(get_config('system', 'cron_hour')); + $h2 = intval(datetime_convert('UTC', 'UTC', 'now', 'G')); - if(($d2 != $d1) && ($h1 == $h2)) { + if (($d2 != $d1) && ($h1 == $h2)) { Master::Summon(array('Cron_daily')); } @@ -192,14 +199,14 @@ class Cron { $r = q("select xchan_photo_l, xchan_hash from xchan where xchan_photo_l != '' and xchan_photo_m = '' and xchan_photo_date < %s - INTERVAL %s", - db_utcnow(), + db_utcnow(), db_quoteinterval('1 DAY') ); - if($r) { + if ($r) { require_once('include/photo/photo_driver.php'); - foreach($r as $rr) { + foreach ($r as $rr) { $photos = import_xchan_photo($rr['xchan_photo_l'], $rr['xchan_hash'], false, true); - $x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' + $x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'", dbesc($photos[0]), dbesc($photos[1]), @@ -213,18 +220,18 @@ class Cron { // pull in some public posts - $disable_discover_tab = get_config('system','disable_discover_tab') || get_config('system','disable_discover_tab') === false; - if(! $disable_discover_tab) + $disable_discover_tab = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false; + if (!$disable_discover_tab) Master::Summon(array('Externals')); $generation = 0; - $restart = false; + $restart = false; - if(($argc > 1) && ($argv[1] == 'restart')) { - $restart = true; + if (($argc > 1) && ($argv[1] == 'restart')) { + $restart = true; $generation = intval($argv[2]); - if(! $generation) + if (!$generation) return; } @@ -234,10 +241,10 @@ class Cron { // TODO check to see if there are any cronhooks before wasting a process - if(! $restart) + if (!$restart) Master::Summon(array('Cronhooks')); - set_config('system','lastcron',datetime_convert()); + set_config('system', 'lastcron', datetime_convert()); //All done - clear the lockfile @unlink($lockfile); diff --git a/Zotlabs/Daemon/Cron_daily.php b/Zotlabs/Daemon/Cron_daily.php index 07533cc6e..1983c68e6 100644 --- a/Zotlabs/Daemon/Cron_daily.php +++ b/Zotlabs/Daemon/Cron_daily.php @@ -2,9 +2,11 @@ namespace Zotlabs\Daemon; +use Zotlabs\Lib\Libzotdir; + class Cron_daily { - static public function run($argc,$argv) { + static public function run($argc, $argv) { logger('cron_daily: start'); @@ -13,15 +15,12 @@ class Cron_daily { * */ - - require_once('include/dir_fns.php'); - check_upstream_directory(); - + Libzotdir::check_upstream_directory(); // Fire off the Cron_weekly process if it's the correct day. - - $d3 = intval(datetime_convert('UTC','UTC','now','N')); - if($d3 == 7) { + + $d3 = intval(datetime_convert('UTC', 'UTC', 'now', 'N')); + if ($d3 == 7) { Master::Summon(array('Cron_weekly')); } @@ -52,8 +51,8 @@ class Cron_daily { // Clean up emdedded content cache q("DELETE FROM cache WHERE updated < %s - INTERVAL %s", - db_utcnow(), - db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY') + db_utcnow(), + db_quoteinterval(get_config('system', 'active_expire_days', '30') . ' DAY') ); //update statistics in config @@ -67,8 +66,8 @@ class Cron_daily { // expire old delivery reports - $keep_reports = intval(get_config('system','expire_delivery_reports')); - if($keep_reports === 0) + $keep_reports = intval(get_config('system', 'expire_delivery_reports')); + if ($keep_reports === 0) $keep_reports = 10; q("delete from dreport where dreport_time < %s - INTERVAL %s", @@ -80,18 +79,16 @@ class Cron_daily { downgrade_accounts(); // If this is a directory server, request a sync with an upstream - // directory at least once a day, up to once every poll interval. + // directory at least once a day, up to once every poll interval. // Pull remote changes and push local changes. - // potential issue: how do we keep from creating an endless update loop? + // potential issue: how do we keep from creating an endless update loop? - $dirmode = get_config('system','directory_mode'); + $dirmode = get_config('system', 'directory_mode'); - if($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { - require_once('include/dir_fns.php'); - sync_directories($dirmode); + if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { + Libzotdir::sync_directories($dirmode); } - Master::Summon(array('Expire')); Master::Summon(array('Cli_suggest')); @@ -99,9 +96,10 @@ class Cron_daily { z6_discover(); - call_hooks('cron_daily',datetime_convert()); + $date = datetime_convert(); + call_hooks('cron_daily', $date); - set_config('system','last_expire_day',intval(datetime_convert('UTC','UTC','now','d'))); + set_config('system', 'last_expire_day', intval(datetime_convert('UTC', 'UTC', 'now', 'd'))); /** * End Cron Daily diff --git a/Zotlabs/Daemon/Cron_weekly.php b/Zotlabs/Daemon/Cron_weekly.php index d44400767..407aa40ef 100644 --- a/Zotlabs/Daemon/Cron_weekly.php +++ b/Zotlabs/Daemon/Cron_weekly.php @@ -4,21 +4,22 @@ namespace Zotlabs\Daemon; class Cron_weekly { - static public function run($argc,$argv) { + static public function run($argc, $argv) { /** * Cron Weekly - * + * * Actions in the following block are executed once per day only on Sunday (once per week). * */ - call_hooks('cron_weekly',datetime_convert()); + $date = datetime_convert(); + call_hooks('cron_weekly', $date); z_check_cert(); prune_hub_reinstalls(); - + mark_orphan_hubsxchans(); // Find channels that were removed in the last three weeks, but @@ -31,8 +32,8 @@ class Cron_weekly { db_utcnow(), db_quoteinterval('21 DAY'), db_utcnow(), db_quoteinterval('10 DAY') ); - if($r) { - foreach($r as $rv) { + if ($r) { + foreach ($r as $rv) { channel_remove_final($rv['channel_id']); } } @@ -43,14 +44,14 @@ class Cron_weekly { db_utcnow(), db_quoteinterval('14 DAY') ); - $dirmode = intval(get_config('system','directory_mode')); - if($dirmode === DIRECTORY_MODE_SECONDARY || $dirmode === DIRECTORY_MODE_PRIMARY) { - logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . urlencode(z_root()) . '&realm=' . urlencode(get_directory_realm())),true)); + $dirmode = intval(get_config('system', 'directory_mode')); + if ($dirmode === DIRECTORY_MODE_SECONDARY || $dirmode === DIRECTORY_MODE_PRIMARY) { + logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . urlencode(z_root()) . '&realm=' . urlencode(get_directory_realm())), true)); } // Check for dead sites Master::Summon(array('Checksites')); - + // update searchable doc indexes Master::Summon(array('Importdoc')); diff --git a/Zotlabs/Daemon/CurlAuth.php b/Zotlabs/Daemon/CurlAuth.php index de41382e3..2396da9aa 100644 --- a/Zotlabs/Daemon/CurlAuth.php +++ b/Zotlabs/Daemon/CurlAuth.php @@ -2,6 +2,8 @@ namespace Zotlabs\Daemon; +use App; + // generate a curl compatible cookie file with an authenticated session for the given channel_id. // If this file is then used with curl and the destination url is sent through zid() or manually // manipulated to add a zid, it should allow curl to provide zot magic-auth across domains. @@ -10,15 +12,15 @@ namespace Zotlabs\Daemon; class CurlAuth { - static public function run($argc,$argv) { + static public function run($argc, $argv) { - if($argc != 2) + if ($argc != 2) return; - \App::$session->start(); + App::$session->start(); $_SESSION['authenticated'] = 1; - $_SESSION['uid'] = $argv[1]; + $_SESSION['uid'] = $argv[1]; $x = session_id(); @@ -29,14 +31,14 @@ class CurlAuth { $output = ''; - if($e) { + if ($e) { $lines = file($f); - if($lines) { - foreach($lines as $line) { - if(strlen($line) > 0 && $line[0] != '#' && substr_count($line, "\t") == 6) { + if ($lines) { + foreach ($lines as $line) { + if (strlen($line) > 0 && $line[0] != '#' && substr_count($line, "\t") == 6) { $tokens = explode("\t", $line); $tokens = array_map('trim', $tokens); - if($tokens[4] > time()) { + if ($tokens[4] > time()) { $output .= $line . "\n"; } } @@ -46,9 +48,9 @@ class CurlAuth { } } $t = time() + (24 * 3600); - file_put_contents($f, $output . 'HttpOnly_' . \App::get_hostname() . "\tFALSE\t/\tTRUE\t$t\tPHPSESSID\t" . $x, (($e) ? FILE_APPEND : 0)); + file_put_contents($f, $output . 'HttpOnly_' . App::get_hostname() . "\tFALSE\t/\tTRUE\t$t\tPHPSESSID\t" . $x, (($e) ? FILE_APPEND : 0)); - file_put_contents($c,$x); + file_put_contents($c, $x); return; } diff --git a/Zotlabs/Daemon/Deliver.php b/Zotlabs/Daemon/Deliver.php index c853af6a8..f8149ee69 100644 --- a/Zotlabs/Daemon/Deliver.php +++ b/Zotlabs/Daemon/Deliver.php @@ -5,25 +5,25 @@ namespace Zotlabs\Daemon; require_once('include/queue_fn.php'); class Deliver { - - static public function run($argc,$argv) { - if($argc < 2) + static public function run($argc, $argv) { + + if ($argc < 2) return; - logger('deliver: invoked: ' . print_r($argv,true), LOGGER_DATA); + logger('deliver: invoked: ' . print_r($argv, true), LOGGER_DATA); - for($x = 1; $x < $argc; $x ++) { + for ($x = 1; $x < $argc; $x++) { - if(! $argv[$x]) + if (!$argv[$x]) continue; $r = q("select * from outq where outq_hash = '%s'", dbesc($argv[$x]) ); - if($r) { - queue_deliver($r[0],true); + if ($r) { + queue_deliver($r[0], true); } } diff --git a/Zotlabs/Daemon/Deliver_hooks.php b/Zotlabs/Daemon/Deliver_hooks.php index e8b5acef0..4d3ce4e1d 100644 --- a/Zotlabs/Daemon/Deliver_hooks.php +++ b/Zotlabs/Daemon/Deliver_hooks.php @@ -2,21 +2,18 @@ namespace Zotlabs\Daemon; -require_once('include/zot.php'); - class Deliver_hooks { - static public function run($argc,$argv) { + static public function run($argc, $argv) { - if($argc < 2) + if ($argc < 2) return; - $r = q("select * from item where id = '%d'", intval($argv[1]) ); - if($r) - call_hooks('notifier_normal',$r[0]); + if ($r) + call_hooks('notifier_normal', $r[0]); } } diff --git a/Zotlabs/Daemon/Directory.php b/Zotlabs/Daemon/Directory.php index ab58432de..1f307b273 100644 --- a/Zotlabs/Daemon/Directory.php +++ b/Zotlabs/Daemon/Directory.php @@ -8,40 +8,40 @@ use Zotlabs\Lib\Queue; class Directory { - static public function run($argc,$argv){ + static public function run($argc, $argv) { - if($argc < 2) + if ($argc < 2) return; - $force = false; + $force = false; $pushall = true; - if($argc > 2) { - if($argv[2] === 'force') + if ($argc > 2) { + if ($argv[2] === 'force') $force = true; - if($argv[2] === 'nopush') + if ($argv[2] === 'nopush') $pushall = false; - } + } logger('directory update', LOGGER_DEBUG); - $dirmode = get_config('system','directory_mode'); - if($dirmode === false) + $dirmode = get_config('system', 'directory_mode'); + if ($dirmode === false) $dirmode = DIRECTORY_MODE_NORMAL; $x = q("select * from channel where channel_id = %d limit 1", intval($argv[1]) ); - if(! $x) + if (!$x) return; $channel = $x[0]; - if($dirmode != DIRECTORY_MODE_NORMAL) { + if ($dirmode != DIRECTORY_MODE_NORMAL) { // this is an in-memory update and we don't need to send a network packet. - Libzotdir::local_dir_update($argv[1],$force); + Libzotdir::local_dir_update($argv[1], $force); q("update channel set channel_dirdate = '%s' where channel_id = %d", dbesc(datetime_convert()), @@ -49,8 +49,8 @@ class Directory { ); // Now update all the connections - if($pushall) - Master::Summon(array('Notifier','refresh_all',$channel['channel_id'])); + if ($pushall) + Master::Summon(array('Notifier', 'refresh_all', $channel['channel_id'])); return; } @@ -63,14 +63,12 @@ class Directory { // ensure the upstream directory is updated - - $packet = Libzot::build_packet($channel,(($force) ? 'force_refresh' : 'refresh')); - $z = Libzot::zot($url,$packet,$channel); - + $packet = Libzot::build_packet($channel, (($force) ? 'force_refresh' : 'refresh')); + $z = Libzot::zot($url, $packet, $channel); // re-queue if unsuccessful - if(! $z['success']) { + if (!$z['success']) { /** @FIXME we aren't updating channel_dirdate if we have to queue * the directory packet. That means we'll try again on the next poll run. @@ -95,8 +93,8 @@ class Directory { } // Now update all the connections - if($pushall) - Master::Summon(array('Notifier','refresh_all',$channel['channel_id'])); + if ($pushall) + Master::Summon(array('Notifier', 'refresh_all', $channel['channel_id'])); } } diff --git a/Zotlabs/Daemon/Expire.php b/Zotlabs/Daemon/Expire.php index a688d6f97..8ca92b6c5 100644 --- a/Zotlabs/Daemon/Expire.php +++ b/Zotlabs/Daemon/Expire.php @@ -5,23 +5,24 @@ namespace Zotlabs\Daemon; class Expire { - static public function run($argc,$argv){ + static public function run($argc, $argv) { cli_startup(); - + $pid = get_config('expire', 'procid', false); if ($pid && (function_exists('posix_kill') ? posix_kill($pid, 0) : true)) { - logger('Expire: procedure already run with pid ' . $pid, LOGGER_DEBUG); - return; + logger('Expire: procedure already run with pid ' . $pid, LOGGER_DEBUG); + return; } - + $pid = getmypid(); set_config('expire', 'procid', $pid); // perform final cleanup on previously delete items $r = q("select id from item where item_deleted = 1 and item_pending_remove = 0 and changed < %s - INTERVAL %s", - db_utcnow(), db_quoteinterval('10 DAY') + db_utcnow(), + db_quoteinterval('10 DAY') ); if ($r) { foreach ($r as $rr) { @@ -32,23 +33,22 @@ class Expire { // physically remove anything that has been deleted for more than two months /** @FIXME - this is a wretchedly inefficient query */ - $r = q("delete from item where item_pending_remove = 1 and changed < %s - INTERVAL %s", - db_utcnow(), db_quoteinterval('36 DAY') + q("delete from item where item_pending_remove = 1 and changed < %s - INTERVAL %s", + db_utcnow(), + db_quoteinterval('36 DAY') ); - /** @FIXME make this optional as it could have a performance impact on large sites */ - if (intval(get_config('system', 'optimize_items'))) q("optimize table item"); logger('expire: start with pid ' . $pid, LOGGER_DEBUG); - $site_expire = intval(get_config('system', 'default_expire_days')); - $commented_days = intval(get_config('system','active_expire_days')); + $site_expire = intval(get_config('system', 'default_expire_days')); + $commented_days = intval(get_config('system', 'active_expire_days')); logger('site_expire: ' . $site_expire); - $r = q("SELECT channel_id, channel_system, channel_address, channel_expire_days from channel where true"); + $r = dbq("SELECT channel_id, channel_system, channel_address, channel_expire_days from channel where true"); if ($r) { foreach ($r as $rr) { @@ -64,11 +64,12 @@ class Expire { $channel_expire = $service_class_expire; else $channel_expire = $site_expire; - + if (intval($channel_expire) && (intval($channel_expire) < intval($rr['channel_expire_days'])) || intval($rr['channel_expire_days'] == 0)) { $expire_days = $channel_expire; - } else { + } + else { $expire_days = $rr['channel_expire_days']; } @@ -93,13 +94,13 @@ class Expire { } logger('Expire: sys interval: ' . $expire_days, LOGGER_DEBUG); - + if ($expire_days) item_expire($x['channel_id'], $expire_days, $commented_days); logger('Expire: sys: done', LOGGER_DEBUG); } - + del_config('expire', 'procid'); } } diff --git a/Zotlabs/Daemon/Externals.php b/Zotlabs/Daemon/Externals.php index a9988a509..b657f9de4 100644 --- a/Zotlabs/Daemon/Externals.php +++ b/Zotlabs/Daemon/Externals.php @@ -8,23 +8,22 @@ require_once('include/channel.php'); class Externals { - static public function run($argc,$argv){ + static public function run($argc, $argv) { - $total = 0; + $total = 0; $attempts = 0; logger('externals: startup', LOGGER_DEBUG); // pull in some public posts + while ($total == 0 && $attempts < 3) { + $arr = ['url' => '']; + call_hooks('externals_url_select', $arr); - while($total == 0 && $attempts < 3) { - $arr = array('url' => ''); - call_hooks('externals_url_select',$arr); - - if($arr['url']) { + if ($arr['url']) { $url = $arr['url']; - } + } else { $randfunc = db_getfunc('RAND'); @@ -35,36 +34,36 @@ class Externals { intval(DIRECTORY_MODE_STANDALONE), intval(SITE_TYPE_ZOT) ); - if($r) + if ($r) $url = $r[0]['site_url']; } $blacklisted = false; - if(! check_siteallowed($url)) { + if (!check_siteallowed($url)) { logger('blacklisted site: ' . $url); $blacklisted = true; } - $attempts ++; + $attempts++; // make sure we can eventually break out if somebody blacklists all known sites - if($blacklisted) { - if($attempts > 20) + if ($blacklisted) { + if ($attempts > 20) break; - $attempts --; + $attempts--; continue; } - if($url) { - if($r[0]['site_pull'] > NULL_DATE) - $mindate = urlencode(datetime_convert('','',$r[0]['site_pull'] . ' - 1 day')); + if ($url) { + if ($r[0]['site_pull'] > NULL_DATE) + $mindate = urlencode(datetime_convert('', '', $r[0]['site_pull'] . ' - 1 day')); else { - $days = get_config('externals','since_days'); - if($days === false) + $days = get_config('externals', 'since_days'); + if ($days === false) $days = 15; - $mindate = urlencode(datetime_convert('','','now - ' . intval($days) . ' days')); + $mindate = urlencode(datetime_convert('', '', 'now - ' . intval($days) . ' days')); } $feedurl = $url . '/zotfeed?f=&mindate=' . $mindate; @@ -72,22 +71,22 @@ class Externals { logger('externals: pulling public content from ' . $feedurl, LOGGER_DEBUG); $x = z_fetch_url($feedurl); - if(($x) && ($x['success'])) { + if (($x) && ($x['success'])) { q("update site set site_pull = '%s' where site_url = '%s'", dbesc(datetime_convert()), dbesc($url) ); - $j = json_decode($x['body'],true); - if($j['success'] && $j['messages']) { + $j = json_decode($x['body'], true); + if ($j['success'] && $j['messages']) { $sys = get_sys_channel(); - foreach($j['messages'] as $message) { + foreach ($j['messages'] as $message) { // on these posts, clear any route info. $message['route'] = ''; - $results = process_delivery(array('hash' => 'undefined'), get_item_elements($message), - array(array('hash' => $sys['xchan_hash'])), false, true); - $total ++; + process_delivery(['hash' => 'undefined'], get_item_elements($message), + [['hash' => $sys['xchan_hash']]], false, true); + $total++; } logger('externals: import_public_posts: ' . $total . ' messages imported', LOGGER_DEBUG); } diff --git a/Zotlabs/Daemon/Gprobe.php b/Zotlabs/Daemon/Gprobe.php index 9e74eb8b5..29efcf475 100644 --- a/Zotlabs/Daemon/Gprobe.php +++ b/Zotlabs/Daemon/Gprobe.php @@ -9,27 +9,27 @@ use Zotlabs\Lib\Zotfinger; // performs zot_finger on $argv[1], which is a hex_encoded webbie/reddress class Gprobe { - static public function run($argc,$argv) { + static public function run($argc, $argv) { - if($argc != 2) + if ($argc != 2) return; $url = hex2bin($argv[1]); - if(! strpos($url,'@')) + if (!strpos($url, '@')) return; $r = q("select * from hubloc where hubloc_addr = '%s' and hubloc_network = 'zot6' limit 1", dbesc($url) ); - if(! $r) { + if (!$r) { $href = Webfinger::zot_url(punify($url)); - if($href) { + if ($href) { $zf = Zotfinger::exec($href, null); } - if(is_array($zf) && array_path_exists('signature/signer',$zf) && $zf['signature']['signer'] === $href && intval($zf['signature']['header_valid'])) { - $xc = Libzot::import_xchan($zf['data']); + if (is_array($zf) && array_path_exists('signature/signer', $zf) && $zf['signature']['signer'] === $href && intval($zf['signature']['header_valid'])) { + Libzot::import_xchan($zf['data']); } } diff --git a/Zotlabs/Daemon/Importdoc.php b/Zotlabs/Daemon/Importdoc.php index 0ca589e4a..9e818e2b3 100755 --- a/Zotlabs/Daemon/Importdoc.php +++ b/Zotlabs/Daemon/Importdoc.php @@ -5,7 +5,7 @@ namespace Zotlabs\Daemon; class Importdoc { - static public function run($argc,$argv) { + static public function run($argc, $argv) { require_once('include/help.php'); @@ -16,20 +16,20 @@ class Importdoc { static public function update_docs_dir($s) { $f = basename($s); $d = dirname($s); - if($s === 'doc/html') + if ($s === 'doc/html') return; $files = glob("$d/$f"); - if($files) { - foreach($files as $fi) { - if($fi === 'doc/html') { + if ($files) { + foreach ($files as $fi) { + if ($fi === 'doc/html') { continue; } - if(is_dir($fi)) { + if (is_dir($fi)) { self::update_docs_dir("$fi/*"); } else { // don't update media content - if(strpos(z_mime_content_type($fi),'text') === 0) { + if (strpos(z_mime_content_type($fi), 'text') === 0) { store_doc_file($fi); } } diff --git a/Zotlabs/Daemon/Importfile.php b/Zotlabs/Daemon/Importfile.php index 749949679..299fb1ee5 100644 --- a/Zotlabs/Daemon/Importfile.php +++ b/Zotlabs/Daemon/Importfile.php @@ -6,22 +6,21 @@ use Zotlabs\Lib\Libsync; class Importfile { - static public function run($argc,$argv){ + static public function run($argc, $argv) { - logger('Importfile: ' . print_r($argv,true)); + logger('Importfile: ' . print_r($argv, true)); - if($argc < 3) + if ($argc < 3) return; $channel = channelx_by_n($argv[1]); - if(! $channel) + if (!$channel) return; $srcfile = $argv[2]; $folder = (($argc > 3) ? $argv[3] : ''); $dstname = (($argc > 4) ? $argv[4] : ''); - - $hash = random_string(); + $hash = random_string(); $arr = [ 'src' => $srcfile, @@ -35,15 +34,15 @@ class Importfile { 'replace' => true ]; - if($folder) + if ($folder) $arr['folder'] = $folder; - attach_store($channel,$channel['channel_hash'],'import',$arr); + attach_store($channel, $channel['channel_hash'], 'import', $arr); + + $sync = attach_export_data($channel, $hash); + if ($sync) + Libsync::build_sync_packet($channel['channel_id'], ['file' => [$sync]]); - $sync = attach_export_data($channel,$hash); - if($sync) - Libsync::build_sync_packet($channel['channel_id'],array('file' => array($sync))); - return; } } diff --git a/Zotlabs/Daemon/Master.php b/Zotlabs/Daemon/Master.php index 8c3a7e570..6fa656be5 100644 --- a/Zotlabs/Daemon/Master.php +++ b/Zotlabs/Daemon/Master.php @@ -2,58 +2,57 @@ namespace Zotlabs\Daemon; -if(array_search( __file__ , get_included_files()) === 0) { +if (array_search(__file__, get_included_files()) === 0) { require_once('include/cli_startup.php'); array_shift($argv); $argc = count($argv); - if($argc) - Master::Release($argc,$argv); + if ($argc) + Master::Release($argc, $argv); return; } - class Master { static public function Summon($arr) { $hookinfo = [ - 'argv'=>$arr + 'argv' => $arr ]; - call_hooks ('daemon_master_summon',$hookinfo); + call_hooks('daemon_master_summon', $hookinfo); - $arr = $hookinfo['argv']; + $arr = $hookinfo['argv']; $argc = count($arr); - if ((!is_array($arr) || (count($arr) < 1))) { - logger("Summon handled by hook.",LOGGER_DEBUG); + if ((!is_array($arr) || ($argc < 1))) { + logger("Summon handled by hook.", LOGGER_DEBUG); return; } - $phpbin = get_config('system','phpbin','php'); - proc_run($phpbin,'Zotlabs/Daemon/Master.php',$arr); + $phpbin = get_config('system', 'phpbin', 'php'); + proc_run($phpbin, 'Zotlabs/Daemon/Master.php', $arr); } - static public function Release($argc,$argv) { + static public function Release($argc, $argv) { cli_startup(); $hookinfo = [ - 'argv'=>$argv + 'argv' => $argv ]; - call_hooks ('daemon_master_release',$hookinfo); + call_hooks('daemon_master_release', $hookinfo); $argv = $hookinfo['argv']; $argc = count($argv); - if ((!is_array($argv) || (count($argv) < 1))) { - logger("Release handled by hook.",LOGGER_DEBUG); + if ((!is_array($argv) || ($argc < 1))) { + logger("Release handled by hook.", LOGGER_DEBUG); return; } - logger('Master: release: ' . json_encode($argv), LOGGER_ALL,LOG_DEBUG); - $cls = '\\Zotlabs\\Daemon\\' . $argv[0]; - $cls::run($argc,$argv); + logger('Master: release: ' . json_encode($argv), LOGGER_ALL, LOG_DEBUG); + $cls = '\\Zotlabs\\Daemon\\' . $argv[0]; + $cls::run($argc, $argv); } } diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index 18fc57118..78e116d68 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -14,7 +14,6 @@ require_once('include/items.php'); require_once('include/bbcode.php'); - /* * This file was at one time responsible for doing all deliveries, but this caused * big problems on shared hosting systems, where the process might get killed by the @@ -81,198 +80,198 @@ require_once('include/bbcode.php'); */ - class Notifier { - static public function run($argc,$argv){ + static public function run($argc, $argv) { - if($argc < 3) + if ($argc < 3) return; - logger('notifier: invoked: ' . print_r($argv,true), LOGGER_DEBUG); + logger('notifier: invoked: ' . print_r($argv, true), LOGGER_DEBUG); $cmd = $argv[1]; $item_id = $argv[2]; - if(! $item_id) + if (!$item_id) return; $sys = get_sys_channel(); - $deliveries = array(); + $deliveries = []; - $request = false; - $mail = false; - $top_level = false; - $location = false; - $recipients = array(); - $url_recipients = array(); - $normal_mode = true; - $packet_type = 'undefined'; + $request = false; + $mail = false; + $location = false; + $recipients = []; + $normal_mode = true; + $packet_type = 'undefined'; - if($cmd === 'mail' || $cmd === 'single_mail') { + if ($cmd === 'mail' || $cmd === 'single_mail') { $normal_mode = false; - $mail = true; - $private = true; - $message = q("SELECT * FROM mail WHERE id = %d LIMIT 1", - intval($item_id) + $mail = true; + $private = true; + $message = q("SELECT * FROM mail WHERE id = %d LIMIT 1", + intval($item_id) ); - if(! $message) { + if (!$message) { return; } xchan_mail_query($message[0]); - $uid = $message[0]['channel_id']; + $uid = $message[0]['channel_id']; $recipients[] = $message[0]['from_xchan']; // include clones $recipients[] = $message[0]['to_xchan']; - $item = $message[0]; - + $item = $message[0]; $encoded_item = encode_mail($item); $s = q("select * from channel where channel_id = %d limit 1", - intval($item['channel_id']) + intval($uid) ); - if($s) + if ($s) $channel = $s[0]; } - elseif($cmd === 'request') { - $channel_id = $item_id; - $xchan = $argv[3]; + elseif ($cmd === 'request') { + $channel_id = $item_id; + $xchan = $argv[3]; $request_message_id = $argv[4]; $s = q("select * from channel where channel_id = %d limit 1", intval($channel_id) ); - if($s) + if ($s) $channel = $s[0]; - $private = true; + $private = true; $recipients[] = $xchan; - $packet_type = 'request'; - $normal_mode = false; + $packet_type = 'request'; + $normal_mode = false; } - elseif($cmd === 'keychange') { + elseif ($cmd === 'keychange') { $channel = channelx_by_n($item_id); - $r = q("select abook_xchan from abook where abook_channel = %d", + + $r = q("select abook_xchan from abook where abook_channel = %d", intval($item_id) ); - if($r) { - foreach($r as $rr) { + if ($r) { + foreach ($r as $rr) { $recipients[] = $rr['abook_xchan']; } } - $private = false; + $private = false; $packet_type = 'keychange'; $normal_mode = false; } - elseif(in_array($cmd, [ 'permission_update', 'permission_reject', 'permission_accept', 'permission_create' ])) { + elseif (in_array($cmd, ['permission_update', 'permission_reject', 'permission_accept', 'permission_create'])) { // Get the (single) recipient $r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_self = 0", intval($item_id) ); - if($r) { + if ($r) { $uid = $r[0]['abook_channel']; // Get the sender $channel = channelx_by_n($uid); - if($channel) { - $perm_update = array('sender' => $channel, 'recipient' => $r[0], 'success' => false, 'deliveries' => ''); - - if($cmd === 'permission_create') - call_hooks('permissions_create',$perm_update); - elseif($cmd === 'permission_accept') - call_hooks('permissions_accept',$perm_update); - elseif($cmd === 'permission_reject') - call_hooks('permissions_reject',$perm_update); + if ($channel) { + $perm_update = ['sender' => $channel, 'recipient' => $r[0], 'success' => false, 'deliveries' => '']; + + if ($cmd === 'permission_create') + call_hooks('permissions_create', $perm_update); + elseif ($cmd === 'permission_accept') + call_hooks('permissions_accept', $perm_update); + elseif ($cmd === 'permission_reject') + call_hooks('permissions_reject', $perm_update); else - call_hooks('permissions_update',$perm_update); + call_hooks('permissions_update', $perm_update); - if($perm_update['success']) { - if($perm_update['deliveries']) { + if ($perm_update['success']) { + if ($perm_update['deliveries']) { $deliveries[] = $perm_update['deliveries']; do_delivery($deliveries); } return; } else { - $recipients[] = $r[0]['abook_xchan']; - $private = false; - $packet_type = 'refresh'; - $packet_recips = array(array('guid' => $r[0]['xchan_guid'],'guid_sig' => $r[0]['xchan_guid_sig'],'hash' => $r[0]['xchan_hash'])); + $recipients[] = $r[0]['abook_xchan']; + $private = false; + $packet_type = 'refresh'; + $packet_recips = [['guid' => $r[0]['xchan_guid'], 'guid_sig' => $r[0]['xchan_guid_sig'], 'hash' => $r[0]['xchan_hash']]]; } } } } - elseif($cmd === 'refresh_all') { + elseif ($cmd === 'refresh_all') { logger('notifier: refresh_all: ' . $item_id); - $uid = $item_id; + $uid = $item_id; $channel = channelx_by_n($item_id); - $r = q("select abook_xchan from abook where abook_channel = %d", - intval($item_id) + + $r = q("select abook_xchan from abook where abook_channel = %d", + intval($uid) ); - if($r) { - foreach($r as $rr) { + if ($r) { + foreach ($r as $rr) { $recipients[] = $rr['abook_xchan']; } } - $private = false; + $private = false; $packet_type = 'refresh'; } - elseif($cmd === 'location') { + elseif ($cmd === 'location') { logger('notifier: location: ' . $item_id); $s = q("select * from channel where channel_id = %d limit 1", intval($item_id) ); - if($s) + if ($s) $channel = $s[0]; - $uid = $item_id; - $recipients = array(); - $r = q("select abook_xchan from abook where abook_channel = %d", - intval($item_id) + + $uid = $item_id; + $recipients = []; + + $r = q("select abook_xchan from abook where abook_channel = %d", + intval($uid) ); - if($r) { - foreach($r as $rr) { + if ($r) { + foreach ($r as $rr) { $recipients[] = $rr['abook_xchan']; } } - $encoded_item = array('locations' => Libzot::encode_locations($channel),'type' => 'location', 'encoding' => 'zot'); - $target_item = array('aid' => $channel['channel_account_id'],'uid' => $channel['channel_id']); - $private = false; - $packet_type = 'location'; - $location = true; + $encoded_item = ['locations' => Libzot::encode_locations($channel), 'type' => 'location', 'encoding' => 'zot']; + $target_item = ['aid' => $channel['channel_account_id'], 'uid' => $channel['channel_id']]; + $private = false; + $packet_type = 'location'; + $location = true; } - elseif($cmd === 'purge') { + elseif ($cmd === 'purge') { $xchan = $argv[3]; logger('notifier: purge: ' . $item_id . ' => ' . $xchan); - if (! $xchan) { + if (!$xchan) { return; } - $channel = channelx_by_n($item_id); - $recipients[] = $xchan; - $private = true; - $packet_type = 'purge'; + $channel = channelx_by_n($item_id); + $recipients[] = $xchan; + $private = true; + $packet_type = 'purge'; $packet_recips[] = ['hash' => $xchan]; } - elseif($cmd === 'purge_all') { + elseif ($cmd === 'purge_all') { logger('notifier: purge_all: ' . $item_id); $channel = channelx_by_n($item_id); $recipients = []; - $r = q("select abook_xchan from abook where abook_channel = %d and abook_self = 0", + $r = q("select abook_xchan from abook where abook_channel = %d and abook_self = 0", intval($item_id) ); - if (! $r) { + if (!$r) { return; } foreach ($r as $rr) { - $recipients[] = $rr['abook_xchan']; + $recipients[] = $rr['abook_xchan']; $packet_recips[] = ['hash' => $rr['abook_xchan']]; } - $private = false; + $private = false; $packet_type = 'purge'; @@ -287,7 +286,7 @@ class Notifier { intval($item_id) ); - if(! $r) + if (!$r) return; xchan_query($r); @@ -296,25 +295,22 @@ class Notifier { $target_item = $r[0]; - if(in_array($target_item['author']['xchan_network'], ['rss', 'anon'])) { + if (in_array($target_item['author']['xchan_network'], ['rss', 'anon'])) { logger('notifier: target item author is not a fetchable actor', LOGGER_DEBUG); return; } - $deleted_item = false; - - if(intval($target_item['item_deleted'])) { + if (intval($target_item['item_deleted'])) { logger('notifier: target item ITEM_DELETED', LOGGER_DEBUG); - $deleted_item = true; } - if(! in_array(intval($target_item['item_type']), [ ITEM_TYPE_POST ] )) { - $hookinfo=[ - 'targetitem'=>$target_item, - 'deliver'=>false + if (!in_array(intval($target_item['item_type']), [ITEM_TYPE_POST])) { + $hookinfo = [ + 'targetitem' => $target_item, + 'deliver' => false ]; if (intval($target_item['item_type'] == ITEM_TYPE_CUSTOM)) { - call_hooks('customitem_deliver',$hookinfo); + call_hooks('customitem_deliver', $hookinfo); } if (!$hookinfo['deliver']) { @@ -328,14 +324,14 @@ class Notifier { // Check for non published items, but allow an exclusion for transmitting hidden file activities - if(intval($target_item['item_unpublished']) || intval($target_item['item_delayed']) || + if (intval($target_item['item_unpublished']) || intval($target_item['item_delayed']) || intval($target_item['item_blocked']) || - ( intval($target_item['item_hidden']) && ($target_item['obj_type'] !== ACTIVITY_OBJ_FILE))) { + (intval($target_item['item_hidden']) && ($target_item['obj_type'] !== ACTIVITY_OBJ_FILE))) { logger('notifier: target item not published, so not forwardable', LOGGER_DEBUG); return; } - if(strpos($target_item['postopts'],'nodeliver') !== false) { + if (strpos($target_item['postopts'], 'nodeliver') !== false) { logger('notifier: target item is undeliverable', LOGGER_DEBUG); return; } @@ -343,17 +339,17 @@ class Notifier { $s = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1", intval($target_item['uid']) ); - if($s) + if ($s) $channel = $s[0]; - if($channel['channel_hash'] !== $target_item['author_xchan'] && $channel['channel_hash'] !== $target_item['owner_xchan']) { + if ($channel['channel_hash'] !== $target_item['author_xchan'] && $channel['channel_hash'] !== $target_item['owner_xchan']) { logger("notifier: Sending channel {$channel['channel_hash']} is not owner {$target_item['owner_xchan']} or author {$target_item['author_xchan']}", LOGGER_NORMAL, LOG_WARNING); return; } - if($target_item['mid'] === $target_item['parent_mid']) { - $parent_item = $target_item; + if ($target_item['mid'] === $target_item['parent_mid']) { + $parent_item = $target_item; $top_level_post = true; } else { @@ -362,10 +358,10 @@ class Notifier { intval($target_item['parent']) ); - if(! $r) + if (!$r) return; - if(strpos($r[0]['postopts'],'nodeliver') !== false) { + if (strpos($r[0]['postopts'], 'nodeliver') !== false) { logger('notifier: target item is undeliverable', LOGGER_DEBUG, LOG_NOTICE); return; } @@ -373,34 +369,34 @@ class Notifier { xchan_query($r); $r = fetch_post_tags($r); - $parent_item = $r[0]; + $parent_item = $r[0]; $top_level_post = false; } // avoid looping of discover items 12/4/2014 - if($sys && $parent_item['uid'] == $sys['channel_id']) + if ($sys && $parent_item['uid'] == $sys['channel_id']) return; $encoded_item = encode_item($target_item); // Re-use existing signature unless the activity type changed to a Tombstone, which won't verify. - $m = ((intval($target_item['item_deleted'])) ? '' : get_iconfig($target_item,'activitystreams','signed_data')); + $m = ((intval($target_item['item_deleted'])) ? '' : get_iconfig($target_item, 'activitystreams', 'signed_data')); - if($m) { - $activity = json_decode($m,true); + if ($m) { + $activity = json_decode($m, true); } else { $activity = array_merge(['@context' => [ ACTIVITYSTREAMS_JSONLD_REV, 'https://w3id.org/security/v1', z_root() . ZOT_APSCHEMA_REV - ]], Activity::encode_activity($target_item) + ]], Activity::encode_activity($target_item) ); } - logger('target_item: ' . print_r($target_item,true), LOGGER_DEBUG); - logger('encoded: ' . print_r($activity,true), LOGGER_DEBUG); + logger('target_item: ' . print_r($target_item, true), LOGGER_DEBUG); + logger('encoded: ' . print_r($activity, true), LOGGER_DEBUG); // Send comments to the owner to re-deliver to everybody in the conversation // We only do this if the item in question originated on this site. This prevents looping. @@ -411,9 +407,7 @@ class Notifier { // flag on comments for an extended period. So we'll also call comment_local_origin() which looks at // the hostname in the message_id and provides a second (fallback) opinion. - $relay_to_owner = (((! $top_level_post) && (intval($target_item['item_origin'])) && comment_local_origin($target_item)) ? true : false); - - + $relay_to_owner = (((!$top_level_post) && (intval($target_item['item_origin'])) && comment_local_origin($target_item)) ? true : false); $uplink = false; @@ -425,54 +419,46 @@ class Notifier { // tag_deliver'd post which needs to be sent back to the original author - if(($cmd === 'uplink') && intval($parent_item['item_uplink']) && (! $top_level_post)) { + if (($cmd === 'uplink') && intval($parent_item['item_uplink']) && (!$top_level_post)) { logger('notifier: uplink'); $uplink = true; } - if(($relay_to_owner || $uplink) && ($cmd !== 'relay')) { + if (($relay_to_owner || $uplink) && ($cmd !== 'relay')) { logger('notifier: followup relay', LOGGER_DEBUG); - $recipients = array(($uplink) ? $parent_item['source_xchan'] : $parent_item['owner_xchan']); - $private = true; - if(! $encoded_item['flags']) - $encoded_item['flags'] = array(); + $recipients = [($uplink) ? $parent_item['source_xchan'] : $parent_item['owner_xchan']]; + $private = true; + if (!$encoded_item['flags']) + $encoded_item['flags'] = []; $encoded_item['flags'][] = 'relay'; - $upstream = true; + $upstream = true; } else { logger('notifier: normal distribution', LOGGER_DEBUG); - if($cmd === 'relay') + if ($cmd === 'relay') logger('notifier: owner relay'); $upstream = false; // if our parent is a tag_delivery recipient, uplink to the original author causing // a delivery fork. - if(($parent_item) && intval($parent_item['item_uplink']) && (! $top_level_post) && ($cmd !== 'uplink')) { + if (($parent_item) && intval($parent_item['item_uplink']) && (!$top_level_post) && ($cmd !== 'uplink')) { // don't uplink a relayed post to the relay owner - if($parent_item['source_xchan'] !== $parent_item['owner_xchan']) { + if ($parent_item['source_xchan'] !== $parent_item['owner_xchan']) { logger('notifier: uplinking this item'); - Master::Summon(array('Notifier','uplink',$item_id)); + Master::Summon(['Notifier', 'uplink', $item_id]); } } - $private = false; - $recipients = collect_recipients($parent_item,$private); - + $private = false; + $recipients = collect_recipients($parent_item, $private); if ($top_level_post) { // remove clones who will receive the post via sync - $recipients = array_diff($recipients, [ $target_item['owner_xchan'] ]); + $recipients = array_diff($recipients, [$target_item['owner_xchan']]); } // FIXME add any additional recipients such as mentions, etc. - // don't send deletions onward for other people's stuff - // TODO verify this is needed - copied logic from same place in old code - - if(intval($target_item['item_deleted']) && (! intval($target_item['item_wall']))) { - logger('notifier: ignoring delete notification for non-wall item', LOGGER_NORMAL, LOG_NOTICE); - return; - } } } @@ -481,32 +467,31 @@ class Notifier { // Generic delivery section, we have an encoded item and recipients // Now start the delivery process - $x = $encoded_item; + $x = $encoded_item; $x['title'] = 'private'; - $x['body'] = 'private'; - logger('notifier: encoded item: ' . print_r($x,true), LOGGER_DATA, LOG_DEBUG); + $x['body'] = 'private'; + logger('notifier: encoded item: ' . print_r($x, true), LOGGER_DATA, LOG_DEBUG); //logger('notifier: encoded activity: ' . print_r($activity,true), LOGGER_DATA, LOG_DEBUG); stringify_array_elms($recipients); - if(! $recipients) { + if (!$recipients) { logger('no recipients'); return; } // logger('notifier: recipients: ' . print_r($recipients,true), LOGGER_NORMAL, LOG_DEBUG); - $env_recips = (($private) ? array() : null); + $env_recips = (($private) ? [] : null); - $details = q("select xchan_hash, xchan_network, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . protect_sprintf(implode(',',$recipients)) . ")"); + $details = q("select xchan_hash, xchan_network, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . protect_sprintf(implode(',', $recipients)) . ")"); - $recip_list = array(); - - if($details) { - foreach($details as $d) { + $recip_list = []; + if ($details) { + foreach ($details as $d) { $recip_list[] = $d['xchan_addr'] . ' (' . $d['xchan_hash'] . ')'; - if($private) { + if ($private) { $env_recips[] = [ 'guid' => $d['xchan_guid'], 'guid_sig' => $d['xchan_guid_sig'], @@ -542,8 +527,8 @@ class Notifier { ]; call_hooks('notifier_process', $narr); - if($narr['queued']) { - foreach($narr['queued'] as $pq) + if ($narr['queued']) { + foreach ($narr['queued'] as $pq) $deliveries[] = $pq; } @@ -553,26 +538,26 @@ class Notifier { $env_recips = $narr['env_recips']; $packet_recips = $narr['packet_recips']; - if(($private) && (! $env_recips)) { + if (($private) && (!$env_recips)) { // shouldn't happen - logger('notifier: private message with no envelope recipients.' . print_r($argv,true), LOGGER_NORMAL, LOG_NOTICE); + logger('notifier: private message with no envelope recipients.' . print_r($argv, true), LOGGER_NORMAL, LOG_NOTICE); } - logger('notifier: recipients (may be delivered to more if public): ' . print_r($recip_list,true), LOGGER_DEBUG); + logger('notifier: recipients (may be delivered to more if public): ' . print_r($recip_list, true), LOGGER_DEBUG); // Now we have collected recipients (except for external mentions, FIXME) // Let's reduce this to a set of hubs; checking that the site is not dead. $hubs = q("select hubloc.*, site.site_crypto, site.site_flags, site.site_version, site.site_project, site.site_dead from hubloc left join site on site_url = hubloc_url - where hubloc_hash in (" . protect_sprintf(implode(',',$recipients)) . ") + where hubloc_hash in (" . protect_sprintf(implode(',', $recipients)) . ") and hubloc_error = 0 and hubloc_deleted = 0" ); // public posts won't make it to the local public stream unless there's a recipient on this site. // This code block sees if it's a public post and localhost is missing, and if so adds an entry for the local sys channel to the $hubs list - if (! $private) { + if (!$private) { $found_localhost = false; if ($hubs) { foreach ($hubs as $h) { @@ -582,7 +567,7 @@ class Notifier { } } } - if (! $found_localhost) { + if (!$found_localhost) { $localhub = q("select hubloc.*, site.site_crypto, site.site_flags, site.site_version, site.site_project, site.site_dead from hubloc left join site on site_url = hubloc_url where hubloc_id_url = '%s' and hubloc_error = 0 and hubloc_deleted = 0", dbesc(z_root() . '/channel/sys') @@ -593,7 +578,7 @@ class Notifier { } } - if(! $hubs) { + if (!$hubs) { logger('notifier: no hubs', LOGGER_NORMAL, LOG_NOTICE); return; } @@ -612,17 +597,17 @@ class Notifier { $hub_env = []; // per-hub envelope so we don't broadcast the entire envelope to all $dead = []; // known dead hubs - report them as undeliverable - foreach($hubs as $hub) { + foreach ($hubs as $hub) { if (intval($hub['site_dead'])) { $dead[] = $hub; continue; } - if($env_recips) { - foreach($env_recips as $er) { - if($hub['hubloc_hash'] === $er['hash']) { - if(! array_key_exists($hub['hubloc_host'] . $hub['hubloc_sitekey'], $hub_env)) { + if ($env_recips) { + foreach ($env_recips as $er) { + if ($hub['hubloc_hash'] === $er['hash']) { + if (!array_key_exists($hub['hubloc_host'] . $hub['hubloc_sitekey'], $hub_env)) { $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] = []; } $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']][] = $er; @@ -631,36 +616,36 @@ class Notifier { } - if($hub['hubloc_network'] == 'zot') { - if(! in_array($hub['hubloc_sitekey'],$keys)) { + if ($hub['hubloc_network'] == 'zot') { + if (!in_array($hub['hubloc_sitekey'], $keys)) { $hublist[] = $hub['hubloc_host'] . ' ' . $hub['hubloc_network']; $dhubs[] = $hub; $keys[] = $hub['hubloc_sitekey']; } } else { - if(! in_array($hub['hubloc_url'],$urls)) { - if($hub['hubloc_url'] === z_root()) { + if (!in_array($hub['hubloc_url'], $urls)) { + if ($hub['hubloc_url'] === z_root()) { //deliver to local hub first array_unshift($hublist, $hub['hubloc_host'] . ' ' . $hub['hubloc_network']); array_unshift($dhubs, $hub); } else { $hublist[] = $hub['hubloc_host'] . ' ' . $hub['hubloc_network']; - $dhubs[] = $hub; + $dhubs[] = $hub; } $urls[] = $hub['hubloc_url']; } } } - logger('notifier: will notify/deliver to these hubs: ' . print_r($hublist,true), LOGGER_DEBUG, LOG_DEBUG); + logger('notifier: will notify/deliver to these hubs: ' . print_r($hublist, true), LOGGER_DEBUG, LOG_DEBUG); - foreach($dhubs as $hub) { + foreach ($dhubs as $hub) { - logger('notifier_hub: ' . $hub['hubloc_url'],LOGGER_DEBUG); + logger('notifier_hub: ' . $hub['hubloc_url'], LOGGER_DEBUG); - if(! in_array($hub['hubloc_network'], [ 'zot','zot6' ])) { + if (!in_array($hub['hubloc_network'], ['zot', 'zot6'])) { $narr = [ 'channel' => $channel, 'upstream' => $upstream, @@ -687,9 +672,9 @@ class Notifier { ]; - call_hooks('notifier_hub',$narr); - if($narr['queued']) { - foreach($narr['queued'] as $pq) + call_hooks('notifier_hub', $narr); + if ($narr['queued']) { + foreach ($narr['queued'] as $pq) $deliveries[] = $pq; } continue; @@ -705,11 +690,11 @@ class Notifier { // will invoke a delivery to those connections which are connected to just that // hub instance. - if($cmd === 'single_mail' || $cmd === 'single_activity') { + if ($cmd === 'single_mail' || $cmd === 'single_activity') { continue; } - if(! in_array($hub['hubloc_network'], [ 'zot','zot6' ])) { + if (!in_array($hub['hubloc_network'], ['zot', 'zot6'])) { continue; } @@ -717,31 +702,31 @@ class Notifier { // in the loop. The signature verification step can't handle dashes in the // hashes. - $hash = random_string(48); + $hash = random_string(48); $packet = null; $pmsg = ''; - if($packet_type === 'refresh' || $packet_type === 'purge') { - if($hub['hubloc_network'] === 'zot6') { - $packet = Libzot::build_packet($channel, $packet_type, ids_to_array($packet_recips,'hash')); + if ($packet_type === 'refresh' || $packet_type === 'purge') { + if ($hub['hubloc_network'] === 'zot6') { + $packet = Libzot::build_packet($channel, $packet_type, ids_to_array($packet_recips, 'hash')); } else { - $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null)); + $packet = zot_build_packet($channel, $packet_type, (($packet_recips) ? $packet_recips : null)); } } - if($packet_type === 'keychange' && $hub['hubloc_network'] === 'zot') { - $pmsg = get_pconfig($channel['channel_id'],'system','keychange'); - $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null)); + if ($packet_type === 'keychange' && $hub['hubloc_network'] === 'zot') { + $pmsg = get_pconfig($channel['channel_id'], 'system', 'keychange'); + $packet = zot_build_packet($channel, $packet_type, (($packet_recips) ? $packet_recips : null)); } - elseif($packet_type === 'request' && $hub['hubloc_network'] === 'zot') { - $env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : ''); - $packet = zot_build_packet($channel,$packet_type,$env,$hub['hubloc_sitekey'],$hub['site_crypto'], - $hash, array('message_id' => $request_message_id) + elseif ($packet_type === 'request' && $hub['hubloc_network'] === 'zot') { + $env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : ''); + $packet = zot_build_packet($channel, $packet_type, $env, $hub['hubloc_sitekey'], $hub['site_crypto'], + $hash, ['message_id' => $request_message_id] ); } - if($packet) { + if ($packet) { Queue::insert( [ 'hash' => $hash, @@ -757,11 +742,10 @@ class Notifier { else { $env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : ''); - - if($hub['hubloc_network'] === 'zot6') { + if ($hub['hubloc_network'] === 'zot6') { $zenv = []; - if($env) { - foreach($env as $e) { + if ($env) { + foreach ($env as $e) { $zenv[] = $e['hash']; } } @@ -774,11 +758,11 @@ class Notifier { // For public reshares, some comments to the reshare on the zot fork will not make it to zot6 // due to these different message models. This cannot be prevented at this time. - if($packet_type === 'activity' && $activity['type'] === 'Announce' && intval($target_item['item_private'])) { + if ($packet_type === 'activity' && $activity['type'] === 'Announce' && intval($target_item['item_private'])) { continue; } - $packet = Libzot::build_packet($channel,$packet_type,$zenv,$activity,'activitystreams',(($private) ? $hub['hubloc_sitekey'] : null),$hub['site_crypto']); + $packet = Libzot::build_packet($channel, $packet_type, $zenv, $activity, 'activitystreams', (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto']); } else { // currently zot6 delivery is only performed on normal items and not sync items or mail or anything else @@ -786,28 +770,28 @@ class Notifier { // with before switching to zot6 as the primary zot6 handler checks for the existence of a message delivery report // to trigger dequeue'ing - $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! array_key_exists('allow_cid',$encoded_item))) ? true : false); - if($z6) { - $packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (!array_key_exists('allow_cid', $encoded_item))) ? true : false); + if ($z6) { + $packet = zot6_build_packet($channel, 'notify', $env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'], $hash); } else { - $packet = zot_build_packet($channel,'notify',$env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + $packet = zot_build_packet($channel, 'notify', $env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'], $hash); } } // remove this after most hubs have updated to version 5.0 - if(stripos($hub['site_project'], 'hubzilla') !== false && version_compare($hub['site_version'], '4.7.3', '<=')) { - if($encoded_item['type'] === 'mail') { - $encoded_item['from']['network'] = 'zot'; + if (stripos($hub['site_project'], 'hubzilla') !== false && version_compare($hub['site_version'], '4.7.3', '<=')) { + if ($encoded_item['type'] === 'mail') { + $encoded_item['from']['network'] = 'zot'; $encoded_item['from']['guid_sig'] = str_replace('sha256.', '', $encoded_item['from']['guid_sig']); } else { - $encoded_item['owner']['network'] = 'zot'; + $encoded_item['owner']['network'] = 'zot'; $encoded_item['owner']['guid_sig'] = str_replace('sha256.', '', $encoded_item['owner']['guid_sig']); - if(strpos($encoded_item['author']['url'], z_root()) === 0) { - $encoded_item['author']['network'] = 'zot'; + if (strpos($encoded_item['author']['url'], z_root()) === 0) { + $encoded_item['author']['network'] = 'zot'; $encoded_item['author']['guid_sig'] = str_replace('sha256.', '', $encoded_item['author']['guid_sig']); } } @@ -826,7 +810,7 @@ class Notifier { ); // only create delivery reports for normal undeleted items - if(is_array($target_item) && array_key_exists('postopts',$target_item) && (! $target_item['item_deleted']) && (! get_config('system','disable_dreport'))) { + if (is_array($target_item) && array_key_exists('postopts', $target_item) && (!$target_item['item_deleted']) && (!get_config('system', 'disable_dreport'))) { q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_result, dreport_time, dreport_xchan, dreport_queue ) values ( '%s','%s','%s','%s','%s','%s','%s' ) ", dbesc($target_item['mid']), dbesc($hub['hubloc_host']), @@ -842,21 +826,21 @@ class Notifier { $deliveries[] = $hash; } - if($normal_mode) { + if ($normal_mode) { $x = q("select * from hook where hook = 'notifier_normal'"); - if($x) { - Master::Summon( [ 'Deliver_hooks', $target_item['id'] ] ); + if ($x) { + Master::Summon(['Deliver_hooks', $target_item['id']]); } } - if($deliveries) + if ($deliveries) do_delivery($deliveries); logger('notifier: basic loop complete.', LOGGER_DEBUG); if ($dead) { foreach ($dead as $deceased) { - if (is_array($target_item) && (! $target_item['item_deleted']) && (! get_config('system','disable_dreport'))) { + if (is_array($target_item) && (!$target_item['item_deleted']) && (!get_config('system', 'disable_dreport'))) { q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan, dreport_queue ) values ( '%s', '%s','%s','%s','%s','%s','%s','%s' ) ", dbesc($target_item['mid']), @@ -872,7 +856,7 @@ class Notifier { } } - call_hooks('notifier_end',$target_item); + call_hooks('notifier_end', $target_item); logger('notifer: complete.'); return; diff --git a/Zotlabs/Daemon/Onedirsync.php b/Zotlabs/Daemon/Onedirsync.php index 2ad76761d..f29fbe5b8 100644 --- a/Zotlabs/Daemon/Onedirsync.php +++ b/Zotlabs/Daemon/Onedirsync.php @@ -3,6 +3,7 @@ namespace Zotlabs\Daemon; use Zotlabs\Lib\Libzot; +use Zotlabs\Lib\Libzotdir; require_once('include/zot.php'); require_once('include/dir_fns.php'); @@ -10,14 +11,14 @@ require_once('include/dir_fns.php'); class Onedirsync { - static public function run($argc,$argv) { + static public function run($argc, $argv) { logger('onedirsync: start ' . intval($argv[1])); - if(($argc > 1) && (intval($argv[1]))) + if (($argc > 1) && (intval($argv[1]))) $update_id = intval($argv[1]); - if(! $update_id) { + if (!$update_id) { logger('onedirsync: no update'); return; } @@ -26,9 +27,9 @@ class Onedirsync { intval($update_id) ); - if(! $r) + if (!$r) return; - if(($r[0]['ud_flags'] & UPDATE_FLAGS_UPDATED) || (! $r[0]['ud_addr'])) + if (($r[0]['ud_flags'] & UPDATE_FLAGS_UPDATED) || (!$r[0]['ud_addr'])) return; // Have we probed this channel more recently than the other directory server @@ -40,8 +41,8 @@ class Onedirsync { dbesc($r[0]['ud_date']), intval(UPDATE_FLAGS_UPDATED) ); - if($x) { - $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date != '%s'", + if ($x) { + q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date != '%s'", intval(UPDATE_FLAGS_UPDATED), dbesc($r[0]['ud_addr']), intval(UPDATE_FLAGS_UPDATED), @@ -58,8 +59,8 @@ class Onedirsync { $h = Libzot::zot_record_preferred($h); - if(($h) && ($h['hubloc_status'] & HUBLOC_OFFLINE)) { - $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 ", + if (($h) && ($h['hubloc_status'] & HUBLOC_OFFLINE)) { + q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 ", intval(UPDATE_FLAGS_UPDATED), dbesc($r[0]['ud_addr']), intval(UPDATE_FLAGS_UPDATED) @@ -71,10 +72,10 @@ class Onedirsync { // we might have to pull this out some day, but for now update_directory_entry() // runs zot_finger() and is kind of zot specific - if($h && ! in_array($h['hubloc_network'], ['zot6', 'zot'])) + if ($h && !in_array($h['hubloc_network'], ['zot6', 'zot'])) return; - update_directory_entry($r[0]); + Libzotdir::update_directory_entry($r[0]); return; } diff --git a/Zotlabs/Daemon/Onepoll.php b/Zotlabs/Daemon/Onepoll.php index 93a5412b0..0228f10fb 100644 --- a/Zotlabs/Daemon/Onepoll.php +++ b/Zotlabs/Daemon/Onepoll.php @@ -2,6 +2,7 @@ namespace Zotlabs\Daemon; +use App; use Zotlabs\Lib\Libzot; require_once('include/zot.php'); @@ -10,20 +11,18 @@ require_once('include/socgraph.php'); class Onepoll { - static public function run($argc,$argv) { + static public function run($argc, $argv) { logger('onepoll: start'); - - if(($argc > 1) && (intval($argv[1]))) + + if (($argc > 1) && (intval($argv[1]))) $contact_id = intval($argv[1]); - if(! $contact_id) { + if (!$contact_id) { logger('onepoll: no contact'); return; } - $d = datetime_convert(); - $contacts = q("SELECT abook.*, xchan.*, account.* FROM abook LEFT JOIN account on abook_account = account_id left join xchan on xchan_hash = abook_xchan where abook_id = %d @@ -32,38 +31,36 @@ class Onepoll { intval($contact_id), intval(ACCOUNT_OK), intval(ACCOUNT_UNVERIFIED) - ); + ); - if(! $contacts) { + if (!$contacts) { logger('onepoll: abook_id not found: ' . $contact_id); return; } $contact = $contacts[0]; - $t = $contact['abook_updated']; - $importer_uid = $contact['abook_channel']; - + $r = q("SELECT * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1", intval($importer_uid) ); - if(! $r) + if (!$r) return; $importer = $r[0]; logger("onepoll: poll: ({$contact['id']}) IMPORTER: {$importer['xchan_name']}, CONTACT: {$contact['xchan_name']}"); - $last_update = ((($contact['abook_updated'] === $contact['abook_created']) || ($contact['abook_updated'] <= NULL_DATE)) - ? datetime_convert('UTC','UTC','now - 7 days') - : datetime_convert('UTC','UTC',$contact['abook_updated'] . ' - 2 days') + $last_update = ((($contact['abook_updated'] === $contact['abook_created']) || ($contact['abook_updated'] <= NULL_DATE)) + ? datetime_convert('UTC', 'UTC', 'now - 7 days') + : datetime_convert('UTC', 'UTC', $contact['abook_updated'] . ' - 2 days') ); - if($contact['xchan_network'] === 'rss') { + if ($contact['xchan_network'] === 'rss') { logger('onepoll: processing feed ' . $contact['xchan_name'], LOGGER_DEBUG); - $alive = handle_feed($importer['channel_id'],$contact_id,$contact['xchan_hash']); + $alive = handle_feed($importer['channel_id'], $contact_id, $contact['xchan_hash']); if ($alive) { q("update abook set abook_connected = '%s' where abook_id = %d", dbesc(datetime_convert()), @@ -72,22 +69,22 @@ class Onepoll { } return; } - - if(! in_array($contact['xchan_network'],['zot','zot6'])) + + if (!in_array($contact['xchan_network'], ['zot', 'zot6'])) return; // update permissions - if($contact['xchan_network'] === 'zot6') - $x = Libzot::refresh($contact,$importer); + if ($contact['xchan_network'] === 'zot6') + $x = Libzot::refresh($contact, $importer); - if($contact['xchan_network'] === 'zot') - $x = zot_refresh($contact,$importer); + if ($contact['xchan_network'] === 'zot') + $x = zot_refresh($contact, $importer); $responded = false; $updated = datetime_convert(); $connected = datetime_convert(); - if(! $x) { + if (!$x) { // mark for death by not updating abook_connected, this is caught in include/poller.php q("update abook set abook_updated = '%s' where abook_id = %d", dbesc($updated), @@ -103,38 +100,38 @@ class Onepoll { $responded = true; } - if(! $responded) + if (!$responded) return; - if($contact['xchan_connurl']) { + if ($contact['xchan_connurl']) { $fetch_feed = true; - $x = null; + $x = null; // They haven't given us permission to see their stream - $can_view_stream = intval(get_abconfig($importer_uid,$contact['abook_xchan'],'their_perms','view_stream')); + $can_view_stream = intval(get_abconfig($importer_uid, $contact['abook_xchan'], 'their_perms', 'view_stream')); - if(! $can_view_stream) + if (!$can_view_stream) $fetch_feed = false; // we haven't given them permission to send us their stream - $can_send_stream = intval(get_abconfig($importer_uid,$contact['abook_xchan'],'my_perms','send_stream')); - - if(! $can_send_stream) + $can_send_stream = intval(get_abconfig($importer_uid, $contact['abook_xchan'], 'my_perms', 'send_stream')); + + if (!$can_send_stream) $fetch_feed = false; - if($fetch_feed) { + if ($fetch_feed) { - if(strpos($contact['xchan_connurl'],z_root()) === 0) { + if (strpos($contact['xchan_connurl'], z_root()) === 0) { // local channel - save a network fetch $c = channelx_by_hash($contact['xchan_hash']); - if($c) { - $x = [ - 'success' => true, - 'body' => json_encode( [ - 'success' => true, - 'messages' => zot_feed($c['channel_id'], $importer['xchan_hash'], [ 'mindate' => $last_update ]) + if ($c) { + $x = [ + 'success' => true, + 'body' => json_encode([ + 'success' => true, + 'messages' => zot_feed($c['channel_id'], $importer['xchan_hash'], ['mindate' => $last_update]) ]) ]; } @@ -142,43 +139,43 @@ class Onepoll { else { // remote fetch - $feedurl = str_replace('/poco/','/zotfeed/',$contact['xchan_connurl']); - $feedurl .= '?f=&mindate=' . urlencode($last_update) . '&zid=' . $importer['channel_address'] . '@' . \App::get_hostname(); + $feedurl = str_replace('/poco/', '/zotfeed/', $contact['xchan_connurl']); + $feedurl .= '?f=&mindate=' . urlencode($last_update) . '&zid=' . $importer['channel_address'] . '@' . App::get_hostname(); $recurse = 0; - $x = z_fetch_url($feedurl, false, $recurse, [ 'session' => true ]); + $x = z_fetch_url($feedurl, false, $recurse, ['session' => true]); } - logger('feed_update: ' . print_r($x,true), LOGGER_DATA); + logger('feed_update: ' . print_r($x, true), LOGGER_DATA); } - if(($x) && ($x['success'])) { + if (($x) && ($x['success'])) { $total = 0; logger('onepoll: feed update ' . $contact['xchan_name'] . ' ' . $feedurl); - $j = json_decode($x['body'],true); - if($j['success'] && $j['messages']) { - foreach($j['messages'] as $message) { - $results = process_delivery(array('hash' => $contact['xchan_hash']), get_item_elements($message), - array(array('hash' => $importer['xchan_hash'])), false); - logger('onepoll: feed_update: process_delivery: ' . print_r($results,true), LOGGER_DATA); - $total ++; + $j = json_decode($x['body'], true); + if ($j['success'] && $j['messages']) { + foreach ($j['messages'] as $message) { + $results = process_delivery(['hash' => $contact['xchan_hash']], get_item_elements($message), + [['hash' => $importer['xchan_hash']]], false); + logger('onepoll: feed_update: process_delivery: ' . print_r($results, true), LOGGER_DATA); + $total++; } logger("onepoll: $total messages processed"); } } } - + // update the poco details for this connection - if($contact['xchan_connurl']) { + if ($contact['xchan_connurl']) { $r = q("SELECT xlink_id from xlink where xlink_xchan = '%s' and xlink_updated > %s - INTERVAL %s and xlink_static = 0 limit 1", intval($contact['xchan_hash']), db_utcnow(), db_quoteinterval('1 DAY') ); - if(! $r) { - poco_load($contact['xchan_hash'],$contact['xchan_connurl']); + if (!$r) { + poco_load($contact['xchan_hash'], $contact['xchan_connurl']); } } diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php index ebc0584ba..8cbdfab0d 100644 --- a/Zotlabs/Daemon/Poller.php +++ b/Zotlabs/Daemon/Poller.php @@ -4,73 +4,67 @@ namespace Zotlabs\Daemon; class Poller { - static public function run($argc,$argv) { + static public function run($argc, $argv) { - $maxsysload = intval(get_config('system','maxloadavg')); - if($maxsysload < 1) + $maxsysload = intval(get_config('system', 'maxloadavg')); + if ($maxsysload < 1) $maxsysload = 50; - if(function_exists('sys_getloadavg')) { + if (function_exists('sys_getloadavg')) { $load = sys_getloadavg(); - if(intval($load[0]) > $maxsysload) { + if (intval($load[0]) > $maxsysload) { logger('system: load ' . $load . ' too high. Poller deferred to next scheduled run.'); return; } } - $interval = intval(get_config('system','poll_interval')); - if(! $interval) - $interval = ((get_config('system','delivery_interval') === false) ? 3 : intval(get_config('system','delivery_interval'))); + $interval = intval(get_config('system', 'poll_interval')); + if (!$interval) + $interval = ((get_config('system', 'delivery_interval') === false) ? 3 : intval(get_config('system', 'delivery_interval'))); // Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it. $lockfile = 'store/[data]/poller'; - if((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600)) - && (! get_config('system','override_poll_lockfile'))) { + if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600)) + && (!get_config('system', 'override_poll_lockfile'))) { logger("poller: Already running"); return; } - + // Create a lockfile. Needs two vars, but $x doesn't need to contain anything. + $x = ''; file_put_contents($lockfile, $x); logger('poller: start'); - - $manual_id = 0; - $generation = 0; - $force = false; - $restart = false; + $manual_id = 0; + $force = false; - if(($argc > 1) && ($argv[1] == 'force')) + if (($argc > 1) && ($argv[1] == 'force')) $force = true; - if(($argc > 1) && ($argv[1] == 'restart')) { - $restart = true; + if (($argc > 1) && ($argv[1] == 'restart')) { $generation = intval($argv[2]); - if(! $generation) + if (!$generation) return; } - if(($argc > 1) && intval($argv[1])) { + if (($argc > 1) && intval($argv[1])) { $manual_id = intval($argv[1]); $force = true; } - $sql_extra = (($manual_id) ? " AND abook_id = " . intval($manual_id) . " " : ""); reload_plugins(); - $d = datetime_convert(); - // Only poll from those with suitable relationships - $abandon_sql = (($abandon_days) - ? sprintf(" AND account_lastlog > %s - INTERVAL %s ", db_utcnow(), db_quoteinterval(intval($abandon_days).' DAY')) - : '' + $abandon_sql = (($abandon_days) + ? sprintf(" AND account_lastlog > %s - INTERVAL %s ", db_utcnow(), db_quoteinterval(intval($abandon_days) . ' DAY')) + : '' ); $randfunc = db_getfunc('RAND'); - + $contacts = q("SELECT abook.abook_updated, abook.abook_connected, abook.abook_feed, abook.abook_channel, abook.abook_id, abook.abook_archived, abook.abook_pending, abook.abook_ignored, abook.abook_blocked, @@ -85,118 +79,117 @@ class Poller { intval(ACCOUNT_UNVERIFIED) // FIXME ); - if($contacts) { + if ($contacts) { + foreach ($contacts as $contact) { - foreach($contacts as $contact) { - - $update = false; + $update = false; $t = $contact['abook_updated']; $c = $contact['abook_connected']; - if(intval($contact['abook_feed'])) { - $min = service_class_fetch($contact['abook_channel'],'minimum_feedcheck_minutes'); - if(! $min) - $min = intval(get_config('system','minimum_feedcheck_minutes')); - if(! $min) + if (intval($contact['abook_feed'])) { + $min = service_class_fetch($contact['abook_channel'], 'minimum_feedcheck_minutes'); + if (!$min) + $min = intval(get_config('system', 'minimum_feedcheck_minutes')); + if (!$min) $min = 60; - $x = datetime_convert('UTC','UTC',"now - $min minutes"); - if($c < $x) { - Master::Summon(array('Onepoll',$contact['abook_id'])); - if($interval) - @time_sleep_until(microtime(true) + (float) $interval); + $x = datetime_convert('UTC', 'UTC', "now - $min minutes"); + if ($c < $x) { + Master::Summon(['Onepoll', $contact['abook_id']]); + if ($interval) + @time_sleep_until(microtime(true) + (float)$interval); } continue; } - if(! in_array($contact['xchan_network'],['zot','zot6'])) + if (!in_array($contact['xchan_network'], ['zot', 'zot6'])) continue; - if($c == $t) { - if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day")) + if ($c == $t) { + if (datetime_convert('UTC', 'UTC', 'now') > datetime_convert('UTC', 'UTC', $t . " + 1 day")) $update = true; } else { - + // if we've never connected with them, start the mark for death countdown from now - - if($c <= NULL_DATE) { - $r = q("update abook set abook_connected = '%s' where abook_id = %d", + + if ($c <= NULL_DATE) { + q("update abook set abook_connected = '%s' where abook_id = %d", dbesc(datetime_convert()), intval($contact['abook_id']) ); - $c = datetime_convert(); + $c = datetime_convert(); $update = true; } // He's dead, Jim - if(strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $c . " + 30 day")) > 0) { - $r = q("update abook set abook_archived = 1 where abook_id = %d", + if (strcmp(datetime_convert('UTC', 'UTC', 'now'), datetime_convert('UTC', 'UTC', $c . " + 30 day")) > 0) { + q("update abook set abook_archived = 1 where abook_id = %d", intval($contact['abook_id']) ); - $update = false; continue; } - if(intval($contact['abook_archived'])) { - $update = false; + if (intval($contact['abook_archived'])) { continue; } // might be dead, so maybe don't poll quite so often - + // recently deceased, so keep up the regular schedule for 3 days - - if((strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $c . " + 3 day")) > 0) - && (strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $t . " + 1 day")) > 0)) + + if ((strcmp(datetime_convert('UTC', 'UTC', 'now'), datetime_convert('UTC', 'UTC', $c . " + 3 day")) > 0) + && (strcmp(datetime_convert('UTC', 'UTC', 'now'), datetime_convert('UTC', 'UTC', $t . " + 1 day")) > 0)) $update = true; // After that back off and put them on a morphine drip - if(strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $t . " + 2 day")) > 0) { + if (strcmp(datetime_convert('UTC', 'UTC', 'now'), datetime_convert('UTC', 'UTC', $t . " + 2 day")) > 0) { $update = true; } } - if(intval($contact['abook_pending']) || intval($contact['abook_archived']) || intval($contact['abook_ignored']) || intval($contact['abook_blocked'])) + if (intval($contact['abook_pending']) || intval($contact['abook_archived']) || intval($contact['abook_ignored']) || intval($contact['abook_blocked'])) continue; - if((! $update) && (! $force)) - continue; + if ((!$update) && (!$force)) + continue; - Master::Summon(array('Onepoll',$contact['abook_id'])); - if($interval) - @time_sleep_until(microtime(true) + (float) $interval); + Master::Summon(['Onepoll', $contact['abook_id']]); + if ($interval) + @time_sleep_until(microtime(true) + (float)$interval); } } - if($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { + $dirmode = intval(get_config('system', 'directory_mode')); + + if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { $r = q("SELECT u.ud_addr, u.ud_id, u.ud_last FROM updates AS u INNER JOIN (SELECT ud_addr, max(ud_id) AS ud_id FROM updates WHERE ( ud_flags & %d ) = 0 AND ud_addr != '' AND ( ud_last <= '%s' OR ud_last > %s - INTERVAL %s ) GROUP BY ud_addr) AS s ON s.ud_id = u.ud_id ", intval(UPDATE_FLAGS_UPDATED), dbesc(NULL_DATE), db_utcnow(), db_quoteinterval('7 DAY') ); - if($r) { - foreach($r as $rr) { + if ($r) { + foreach ($r as $rr) { // If they didn't respond when we attempted before, back off to once a day // After 7 days we won't bother anymore - if($rr['ud_last'] > NULL_DATE) - if($rr['ud_last'] > datetime_convert('UTC','UTC', 'now - 1 day')) + if ($rr['ud_last'] > NULL_DATE) + if ($rr['ud_last'] > datetime_convert('UTC', 'UTC', 'now - 1 day')) continue; - Master::Summon(array('Onedirsync',$rr['ud_id'])); - if($interval) - @time_sleep_until(microtime(true) + (float) $interval); + Master::Summon(['Onedirsync', $rr['ud_id']]); + if ($interval) + @time_sleep_until(microtime(true) + (float)$interval); } } - } + } - set_config('system','lastpoll',datetime_convert()); + set_config('system', 'lastpoll', datetime_convert()); //All done - clear the lockfile diff --git a/Zotlabs/Daemon/Queue.php b/Zotlabs/Daemon/Queue.php index 814148404..36bdcfe81 100644 --- a/Zotlabs/Daemon/Queue.php +++ b/Zotlabs/Daemon/Queue.php @@ -7,12 +7,12 @@ require_once('include/zot.php'); class Queue { - static public function run($argc,$argv) { + static public function run($argc, $argv) { require_once('include/items.php'); require_once('include/bbcode.php'); - if($argc > 1) + if ($argc > 1) $queue_id = $argv[1]; else $queue_id = EMPTY_STR; @@ -25,10 +25,9 @@ class Queue { $r = q("select outq_posturl from outq where outq_created < %s - INTERVAL %s", db_utcnow(), db_quoteinterval('3 DAY') ); - if($r) { - foreach($r as $rr) { - $site_url = ''; - $h = parse_url($rr['outq_posturl']); + if ($r) { + foreach ($r as $rr) { + $h = parse_url($rr['outq_posturl']); $desturl = $h['scheme'] . '://' . $h['host'] . (($h['port']) ? ':' . $h['port'] : ''); q("update site set site_dead = 1 where site_dead = 0 and site_url = '%s' and site_update < %s - INTERVAL %s", dbesc($desturl), @@ -37,11 +36,11 @@ class Queue { } } - $r = q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s", + q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s", db_utcnow(), db_quoteinterval('3 DAY') ); - if($queue_id) { + if ($queue_id) { $r = q("SELECT * FROM outq WHERE outq_hash = '%s' LIMIT 1", dbesc($queue_id) ); @@ -54,7 +53,7 @@ class Queue { // so that we don't start off a thousand deliveries for a couple of dead hubs. // The zot driver will deliver everything destined for a single hub once contact is made (*if* contact is made). // Other drivers will have to do something different here and may need their own query. - + // Note: this requires some tweaking as new posts to long dead hubs once a day will keep them in the // "every 15 minutes" category. We probably need to prioritise them when inserted into the queue // or just prior to this query based on recent and long-term delivery history. If we have good reason to believe @@ -67,7 +66,7 @@ class Queue { db_utcnow() ); while ($r) { - foreach($r as $rv) { + foreach ($r as $rv) { queue_deliver($rv); } $r = q("SELECT *,$sqlrandfunc as rn FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s order by rn limit 1", @@ -75,10 +74,10 @@ class Queue { ); } } - if(! $r) + if (!$r) return; - foreach($r as $rv) { + foreach ($r as $rv) { queue_deliver($rv); } } diff --git a/Zotlabs/Daemon/Thumbnail.php b/Zotlabs/Daemon/Thumbnail.php index e1f17c304..72034b870 100644 --- a/Zotlabs/Daemon/Thumbnail.php +++ b/Zotlabs/Daemon/Thumbnail.php @@ -5,30 +5,30 @@ namespace Zotlabs\Daemon; class Thumbnail { - static public function run($argc,$argv) { + static public function run($argc, $argv) { - if(! $argc == 2) + if (!$argc == 2) return; $c = q("select * from attach where hash = '%s' ", dbesc($argv[1]) ); - if(! $c) + if (!$c) return; $attach = $c[0]; - $preview_style = intval(get_config('system','thumbnail_security',0)); - $preview_width = intval(get_config('system','thumbnail_width',300)); - $preview_height = intval(get_config('system','thumbnail_height',300)); + $preview_style = intval(get_config('system', 'thumbnail_security', 0)); + $preview_width = intval(get_config('system', 'thumbnail_width', 300)); + $preview_height = intval(get_config('system', 'thumbnail_height', 300)); $p = [ 'attach' => $attach, 'preview_style' => $preview_style, 'preview_width' => $preview_width, 'preview_height' => $preview_height, - 'thumbnail' => null + 'thumbnail' => null ]; /** @@ -40,39 +40,39 @@ class Thumbnail { * * \e string \b thumbnail */ - call_hooks('thumbnail',$p); - if($p['thumbnail']) { + call_hooks('thumbnail', $p); + if ($p['thumbnail']) { return; } $default_controller = null; - + $files = glob('Zotlabs/Thumbs/*.php'); - if($files) { - foreach($files as $f) { - $clsname = '\\Zotlabs\\Thumbs\\' . ucfirst(basename($f,'.php')); - if(class_exists($clsname)) { + if ($files) { + foreach ($files as $f) { + $clsname = '\\Zotlabs\\Thumbs\\' . ucfirst(basename($f, '.php')); + if (class_exists($clsname)) { $x = new $clsname(); - if(method_exists($x,'Match')) { + if (method_exists($x, 'Match')) { $matched = $x->Match($attach['filetype']); - if($matched) { - $x->Thumb($attach,$preview_style,$preview_width,$preview_height); + if ($matched) { + $x->Thumb($attach, $preview_style, $preview_width, $preview_height); } } - if(method_exists($x,'MatchDefault')) { - $default_matched = $x->MatchDefault(substr($attach['filetype'],0,strpos($attach['filetype'],'/'))); - if($default_matched) { + if (method_exists($x, 'MatchDefault')) { + $default_matched = $x->MatchDefault(substr($attach['filetype'], 0, strpos($attach['filetype'], '/'))); + if ($default_matched) { $default_controller = $x; } } } } } - if(($default_controller) - && ((! file_exists(dbunescbin($attach['content']) . '.thumb')) + if (($default_controller) + && ((!file_exists(dbunescbin($attach['content']) . '.thumb')) || (filectime(dbunescbin($attach['content']) . 'thumb') < (time() - 60)))) { - $default_controller->Thumb($attach,$preview_style,$preview_width,$preview_height); + $default_controller->Thumb($attach, $preview_style, $preview_width, $preview_height); } } } diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index 7b980b8d3..05b2ba177 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -524,7 +524,7 @@ class Apps { } elseif(remote_channel()) { $observer = \App::get_observer(); - if($observer && $observer['xchan_network'] === 'zot') { + if($observer && in_array($observer['xchan_network'], ['zot6', 'zot'])) { // some folks might have xchan_url redirected offsite, use the connurl $x = parse_url($observer['xchan_connurl']); if($x) { diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php index c78325ee3..3a24cd349 100644 --- a/Zotlabs/Lib/Enotify.php +++ b/Zotlabs/Lib/Enotify.php @@ -64,7 +64,7 @@ class Enotify { $sitename = get_config('system','sitename'); $site_admin = sprintf( t('%s Administrator'), $sitename); $opt_out1 = sprintf( t('This email was sent by %1$s at %2$s.'), t('$Projectname'), \App::get_hostname()); - $opt_out2 = sprintf( t('To stop receiving these messages, please adjust your Notification Settings at %s'), z_root() . '/settings'); + $opt_out2 = sprintf( t('To stop receiving these messages, please adjust your Notification Settings at %s'), z_root() . '/settings'); $hopt_out2 = sprintf( t('To stop receiving these messages, please adjust your %s.'), '<a href="' . z_root() . '/settings' . '">' . t('Notification Settings') . '</a>'); $sender_name = $product; $hostname = \App::get_hostname(); @@ -80,7 +80,7 @@ class Enotify { $sender_email = get_config('system','from_email'); if(! $sender_email) $sender_email = 'Administrator' . '@' . $hostname; - + $sender_name = get_config('system','from_email_name'); if(! $sender_name) $sender_name = \Zotlabs\Lib\System::get_site_name(); @@ -108,7 +108,7 @@ class Enotify { logger('notification invoked for an old item which may have been refetched.',LOGGER_DEBUG,LOG_INFO); return; } - } + } else { $title = $body = ''; } @@ -181,7 +181,7 @@ class Enotify { pop_lang(); return; } - + // if it's a post figure out who's post it is. @@ -219,7 +219,7 @@ class Enotify { $itemlink, $p[0]['author']['xchan_name'], $item_post_type); - + // "your post" if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall'])) $dest_str = sprintf(t('%1$s %2$s [zrl=%3$s]your %4$s[/zrl]'), @@ -230,15 +230,15 @@ class Enotify { // Some mail softwares relies on subject field for threading. // So, we cannot have different subjects for notifications of the same thread. - // Before this we have the name of the replier on the subject rendering + // Before this we have the name of the replier on the subject rendering // differents subjects for messages on the same thread. if($moderated) $subject = sprintf( t('[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']); else $subject = sprintf( t('[$Projectname:Notify] Comment to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']); - $preamble = sprintf( t('%1$s commented on an item/conversation you have been following.'), $sender['xchan_name']); - $epreamble = $dest_str; + $preamble = sprintf( t('%1$s commented on an item/conversation you have been following.'), $sender['xchan_name']); + $epreamble = $dest_str; $sitelink = t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf( $sitelink, $siteurl ); @@ -247,7 +247,7 @@ class Enotify { $tsitelink .= "\n\n" . sprintf( t('Please visit %s to approve or reject this comment.'), z_root() . '/moderate' ); $hsitelink .= "<br><br>" . sprintf( t('Please visit %s to approve or reject this comment.'), '<a href="' . z_root() . '/moderate">' . z_root() . '/moderate</a>' ); } - + } if ($params['type'] == NOTIFY_LIKE) { @@ -278,7 +278,7 @@ class Enotify { pop_lang(); return; } - + // if it's a post figure out who's post it is. @@ -314,12 +314,12 @@ class Enotify { // Some mail softwares relies on subject field for threading. // So, we cannot have different subjects for notifications of the same thread. - // Before this we have the name of the replier on the subject rendering + // Before this we have the name of the replier on the subject rendering // differents subjects for messages on the same thread. $subject = sprintf( t('[$Projectname:Notify] Like received to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']); - $preamble = sprintf( t('%1$s liked an item/conversation you created.'), $sender['xchan_name']); - $epreamble = $dest_str; + $preamble = sprintf( t('%1$s liked an item/conversation you created.'), $sender['xchan_name']); + $epreamble = $dest_str; $sitelink = t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf( $sitelink, $siteurl ); @@ -335,7 +335,7 @@ class Enotify { $epreamble = sprintf( t('%1$s posted to [zrl=%2$s]your wall[/zrl]') , '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', - $params['link']); + $params['link']); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf( $sitelink, $siteurl ); @@ -355,12 +355,12 @@ class Enotify { pop_lang(); return; } - + $subject = sprintf( t('[$Projectname:Notify] %s tagged you') , $sender['xchan_name']); $preamble = sprintf( t('%1$s tagged you at %2$s') , $sender['xchan_name'], $sitename); $epreamble = sprintf( t('%1$s [zrl=%2$s]tagged you[/zrl].') , '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', - $params['link']); + $params['link']); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf( $sitelink, $siteurl ); @@ -373,7 +373,7 @@ class Enotify { $preamble = sprintf( t('%1$s poked you at %2$s') , $sender['xchan_name'], $sitename); $epreamble = sprintf( t('%1$s [zrl=%2$s]poked you[/zrl].') , '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', - $params['link']); + $params['link']); $subject = str_replace('poked', t($params['activity']), $subject); $preamble = str_replace('poked', t($params['activity']), $preamble); @@ -390,7 +390,7 @@ class Enotify { $preamble = sprintf( t('%1$s tagged your post at %2$s'),$sender['xchan_name'], $sitename); $epreamble = sprintf( t('%1$s tagged [zrl=%2$s]your post[/zrl]') , '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', - $itemlink); + $itemlink); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf( $sitelink, $siteurl ); @@ -400,10 +400,10 @@ class Enotify { if ($params['type'] == NOTIFY_INTRO) { $subject = sprintf( t('[$Projectname:Notify] Introduction received')); - $preamble = sprintf( t('You\'ve received an new connection request from \'%1$s\' at %2$s'), $sender['xchan_name'], $sitename); + $preamble = sprintf( t('You\'ve received an new connection request from \'%1$s\' at %2$s'), $sender['xchan_name'], $sitename); $epreamble = sprintf( t('You\'ve received [zrl=%1$s]a new connection request[/zrl] from %2$s.'), $siteurl . '/connections/ifpending', - '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]'); + '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]'); $body = sprintf( t('You may visit their profile at %s'),$sender['xchan_url']); $sitelink = t('Please visit %s to approve or reject the connection request.'); @@ -414,11 +414,11 @@ class Enotify { if ($params['type'] == NOTIFY_SUGGEST) { $subject = sprintf( t('[$Projectname:Notify] Friend suggestion received')); - $preamble = sprintf( t('You\'ve received a friend suggestion from \'%1$s\' at %2$s'), $sender['xchan_name'], $sitename); + $preamble = sprintf( t('You\'ve received a friend suggestion from \'%1$s\' at %2$s'), $sender['xchan_name'], $sitename); $epreamble = sprintf( t('You\'ve received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s.'), $itemlink, '[zrl=' . $params['item']['url'] . ']' . $params['item']['name'] . '[/zrl]', - '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]'); + '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]'); $body = t('Name:') . ' ' . $params['item']['name'] . "\n"; $body .= t('Photo:') . ' ' . $params['item']['photo'] . "\n"; @@ -462,7 +462,7 @@ class Enotify { $sitelink = $h['sitelink']; $tsitelink = $h['tsitelink']; $hsitelink = $h['hsitelink']; - $itemlink = $h['itemlink']; + $itemlink = $h['itemlink']; require_once('include/html2bbcode.php'); @@ -510,7 +510,7 @@ class Enotify { // Mark some notifications as seen right away // Note! The notification have to be created, because they are used to send emails // So easiest solution to hide them from Notices is to mark them as seen right away. - // Another option would be to not add them to the DB, and change how emails are handled + // Another option would be to not add them to the DB, and change how emails are handled // (probably would be better that way) if (!$always_show_in_notices) { @@ -555,7 +555,7 @@ class Enotify { // wretched hack, but we don't want to duplicate all the preamble variations and we also don't want to screw up a translation if ((\App::$language === 'en' || (! \App::$language)) && strpos($msg,', ')) - $msg = substr($msg,strpos($msg,', ')+1); + $msg = substr($msg,strpos($msg,', ')+1); $datarray['id'] = $notify_id; $datarray['msg'] = $msg; @@ -587,12 +587,12 @@ class Enotify { $htmlversion = bbcode(stripslashes(str_replace(array("\\r","\\n"), array("","<br />\n"),$body))); - // use $_SESSION['zid_override'] to force zid() to use + // use $_SESSION['zid_override'] to force zid() to use // the recipient address instead of the current observer $_SESSION['zid_override'] = channel_reddress($recip); $_SESSION['zrl_override'] = z_root() . '/channel/' . $recip['channel_address']; - + $textversion = zidify_links($textversion); $htmlversion = zidify_links($htmlversion); @@ -754,7 +754,7 @@ class Enotify { return $params['result']; } - $fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8'); + $fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8'); $messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8'); // generate a mime boundary @@ -767,8 +767,8 @@ class Enotify { $messageHeader = $params['additionalMailHeader'] . "From: $fromName <{$params['fromEmail']}>" . PHP_EOL . - "Reply-To: $fromName <{$params['replyTo']}>" . PHP_EOL . - "MIME-Version: 1.0" . PHP_EOL . + "Reply-To: $fromName <{$params['replyTo']}>" . PHP_EOL . + "MIME-Version: 1.0" . PHP_EOL . "Content-Type: multipart/alternative; boundary=\"{$mimeBoundary}\""; // assemble the final multipart message body with the text and html types included @@ -782,7 +782,7 @@ class Enotify { $textBody . PHP_EOL . "--" . $mimeBoundary . PHP_EOL . // text/html section "Content-Type: text/html; charset=UTF-8" . PHP_EOL . - "Content-Transfer-Encoding: base64" . PHP_EOL . PHP_EOL . + "Content-Transfer-Encoding: base64" . PHP_EOL . PHP_EOL . $htmlBody . PHP_EOL . "--" . $mimeBoundary . "--" . PHP_EOL; // message ending @@ -803,7 +803,7 @@ class Enotify { require_once('include/conversation.php'); - // Call localize_item to get a one line status for activities. + // Call localize_item to get a one line status for activities. // This should set $item['localized'] to indicate we have a brief summary. // and perhaps $item['shortlocalized'] for an even briefer summary @@ -860,7 +860,7 @@ class Enotify { //'b64mid' => ((in_array($item['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) ? 'b64.' . base64url_encode($item['thr_parent']) : 'b64.' . base64url_encode($item['mid'])), 'thread_top' => (($item['item_thread_top']) ? true : false), 'message' => bbcode(escape_tags($itemem_text)), - 'body' => htmlentities(html2plain(bbcode($item['body']), 75, true), ENT_COMPAT, 'UTF-8', false), + 'body' => htmlentities(html2plain(bbcode($item['body']), 75, true), ENT_QUOTES, 'UTF-8', false), // these are for the superblock addon 'hash' => $item[$who]['xchan_hash'], 'uid' => $item['uid'], diff --git a/Zotlabs/Lib/JSalmon.php b/Zotlabs/Lib/JSalmon.php index 48a4e649b..7f63cf914 100644 --- a/Zotlabs/Lib/JSalmon.php +++ b/Zotlabs/Lib/JSalmon.php @@ -40,15 +40,15 @@ class JSalmon { $ret = [ 'results' => [] ]; if(! is_array($x)) { - return $false; + return false; } if(! ( array_key_exists('signed',$x) && $x['signed'])) { - return $false; + return false; } - $signed_data = preg_replace('/\s+/','',$x['data']) . '.' - . base64url_encode($x['data_type'],true) . '.' - . base64url_encode($x['encoding'],true) . '.' + $signed_data = preg_replace('/\s+/','',$x['data']) . '.' + . base64url_encode($x['data_type'],true) . '.' + . base64url_encode($x['encoding'],true) . '.' . base64url_encode($x['alg'],true); $key = HTTPSig::get_key(EMPTY_STR,'zot6',base64url_decode($x['sigs']['key_id'])); diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php index 972ebe0e9..cde4c0145 100644 --- a/Zotlabs/Lib/Libzot.php +++ b/Zotlabs/Lib/Libzot.php @@ -87,7 +87,7 @@ class Libzot { * packet type: one of 'ping', 'pickup', 'purge', 'refresh', 'keychange', 'force_refresh', 'notify', 'auth_check' * @param array $recipients * envelope recipients, array of portable_id's; empty for public posts - * @param string $msg + * @param array $msg * optional message * @param string $encoding * optional encoding, default 'activitystreams' @@ -98,7 +98,7 @@ class Libzot { * optional comma separated list of encryption methods @ref best_algorithm() * @returns string json encoded zot packet */ - static function build_packet($channel, $type = 'activity', $recipients = null, $msg = '', $encoding = 'activitystreams', $remote_key = null, $methods = '') { + static function build_packet($channel, $type = 'activity', $recipients = null, $msg = [], $encoding = 'activitystreams', $remote_key = null, $methods = '') { $sig_method = get_config('system','signature_algorithm','sha256'); @@ -189,7 +189,7 @@ class Libzot { * @see z_post_url() * * @param string $url - * @param array $data + * @param string $data * @param array $channel (required if using zot6 delivery) * @param array $crypto (required if encrypted httpsig, requires hubloc_sitekey and site_crypto elements) * @return array see z_post_url() for returned data format @@ -237,7 +237,7 @@ class Libzot { * * @param array $them => xchan structure of sender * @param array $channel => local channel structure of target recipient, required for "friending" operations - * @param array $force (optional) default false + * @param boolean $force (optional) default false * * @return boolean * * \b true if successful @@ -421,7 +421,7 @@ class Libzot { if($new_connection) { if(! Permissions::PermsCompare($new_perms,$previous_perms)) - Master::Summon([ 'Notifier', 'permissions_create', $new_connection[0]['abook_id'] ]); + Master::Summon([ 'Notifier', 'permission_create', $new_connection[0]['abook_id'] ]); Enotify::submit( [ 'type' => NOTIFY_INTRO, diff --git a/Zotlabs/Lib/Libzotdir.php b/Zotlabs/Lib/Libzotdir.php index b02516a98..d4c5398ee 100644 --- a/Zotlabs/Lib/Libzotdir.php +++ b/Zotlabs/Lib/Libzotdir.php @@ -19,7 +19,6 @@ class Libzotdir { */ static function find_upstream_directory($dirmode) { - global $DIRECTORY_FALLBACK_SERVERS; $preferred = get_config('system','directory_server'); @@ -31,7 +30,7 @@ class Libzotdir { ); if(($r) && ($r[0]['site_flags'] & DIRECTORY_MODE_STANDALONE)) { $preferred = ''; - } + } } @@ -42,19 +41,21 @@ class Libzotdir { * from our list of directory servers. However, if we're a directory * server ourself, point at the local instance * We will then set this value so this should only ever happen once. - * Ideally there will be an admin setting to change to a different + * Ideally there will be an admin setting to change to a different * directory server if you don't like our choice or if circumstances change. */ + $directory_fallback_servers = get_directory_fallback_servers(); + $dirmode = intval(get_config('system','directory_mode')); if ($dirmode == DIRECTORY_MODE_NORMAL) { - $toss = mt_rand(0,count($DIRECTORY_FALLBACK_SERVERS)); - $preferred = $DIRECTORY_FALLBACK_SERVERS[$toss]; + $toss = mt_rand(0,count($directory_fallback_servers)); + $preferred = $directory_fallback_servers[$toss]; if(! $preferred) { $preferred = DIRECTORY_FALLBACK_MASTER; } set_config('system','directory_server',$preferred); - } + } else { set_config('system','directory_server',z_root()); } @@ -108,7 +109,7 @@ class Libzotdir { $ret = get_config('directory', $setting); - // 'safemode' is the default if there is no observer or no established preference. + // 'safemode' is the default if there is no observer or no established preference. if($setting === 'safemode' && $ret === false) $ret = 1; @@ -175,8 +176,8 @@ class Libzotdir { * * Checks the directory mode of this hub to see if it is some form of directory server. If it is, * get the directory realm of this hub. Fetch a list of all other directory servers in this realm and request - * a directory sync packet. This will contain both directory updates and new ratings. Store these all in the DB. - * In the case of updates, we will query each of them asynchronously from a poller task. Ratings are stored + * a directory sync packet. This will contain both directory updates and new ratings. Store these all in the DB. + * In the case of updates, we will query each of them asynchronously from a poller task. Ratings are stored * directly if the rater's signature matches. * * @param int $dirmode; @@ -188,16 +189,17 @@ class Libzotdir { return; $realm = get_directory_realm(); + if ($realm == DIRECTORY_REALM) { - $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_type = %d and ( site_realm = '%s' or site_realm = '') ", + $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_type = %d and ( site_realm = '%s' or site_realm = '') and site_dead = 0", intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY), dbesc(z_root()), intval(SITE_TYPE_ZOT), dbesc($realm) ); - } + } else { - $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_realm like '%s' and site_type = %d ", + $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_realm like '%s' and site_type = %d and site_dead = 0", intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY), dbesc(z_root()), dbesc(protect_sprintf('%' . $realm . '%')), @@ -205,6 +207,8 @@ class Libzotdir { ); } + + // If there are no directory servers, setup the fallback master /** @FIXME What to do if we're in a different realm? */ @@ -214,14 +218,14 @@ class Libzotdir { [ 'site_url' => DIRECTORY_FALLBACK_MASTER, 'site_flags' => DIRECTORY_MODE_PRIMARY, - 'site_update' => NULL_DATE, + 'site_update' => NULL_DATE, 'site_directory' => DIRECTORY_FALLBACK_MASTER . '/dirsearch', 'site_realm' => DIRECTORY_REALM, 'site_valid' => 1, ] ); - $r = q("select * from site where site_flags in (%d, %d) and site_url != '%s' and site_type = %d ", + $r = q("select * from site where site_flags in (%d, %d) and site_url != '%s' and site_type = %d and site_dead = 0", intval(DIRECTORY_MODE_PRIMARY), intval(DIRECTORY_MODE_SECONDARY), dbesc(z_root()), @@ -245,7 +249,6 @@ class Libzotdir { $syncdate = (($rr['site_sync'] <= NULL_DATE) ? datetime_convert('UTC','UTC','now - 2 days') : $rr['site_sync']); $x = z_fetch_url($rr['site_directory'] . '?f=&sync=' . urlencode($syncdate) . (($token) ? '&t=' . $token : '')); - if (! $x['success']) continue; @@ -273,7 +276,7 @@ class Libzotdir { $ud_flags |= UPDATE_FLAGS_DELETED; if (is_array($t['flags']) && in_array('forced',$t['flags'])) $ud_flags |= UPDATE_FLAGS_FORCED; - + $z = q("insert into updates ( ud_hash, ud_guid, ud_date, ud_flags, ud_addr ) values ( '%s', '%s', '%s', %d, '%s' ) ", dbesc($t['hash']), @@ -338,7 +341,7 @@ class Libzotdir { static function local_dir_update($uid, $force) { - + logger('local_dir_update: uid: ' . $uid, LOGGER_DEBUG); $p = q("select channel.channel_hash, channel_address, channel_timezone, channel_portable_id, profile.* from profile left join channel on channel_id = uid where uid = %d and is_default = 1", @@ -354,7 +357,7 @@ class Libzotdir { $profile['description'] = $p[0]['pdesc']; $profile['birthday'] = $p[0]['dob']; - if ($age = age($p[0]['dob'],$p[0]['channel_timezone'],'')) + if ($age = age($p[0]['dob'],$p[0]['channel_timezone'],'')) $profile['age'] = $age; $profile['gender'] = $p[0]['gender']; @@ -415,7 +418,7 @@ class Libzotdir { dbesc($legacy_hash) ); } - + } $ud_hash = random_string() . '@' . \App::get_hostname(); @@ -446,7 +449,7 @@ class Libzotdir { $arr['xprof_hash'] = $hash; $arr['xprof_dob'] = (($profile['birthday'] === '0000-00-00') ? $profile['birthday'] : datetime_convert('','',$profile['birthday'],'Y-m-d')); // !!!! check this for 0000 year $arr['xprof_age'] = (($profile['age']) ? intval($profile['age']) : 0); - $arr['xprof_desc'] = (($profile['description']) ? htmlspecialchars($profile['description'], ENT_COMPAT,'UTF-8',false) : ''); + $arr['xprof_desc'] = (($profile['description']) ? htmlspecialchars($profile['description'], ENT_COMPAT,'UTF-8',false) : ''); $arr['xprof_gender'] = (($profile['gender']) ? htmlspecialchars($profile['gender'], ENT_COMPAT,'UTF-8',false) : ''); $arr['xprof_marital'] = (($profile['marital']) ? htmlspecialchars($profile['marital'], ENT_COMPAT,'UTF-8',false) : ''); $arr['xprof_sexual'] = (($profile['sexual']) ? htmlspecialchars($profile['sexual'], ENT_COMPAT,'UTF-8',false) : ''); @@ -641,7 +644,7 @@ class Libzotdir { dbesc(datetime_convert()), intval($flags), dbesc($addr) - ); + ); } else { q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and not (ud_flags & %d)>0 ", diff --git a/Zotlabs/Lib/NativeWiki.php b/Zotlabs/Lib/NativeWiki.php index 3ec032075..c3032d02c 100644 --- a/Zotlabs/Lib/NativeWiki.php +++ b/Zotlabs/Lib/NativeWiki.php @@ -9,7 +9,7 @@ define ( 'NWIKI_ITEM_RESOURCE_TYPE', 'nwiki' ); class NativeWiki { - static public function listwikis($channel, $observer_hash) { + public static function listwikis($channel, $observer_hash) { $sql_extra = item_permissions_sql($channel['channel_id'], $observer_hash); $wikis = q("SELECT * FROM item @@ -40,7 +40,7 @@ class NativeWiki { } - function create_wiki($channel, $observer_hash, $wiki, $acl) { + public static function create_wiki($channel, $observer_hash, $wiki, $acl) { $resource_id = new_uuid(); $uuid = new_uuid(); @@ -101,7 +101,7 @@ class NativeWiki { } } - function update_wiki($channel_id, $observer_hash, $arr, $acl) { + public static function update_wiki($channel_id, $observer_hash, $arr, $acl) { $w = self::get_wiki($channel_id, $observer_hash, $arr['resource_id']); $item = $w['wiki']; @@ -156,7 +156,7 @@ class NativeWiki { } } - static public function sync_a_wiki_item($uid,$id,$resource_id) { + public static function sync_a_wiki_item($uid,$id,$resource_id) { $r = q("SELECT * from item WHERE uid = %d AND ( id = %d OR ( resource_type = '%s' and resource_id = '%s' )) ", @@ -185,7 +185,7 @@ class NativeWiki { } } - function delete_wiki($channel_id,$observer_hash,$resource_id) { + public static function delete_wiki($channel_id,$observer_hash,$resource_id) { $w = self::get_wiki($channel_id,$observer_hash,$resource_id); $item = $w['wiki']; @@ -202,7 +202,7 @@ class NativeWiki { } - static public function get_wiki($channel_id, $observer_hash, $resource_id) { + public static function get_wiki($channel_id, $observer_hash, $resource_id) { $sql_extra = item_permissions_sql($channel_id,$observer_hash); @@ -236,7 +236,7 @@ class NativeWiki { } - static public function exists_by_name($uid, $urlName) { + public static function exists_by_name($uid, $urlName) { $sql_extra = item_permissions_sql($uid); @@ -258,7 +258,7 @@ class NativeWiki { } - static public function get_permissions($resource_id, $owner_id, $observer_hash) { + public static function get_permissions($resource_id, $owner_id, $observer_hash) { // TODO: For now, only the owner can edit $sql_extra = item_permissions_sql($owner_id, $observer_hash); diff --git a/Zotlabs/Lib/NativeWikiPage.php b/Zotlabs/Lib/NativeWikiPage.php index d84cc50a8..71f193b70 100644 --- a/Zotlabs/Lib/NativeWikiPage.php +++ b/Zotlabs/Lib/NativeWikiPage.php @@ -163,7 +163,7 @@ class NativeWikiPage { return [ 'success' => true, 'page' => $page ]; } - return [ 'success' => false, 'item_id' => $c['item_id'], 'message' => t('Page not found') ]; + return [ 'success' => false, 'message' => t('Page not found') ]; } @@ -339,7 +339,6 @@ class NativeWikiPage { } static public function save_page($arr) { - $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : ''); $content = ((array_key_exists('content',$arr)) ? $arr['content'] : ''); $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : ''); @@ -385,7 +384,7 @@ class NativeWikiPage { $ret = item_store($item, false, false); if($ret['item_id']) - return array('message' => '', 'item_id' => $ret['item_id'], 'filename' => $filename, 'success' => true); + return array('message' => '', 'item_id' => $ret['item_id'], 'filename' => $pageUrlName, 'success' => true); else return array('message' => t('Page update failed.'), 'success' => false); } @@ -432,12 +431,12 @@ class NativeWikiPage { $channel_id = ((array_key_exists('channel_id',$arr)) ? $arr['channel_id'] : 0); if (! $commitHash) { - return array('content' => $content, 'message' => 'No commit was provided', 'success' => false); + return array('message' => 'No commit was provided', 'success' => false); } $w = Zlib\NativeWiki::get_wiki($channel_id, $observer_hash, $resource_id); if (!$w['wiki']) { - return array('content' => $content, 'message' => 'Error reading wiki', 'success' => false); + return array('message' => 'Error reading wiki', 'success' => false); } $x = $arr; @@ -451,7 +450,7 @@ class NativeWikiPage { $content = $loaded['body']; return [ 'content' => $content, 'success' => true ]; } - return [ 'content' => $content, 'success' => false ]; + return [ 'success' => false ]; } } diff --git a/Zotlabs/Lib/Queue.php b/Zotlabs/Lib/Queue.php index 6acc58bc5..779719d8b 100644 --- a/Zotlabs/Lib/Queue.php +++ b/Zotlabs/Lib/Queue.php @@ -2,9 +2,6 @@ namespace Zotlabs\Lib; -use Zotlabs\Lib\Libzot; - - class Queue { static function update($id, $add_priority = 0) { @@ -39,7 +36,7 @@ class Queue { // queue item is less than 12 hours old, we'll schedule for fifteen // minutes. - $r = q("UPDATE outq SET outq_scheduled = '%s' WHERE outq_posturl = '%s'", + q("UPDATE outq SET outq_scheduled = '%s' WHERE outq_posturl = '%s'", dbesc(datetime_convert('UTC','UTC','now + 5 days')), dbesc($x[0]['outq_posturl']) ); @@ -88,7 +85,7 @@ class Queue { static function set_delivered($id,$channel = 0) { logger('queue: set delivered ' . $id,LOGGER_DEBUG); - $sql_extra = (($channel_id) ? " and outq_channel = " . intval($channel_id) . " " : ''); + $sql_extra = (($channel['channel_id']) ? " and outq_channel = " . intval($channel['channel_id']) . " " : ''); // Set the next scheduled run date so far in the future that it will be expired // long before it ever makes it back into the delivery chain. @@ -230,11 +227,10 @@ class Queue { logger('deliver: dest: ' . $outq['outq_posturl'], LOGGER_DEBUG); - if($outq['outq_posturl'] === z_root() . '/zot') { // local delivery $zot = new \Zotlabs\Zot6\Receiver(new \Zotlabs\Zot6\Zot6Handler(),$outq['outq_notify']); - $result = $zot->run(true); + $result = $zot->run(); logger('returned_json: ' . json_encode($result,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES), LOGGER_DATA); logger('deliver: local zot delivery succeeded to ' . $outq['outq_posturl']); Libzot::process_response($outq['outq_posturl'],[ 'success' => true, 'body' => json_encode($result) ], $outq); diff --git a/Zotlabs/Lib/Share.php b/Zotlabs/Lib/Share.php index d34c0eaba..b4cd5a194 100644 --- a/Zotlabs/Lib/Share.php +++ b/Zotlabs/Lib/Share.php @@ -2,8 +2,6 @@ namespace Zotlabs\Lib; -use Zotlabs\Lib\Activity; - class Share { private $item = null; diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index 024502d2a..b7eecbd94 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -35,7 +35,7 @@ class ThreadItem { public function __construct($data) { - + $this->data = $data; $this->toplevel = ($this->get_id() == $this->get_data_value('parent')); $this->threaded = get_config('system','thread_allow'); @@ -98,7 +98,7 @@ class ThreadItem { $conv = $this->get_conversation(); $observer = $conv->get_observer(); - $lock = (((intval($item['item_private'])) || (($item['uid'] == local_channel()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) + $lock = (((intval($item['item_private'])) || (($item['uid'] == local_channel()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) ? t('Private Message') : false); @@ -151,9 +151,9 @@ class ThreadItem { if($observer && $observer['xchan_hash'] - && ($observer['xchan_hash'] == $this->get_data_value('author_xchan') - || $observer['xchan_hash'] == $this->get_data_value('owner_xchan') - || $observer['xchan_hash'] == $this->get_data_value('source_xchan') + && ($observer['xchan_hash'] == $this->get_data_value('author_xchan') + || $observer['xchan_hash'] == $this->get_data_value('owner_xchan') + || $observer['xchan_hash'] == $this->get_data_value('source_xchan') || $this->get_data_value('uid') == local_channel())) $dropping = true; @@ -169,15 +169,15 @@ class ThreadItem { 'dropping' => $dropping, 'delete' => t('Delete'), ); - } + } elseif(is_site_admin()) { $drop = [ 'dropping' => true, 'delete' => t('Admin Delete') ]; } // FIXME - if($observer_is_pageowner) { + if($observer_is_pageowner) { $multidrop = array( - 'select' => t('Select'), + 'select' => t('Select'), ); } @@ -223,7 +223,7 @@ class ThreadItem { if(! feature_enabled($conv->get_profile_owner(),'dislike')) unset($conv_responses['dislike']); - + $responses = get_responses($conv_responses,$response_verbs,$this,$item); $my_responses = []; @@ -254,7 +254,7 @@ class ThreadItem { } $showlike = ((x($conv_responses['like'],$item['mid'])) ? format_like($conv_responses['like'][$item['mid']],$conv_responses['like'][$item['mid'] . '-l'],'like',$item['mid']) : ''); - $showdislike = ((x($conv_responses['dislike'],$item['mid']) && feature_enabled($conv->get_profile_owner(),'dislike')) + $showdislike = ((x($conv_responses['dislike'],$item['mid']) && feature_enabled($conv->get_profile_owner(),'dislike')) ? format_like($conv_responses['dislike'][$item['mid']],$conv_responses['dislike'][$item['mid'] . '-l'],'dislike',$item['mid']) : ''); /* @@ -264,7 +264,7 @@ class ThreadItem { */ $this->check_wall_to_wall(); - + if($this->is_toplevel()) { // FIXME check this permission if(($conv->get_profile_owner() == local_channel()) && (! array_key_exists('real_uid',$item))) { @@ -275,7 +275,7 @@ class ThreadItem { ); } - } + } else { $is_comment = true; } @@ -349,7 +349,7 @@ class ThreadItem { // $viewthread (below) is only valid in list mode. If this is a channel page, build the thread viewing link // since we can't depend on llink or plink pointing to the right local location. - + $owner_address = substr($item['owner']['xchan_addr'],0,strpos($item['owner']['xchan_addr'],'@')); $viewthread = $item['llink']; if($conv->get_mode() === 'channel') @@ -357,7 +357,7 @@ class ThreadItem { $comment_count_txt = sprintf( tt('%d comment','%d comments',$total_children),$total_children ); $list_unseen_txt = (($unseen_comments) ? sprintf( t('%d unseen'),$unseen_comments) : ''); - + $children = $this->get_children(); $has_tags = (($body['tags'] || $body['categories'] || $body['mentions'] || $body['attachments'] || $body['folders']) ? true : false); @@ -386,7 +386,7 @@ class ThreadItem { $tmp_item = array( 'template' => $this->get_template(), 'mode' => $mode, - 'item_type' => intval($item['item_type']), + 'item_type' => intval($item['item_type']), //'type' => implode("",array_slice(explode("/",$item['verb']),-1)), 'body' => $body['html'], 'tags' => $body['tags'], @@ -518,8 +518,8 @@ class ThreadItem { // needed for scroll to comment from notification but needs more work // as we do not want to open all comments unless there is actually an #item_xx anchor -// and the url fragment is not sent to the server. -// if(in_array(\App::$module,['display','update_display'])) +// and the url fragment is not sent to the server. +// if(in_array(\App::$module,['display','update_display'])) // $visible_comments = 99999; if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) { @@ -539,7 +539,7 @@ class ThreadItem { } } } - + $result['private'] = $item['item_private']; $result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); @@ -554,7 +554,7 @@ class ThreadItem { return $result; } - + public function get_id() { return $this->get_data_value('id'); } @@ -609,7 +609,7 @@ class ThreadItem { if(activity_match($item->get_data_value('verb'),ACTIVITY_LIKE) || activity_match($item->get_data_value('verb'),ACTIVITY_DISLIKE)) { return false; } - + $item->set_parent($this); $this->children[] = $item; return end($this->children); @@ -683,7 +683,7 @@ class ThreadItem { */ public function set_conversation($conv) { $previous_mode = ($this->conversation ? $this->conversation->get_mode() : ''); - + $this->conversation = $conv; // Set it on our children too @@ -792,7 +792,7 @@ class ThreadItem { if(!$this->is_toplevel() && !get_config('system','thread_allow')) { return ''; } - + $comment_box = ''; $conv = $this->get_conversation(); @@ -808,7 +808,7 @@ class ThreadItem { $arr = array('comment_buttons' => '','id' => $this->get_id()); call_hooks('comment_buttons',$arr); $comment_buttons = $arr['comment_buttons']; - + $comment_box = replace_macros($template,array( '$return_path' => '', '$threaded' => $this->is_threaded(), @@ -865,7 +865,7 @@ class ThreadItem { if($conv->get_mode() === 'channel') return; - + if($this->is_toplevel() && ($this->get_data_value('author_xchan') != $this->get_data_value('owner_xchan'))) { $this->owner_url = chanlink_hash($this->data['owner']['xchan_hash']); $this->owner_photo = $this->data['owner']['xchan_photo_m']; diff --git a/Zotlabs/Lib/Verify.php b/Zotlabs/Lib/Verify.php index 8703e29e6..f8dc8f8d4 100644 --- a/Zotlabs/Lib/Verify.php +++ b/Zotlabs/Lib/Verify.php @@ -5,7 +5,7 @@ namespace Zotlabs\Lib; class Verify { - function create($type,$channel_id,$token,$meta) { + public static function create($type,$channel_id,$token,$meta) { return q("insert into verify ( vtype, channel, token, meta, created ) values ( '%s', %d, '%s', '%s', '%s' )", dbesc($type), intval($channel_id), @@ -15,7 +15,7 @@ class Verify { ); } - function match($type,$channel_id,$token,$meta) { + public static function match($type,$channel_id,$token,$meta) { $r = q("select id from verify where vtype = '%s' and channel = %d and token = '%s' and meta = '%s' limit 1", dbesc($type), intval($channel_id), @@ -31,7 +31,7 @@ class Verify { return false; } - function get_meta($type,$channel_id,$token) { + public static function get_meta($type,$channel_id,$token) { $r = q("select id, meta from verify where vtype = '%s' and channel = %d and token = '%s' limit 1", dbesc($type), intval($channel_id), @@ -52,7 +52,7 @@ class Verify { * @param string $type Verify type * @param string $interval SQL compatible time interval */ - function purge($type, $interval) { + public static function purge($type, $interval) { q("delete from verify where vtype = '%s' and created < %s - INTERVAL %s", dbesc($type), db_utcnow(), diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php index e0206bd43..fb95b0504 100644 --- a/Zotlabs/Module/Acl.php +++ b/Zotlabs/Module/Acl.php @@ -2,6 +2,8 @@ namespace Zotlabs\Module; +use Zotlabs\Lib\Libzotdir; + require_once 'include/acl_selectors.php'; require_once 'include/group.php'; @@ -46,20 +48,20 @@ class Acl extends \Zotlabs\Web\Controller { // 'a' => autocomplete connections (mod_connections, mod_poke, mod_sources, mod_photos) // 'x' => nav search bar autocomplete (match any xchan) // $_REQUEST['query'] contains autocomplete search text. - - // List of channels whose connections to also suggest, + + // List of channels whose connections to also suggest, // e.g. currently viewed channel or channels mentioned in a post $extra_channels = (x($_REQUEST,'extra_channels') ? $_REQUEST['extra_channels'] : array()); - + // The different autocomplete libraries use different names for the search text // parameter. Internally we'll use $search to represent the search text no matter - // what request variable it was attached to. - + // what request variable it was attached to. + if(array_key_exists('query',$_REQUEST)) { $search = $_REQUEST['query']; } - + if( (! local_channel()) && (! in_array($type, [ 'x', 'c', 'f' ]))) killme(); @@ -68,7 +70,7 @@ class Acl extends \Zotlabs\Web\Controller { if(in_array($type, [ 'm', 'a', 'c', 'f' ])) { // These queries require permission checking. We'll create a simple array of xchan_hash for those with - // the requisite permissions which we can check against. + // the requisite permissions which we can check against. $x = q("select xchan from abconfig where chan = %d and cat = 'their_perms' and k = '%s' and v = '1'", intval(local_channel()), @@ -85,34 +87,34 @@ class Acl extends \Zotlabs\Web\Controller { $sql_extra2 = "AND ( xchan_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'%" . dbesc(punify($search)) . ((strpos($search,'@') === false) ? "%@%'" : "%'")) . ") "; $sql_extra2_xchan = "AND ( xchan_name LIKE " . protect_sprintf( "'" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'" . dbesc(punify($search)) . ((strpos($search,'@') === false) ? "%@%'" : "%'")) . ") "; - // This horrible mess is needed because position also returns 0 if nothing is found. + // This horrible mess is needed because position also returns 0 if nothing is found. // Would be MUCH easier if it instead returned a very large value - // Otherwise we could just + // Otherwise we could just // order by LEAST(POSITION($search IN xchan_name),POSITION($search IN xchan_addr)). - $order_extra2 = "CASE WHEN xchan_name LIKE " - . protect_sprintf( "'%" . dbesc($search) . "%'" ) - . " then POSITION('" . protect_sprintf(dbesc($search)) + $order_extra2 = "CASE WHEN xchan_name LIKE " + . protect_sprintf( "'%" . dbesc($search) . "%'" ) + . " then POSITION('" . protect_sprintf(dbesc($search)) . "' IN xchan_name) else position('" . protect_sprintf(dbesc(punify($search))) . "' IN xchan_addr) end, "; $sql_extra3 = "AND ( xchan_addr like " . protect_sprintf( "'%" . dbesc(punify($search)) . "%'" ) . " OR xchan_name like " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ) "; - + } else { $sql_extra = $sql_extra2 = $sql_extra3 = ""; } - - + + $groups = array(); $contacts = array(); - + if($type == '' || $type == 'g') { // virtual groups based on private profile viewing ability $r = q("select id, profile_guid, profile_name from profile where is_default = 0 and uid = %d", intval(local_channel()) - ); + ); if($r) { foreach($r as $rv) { $groups[] = array( @@ -130,19 +132,19 @@ class Acl extends \Zotlabs\Web\Controller { // Normal privacy groups $r = q("SELECT pgrp.id, pgrp.hash, pgrp.gname - FROM pgrp, pgrp_member - WHERE pgrp.deleted = 0 AND pgrp.uid = %d + FROM pgrp, pgrp_member + WHERE pgrp.deleted = 0 AND pgrp.uid = %d AND pgrp_member.gid = pgrp.id $sql_extra GROUP BY pgrp.id - ORDER BY pgrp.gname + ORDER BY pgrp.gname LIMIT %d OFFSET %d", intval(local_channel()), intval($count), intval($start) ); - if($r) { + if($r) { foreach($r as $g){ // logger('acl: group: ' . $g['gname'] . ' members: ' . group_get_members_xchan($g['id'])); $groups[] = array( @@ -157,10 +159,10 @@ class Acl extends \Zotlabs\Web\Controller { } } } - + if($type == '' || $type == 'c' || $type === 'f') { - $extra_channels_sql = ''; + $extra_channels_sql = ''; // Only include channels who allow the observer to view their connections if($extra_channels) { @@ -172,7 +174,7 @@ class Acl extends \Zotlabs\Web\Controller { } } } - + // Getting info from the abook is better for local users because it contains info about permissions if(local_channel()) { if($extra_channels_sql != '') @@ -199,7 +201,7 @@ class Acl extends \Zotlabs\Web\Controller { $r2 = array(); foreach($r1 as $rr) { $x = atoken_xchan($rr); - $r2[] = [ + $r2[] = [ 'id' => 'a' . $rr['atoken_id'] , 'hash' => $x['xchan_hash'], 'name' => $x['xchan_name'], @@ -211,12 +213,12 @@ class Acl extends \Zotlabs\Web\Controller { 'abook_self' => 0 ]; } - } + } // add connections - - $r = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, xchan_pubforum, abook_flags, abook_self - FROM abook left join xchan on abook_xchan = xchan_hash + + $r = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_network as net, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, xchan_pubforum, abook_flags, abook_self + FROM abook left join xchan on abook_xchan = xchan_hash WHERE (abook_channel = %d $extra_channels_sql) AND abook_blocked = 0 and abook_pending = 0 and xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc" , intval(local_channel()) ); @@ -225,28 +227,28 @@ class Acl extends \Zotlabs\Web\Controller { } else { // Visitors - $r = q("SELECT xchan_hash as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags, 0 as abook_self + $r = q("SELECT xchan_hash as id, xchan_hash as hash, xchan_name as name, xchan_network as net, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags, 0 as abook_self FROM xchan left join xlink on xlink_link = xchan_hash WHERE xlink_xchan = '%s' AND xchan_deleted = 0 $sql_extra2_xchan order by $order_extra2 xchan_name asc" , dbesc(get_observer_hash()) ); - + // Find contacts of extra channels // This is probably more complicated than it needs to be if($extra_channels_sql) { // Build a list of hashes that we got previously so we don't get them again $known_hashes = array("'".get_observer_hash()."'"); if($r) - foreach($r as $rr) + foreach($r as $rr) $known_hashes[] = "'".$rr['hash']."'"; $known_hashes_sql = 'AND xchan_hash not in ('.join(',',$known_hashes).')'; - - $r2 = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags, abook_self - FROM abook left join xchan on abook_xchan = xchan_hash + + $r2 = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_network as net, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags, abook_self + FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel IN ($extra_channels_sql) $known_hashes_sql AND abook_blocked = 0 and abook_pending = 0 and abook_hidden = 0 and xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc"); if($r2) $r = array_merge($r,$r2); - + // Sort accoring to match position, then alphabetically. This could be avoided if the above two SQL queries could be combined into one, and the sorting could be done on the SQl server (like in the case of a local user) $matchpos = function($x) use($search) { $namepos = strpos($x['name'],$search); @@ -269,22 +271,22 @@ class Acl extends \Zotlabs\Web\Controller { } } if((count($r) < 100) && $type == 'c') { - $r2 = q("SELECT substr(xchan_hash,1,18) as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags, 0 as abook_self - FROM xchan + $r2 = q("SELECT substr(xchan_hash,1,18) as id, xchan_hash as hash, xchan_name as name, xchan_network as net, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags, 0 as abook_self + FROM xchan WHERE xchan_deleted = 0 and not xchan_network in ('rss','anon','unknown') $sql_extra2_xchan order by $order_extra2 xchan_name asc" ); if($r2) { $r = array_merge($r,$r2); $r = unique_multidim_array($r,'hash'); - } + } } } elseif($type == 'm') { $r = array(); - $z = q("SELECT xchan_hash as hash, xchan_name as name, xchan_addr as nick, xchan_photo_s as micro, xchan_url as url + $z = q("SELECT xchan_hash as hash, xchan_name as name, xchan_network as net, xchan_addr as nick, xchan_photo_s as micro, xchan_url as url FROM abook left join xchan on abook_xchan = xchan_hash - WHERE abook_channel = %d + WHERE abook_channel = %d and xchan_deleted = 0 and xchan_network IN ('zot', 'diaspora', 'friendica-over-diaspora') $sql_extra3 @@ -298,18 +300,18 @@ class Acl extends \Zotlabs\Web\Controller { } } } - + } elseif($type == 'a') { - - $r = q("SELECT abook_id as id, xchan_name as name, xchan_hash as hash, xchan_addr as nick, xchan_photo_s as micro, xchan_network as network, xchan_url as url, xchan_addr as attag , abook_their_perms FROM abook left join xchan on abook_xchan = xchan_hash + + $r = q("SELECT abook_id as id, xchan_name as name, xchan_network as net, xchan_hash as hash, xchan_addr as nick, xchan_photo_s as micro, xchan_url as url, xchan_addr as attag , abook_their_perms FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and xchan_deleted = 0 $sql_extra3 ORDER BY xchan_name ASC ", intval(local_channel()) ); - + } elseif($type == 'x') { $r = $this->navbar_complete($a); @@ -323,7 +325,7 @@ class Acl extends \Zotlabs\Web\Controller { ); } } - + $o = array( 'start' => $start, 'count' => $count, @@ -334,27 +336,34 @@ class Acl extends \Zotlabs\Web\Controller { } else $r = array(); - + if($r) { + $i = count($contacts); + $x = []; foreach($r as $g) { - - if(in_array($g['network'],['rss','anon','unknown']) && ($type != 'a')) + + if(in_array($g['net'],['rss','anon','unknown']) && ($type != 'a')) continue; $g['hash'] = urlencode($g['hash']); - + if(! $g['nick']) { $g['nick'] = $g['url']; } + $clink = ($g['nick']) ? $g['nick'] : $g['url']; + $lkey = md5($clink); + if (! array_key_exists($lkey, $x)) + $x[$lkey] = $i; + if(in_array($g['hash'],$permitted) && $type === 'f' && (! $noforums)) { - $contacts[] = array( + $contacts[$i] = array( "type" => "c", "photo" => "images/twopeople.png", "name" => $g['name'], "id" => urlencode($g['id']), "xid" => $g['hash'], - "link" => (($g['nick']) ? $g['nick'] : $g['url']), + "link" => $clink, "nick" => substr($g['nick'],0,strpos($g['nick'],'@')), "self" => (intval($g['abook_self']) ? 'abook-self' : ''), "taggable" => 'taggable', @@ -362,24 +371,28 @@ class Acl extends \Zotlabs\Web\Controller { ); } if($type !== 'f') { - $contacts[] = array( - "type" => "c", - "photo" => $g['micro'], - "name" => $g['name'], - "id" => urlencode($g['id']), - "xid" => $g['hash'], - "link" => (($g['nick']) ? $g['nick'] : $g['url']), - "nick" => ((strpos($g['nick'],'@')) ? substr($g['nick'],0,strpos($g['nick'],'@')) : $g['nick']), - "self" => (intval($g['abook_self']) ? 'abook-self' : ''), - "taggable" => '', - "label" => '', - ); + if (! array_key_exists($x[$lkey], $contacts) || ($contacts[$x[$lkey]]['net'] !== 'zot6' && ($g['net'] == 'zot6' || $g['net'] == 'zot'))) { + $contacts[$x[$lkey]] = array( + "type" => "c", + "photo" => $g['micro'], + "name" => $g['name'], + "id" => urlencode($g['id']), + "xid" => $g['hash'], + "link" => $clink, + "nick" => ((strpos($g['nick'],'@')) ? substr($g['nick'],0,strpos($g['nick'],'@')) : $g['nick']), + "self" => (intval($g['abook_self']) ? 'abook-self' : ''), + "taggable" => '', + "label" => '', + "net" => $g['net'] + ); + } } - } + $i++; + } } - + $items = array_merge($groups, $contacts); - + $o = array( 'start' => $start, 'count' => $count, @@ -393,50 +406,50 @@ class Acl extends \Zotlabs\Web\Controller { function navbar_complete(&$a) { - + // logger('navbar_complete'); - + if(observer_prohibited()) { return; } - + $dirmode = intval(get_config('system','directory_mode')); $search = ((x($_REQUEST,'search')) ? htmlentities($_REQUEST['search'],ENT_COMPAT,'UTF-8',false) : ''); if(! $search || mb_strlen($search) < 2) return array(); - + $star = false; $address = false; - + if(substr($search,0,1) === '@') $search = substr($search,1); - + if(substr($search,0,1) === '*') { $star = true; $search = substr($search,1); } - + if(strpos($search,'@') !== false) { $address = true; } - + if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) { $url = z_root() . '/dirsearch'; } - + if(! $url) { require_once("include/dir_fns.php"); - $directory = find_upstream_directory($dirmode); + $directory = Libzotdir::find_upstream_directory($dirmode); $url = $directory['url'] . '/dirsearch'; } $token = get_config('system','realm_token'); - + $count = (x($_REQUEST,'count') ? $_REQUEST['count'] : 100); if($url) { $query = $url . '?f=' . (($token) ? '&t=' . urlencode($token) : ''); $query .= '&name=' . urlencode($search) . "&limit=$count" . (($address) ? '&address=' . urlencode(punify($search)) : ''); - + $x = z_fetch_url($query); if($x['success']) { $t = 0; diff --git a/Zotlabs/Module/Attach.php b/Zotlabs/Module/Attach.php index 0bf7689be..5f5779b51 100644 --- a/Zotlabs/Module/Attach.php +++ b/Zotlabs/Module/Attach.php @@ -1,4 +1,5 @@ <?php + namespace Zotlabs\Module; use ZipArchive; @@ -12,25 +13,24 @@ class Attach extends Controller { function post() { - $attach_ids = ((x($_REQUEST, 'attach_ids')) ? $_REQUEST['attach_ids'] : []); + $attach_ids = ((x($_REQUEST, 'attach_ids')) ? $_REQUEST['attach_ids'] : []); $attach_path = ((x($_REQUEST, 'attach_path')) ? $_REQUEST['attach_path'] : ''); + $channel_id = ((x($_REQUEST, 'channel_id')) ? intval($_REQUEST['channel_id']) : 0); + $channel = channelx_by_n($channel_id); - $channel_id = ((x($_REQUEST, 'channel_id')) ? intval($_REQUEST['channel_id']) : 0); - $channel = channelx_by_n($channel_id); - - if (! $channel) { + if (!$channel) { notice(t('Channel not found.') . EOL); return; } - $strip_str = '/cloud/' . $channel['channel_address'] . '/'; - $count = strlen($strip_str); + $strip_str = '/cloud/' . $channel['channel_address'] . '/'; + $count = strlen($strip_str); $attach_path = substr($attach_path, $count); if ($attach_ids) { $zip_dir = 'store/[data]/' . $channel['channel_address'] . '/tmp'; - if (! is_dir($zip_dir)) + if (!is_dir($zip_dir)) mkdir($zip_dir, STORAGE_DEFAULT_PERMISSIONS, true); $token = random_string(32); @@ -48,14 +48,14 @@ class Attach extends Controller { $meta = [ 'zip_filename' => $zip_filename, - 'zip_path' => $zip_path + 'zip_path' => $zip_path ]; Verify::create('zip_token', 0, $token, json_encode($meta)); json_return_and_die([ 'success' => true, - 'token' => $token + 'token' => $token ]); } @@ -64,25 +64,29 @@ class Attach extends Controller { function get() { - if(argc() < 2) { - notice( t('Item not available.') . EOL); + if (argc() < 2) { + notice(t('Item not available.') . EOL); return; } - if(argv(1) === 'download') { + $token = ((x($_REQUEST, 'token')) ? $_REQUEST['token'] : ''); - $token = ((x($_REQUEST, 'token')) ? $_REQUEST['token'] : ''); + if (argv(1) === 'download') { $meta = Verify::get_meta('zip_token', 0, $token); + + if (!$meta) + killme(); + $meta = json_decode($meta, true); header('Content-Type: application/zip'); - header('Content-Disposition: attachment; filename="'. $meta['zip_filename'] . '"'); + header('Content-Disposition: attachment; filename="' . $meta['zip_filename'] . '"'); header('Content-Length: ' . filesize($meta['zip_path'])); $istream = fopen($meta['zip_path'], 'rb'); $ostream = fopen('php://output', 'wb'); - if($istream && $ostream) { - pipe_streams($istream,$ostream); + if ($istream && $ostream) { + pipe_streams($istream, $ostream); fclose($istream); fclose($ostream); } @@ -91,10 +95,10 @@ class Attach extends Controller { killme(); } - $r = attach_by_hash(argv(1),get_observer_hash(),((argc() > 2) ? intval(argv(2)) : 0)); + $r = attach_by_hash(argv(1), get_observer_hash(), ((argc() > 2) ? intval(argv(2)) : 0)); - if(! $r['success']) { - notice( $r['message'] . EOL); + if (!$r['success']) { + notice($r['message'] . EOL); return; } @@ -102,28 +106,28 @@ class Attach extends Controller { intval($r['data']['uid']) ); - if(! $c) + if (!$c) return; - $unsafe_types = array('text/html','text/css','application/javascript'); + $unsafe_types = array('text/html', 'text/css', 'application/javascript'); - if(in_array($r['data']['filetype'],$unsafe_types) && (! channel_codeallowed($r['data']['uid']))) { - header('Content-Type: text/plain'); + if (in_array($r['data']['filetype'], $unsafe_types) && (!channel_codeallowed($r['data']['uid']))) { + header('Content-Type: text/plain'); } else { header('Content-Type: ' . $r['data']['filetype']); } header('Content-Disposition: attachment; filename="' . $r['data']['filename'] . '"'); - if(intval($r['data']['os_storage'])) { + if (intval($r['data']['os_storage'])) { $fname = $r['data']['content']; - if(strpos($fname,'store') !== false) - $istream = fopen($fname,'rb'); + if (strpos($fname, 'store') !== false) + $istream = fopen($fname, 'rb'); else - $istream = fopen('store/' . $c[0]['channel_address'] . '/' . $fname,'rb'); - $ostream = fopen('php://output','wb'); - if($istream && $ostream) { - pipe_streams($istream,$ostream); + $istream = fopen('store/' . $c[0]['channel_address'] . '/' . $fname, 'rb'); + $ostream = fopen('php://output', 'wb'); + if ($istream && $ostream) { + pipe_streams($istream, $ostream); fclose($istream); fclose($ostream); } @@ -137,14 +141,14 @@ class Attach extends Controller { public function zip_archive_handler($zip, $attach_ids, $attach_path, $pass = 1) { $observer_hash = get_observer_hash(); - $single = ((count($attach_ids) == 1) ? true : false); + $single = ((count($attach_ids) == 1) ? true : false); $download_name = 'download.zip'; - foreach($attach_ids as $attach_id) { + foreach ($attach_ids as $attach_id) { $r = attach_by_id($attach_id, $observer_hash); - if (! $r['success']) { + if (!$r['success']) { continue; } @@ -155,8 +159,8 @@ class Attach extends Controller { if ($attach_path) { $strip_str = $attach_path . '/'; - $count = strlen($strip_str); - $zip_path = substr($r['data']['display_path'], $count); + $count = strlen($strip_str); + $zip_path = substr($r['data']['display_path'], $count); } if ($r['data']['is_dir']) { @@ -172,6 +176,8 @@ class Attach extends Controller { else { $file_path = $r['data']['content']; $zip->addFile($file_path, $zip_path); + // compressing can be ressource intensive - just store the data + $zip->setCompressionName($zip_path, ZipArchive::CM_STORE); } } diff --git a/Zotlabs/Module/Cal.php b/Zotlabs/Module/Cal.php index 07bee38bd..65dba927b 100644 --- a/Zotlabs/Module/Cal.php +++ b/Zotlabs/Module/Cal.php @@ -37,8 +37,6 @@ class Cal extends Controller { $observer = App::get_observer(); App::$data['observer'] = $observer; - $observer_xchan = (($observer) ? $observer['xchan_hash'] : ''); - head_set_icon(App::$data['channel']['xchan_photo_s']); App::$page['htmlhead'] .= "<script> var profile_uid = " . ((App::$data['channel']) ? App::$data['channel']['channel_id'] : 0) . "; </script>" ; @@ -159,10 +157,10 @@ class Cal extends Controller { 'timezone' => $tz, 'start'=> $start, 'end' => $end, - 'drop' => $drop, + 'drop' => false, 'allDay' => (($rr['adjust']) ? 0 : 1), 'title' => html_entity_decode($rr['summary'], ENT_COMPAT, 'UTF-8'), - 'editable' => $edit ? true : false, + 'editable' => false, 'item' => $rr, 'plink' => [$rr['plink'], t('Link to source')], 'description' => html_entity_decode($rr['description'], ENT_COMPAT, 'UTF-8'), @@ -205,9 +203,9 @@ class Cal extends Controller { '$prev' => t('Previous'), '$next' => t('Next'), '$today' => t('Today'), - '$title' => $title, - '$dtstart' => $dtstart, - '$dtend' => $dtend, + '$title' => '', + '$dtstart' => '', + '$dtend' => '', '$nick' => $nick ]); diff --git a/Zotlabs/Module/Cdav.php b/Zotlabs/Module/Cdav.php index f7e43e436..fe697a526 100644 --- a/Zotlabs/Module/Cdav.php +++ b/Zotlabs/Module/Cdav.php @@ -50,7 +50,7 @@ class Cdav extends Controller { if($sigblock) { $keyId = str_replace('acct:','',$sigblock['keyId']); if($keyId) { - $r = q("select * from hubloc where hubloc_addr = '%s'", + $r = q("select * from hubloc where hubloc_id_url = '%s'", dbesc($keyId) ); if($r) { @@ -284,7 +284,7 @@ class Cdav extends Controller { $server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin()); // And off we go! - $server->exec(); + $server->start(); killme(); diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index 7ff394750..fe7341e52 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -25,7 +25,7 @@ class Channel extends Controller { function init() { - if(in_array(substr($_GET['search'],0,1),[ '@', '!', '?'])) + if(in_array(substr($_GET['search'],0,1),[ '@', '!', '?'])) goaway('search' . '?f=&search=' . $_GET['search']); $which = null; @@ -56,10 +56,10 @@ class Channel extends Controller { http_status_exit(404, 'Not found'); } - // handle zot6 channel discovery + // handle zot6 channel discovery if(Libzot::is_zot_request()) { - + $sigdata = HTTPSig::verify(file_get_contents('php://input'), EMPTY_STR, 'zot6'); if($sigdata && $sigdata['signer'] && $sigdata['header_valid']) { @@ -76,8 +76,8 @@ class Channel extends Controller { $data = json_encode(Libzot::zotinfo([ 'address' => $channel['channel_address'] ])); } - $headers = [ - 'Content-Type' => 'application/x-zot+json', + $headers = [ + 'Content-Type' => 'application/x-zot+json', 'Digest' => HTTPSig::generate_digest_header($data), '(request-target)' => strtolower($_SERVER['REQUEST_METHOD']) . ' ' . $_SERVER['REQUEST_URI'] ]; @@ -93,15 +93,15 @@ class Channel extends Controller { $profile = argv(1); } - head_add_link( [ - 'rel' => 'alternate', + head_add_link( [ + 'rel' => 'alternate', 'type' => 'application/atom+xml', 'title' => t('Posts and comments'), 'href' => z_root() . '/feed/' . $which ]); - head_add_link( [ - 'rel' => 'alternate', + head_add_link( [ + 'rel' => 'alternate', 'type' => 'application/atom+xml', 'title' => t('Only posts'), 'href' => z_root() . '/feed/' . $which . '?f=&top=1' @@ -111,18 +111,18 @@ class Channel extends Controller { // Run profile_load() here to make sure the theme is set before // we start loading content profile_load($which,$profile); - + // Add Opengraph markup $mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : ''); if(strpos($mid,'b64.') === 0) $mid = @base64url_decode(substr($mid,4)); - + if($mid) $r = q("SELECT * FROM item WHERE mid = '%s' AND uid = %d AND item_private = 0 LIMIT 1", dbesc($mid), intval($channel['channel_id']) ); - + opengraph_add_meta($r ? $r[0] : [], $channel); } @@ -233,7 +233,7 @@ class Channel extends Controller { /** * Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups */ - + $item_normal = " and item.item_hidden = 0 and item.item_type = 0 and item.item_deleted = 0 and item.item_unpublished = 0 and item.item_pending_remove = 0 and item.item_blocked = 0 "; @@ -266,7 +266,7 @@ class Channel extends Controller { } } - head_add_link([ + head_add_link([ 'rel' => 'alternate', 'type' => 'application/json+oembed', 'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . App::$query_string), @@ -333,12 +333,12 @@ class Channel extends Controller { } } else { - $r = q("SELECT DISTINCT item.parent AS item_id, $ordering FROM item + $r = q("SELECT DISTINCT item.parent AS item_id, $ordering FROM item left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids ) WHERE true and item.uid = %d $item_normal AND (abook.abook_blocked = 0 or abook.abook_flags is null) AND item.item_wall = 1 AND item.item_thread_top = 1 - $sql_extra $sql_extra2 + $sql_extra $sql_extra2 ORDER BY $ordering DESC, item_id $pager_sql ", intval(App::$profile['profile_uid']) ); @@ -375,6 +375,15 @@ class Channel extends Controller { $items = array(); } + // Add pinned content + if(! x($_REQUEST,'mid') && ! $search) { + $pinned = new \Zotlabs\Widget\Pinned; + $r = $pinned->widget(intval(App::$profile['profile_uid']), [ITEM_TYPE_POST]); + $o .= $r['html']; + } + + $mode = (($search) ? 'search' : 'channel'); + if((! $update) && (! $load)) { if($decoded) @@ -421,20 +430,11 @@ class Channel extends Controller { '$net' => '', '$dend' => $datequery, '$dbegin' => $datequery2, - '$conv_mode' => 'channel' + '$conv_mode' => 'channel', + '$page_mode' => $page_mode )); - } - // Add pinned content - if(! x($_REQUEST,'mid') && ! $search) { - $pinned = new \Zotlabs\Widget\Pinned; - $r = $pinned->widget(intval(App::$profile['profile_uid']), [ITEM_TYPE_POST]); - $o .= $r['html']; - } - - $mode = (($search) ? 'search' : 'channel'); - if($update) { $o .= conversation($items,$mode,$update,$page_mode); } diff --git a/Zotlabs/Module/Channel_calendar.php b/Zotlabs/Module/Channel_calendar.php index ae4afb2f3..ac1545644 100644 --- a/Zotlabs/Module/Channel_calendar.php +++ b/Zotlabs/Module/Channel_calendar.php @@ -1,7 +1,12 @@ <?php + namespace Zotlabs\Module; +use App; +use Zotlabs\Web\Controller; use Zotlabs\Lib\Libsync; +use Zotlabs\Access\AccessList; +use Zotlabs\Daemon\Master; require_once('include/conversation.php'); require_once('include/bbcode.php'); @@ -10,37 +15,37 @@ require_once('include/event.php'); require_once('include/items.php'); require_once('include/html2plain.php'); -class Channel_calendar extends \Zotlabs\Web\Controller { +class Channel_calendar extends Controller { function post() { - - logger('post: ' . print_r($_REQUEST,true), LOGGER_DATA); - - if(! local_channel()) - return; - $event_id = ((x($_POST,'event_id')) ? intval($_POST['event_id']) : 0); - $event_hash = ((x($_POST,'event_hash')) ? $_POST['event_hash'] : ''); - - $xchan = ((x($_POST,'xchan')) ? dbesc($_POST['xchan']) : ''); + logger('post: ' . print_r($_REQUEST, true), LOGGER_DATA); + $uid = local_channel(); + if (!$uid) + return; + + $event_id = ((x($_POST, 'event_id')) ? intval($_POST['event_id']) : 0); + + $xchan = ((x($_POST, 'xchan')) ? dbesc($_POST['xchan']) : ''); + // only allow editing your own events. - if(($xchan) && ($xchan !== get_observer_hash())) + if (($xchan) && ($xchan !== get_observer_hash())) return; $categories = escape_tags(trim($_POST['categories'])); - + // allday events have adjust = 0, normal events have adjust = 1 $adjust = intval($_POST['adjust']); - $start = datetime_convert((($adjust) ? $tz : 'UTC'), 'UTC', escape_tags($_REQUEST['dtstart'])); - $finish = datetime_convert((($adjust) ? $tz : 'UTC'), 'UTC', escape_tags($_REQUEST['dtend'])); + $timezone = ((x($_POST, 'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : ''); + $tz = (($timezone) ? $timezone : date_default_timezone_get()); - $timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : ''); - $tz = (($timezone) ? $timezone : date_default_timezone_get()); + $start = datetime_convert((($adjust) ? $tz : 'UTC'), 'UTC', escape_tags($_REQUEST['dtstart'])); + $finish = datetime_convert((($adjust) ? $tz : 'UTC'), 'UTC', escape_tags($_REQUEST['dtend'])); - if(! $adjust) + if (!$adjust) $tz = 'UTC'; $summary = escape_tags(trim($_POST['summary'])); @@ -52,88 +57,86 @@ class Channel_calendar extends \Zotlabs\Web\Controller { // It won't hurt anything, but somebody will file a bug report // and we'll waste a bunch of time responding to it. Time that // could've been spent doing something else. - - if(strcmp($finish,$start) < 0 && !$nofinish) { - notice( t('Event can not end before it has started.') . EOL); - if(intval($_REQUEST['preview'])) { - echo( t('Unable to generate preview.')); + + if (strcmp($finish, $start) < 0) { + notice(t('Event can not end before it has started.') . EOL); + if (intval($_REQUEST['preview'])) { + echo(t('Unable to generate preview.')); } killme(); } - - if((! $summary) || (! $start)) { - notice( t('Event title and start time are required.') . EOL); - if(intval($_REQUEST['preview'])) { - echo( t('Unable to generate preview.')); + + if ((!$summary) || (!$start)) { + notice(t('Event title and start time are required.') . EOL); + if (intval($_REQUEST['preview'])) { + echo(t('Unable to generate preview.')); } killme(); } - $channel = \App::get_channel(); - - $acl = new \Zotlabs\Access\AccessList(false); - - if($event_id) { + $acl = new AccessList([]); + + if ($event_id) { $x = q("select * from event where id = %d and uid = %d limit 1", intval($event_id), - intval(local_channel()) + intval($uid) ); - if(! $x) { - notice( t('Event not found.') . EOL); - if(intval($_REQUEST['preview'])) { - echo( t('Unable to generate preview.')); + if (!$x) { + notice(t('Event not found.') . EOL); + if (intval($_REQUEST['preview'])) { + echo(t('Unable to generate preview.')); killme(); } return; } - + $acl->set($x[0]); - + $created = $x[0]['created']; - $edited = datetime_convert(); + $edited = datetime_convert(); } else { $created = $edited = datetime_convert(); $acl->set_from_array($_POST); } - + $post_tags = array(); - $channel = \App::get_channel(); - $ac = $acl->get(); + $channel = App::get_channel(); + $ac = $acl->get(); $str_contact_allow = $ac['allow_cid']; $str_group_allow = $ac['allow_gid']; - $str_contact_deny = $ac['deny_cid']; - $str_group_deny = $ac['deny_gid']; + $str_contact_deny = $ac['deny_cid']; + $str_group_deny = $ac['deny_gid']; $private = $acl->is_private(); require_once('include/text.php'); - $results = linkify_tags($desc, local_channel()); + $results = linkify_tags($desc, $uid); - if($results) { + if ($results) { // Set permissions based on tag replacements - set_linkified_perms($results, $str_contact_allow, $str_group_allow, local_channel(), false, $private); + set_linkified_perms($results, $str_contact_allow, $str_group_allow, $uid, false, $private); - foreach($results as $result) { + foreach ($results as $result) { $success = $result['success']; - if($success['replaced']) { + if ($success['replaced']) { $post_tags[] = array( - 'uid' => local_channel(), + 'uid' => $uid, 'ttype' => $success['termtype'], 'otype' => TERM_OBJ_POST, 'term' => $success['term'], 'url' => $success['url'] - ); + ); } } } - if(strlen($categories)) { - $cats = explode(',',$categories); - foreach($cats as $cat) { + if (strlen($categories)) { + $cats = explode(',', $categories); + foreach ($cats as $cat) { $post_tags[] = array( - 'uid' => local_channel(), + 'uid' => $uid, 'ttype' => TERM_CATEGORY, 'otype' => TERM_OBJ_POST, 'term' => trim($cat), @@ -141,175 +144,170 @@ class Channel_calendar extends \Zotlabs\Web\Controller { ); } } - - $datarray = array(); - $datarray['dtstart'] = $start; - $datarray['dtend'] = $finish; - $datarray['summary'] = $summary; + + $datarray = array(); + $datarray['dtstart'] = $start; + $datarray['dtend'] = $finish; + $datarray['summary'] = $summary; $datarray['description'] = $desc; - $datarray['location'] = $location; - $datarray['etype'] = $type; - $datarray['adjust'] = $adjust; - $datarray['nofinish'] = 0; - $datarray['uid'] = local_channel(); - $datarray['account'] = get_account_id(); + $datarray['location'] = $location; + $datarray['etype'] = $type; + $datarray['adjust'] = $adjust; + $datarray['nofinish'] = 0; + $datarray['uid'] = $uid; + $datarray['account'] = get_account_id(); $datarray['event_xchan'] = $channel['channel_hash']; - $datarray['allow_cid'] = $str_contact_allow; - $datarray['allow_gid'] = $str_group_allow; - $datarray['deny_cid'] = $str_contact_deny; - $datarray['deny_gid'] = $str_group_deny; - $datarray['private'] = intval($private); - $datarray['id'] = $event_id; - $datarray['created'] = $created; - $datarray['edited'] = $edited; - $datarray['timezone'] = $tz; - - - if(intval($_REQUEST['preview'])) { + $datarray['allow_cid'] = $str_contact_allow; + $datarray['allow_gid'] = $str_group_allow; + $datarray['deny_cid'] = $str_contact_deny; + $datarray['deny_gid'] = $str_group_deny; + $datarray['private'] = intval($private); + $datarray['id'] = $event_id; + $datarray['created'] = $created; + $datarray['edited'] = $edited; + $datarray['timezone'] = $tz; + + + if (intval($_REQUEST['preview'])) { $html = format_event_html($datarray); echo $html; killme(); } - + $event = event_store_event($datarray); - - if($post_tags) + + if ($post_tags) $datarray['term'] = $post_tags; - - $item_id = event_store_item($datarray,$event); - - if($item_id) { + + $item_id = event_store_item($datarray, $event); + + if ($item_id) { $r = q("select * from item where id = %d", intval($item_id) ); - if($r) { + if ($r) { xchan_query($r); $sync_item = fetch_post_tags($r); - $z = q("select * from event where event_hash = '%s' and uid = %d limit 1", + $z = q("select * from event where event_hash = '%s' and uid = %d limit 1", dbesc($r[0]['resource_id']), intval($channel['channel_id']) ); - if($z) { - Libsync::build_sync_packet($channel['channel_id'],array('event_item' => array(encode_item($sync_item[0],true)),'event' => $z)); + if ($z) { + Libsync::build_sync_packet($channel['channel_id'], array('event_item' => array(encode_item($sync_item[0], true)), 'event' => $z)); } } } - - \Zotlabs\Daemon\Master::Summon(array('Notifier','event',$item_id)); + + Master::Summon(array('Notifier', 'event', $item_id)); killme(); - + } - - - + + function get() { - - if(argc() > 2 && argv(1) == 'ical') { + + if (argc() > 2 && argv(1) == 'ical') { $event_id = argv(2); - + require_once('include/security.php'); $sql_extra = permissions_sql(local_channel()); - + $r = q("select * from event where event_hash = '%s' $sql_extra limit 1", dbesc($event_id) ); - if($r) { + if ($r) { header('Content-type: text/calendar'); - header('content-disposition: attachment; filename="' . t('event') . '-' . $event_id . '.ics"' ); + header('content-disposition: attachment; filename="' . t('event') . '-' . $event_id . '.ics"'); echo ical_wrapper($r); killme(); } else { - notice( t('Event not found.') . EOL ); + notice(t('Event not found.') . EOL); return; } } - - if(! local_channel()) { - notice( t('Permission denied.') . EOL); + + if (!local_channel()) { + notice(t('Permission denied.') . EOL); return; } - if((argc() > 2) && (argv(1) === 'ignore') && intval(argv(2))) { - $r = q("update event set dismissed = 1 where id = %d and uid = %d", + if ((argc() > 2) && (argv(1) === 'ignore') && intval(argv(2))) { + q("update event set dismissed = 1 where id = %d and uid = %d", intval(argv(2)), intval(local_channel()) ); } - - if((argc() > 2) && (argv(1) === 'unignore') && intval(argv(2))) { - $r = q("update event set dismissed = 0 where id = %d and uid = %d", + + if ((argc() > 2) && (argv(1) === 'unignore') && intval(argv(2))) { + q("update event set dismissed = 0 where id = %d and uid = %d", intval(argv(2)), intval(local_channel()) ); } - $channel = \App::get_channel(); - - $mode = 'view'; - $export = false; - $ignored = ((x($_REQUEST,'ignored')) ? " and dismissed = " . intval($_REQUEST['ignored']) . " " : ''); + $mode = 'view'; + $export = false; + $ignored = ((x($_REQUEST, 'ignored')) ? " and dismissed = " . intval($_REQUEST['ignored']) . " " : ''); - if(argc() > 1) { - if(argc() > 2 && argv(1) === 'add') { - $mode = 'add'; + if (argc() > 1) { + if (argc() > 2 && argv(1) === 'add') { + $mode = 'add'; $item_id = intval(argv(2)); } - if(argc() > 2 && argv(1) === 'drop') { - $mode = 'drop'; + if (argc() > 2 && argv(1) === 'drop') { + $mode = 'drop'; $event_id = argv(2); } - if(argc() <= 2 && argv(1) === 'export') { + if (argc() <= 2 && argv(1) === 'export') { $export = true; } - if(argc() > 2 && intval(argv(1)) && intval(argv(2))) { + if (argc() > 2 && intval(argv(1)) && intval(argv(2))) { $mode = 'view'; } - if(argc() <= 2) { - $mode = 'view'; + if (argc() <= 2) { + $mode = 'view'; $event_id = argv(1); } } - - if($mode === 'add') { - event_addtocal($item_id,local_channel()); + + if ($mode === 'add') { + event_addtocal($item_id, local_channel()); killme(); } - - if($mode == 'view') { - + + if ($mode == 'view') { + /* edit/create form */ - if($event_id) { - $r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1", + if ($event_id) { + q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1", dbesc($event_id), intval(local_channel()) ); - if(count($r)) - $orig_event = $r[0]; } - - $channel = \App::get_channel(); - if (argv(1) === 'json'){ - if (x($_GET,'start')) $start = $_GET['start']; - if (x($_GET,'end')) $finish = $_GET['end']; + $channel = App::get_channel(); + + if (argv(1) === 'json') { + if (x($_GET, 'start')) $start = $_GET['start']; + if (x($_GET, 'end')) $finish = $_GET['end']; } - - $start = datetime_convert('UTC','UTC',$start); - $finish = datetime_convert('UTC','UTC',$finish); - $adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start); + + $start = datetime_convert('UTC', 'UTC', $start); + $finish = datetime_convert('UTC', 'UTC', $finish); + $adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start); $adjust_finish = datetime_convert('UTC', date_default_timezone_get(), $finish); - if (x($_GET,'id')){ - $r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan, item.id as item_id + if (x($_GET, 'id')) { + $r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan, item.id as item_id from event left join item on item.resource_id = event.event_hash where item.resource_type = 'event' and event.uid = %d and event.id = %d limit 1", intval(local_channel()), intval($_GET['id']) ); } - elseif($export) { + elseif ($export) { $r = q("SELECT event.*, item.id as item_id from event left join item on item.resource_id = event.event_hash where event.uid = %d and event.dtstart > '%s' and event.dtend > event.dtstart", @@ -335,104 +333,105 @@ class Channel_calendar extends \Zotlabs\Web\Controller { dbesc($adjust_finish) ); } - - if($r && ! $export) { + + if ($r && !$export) { xchan_query($r); - $r = fetch_post_tags($r,true); + $r = fetch_post_tags($r, true); $r = sort_by_date($r); } $events = []; - if($r) { - - foreach($r as $rr) { + if ($r) { + + foreach ($r as $rr) { $start = (($rr['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $rr['dtstart'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtstart'], 'c')); - if ($rr['nofinish']){ + if ($rr['nofinish']) { $end = null; - } else { + } + else { $end = (($rr['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $rr['dtend'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtend'], 'c')); } - $catsenabled = feature_enabled(local_channel(),'categories'); - $categories = ''; - if($catsenabled){ - if($rr['term']) { + $catsenabled = feature_enabled(local_channel(), 'categories'); + $categories = ''; + if ($catsenabled) { + if ($rr['term']) { $cats = get_terms_oftype($rr['term'], TERM_CATEGORY); foreach ($cats as $cat) { - if(strlen($categories)) + if (strlen($categories)) $categories .= ', '; $categories .= $cat['term']; } } } - $edit = ((local_channel() && $rr['author_xchan'] == get_observer_hash()) ? array(z_root().'/events/'.$rr['event_hash'].'?expandform=1',t('Edit event'),'','') : false); - - $drop = array(z_root().'/events/drop/'.$rr['event_hash'],t('Delete event'),'',''); - + $edit = ((local_channel() && $rr['author_xchan'] == get_observer_hash()) ? array(z_root() . '/events/' . $rr['event_hash'] . '?expandform=1', t('Edit event'), '', '') : false); + + $drop = array(z_root() . '/events/drop/' . $rr['event_hash'], t('Delete event'), '', ''); + $tz = get_iconfig($rr, 'event', 'timezone'); - if(! $tz) + if (!$tz) $tz = 'UTC'; $events[] = array( 'calendar_id' => 'channel_calendar', - 'rw' => true, - 'id'=>$rr['id'], - 'uri' => $rr['event_hash'], - 'timezone' => $tz, - 'start'=> $start, - 'end' => $end, - 'drop' => $drop, - 'allDay' => (($rr['adjust']) ? 0 : 1), - 'title' => html_entity_decode($rr['summary'], ENT_COMPAT, 'UTF-8'), - 'editable' => $edit ? true : false, - 'item' => $rr, - 'plink' => [$rr['plink'], t('Link to source')], + 'rw' => true, + 'id' => $rr['id'], + 'uri' => $rr['event_hash'], + 'timezone' => $tz, + 'start' => $start, + 'end' => $end, + 'drop' => $drop, + 'allDay' => (($rr['adjust']) ? 0 : 1), + 'title' => html_entity_decode($rr['summary'], ENT_COMPAT, 'UTF-8'), + 'editable' => $edit ? true : false, + 'item' => $rr, + 'plink' => [$rr['plink'], t('Link to source')], 'description' => html_entity_decode($rr['description'], ENT_COMPAT, 'UTF-8'), - 'location' => html_entity_decode($rr['location'], ENT_COMPAT, 'UTF-8'), - 'allow_cid' => expand_acl($rr['allow_cid']), - 'allow_gid' => expand_acl($rr['allow_gid']), - 'deny_cid' => expand_acl($rr['deny_cid']), - 'deny_gid' => expand_acl($rr['deny_gid']), - 'categories' => $categories + 'location' => html_entity_decode($rr['location'], ENT_COMPAT, 'UTF-8'), + 'allow_cid' => expand_acl($rr['allow_cid']), + 'allow_gid' => expand_acl($rr['allow_gid']), + 'deny_cid' => expand_acl($rr['deny_cid']), + 'deny_gid' => expand_acl($rr['deny_gid']), + 'categories' => $categories ); } } - - if($export) { + + if ($export) { header('Content-type: text/calendar'); - header('content-disposition: attachment; filename="' . t('calendar') . '-' . $channel['channel_address'] . '.ics"' ); + header('content-disposition: attachment; filename="' . t('calendar') . '-' . $channel['channel_address'] . '.ics"'); echo ical_wrapper($r); killme(); } - if (\App::$argv[1] === 'json'){ + if (App::$argv[1] === 'json') { json_return_and_die($events); } } - - if($mode === 'drop' && $event_id) { + + if ($mode === 'drop' && $event_id) { $r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1", dbesc($event_id), intval(local_channel()) ); - + $sync_event = $r[0]; - - if($r) { + + if ($r) { $r = q("delete from event where event_hash = '%s' and uid = %d", dbesc($event_id), intval(local_channel()) ); - if($r) { + if ($r) { $sync_event['event_deleted'] = 1; - Libsync::build_sync_packet(0,array('event' => array($sync_event))); + Libsync::build_sync_packet(0, array('event' => array($sync_event))); $i = q("select * from item where resource_type = 'event' and resource_id = '%s' and uid = %d", dbesc($event_id), @@ -441,11 +440,11 @@ class Channel_calendar extends \Zotlabs\Web\Controller { if ($i) { - $can_delete = false; + $can_delete = false; $local_delete = true; $ob_hash = get_observer_hash(); - if($ob_hash && ($ob_hash === $i[0]['author_xchan'] || $ob_hash === $i[0]['owner_xchan'] || $ob_hash === $i[0]['source_xchan'])) { + if ($ob_hash && ($ob_hash === $i[0]['author_xchan'] || $ob_hash === $i[0]['owner_xchan'] || $ob_hash === $i[0]['source_xchan'])) { $can_delete = true; } @@ -453,49 +452,49 @@ class Channel_calendar extends \Zotlabs\Web\Controller { // If the item originated on this site+channel the deletion will propagate downstream. // Otherwise just the local copy is removed. - if(is_site_admin()) { + if (is_site_admin()) { $local_delete = true; - if(intval($i[0]['item_origin'])) + if (intval($i[0]['item_origin'])) $can_delete = true; } - if($can_delete || $local_delete) { + if ($can_delete || $local_delete) { // if this is a different page type or it's just a local delete // but not by the item author or owner, do a simple deletion - $complex = false; + $complex = false; - if(intval($i[0]['item_type']) || ($local_delete && (! $can_delete))) { + if (intval($i[0]['item_type']) || ($local_delete && (!$can_delete))) { drop_item($i[0]['id']); } else { // complex deletion that needs to propagate and be performed in phases - drop_item($i[0]['id'],true,DROPITEM_PHASE1); + drop_item($i[0]['id'], true, DROPITEM_PHASE1); $complex = true; } $ii = q("select * from item where id = %d", intval($i[0]['id']) ); - if($ii) { + if ($ii) { xchan_query($ii); $sync_item = fetch_post_tags($ii); - Libsync::build_sync_packet($i[0]['uid'],array('item' => array(encode_item($sync_item[0],true)))); + Libsync::build_sync_packet($i[0]['uid'], array('item' => array(encode_item($sync_item[0], true)))); } - if($complex) { - tag_deliver($i[0]['uid'],$i[0]['id']); + if ($complex) { + tag_deliver($i[0]['uid'], $i[0]['id']); } } } killme(); } - notice( t('Failed to remove event' ) . EOL); + notice(t('Failed to remove event') . EOL); killme(); } } - + } - + } diff --git a/Zotlabs/Module/Chanview.php b/Zotlabs/Module/Chanview.php index 12e1891d4..8ae4841b4 100644 --- a/Zotlabs/Module/Chanview.php +++ b/Zotlabs/Module/Chanview.php @@ -70,7 +70,7 @@ class Chanview extends \Zotlabs\Web\Controller { $zf = Zotfinger::exec($_REQUEST['url'], null); if(array_path_exists('signature/signer',$zf) && $zf['signature']['signer'] === $_REQUEST['url'] && intval($zf['signature']['header_valid'])) { - Libzot::import_xchan($j); + Libzot::import_xchan($zf['data']); $r = q("select * from xchan where xchan_url = '%s'", dbesc($_REQUEST['url']) ); diff --git a/Zotlabs/Module/Cloud.php b/Zotlabs/Module/Cloud.php index 39ae0f92f..3d1b97980 100644 --- a/Zotlabs/Module/Cloud.php +++ b/Zotlabs/Module/Cloud.php @@ -105,7 +105,7 @@ class Cloud extends Controller { // All we need to do now, is to fire up the server - $server->exec(); + $server->start(); if($browser->build_page) construct_page(); diff --git a/Zotlabs/Module/Connections.php b/Zotlabs/Module/Connections.php index 7dc301623..5025f4e22 100644 --- a/Zotlabs/Module/Connections.php +++ b/Zotlabs/Module/Connections.php @@ -109,6 +109,7 @@ class Connections extends \Zotlabs\Web\Controller { case 'all': $head = t('All'); + break; default: $search_flags = " and abook_blocked = 0 and abook_ignored = 0 and abook_hidden = 0 and abook_archived = 0 and abook_not_here = 0 "; $active = true; @@ -238,7 +239,7 @@ class Connections extends \Zotlabs\Web\Controller { } $r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash - where abook_channel = %d and abook_self = 0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra $sql_extra2 ", + where abook_channel = %d and abook_self = 0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra ", intval(local_channel()) ); if($r) { @@ -247,7 +248,7 @@ class Connections extends \Zotlabs\Web\Controller { } $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash - WHERE abook_channel = %d and abook_self = 0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra $sql_extra2 ORDER BY $sql_order LIMIT %d OFFSET %d ", + WHERE abook_channel = %d and abook_self = 0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra ORDER BY $sql_order LIMIT %d OFFSET %d ", intval(local_channel()), intval(App::$pager['itemspage']), intval(App::$pager['start']) diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php index becf8460d..582563451 100644 --- a/Zotlabs/Module/Connedit.php +++ b/Zotlabs/Module/Connedit.php @@ -32,10 +32,10 @@ class Connedit extends Controller { */ function init() { - + if(! local_channel()) return; - + if((argc() >= 2) && intval(argv(1))) { $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook_xchan = xchan_hash @@ -47,54 +47,54 @@ class Connedit extends Controller { App::$poi = array_shift($r); } } - + $channel = App::get_channel(); if($channel) head_set_icon($channel['xchan_photo_s']); - + } - + /* @brief Evaluate posted values and set changes * */ - + function post() { - + if(! local_channel()) return; - + $contact_id = intval(argv(1)); if(! $contact_id) return; - + $channel = App::get_channel(); - + // TODO if configured for hassle-free permissions, we'll post the form with ajax as soon as the // connection enable is toggled to a special autopost url and set permissions immediately, leaving // the other form elements alone pending a manual submit of the form. The downside is that there // will be a window of opportunity when the permissions have been set but before you've had a chance // to review and possibly restrict them. The upside is we won't have to warn you that your connection // can't do anything until you save the bloody form. - + $autopost = (((argc() > 2) && (argv(2) === 'auto')) ? true : false); - + $orig_record = q("SELECT * FROM abook WHERE abook_id = %d AND abook_channel = %d LIMIT 1", intval($contact_id), intval(local_channel()) ); - + if(! $orig_record) { notice( t('Could not access contact record.') . EOL); goaway(z_root() . '/connections'); return; // NOTREACHED } - + call_hooks('contact_edit_post', $_POST); - + $vc = get_abconfig(local_channel(),$orig_record['abook_xchan'],'system','vcard'); - $vcard = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); + $vcard = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); $serialised_vcard = update_vcard($_REQUEST,$vcard); if($serialised_vcard) set_abconfig(local_channel(),$orig_record[0]['abook_xchan'],'system','vcard',$serialised_vcard); @@ -107,8 +107,8 @@ class Connedit extends Controller { $autoperms = null; $is_self = false; } - - + + $profile_id = ((array_key_exists('profile_assign',$_POST)) ? $_POST['profile_assign'] : $orig_record[0]['abook_profile']); if($profile_id) { @@ -121,17 +121,17 @@ class Connedit extends Controller { return; } } - + $abook_incl = ((array_key_exists('abook_incl',$_POST)) ? escape_tags($_POST['abook_incl']) : $orig_record[0]['abook_incl']); $abook_excl = ((array_key_exists('abook_excl',$_POST)) ? escape_tags($_POST['abook_excl']) : $orig_record[0]['abook_excl']); $hidden = intval($_POST['hidden']); - + $priority = intval($_POST['poll']); if($priority > 5 || $priority < 0) $priority = 0; - + if(! array_key_exists('closeness',$_POST)) { $_POST['closeness'] = 80; } @@ -139,15 +139,15 @@ class Connedit extends Controller { if($closeness < 0 || $closeness > 99) { $closeness = 80; } - + $rating = intval($_POST['rating']); if($rating < (-10)) $rating = (-10); if($rating > 10) $rating = 10; - + $rating_text = trim(escape_tags($_REQUEST['rating_text'])); - + $all_perms = Permissions::Perms(); if($all_perms) { @@ -168,27 +168,27 @@ class Connedit extends Controller { } } - if(! is_null($autoperms)) + if(! is_null($autoperms)) set_pconfig($channel['channel_id'],'system','autoperms',$autoperms); - + $new_friend = false; - + // only store a record and notify the directory if the rating changed if(! $is_self) { - + $signed = $orig_record[0]['abook_xchan'] . '.' . $rating . '.' . $rating_text; $sig = base64url_encode(rsa_sign($signed,$channel['channel_prvkey'])); $rated = ((intval($rating) || strlen($rating_text)) ? true : false); - + $record = 0; - + $z = q("select * from xlink where xlink_xchan = '%s' and xlink_link = '%s' and xlink_static = 1 limit 1", dbesc($channel['channel_hash']), dbesc($orig_record[0]['abook_xchan']) ); - + if($z) { if(($z[0]['xlink_rating'] != $rating) || ($z[0]['xlink_rating_text'] != $rating_text)) { $record = $z[0]['xlink_id']; @@ -223,18 +223,18 @@ class Connedit extends Controller { Master::Summon(array('Ratenotif','rating',$record)); } } - + if(($_REQUEST['pending']) && intval($orig_record[0]['abook_pending'])) { $new_friend = true; - + // @fixme it won't be common, but when you accept a new connection request // the permissions will now be that of your permissions role and ignore // any you may have set manually on the form. We'll probably see a bug if somebody // tries to set the permissions *and* approve the connection in the same // request. The workaround is to approve the connection, then go back and // adjust permissions as desired. - + $p = Permissions::connect_perms(local_channel()); $my_perms = $p['perms']; if($my_perms) { @@ -247,7 +247,7 @@ class Connedit extends Controller { $abook_pending = (($new_friend) ? 0 : $orig_record[0]['abook_pending']); - + $r = q("UPDATE abook SET abook_profile = '%s', abook_closeness = %d, abook_pending = %d, abook_incl = '%s', abook_excl = '%s' where abook_id = %d AND abook_channel = %d", @@ -259,7 +259,7 @@ class Connedit extends Controller { intval($contact_id), intval(local_channel()) ); - + if($r) info( t('Connection updated.') . EOL); else @@ -267,16 +267,16 @@ class Connedit extends Controller { if(! intval(App::$poi['abook_self'])) { if($new_friend) { - Master::Summon( [ 'Notifier', 'permission_accept', $contact_id ] ); + Master::Summon( [ 'Notifier', 'permission_accept', $contact_id ] ); } - Master::Summon( [ - 'Notifier', - (($new_friend) ? 'permission_create' : 'permission_update'), - $contact_id + Master::Summon( [ + 'Notifier', + (($new_friend) ? 'permission_create' : 'permission_update'), + $contact_id ]); } - + if($new_friend) { $default_group = $channel['channel_default_group']; if($default_group) { @@ -285,11 +285,11 @@ class Connedit extends Controller { if($g) group_add_member(local_channel(),'',App::$poi['abook_xchan'],$g['id']); } - + // Check if settings permit ("post new friend activity" is allowed, and // friends in general or this friend in particular aren't hidden) // and send out a new friend activity - + $pr = q("select * from profile where uid = %d and is_default = 1 and hide_friends = 0", intval($channel['channel_id']) ); @@ -305,23 +305,23 @@ class Connedit extends Controller { $xarr['deny_cid'] = $channel['channel_deny_cid']; $xarr['deny_gid'] = $channel['channel_deny_gid']; $xarr['item_private'] = (($xarr['allow_cid']||$xarr['allow_gid']||$xarr['deny_cid']||$xarr['deny_gid']) ? 1 : 0); - + $xarr['body'] = '[zrl=' . $channel['xchan_url'] . ']' . $channel['xchan_name'] . '[/zrl]' . ' ' . t('is now connected to') . ' ' . '[zrl=' . App::$poi['xchan_url'] . ']' . App::$poi['xchan_name'] . '[/zrl]'; - + $xarr['body'] .= "\n\n\n" . '[zrl=' . App::$poi['xchan_url'] . '][zmg=80x80]' . App::$poi['xchan_photo_m'] . '[/zmg][/zrl]'; - + post_activity_item($xarr); - + } - - + + // pull in a bit of content if there is any to pull in Master::Summon(array('Onepoll',$contact_id)); - + } - + // Refresh the structure in memory with the new data - + $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and abook_id = %d LIMIT 1", @@ -331,34 +331,34 @@ class Connedit extends Controller { if($r) { App::$poi = $r[0]; } - + if($new_friend) { $arr = array('channel_id' => local_channel(), 'abook' => App::$poi); call_hooks('accept_follow', $arr); } - + $this->connedit_clone($a); - + if(($_REQUEST['pending']) && (!$_REQUEST['done'])) goaway(z_root() . '/connections/ifpending'); - + return; - + } - + /* @brief Clone connection * * */ - + function connedit_clone(&$a) { - + if(! App::$poi) return; - - + + $channel = App::get_channel(); - + $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and abook_id = %d LIMIT 1", @@ -368,40 +368,40 @@ class Connedit extends Controller { if($r) { App::$poi = array_shift($r); } - + $clone = App::$poi; - + unset($clone['abook_id']); unset($clone['abook_account']); unset($clone['abook_channel']); - + $abconfig = load_abconfig($channel['channel_id'],$clone['abook_xchan']); if($abconfig) $clone['abconfig'] = $abconfig; - + Libsync::build_sync_packet(0 /* use the current local_channel */, array('abook' => array($clone))); } - + /* @brief Generate content of connection edit page * * */ - + function get() { - + $sort_type = 0; $o = ''; - + if(! local_channel()) { notice( t('Permission denied.') . EOL); return login(); } - + $section = ((array_key_exists('section',$_REQUEST)) ? $_REQUEST['section'] : ''); $channel = App::get_channel(); - + $yes_no = array(t('No'),t('Yes')); - + $connect_perms = Permissions::connect_perms(local_channel()); $o .= "<script>function connectDefaultShare() { @@ -415,13 +415,13 @@ class Connedit extends Controller { } } $o .= " }\n</script>\n"; - + if(argc() == 3) { - + $contact_id = intval(argv(1)); if(! $contact_id) return; - + $cmd = argv(2); $orig_record = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook_xchan = xchan_hash @@ -429,17 +429,17 @@ class Connedit extends Controller { intval($contact_id), intval(local_channel()) ); - + if(! count($orig_record)) { notice( t('Could not access address book record.') . EOL); goaway(z_root() . '/connections'); } - + if($cmd === 'update') { // pull feed and consume it, which should subscribe to the hub. Master::Summon(array('Poller',$contact_id)); goaway(z_root() . '/connedit/' . $contact_id); - + } if($cmd === 'fetchvc') { @@ -474,7 +474,7 @@ class Connedit extends Controller { dbesc($orig_record[0]['xchan_hash']) ); $cmd = 'refresh'; - } + } if($cmd === 'refresh') { if($orig_record[0]['xchan_network'] === 'zot') { @@ -486,13 +486,13 @@ class Connedit extends Controller { notice( t('Refresh failed - channel is currently unavailable.') ); } else { - + // if you are on a different network we'll force a refresh of the connection basic info Master::Summon(array('Notifier','permission_update',$contact_id)); } goaway(z_root() . '/connedit/' . $contact_id); } - + if($cmd === 'block') { if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_BLOCKED)) { $this->connedit_clone($a); @@ -501,7 +501,7 @@ class Connedit extends Controller { notice(t('Unable to set address book parameters.') . EOL); goaway(z_root() . '/connedit/' . $contact_id); } - + if($cmd === 'ignore') { if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_IGNORED)) { $this->connedit_clone($a); @@ -510,7 +510,7 @@ class Connedit extends Controller { notice(t('Unable to set address book parameters.') . EOL); goaway(z_root() . '/connedit/' . $contact_id); } - + if($cmd === 'archive') { if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_ARCHIVED)) { $this->connedit_clone($a); @@ -519,7 +519,7 @@ class Connedit extends Controller { notice(t('Unable to set address book parameters.') . EOL); goaway(z_root() . '/connedit/' . $contact_id); } - + if($cmd === 'hide') { if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_HIDDEN)) { $this->connedit_clone($a); @@ -528,10 +528,10 @@ class Connedit extends Controller { notice(t('Unable to set address book parameters.') . EOL); goaway(z_root() . '/connedit/' . $contact_id); } - + // We'll prevent somebody from unapproving an already approved contact. // Though maybe somebody will want this eventually (??) - + if($cmd === 'approve') { if(intval($orig_record[0]['abook_pending'])) { if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_PENDING)) { @@ -542,10 +542,10 @@ class Connedit extends Controller { } goaway(z_root() . '/connedit/' . $contact_id); } - - + + if($cmd === 'drop') { - + contact_remove(local_channel(), $orig_record[0]['abook_id']); Master::Summon( [ 'Notifier', 'purge', local_channel(), $orig_record[0]['xchan_hash'] ] ); @@ -556,17 +556,17 @@ class Connedit extends Controller { 'entry_deleted' => true)) ) ); - + info( t('Connection has been removed.') . EOL ); if(x($_SESSION,'return_url')) goaway(z_root() . '/' . $_SESSION['return_url']); goaway(z_root() . '/contacts'); - + } } - + if(App::$poi) { - + $abook_prev = 0; $abook_next = 0; @@ -595,14 +595,14 @@ class Connedit extends Controller { } $tools = array( - + 'view' => array( 'label' => t('View Profile'), 'url' => chanlink_cid($contact['abook_id']), 'sel' => '', 'title' => sprintf( t('View %s\'s profile'), $contact['xchan_name']), ), - + 'refresh' => array( 'label' => t('Refresh Permissions'), 'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/refresh', @@ -616,14 +616,14 @@ class Connedit extends Controller { 'sel' => '', 'title' => t('Fetch updated photo'), ), - + 'recent' => array( 'label' => t('Recent Activity'), 'url' => z_root() . '/network/?f=&cid=' . $contact['abook_id'], 'sel' => '', 'title' => t('View recent posts and comments'), ), - + 'block' => array( 'label' => (intval($contact['abook_blocked']) ? t('Unblock') : t('Block')), 'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/block', @@ -631,7 +631,7 @@ class Connedit extends Controller { 'title' => t('Block (or Unblock) all communications with this connection'), 'info' => (intval($contact['abook_blocked']) ? t('This connection is blocked!') : ''), ), - + 'ignore' => array( 'label' => (intval($contact['abook_ignored']) ? t('Unignore') : t('Ignore')), 'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/ignore', @@ -639,7 +639,7 @@ class Connedit extends Controller { 'title' => t('Ignore (or Unignore) all inbound communications from this connection'), 'info' => (intval($contact['abook_ignored']) ? t('This connection is ignored!') : ''), ), - + 'archive' => array( 'label' => (intval($contact['abook_archived']) ? t('Unarchive') : t('Archive')), 'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/archive', @@ -647,7 +647,7 @@ class Connedit extends Controller { 'title' => t('Archive (or Unarchive) this connection - mark channel dead but keep content'), 'info' => (intval($contact['abook_archived']) ? t('This connection is archived!') : ''), ), - + 'hide' => array( 'label' => (intval($contact['abook_hidden']) ? t('Unhide') : t('Hide')), 'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/hide', @@ -655,18 +655,18 @@ class Connedit extends Controller { 'title' => t('Hide or Unhide this connection from your other connections'), 'info' => (intval($contact['abook_hidden']) ? t('This connection is hidden!') : ''), ), - + 'delete' => array( 'label' => t('Delete'), 'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/drop', 'sel' => '', 'title' => t('Delete this connection'), ), - + ); - if($contact['xchan_network'] === 'zot') { + if(in_array($contact['xchan_network'], ['zot6', 'zot'])) { $tools['fetchvc'] = [ 'label' => t('Fetch Vcard'), 'url' => z_root() . '/connedit/' . $contact['abook_id'] . '/fetchvc', @@ -684,24 +684,24 @@ class Connedit extends Controller { 'sel' => '', 'title' => t('Open Individual Permissions section by default'), ]; - + $self = false; - + if(intval($contact['abook_self'])) { $self = true; $abook_prev = $abook_next = 0; } - + $vc = get_abconfig(local_channel(),$contact['abook_xchan'],'system','vcard'); - $vctmp = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); + $vctmp = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); $vcard = (($vctmp) ? get_vcard_array($vctmp,$contact['abook_id']) : [] ); if(! $vcard) $vcard['fn'] = $contact['xchan_name']; $tpl = get_markup_template("abook_edit.tpl"); - + if(Apps::system_app_installed(local_channel(),'Affinity Tool')) { $sections['affinity'] = [ @@ -710,7 +710,7 @@ class Connedit extends Controller { 'sel' => '', 'title' => t('Open Set Affinity section by default'), ]; - + $labels = [ t('Me'), t('Family'), @@ -720,7 +720,7 @@ class Connedit extends Controller { ]; call_hooks('affinity_labels',$labels); $label_str = ''; - + if($labels) { foreach($labels as $l) { if($label_str) { @@ -731,11 +731,11 @@ class Connedit extends Controller { $label_str .= "'" . $l . "'"; } } - + $slider_tpl = get_markup_template('contact_slider.tpl'); - + $slideval = intval($contact['abook_closeness']); - + $slide = replace_macros($slider_tpl,array( '$min' => 1, '$val' => $slideval, @@ -751,22 +751,22 @@ class Connedit extends Controller { 'title' => t('Open Custom Filter section by default'), ]; } - + $rating_val = 0; $rating_text = ''; - + $xl = q("select * from xlink where xlink_xchan = '%s' and xlink_link = '%s' and xlink_static = 1", dbesc($channel['channel_hash']), dbesc($contact['xchan_hash']) ); - + if($xl) { $rating_val = intval($xl[0]['xlink_rating']); $rating_text = $xl[0]['xlink_rating_text']; } - + $rating_enabled = get_config('system','rating_enabled'); - + if($rating_enabled) { $rating = replace_macros(get_markup_template('rating_slider.tpl'),array( '$min' => -10, @@ -776,28 +776,28 @@ class Connedit extends Controller { else { $rating = false; } - - + + $perms = array(); $channel = App::get_channel(); - + $global_perms = Permissions::Perms(); $existing = get_all_perms(local_channel(),$contact['abook_xchan'],false); - + $unapproved = array('pending', t('Approve this connection'), '', t('Accept connection to allow communication'), array(t('No'),('Yes'))); - + $multiprofs = ((feature_enabled(local_channel(),'multi_profiles')) ? true : false); - + if($slide && !$multiprofs) $affinity = t('Set Affinity'); - + if(!$slide && $multiprofs) $affinity = t('Set Profile'); - + if($slide && $multiprofs) $affinity = t('Set Affinity & Profile'); - + $theirs = q("select * from abconfig where chan = %d and xchan = '%s' and cat = 'their_perms'", intval(local_channel()), dbesc($contact['abook_xchan']) @@ -812,20 +812,20 @@ class Connedit extends Controller { foreach($global_perms as $k => $v) { $thisperm = get_abconfig(local_channel(),$contact['abook_xchan'],'my_perms',$k); //fixme - + $checkinherited = PermissionLimits::Get(local_channel(),$k); - + // For auto permissions (when $self is true) we don't want to look at existing // permissions because they are enabled for the channel owner if((! $self) && ($existing[$k])) $thisperm = "1"; - - + + $perms[] = array('perms_' . $k, $v, ((array_key_exists($k,$their_perms)) ? intval($their_perms[$k]) : ''),$thisperm, 1, (($checkinherited & PERMS_SPECIFIC) ? '' : '1'), '', $checkinherited); } - + $pcat = new Permcat(local_channel()); $pcatlist = $pcat->listing(); $permcats = []; @@ -838,23 +838,23 @@ class Connedit extends Controller { $locstr = locations_by_netid($contact['xchan_hash']); if(! $locstr) $locstr = unpunify($contact['xchan_url']); - + $clone_warn = ''; $clonable = (in_array($contact['xchan_network'],['zot', 'zot6', 'rss']) ? true : false); if(! $clonable) { $clone_warn = '<strong>'; - $clone_warn .= ((intval($contact['abook_not_here'])) + $clone_warn .= ((intval($contact['abook_not_here'])) ? t('This connection is unreachable from this location.') : t('This connection may be unreachable from other channel locations.') ); $clone_warn .= '</strong><br>' . t('Location independence is not supported by their network.'); } - + if(intval($contact['abook_not_here']) && $unclonable) $not_here = t('This connection is unreachable from this location. Location independence is not supported by their network.'); - + $o .= replace_macros($tpl, [ '$header' => (($self) ? t('Connection Default Permissions') : sprintf( t('Connection: %s'),$contact['xchan_name'])), '$autoperms' => array('autoperms',t('Apply these permissions automatically'), ((get_pconfig(local_channel(),'system','autoperms')) ? 1 : 0), t('Connection requests will be approved without your interaction'), $yes_no), @@ -910,7 +910,7 @@ class Connedit extends Controller { '$name' => $contact['xchan_name'], '$abook_prev' => $abook_prev, '$abook_next' => $abook_next, - '$vcard_label' => t('Details'), + '$vcard_label' => t('Details'), '$displayname' => $displayname, '$name_label' => t('Name'), '$org_label' => t('Organisation'), @@ -939,13 +939,13 @@ class Connedit extends Controller { '$zip_code' => t('ZIP Code'), '$country' => t('Country') ]); - + $arr = array('contact' => $contact,'output' => $o); - + call_hooks('contact_edit', $arr); - + return $arr['output']; - - } + + } } } diff --git a/Zotlabs/Module/Dav.php b/Zotlabs/Module/Dav.php index 949b89950..96fe2c898 100644 --- a/Zotlabs/Module/Dav.php +++ b/Zotlabs/Module/Dav.php @@ -51,7 +51,7 @@ class Dav extends \Zotlabs\Web\Controller { if($sigblock) { $keyId = str_replace('acct:','',$sigblock['keyId']); if($keyId) { - $r = q("select * from hubloc where hubloc_addr = '%s'", + $r = q("select * from hubloc where hubloc_id_url = '%s'", dbesc($keyId) ); if($r) { @@ -124,7 +124,7 @@ class Dav extends \Zotlabs\Web\Controller { // $server->addPlugin(new \Zotlabs\Storage\QuotaPlugin($auth)); // All we need to do now, is to fire up the server - $server->exec(); + $server->start(); killme(); } diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php index e1bf0f6cf..7295f3099 100644 --- a/Zotlabs/Module/Directory.php +++ b/Zotlabs/Module/Directory.php @@ -4,6 +4,8 @@ namespace Zotlabs\Module; use App; use Zotlabs\Web\Controller; +use Zotlabs\Lib\Libzotdir; + require_once('include/socgraph.php'); require_once('include/dir_fns.php'); @@ -15,7 +17,7 @@ class Directory extends Controller { function init() { App::set_pager_itemspage(30); - + if(local_channel() && x($_GET,'ignore')) { q("insert into xign ( uid, xchan ) values ( %d, '%s' ) ", intval(local_channel()), @@ -26,12 +28,12 @@ class Directory extends Controller { if(local_channel()) App::$profile_uid = local_channel(); - + $observer = get_observer_hash(); $global_changed = false; $safe_changed = false; $pubforums_changed = false; - + if(array_key_exists('global',$_REQUEST)) { $globaldir = intval($_REQUEST['global']); $global_changed = true; @@ -41,7 +43,7 @@ class Directory extends Controller { if($observer) set_xconfig($observer,'directory','globaldir',$globaldir); } - + if(array_key_exists('safe',$_REQUEST)) { $safemode = intval($_REQUEST['safe']); $safe_changed = true; @@ -51,8 +53,8 @@ class Directory extends Controller { if($observer) set_xconfig($observer,'directory','safemode',$safemode); } - - + + if(array_key_exists('pubforums',$_REQUEST)) { $pubforums = intval($_REQUEST['pubforums']); $pubforums_changed = true; @@ -64,52 +66,52 @@ class Directory extends Controller { } } - + function get() { - + if(observer_prohibited()) { notice( t('Public access denied.') . EOL); return; } - + if(get_config('system','block_public_directory',false) && (! get_observer_hash())) { notice( t('Public access denied.') . EOL); return; } - + $observer = get_observer_hash(); - - $globaldir = get_directory_setting($observer, 'globaldir'); + + $globaldir = Libzotdir::get_directory_setting($observer, 'globaldir'); // override your personal global search pref if we're doing a navbar search of the directory if(intval($_REQUEST['navsearch'])) $globaldir = 1; - - $safe_mode = get_directory_setting($observer, 'safemode'); - - $pubforums = get_directory_setting($observer, 'pubforums'); - + + $safe_mode = Libzotdir::get_directory_setting($observer, 'safemode'); + + $pubforums = Libzotdir::get_directory_setting($observer, 'pubforums'); + $o = ''; nav_set_selected('Directory'); - + if(x($_POST,'search')) $search = notags(trim($_POST['search'])); else $search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : ''); - - + + if(strpos($search,'=') && local_channel() && feature_enabled(local_channel(), 'advanced_dirsearch')) $advanced = $search; - + $keywords = (($_GET['keywords']) ? $_GET['keywords'] : ''); - + // Suggest channels if no search terms or keywords are given $suggest = (local_channel() && x($_REQUEST,'suggest')) ? $_REQUEST['suggest'] : ''; - + if($suggest) { // the directory options have no effect in suggestion mode - + $globaldir = 1; $safe_mode = 1; $type = 0; @@ -120,7 +122,7 @@ class Directory extends Controller { notice( t('No default suggestions were found.') . EOL); return; } - + // Remember in which order the suggestions were $addresses = array(); $common = array(); @@ -129,7 +131,7 @@ class Directory extends Controller { $common[$rr['xchan_addr']] = ((intval($rr['total']) > 0) ? intval($rr['total']) - 1 : 0); $addresses[$rr['xchan_addr']] = $index++; } - + // Build query to get info about suggested people $advanced = ''; foreach(array_keys($addresses) as $address) { @@ -137,13 +139,13 @@ class Directory extends Controller { } // Remove last space in the advanced query $advanced = rtrim($advanced); - + } - + $tpl = get_markup_template('directory_header.tpl'); - + $dirmode = intval(get_config('system','directory_mode')); - + $directory_admin = false; if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) { @@ -154,19 +156,19 @@ class Directory extends Controller { } if(! $url) { - $directory = find_upstream_directory($dirmode); + $directory = Libzotdir::find_upstream_directory($dirmode); if((! $directory) || (! array_key_exists('url',$directory)) || (! $directory['url'])) logger('CRITICAL: No directory server URL'); $url = $directory['url'] . '/dirsearch'; } - + $token = get_config('system','realm_token'); - - + + logger('mod_directory: URL = ' . $url, LOGGER_DEBUG); - + $contacts = array(); - + if(local_channel()) { $x = q("select abook_xchan from abook where abook_channel = %d", intval(local_channel()) @@ -176,24 +178,24 @@ class Directory extends Controller { $contacts[] = $xx['abook_xchan']; } } - + if($url) { - + $numtags = get_config('system','directorytags'); - + $kw = ((intval($numtags) > 0) ? intval($numtags) : 50); - + if(get_config('system','disable_directory_keywords')) $kw = 0; - + $query = $url . '?f=&kw=' . $kw . (($safe_mode != 1) ? '&safe=' . $safe_mode : ''); - + if($token) $query .= '&t=' . $token; - + if(! $globaldir) $query .= '&hub=' . App::get_hostname(); - + if($search) $query .= '&name=' . urlencode($search) . '&keywords=' . urlencode($search); if(strpos($search,'@')) @@ -204,29 +206,29 @@ class Directory extends Controller { $query .= '&query=' . urlencode($advanced); if(! is_null($pubforums)) $query .= '&pubforums=' . intval($pubforums); - + $directory_sort_order = get_config('system','directory_sort_order'); if(! $directory_sort_order) $directory_sort_order = 'date'; - + $sort_order = ((x($_REQUEST,'order')) ? $_REQUEST['order'] : $directory_sort_order); - + if($sort_order) $query .= '&order=' . urlencode($sort_order); - + if(App::$pager['page'] != 1) $query .= '&p=' . App::$pager['page']; - + logger('mod_directory: query: ' . $query); - + $x = z_fetch_url($query); logger('directory: return from upstream: ' . print_r($x,true), LOGGER_DATA); - + if($x['success']) { $t = 0; $j = json_decode($x['body'],true); if($j) { - + if($j['results']) { $results = $j['results']; @@ -235,23 +237,23 @@ class Directory extends Controller { } $entries = array(); - + $photo = 'thumb'; - + foreach($results as $rr) { - + $profile_link = chanlink_url($rr['url']); - + $pdesc = (($rr['description']) ? $rr['description'] . '<br />' : ''); - $connect_link = ((local_channel()) ? z_root() . '/follow?f=&url=' . urlencode($rr['address']) : ''); - + $connect_link = ((local_channel()) ? z_root() . '/follow?f=&url=' . urlencode($rr['address']) : ''); + // Checking status is disabled ATM until someone checks the performance impact more carefully //$online = remote_online_status($rr['address']); $online = ''; - + if(in_array($rr['hash'],$contacts)) $connect_link = ''; - + $location = ''; if(strlen($rr['locale'])) $location .= $rr['locale']; @@ -265,53 +267,53 @@ class Directory extends Controller { $location .= ', '; $location .= $rr['country']; } - + $age = ''; if(strlen($rr['birthday'])) { if(($years = age($rr['birthday'],'UTC','')) > 0) $age = $years; } - + $page_type = ''; - + $rating_enabled = get_config('system','rating_enabled'); if($rr['total_ratings'] && $rating_enabled) $total_ratings = sprintf( tt("%d rating", "%d ratings", $rr['total_ratings']), $rr['total_ratings']); else $total_ratings = ''; - + $profile = $rr; - + if ((x($profile,'locale') == 1) || (x($profile,'region') == 1) || (x($profile,'postcode') == 1) || (x($profile,'country') == 1)) - + $gender = ((x($profile,'gender') == 1) ? t('Gender: ') . $profile['gender']: False); - + $marital = ((x($profile,'marital') == 1) ? t('Status: ') . $profile['marital']: False); - + $homepage = ((x($profile,'homepage') == 1) ? t('Homepage: ') : False); - $homepageurl = ((x($profile,'homepage') == 1) ? html2plain($profile['homepage']) : ''); - + $homepageurl = ((x($profile,'homepage') == 1) ? html2plain($profile['homepage']) : ''); + $hometown = ((x($profile,'hometown') == 1) ? html2plain($profile['hometown']) : False); - + $about = ((x($profile,'about') == 1) ? zidify_links(bbcode($profile['about'], ['tryoembed' => false])) : False); if ($about && $safe_mode) { $about = html2plain($about); } - + $keywords = ((x($profile,'keywords')) ? $profile['keywords'] : ''); - + $out = ''; - + if($keywords) { $keywords = str_replace(',',' ', $keywords); $keywords = str_replace(' ',' ', $keywords); $karr = explode(' ', $keywords); - + if($karr) { if(local_channel()) { $r = q("select keywords from profile where uid = %d and is_default = 1 limit 1", @@ -332,9 +334,9 @@ class Directory extends Controller { $out .= '<a href="' . z_root() . '/directory/f=&keywords=' . urlencode($k) .'">' . $k . '</a>'; } } - + } - + $entry = array( 'id' => ++$t, 'profile_link' => $profile_link, @@ -366,7 +368,7 @@ class Directory extends Controller { 'about' => $about, 'about_label' => t('About:'), 'conn_label' => t('Connect'), - 'forum_label' => t('Public Forum:'), + 'forum_label' => t('Public Forum:'), 'connect' => $connect_link, 'online' => $online, 'kw' => (($out) ? t('Keywords: ') : ''), @@ -378,36 +380,36 @@ class Directory extends Controller { 'common_count' => intval($common[$rr['address']]), 'safe' => $safe_mode ); - + $arr = array('contact' => $rr, 'entry' => $entry); - + call_hooks('directory_item', $arr); - + unset($profile); unset($location); - + if(! $arr['entry']) { continue; - } - + } + if($sort_order == '' && $suggest) { $entries[$addresses[$rr['address']]] = $arr['entry']; // Use the same indexes as originally to get the best suggestion first } - + else { $entries[] = $arr['entry']; } } - + ksort($entries); // Sort array by key so that foreach-constructs work as expected - + if($j['keywords']) { App::$data['directory_keywords'] = $j['keywords']; } - + logger('mod_directory: entries: ' . print_r($entries,true), LOGGER_DATA); - - + + if($_REQUEST['aj']) { if($entries) { $o = replace_macros(get_markup_template('directajax.tpl'),array( @@ -422,9 +424,9 @@ class Directory extends Controller { } else { $maxheight = 94; - + $dirtitle = (($globaldir) ? t('Global Directory') : t('Local Directory')); - + $o .= "<script> var page_query = '" . escape_tags(urlencode($_GET['q'])) . "'; var extra_args = '" . extra_query_args() . "' ; divmore_height = " . intval($maxheight) . "; </script>"; $o .= replace_macros($tpl, array( '$search' => $search, @@ -442,10 +444,10 @@ class Directory extends Controller { '$reversedate' => t('Oldest to Newest'), '$suggest' => $suggest ? '&suggest=1' : '' )); - - + + } - + } else { if($_REQUEST['aj']) { @@ -463,7 +465,7 @@ class Directory extends Controller { } return $o; } - + static public function reorder_results($results,$suggests) { if(! $suggests) diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php index c15b13a90..804d7af5c 100644 --- a/Zotlabs/Module/Dirsearch.php +++ b/Zotlabs/Module/Dirsearch.php @@ -192,7 +192,7 @@ class Dirsearch extends Controller { else { $qlimit = " LIMIT " . intval($perpage) . " OFFSET " . intval($startrec); if($return_total) { - $r = q("SELECT COUNT(xchan_hash) AS total FROM xchan left join xprof on xchan_hash = xprof_hash where $logic $sql_extra and xchan_network = 'zot' and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0 $safesql "); + $r = q("SELECT COUNT(xchan_hash) AS total FROM xchan left join xprof on xchan_hash = xprof_hash where $logic $sql_extra and xchan_network = 'zot6' and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0 $safesql "); if($r) { $ret['total_items'] = $r[0]['total']; } @@ -261,7 +261,7 @@ class Dirsearch extends Controller { else { $r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash - where ( $logic $sql_extra ) $hub_query and xchan_network = 'zot' and xchan_system = 0 and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0 + where ( $logic $sql_extra ) $hub_query and xchan_network = 'zot6' and xchan_system = 0 and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0 $safesql $order $qlimit " ); diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php index 81ac0f7b8..04aeb6d5c 100644 --- a/Zotlabs/Module/Display.php +++ b/Zotlabs/Module/Display.php @@ -19,21 +19,21 @@ class Display extends \Zotlabs\Web\Controller { if(argc() > 1) { $module_format = substr(argv(1),strrpos(argv(1),'.') + 1); if(! in_array($module_format,['atom','zot','json'])) - $module_format = 'html'; + $module_format = 'html'; } if(observer_prohibited()) { notice( t('Public access denied.') . EOL); return; } - + if(argc() > 1) { $item_hash = argv(1); if($module_format !== 'html') { $item_hash = substr($item_hash,0,strrpos($item_hash,'.')); } } - + if($_REQUEST['mid']) $item_hash = $_REQUEST['mid']; @@ -42,19 +42,19 @@ class Display extends \Zotlabs\Web\Controller { notice( t('Item not found.') . EOL); return; } - + $observer_is_owner = false; if(local_channel() && (! $update)) { - + $channel = \App::get_channel(); $channel_acl = array( - 'allow_cid' => $channel['channel_allow_cid'], - 'allow_gid' => $channel['channel_allow_gid'], - 'deny_cid' => $channel['channel_deny_cid'], + 'allow_cid' => $channel['channel_allow_cid'], + 'allow_gid' => $channel['channel_allow_gid'], + 'deny_cid' => $channel['channel_deny_cid'], 'deny_gid' => $channel['channel_deny_gid'] - ); + ); $x = array( 'is_owner' => true, @@ -62,7 +62,7 @@ class Display extends \Zotlabs\Web\Controller { 'default_location' => $channel['channel_location'], 'nickname' => $channel['channel_address'], 'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), - 'acl' => populate_acl($channel_acl,true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post'), + 'acl' => populate_acl($channel_acl,true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post'), 'permissions' => $channel_acl, 'bang' => '', 'visitor' => true, @@ -75,21 +75,21 @@ class Display extends \Zotlabs\Web\Controller { 'jotnets' => true, 'reset' => t('Reset form') ); - + $o = '<div id="jot-popup">'; $o .= status_editor($a,$x,false,'Display'); $o .= '</div>'; } - + // This page can be viewed by anybody so the query could be complicated // First we'll see if there is a copy of the item which is owned by us - if we're logged in locally. - // If that fails (or we aren't logged in locally), + // If that fails (or we aren't logged in locally), // query an item in which the observer (if logged in remotely) has cid or gid rights - // and if that fails, look for a copy of the post that has no privacy restrictions. + // and if that fails, look for a copy of the post that has no privacy restrictions. // If we find the post, but we don't find a copy that we're allowed to look at, this fact needs to be reported. - + // find a copy of the item somewhere - + $target_item = null; if(strpos($item_hash,'b64.') === 0) @@ -100,7 +100,7 @@ class Display extends \Zotlabs\Web\Controller { $r = q("select id, uid, mid, parent, parent_mid, thr_parent, verb, item_type, item_deleted, author_xchan, item_blocked from item where mid like '%s' limit 1", dbesc($item_hash . '%') ); - + if($r) { $target_item = $r[0]; } @@ -117,14 +117,14 @@ class Display extends \Zotlabs\Web\Controller { if($target_item['item_blocked'] == ITEM_MODERATED) { goaway(z_root() . '/moderate/' . $target_item['id']); } - + $r = null; - + if($target_item['item_type'] == ITEM_TYPE_WEBPAGE) { $x = q("select * from channel where channel_id = %d limit 1", intval($target_item['uid']) ); - $y = q("select * from iconfig left join item on iconfig.iid = item.id + $y = q("select * from iconfig left join item on iconfig.iid = item.id where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item.id = %d limit 1", intval($target_item['uid']), intval($target_item['parent']) @@ -141,7 +141,7 @@ class Display extends \Zotlabs\Web\Controller { $x = q("select * from channel where channel_id = %d limit 1", intval($target_item['uid']) ); - $y = q("select * from iconfig left join item on iconfig.iid = item.id + $y = q("select * from iconfig left join item on iconfig.iid = item.id where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'ARTICLE' and item.id = %d limit 1", intval($target_item['uid']), intval($target_item['parent']) @@ -160,7 +160,7 @@ class Display extends \Zotlabs\Web\Controller { intval($target_item['uid']) ); - $y = q("select * from iconfig left join item on iconfig.iid = item.id + $y = q("select * from iconfig left join item on iconfig.iid = item.id where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'CARD' and item.id = %d limit 1", intval($target_item['uid']), intval($target_item['parent']) @@ -179,7 +179,7 @@ class Display extends \Zotlabs\Web\Controller { notice( t('Page not found.') . EOL); return ''; } - + $simple_update = ''; if($update && $_SESSION['loadtime']) $simple_update = " AND (( item_unseen = 1 AND item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) OR item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) "; @@ -191,14 +191,14 @@ class Display extends \Zotlabs\Web\Controller { //$mid = ((($target_item['verb'] == ACTIVITY_LIKE) || ($target_item['verb'] == ACTIVITY_DISLIKE)) ? $target_item['thr_parent'] : $target_item['mid']); $mid = $target_item['mid']; - // if we got a decoded hash we must encode it again before handing to javascript + // if we got a decoded hash we must encode it again before handing to javascript if($decoded) $mid = 'b64.' . base64url_encode($mid); $o .= '<div id="live-display"></div>' . "\r\n"; $o .= "<script> var profile_uid = " . ((intval(local_channel())) ? local_channel() : (-1)) . "; var netargs = '?f='; var profile_page = " . \App::$pager['page'] . "; </script>\r\n"; - + \App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array( '$baseurl' => z_root(), '$pgtype' => 'display', @@ -230,7 +230,7 @@ class Display extends \Zotlabs\Web\Controller { '$mid' => (($mid) ? urlencode($mid) : '') )); - head_add_link([ + head_add_link([ 'rel' => 'alternate', 'type' => 'application/json+oembed', 'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string), @@ -270,8 +270,8 @@ class Display extends \Zotlabs\Web\Controller { $r = q("SELECT item.id as item_id from item WHERE mid = '%s' - AND (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = '' - AND item.deny_gid = '' AND item_private = 0 ) + AND (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = '' + AND item.deny_gid = '' AND item_private = 0 ) and uid in ( " . stream_perms_api_uids(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " )) OR uid = %d ) $sql_extra ) @@ -282,7 +282,7 @@ class Display extends \Zotlabs\Web\Controller { ); } } - + elseif($update && !$load) { $r = null; @@ -307,8 +307,8 @@ class Display extends \Zotlabs\Web\Controller { $sysid = 0; $r = q("SELECT item.parent AS item_id from item WHERE parent_mid = '%s' - AND (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = '' - AND item.deny_gid = '' AND item_private = 0 ) + AND (((( item.allow_cid = '' AND item.allow_gid = '' AND item.deny_cid = '' + AND item.deny_gid = '' AND item_private = 0 ) and uid in ( " . stream_perms_api_uids(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " )) OR uid = %d ) $sql_extra ) @@ -320,7 +320,7 @@ class Display extends \Zotlabs\Web\Controller { ); } } - + else { $r = array(); } @@ -328,7 +328,7 @@ class Display extends \Zotlabs\Web\Controller { if($r) { $parents_str = ids_to_querystr($r,'item_id'); if($parents_str) { - $items = q("SELECT item.*, item.id AS item_id + $items = q("SELECT item.*, item.id AS item_id FROM item WHERE parent in ( %s ) $item_normal ", dbesc($parents_str) @@ -341,10 +341,10 @@ class Display extends \Zotlabs\Web\Controller { else { $items = array(); } - + switch($module_format) { - + case 'html': if ($update) { @@ -363,7 +363,7 @@ class Display extends \Zotlabs\Web\Controller { \App::$page['title'] = (($items[0]['title']) ? $items[0]['title'] . " - " . \App::$page['title'] : \App::$page['title']); $o .= conversation($items, 'display', $update, 'client'); - } + } break; @@ -380,7 +380,7 @@ class Display extends \Zotlabs\Web\Controller { '$owner' => '', '$profile_page' => xmlify(z_root() . '/display/' . $target_item['mid']), )); - + $x = [ 'xml' => $atom, 'channel' => $channel, 'observer_hash' => $observer_hash, 'params' => $params ]; call_hooks('atom_feed_top',$x); @@ -406,13 +406,13 @@ class Display extends \Zotlabs\Web\Controller { header('Content-type: application/atom+xml'); echo $atom; killme(); - + } $o .= '<div id="content-complete"></div>'; if((($update && $load) || $noscript_content) && (! $items)) { - + $r = q("SELECT id, item_deleted FROM item WHERE mid = '%s' LIMIT 1", dbesc($item_hash) ); @@ -421,14 +421,14 @@ class Display extends \Zotlabs\Web\Controller { if(intval($r[0]['item_deleted'])) { notice( t('Item has been removed.') . EOL ); } - else { - notice( t('Permission denied.') . EOL ); + else { + notice( t('Permission denied.') . EOL ); } } else { notice( t('Item not found.') . EOL ); } - + } $_SESSION['loadtime'] = datetime_convert(); diff --git a/Zotlabs/Module/Embedphotos.php b/Zotlabs/Module/Embedphotos.php index 9b0884197..ed5b24724 100644 --- a/Zotlabs/Module/Embedphotos.php +++ b/Zotlabs/Module/Embedphotos.php @@ -40,7 +40,8 @@ class Embedphotos extends \Zotlabs\Web\Controller { if (!$href) { json_return_and_die(array('errormsg' => 'Error retrieving link ' . $href, 'status' => false)); } - $resource_id = array_pop(explode('/', $href)); + $arr = explode('/', $href); + $resource_id = array_pop($arr); $x = self::photolink($resource_id); if($x) json_return_and_die(array('status' => true, 'photolink' => $x, 'resource_id' => $resource_id)); diff --git a/Zotlabs/Module/File_upload.php b/Zotlabs/Module/File_upload.php index 6794dceee..e18067e20 100644 --- a/Zotlabs/Module/File_upload.php +++ b/Zotlabs/Module/File_upload.php @@ -64,7 +64,7 @@ class File_upload extends \Zotlabs\Web\Controller { if($x['partial']) { header('Range: bytes=0-' . (($x['length']) ? $x['length'] - 1 : 0)); - json_return_and_die($result); + json_return_and_die($x); } else { header('Range: bytes=0-' . (($x['size']) ? $x['size'] - 1 : 0)); diff --git a/Zotlabs/Module/Getfile.php b/Zotlabs/Module/Getfile.php index 17d1c84b8..20cc23ac0 100644 --- a/Zotlabs/Module/Getfile.php +++ b/Zotlabs/Module/Getfile.php @@ -6,20 +6,20 @@ use Zotlabs\Lib\Libzot; /** * module: getfile - * + * * used for synchronising files and photos across clones - * + * * The site initiating the file operation will send a sync packet to known clones. * They will respond by building the DB structures they require, then will provide a * post request to this site to grab the file data. This is sent as a stream direct to * disk at the other end, avoiding memory issues. * * Since magic-auth cannot easily be used by the CURL process at the other end, - * we will require a signed request which includes a timestamp. This should not be - * used without SSL and is potentially vulnerable to replay if an attacker decrypts + * we will require a signed request which includes a timestamp. This should not be + * used without SSL and is potentially vulnerable to replay if an attacker decrypts * the SSL traffic fast enough. The amount of time slop is configurable but defaults * to 3 minutes. - * + * */ @@ -54,13 +54,13 @@ class Getfile extends \Zotlabs\Web\Controller { $keyId = $sigblock['keyId']; if($keyId) { - $r = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash - where hubloc_addr = '%s'", + $r = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash + where hubloc_id_url = '%s'", dbesc(str_replace('acct:','',$keyId)) ); if($r) { $hubloc = Libzot::zot_record_preferred($r); - $verified = HTTPSig::verify('',$hubloc['xchan_pubkey']); + $verified = HTTPSig::verify('',$hubloc['xchan_pubkey']); if($verified && $verified['header_signed'] && $verified['header_valid'] && $hash == $hubloc['hubloc_hash']) { $header_verified = true; } @@ -74,15 +74,15 @@ class Getfile extends \Zotlabs\Web\Controller { logger('post: ' . print_r($_POST,true),LOGGER_DEBUG,LOG_INFO); if($header_verified) { logger('HTTPSig verified'); - } - + } + $channel = channelx_by_hash($hash); if((! $channel) || (! $time) || (! $sig)) { logger('error: missing info'); killme(); } - + if(isset($_POST['resolution'])) $resolution = intval($_POST['resolution']); elseif(substr($resource,-2,1) == '-') { @@ -91,21 +91,21 @@ class Getfile extends \Zotlabs\Web\Controller { } else { $resolution = (-1); - } + } $slop = intval(get_pconfig($channel['channel_id'],'system','getfile_time_slop')); if($slop < 1) $slop = 3; - + $d1 = datetime_convert('UTC','UTC',"now + $slop minutes"); - $d2 = datetime_convert('UTC','UTC',"now - $slop minutes"); - + $d2 = datetime_convert('UTC','UTC',"now - $slop minutes"); + if(! $header_verified) { if(($time > $d1) || ($time < $d2)) { logger('time outside allowable range'); killme(); } - + if(! rsa_verify($hash . '.' . $time,base64url_decode($sig),$channel['channel_pubkey'])) { logger('verify failed.'); killme(); @@ -137,20 +137,20 @@ class Getfile extends \Zotlabs\Web\Controller { else { echo dbunescbin($r[0]['content']); } - } + } killme(); } $r = attach_by_hash($resource,$channel['channel_hash'],$revision); - + if(! $r['success']) { logger('attach_by_hash failed: ' . $r['message']); notice( $r['message'] . EOL); return; } - + $unsafe_types = array('text/html','text/css','application/javascript'); - + if(in_array($r['data']['filetype'],$unsafe_types) && (! channel_codeallowed($channel['channel_id']))) { header('Content-type: text/plain'); } diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index 9a120dac1..83424a50d 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -976,7 +976,7 @@ class Item extends Controller { $item_unseen = ((local_channel() != $profile_uid) ? 1 : 0); - $item_wall = (($post_type === 'wall' || $post_type === 'wall-comment') ? 1 : 0); + $item_wall = (($_REQUEST['type'] === 'wall' || $_REQUEST['type'] === 'wall-comment') ? 1 : 0); $item_origin = (($origin) ? 1 : 0); $item_consensus = (($consensus) ? 1 : 0); $item_nocomment = (($nocomment) ? 1 : 0); @@ -1337,7 +1337,7 @@ class Item extends Controller { killme(); } - if(($parent == $post_id) || ($datarray['item_private'] == 1)) { + if($parent || $datarray['item_private'] == 1) { $r = q("select * from item where id = %d", intval($post_id) ); diff --git a/Zotlabs/Module/Like.php b/Zotlabs/Module/Like.php index bb5c6db7a..e3fe4a954 100644 --- a/Zotlabs/Module/Like.php +++ b/Zotlabs/Module/Like.php @@ -1,37 +1,42 @@ <?php + namespace Zotlabs\Module; +use App; use Zotlabs\Lib\Activity; use Zotlabs\Lib\Libsync; +use Zotlabs\Web\Controller; +use Zotlabs\Daemon\Master; + require_once('include/security.php'); require_once('include/bbcode.php'); require_once('include/items.php'); require_once('include/conversation.php'); -class Like extends \Zotlabs\Web\Controller { +class Like extends Controller { private function reaction_to_activity($reaction) { $acts = [ - 'like' => ACTIVITY_LIKE , - 'dislike' => ACTIVITY_DISLIKE , - 'agree' => ACTIVITY_AGREE , - 'disagree' => ACTIVITY_DISAGREE , - 'abstain' => ACTIVITY_ABSTAIN , - 'attendyes' => ACTIVITY_ATTEND , - 'attendno' => ACTIVITY_ATTENDNO , - 'attendmaybe' => ACTIVITY_ATTENDMAYBE + 'like' => ACTIVITY_LIKE, + 'dislike' => ACTIVITY_DISLIKE, + 'agree' => ACTIVITY_AGREE, + 'disagree' => ACTIVITY_DISAGREE, + 'abstain' => ACTIVITY_ABSTAIN, + 'attendyes' => ACTIVITY_ATTEND, + 'attendno' => ACTIVITY_ATTENDNO, + 'attendmaybe' => ACTIVITY_ATTENDMAYBE ]; // unlike (etc.) reactions are an undo of positive reactions, rather than a negative action. // The activity is the same in undo actions and will have the same activity mapping - if(substr($reaction,0,2) === 'un') { - $reaction = substr($reaction,2); + if (substr($reaction, 0, 2) === 'un') { + $reaction = substr($reaction, 2); } - if(array_key_exists($reaction,$acts)) { + if (array_key_exists($reaction, $acts)) { return $acts[$reaction]; } @@ -41,117 +46,124 @@ class Like extends \Zotlabs\Web\Controller { private function like_response($arr) { - if($arr['conv_mode'] === 'channel') { + $page_mode = (($arr['item']['item_thread_top'] && $_REQUEST['page_mode']) ? $_REQUEST['page_mode'] : 'r_preview'); + $conv_mode = (($_REQUEST['conv_mode']) ? $_REQUEST['conv_mode'] : 'network'); + + if ($conv_mode === 'channel') { $parts = explode('@', $arr['owner_xchan']['xchan_addr']); profile_load($parts[0]); } - $item_normal = item_normal(); - $activities = q("SELECT item.*, item.id AS item_id FROM item - WHERE uid = %d $item_normal - AND thr_parent = '%s' - AND verb IN ('%s', '%s', '%s', '%s', '%s')", - intval($arr['item']['uid']), - dbesc($arr['item']['mid']), - dbesc(ACTIVITY_LIKE), - dbesc(ACTIVITY_DISLIKE), - dbesc(ACTIVITY_ATTEND), - dbesc(ACTIVITY_ATTENDNO), - dbesc(ACTIVITY_ATTENDMAYBE) - ); - - xchan_query($activities,true); - - $convitems[] = $arr['item']; - $convitems = array_merge($convitems, $activities); - - $convitems = fetch_post_tags($convitems,true); + if ($page_mode === 'list') { + $items = q("SELECT item.*, item.id AS item_id FROM item + WHERE uid = %d $item_normal + AND parent = %d", + intval($arr['item']['uid']), + intval($arr['item']['parent']) + ); + xchan_query($items, true); + $items = fetch_post_tags($items, true); + $items = conv_sort($items, 'commented'); + } + else { + $activities = q("SELECT item.*, item.id AS item_id FROM item + WHERE uid = %d $item_normal + AND thr_parent = '%s' + AND verb IN ('%s', '%s', '%s', '%s', '%s')", + intval($arr['item']['uid']), + dbesc($arr['item']['mid']), + dbesc(ACTIVITY_LIKE), + dbesc(ACTIVITY_DISLIKE), + dbesc(ACTIVITY_ATTEND), + dbesc(ACTIVITY_ATTENDNO), + dbesc(ACTIVITY_ATTENDMAYBE) + ); + xchan_query($activities, true); + $items = array_merge([$arr['item']], $activities); + $items = fetch_post_tags($items, true); + } $ret = [ 'success' => 1, 'orig_id' => $arr['orig_item_id'], //this is required for pubstream items where $item_id != $item['id'] - 'id' => $arr['item']['id'], - 'html' => conversation($convitems, $arr['conv_mode'], true, 'r_preview'), + 'id' => $arr['item']['id'], + 'html' => conversation($items, $conv_mode, true, $page_mode), ]; - return $ret; } public function get() { - - $o = EMPTY_STR; + $o = EMPTY_STR; $sys_channel = get_sys_channel(); - $sys_channel_id = (($sys_channel) ? $sys_channel['channel_id'] : 0); - - $observer = \App::get_observer(); + $observer = App::get_observer(); $interactive = $_REQUEST['interactive']; - if((! $observer) || ($interactive)) { + + if ((!$observer) || ($interactive)) { $o .= '<h1>' . t('Like/Dislike') . '</h1>'; $o .= EOL . EOL; - - if(! $observer) { - $_SESSION['return_url'] = \App::$query_string; + + if (!$observer) { + $_SESSION['return_url'] = App::$query_string; + $o .= t('This action is restricted to members.') . EOL; $o .= t('Please <a href="rmagic">login with your $Projectname ID</a> or <a href="register">register as a new $Projectname member</a> to continue.') . EOL; return $o; } } - + $verb = notags(trim($_GET['verb'])); - $mode = (($_GET['conv_mode'] === 'channel') ? 'channel' : 'network'); - if(! $verb) + if (!$verb) $verb = 'like'; - + $activity = $this->reaction_to_activity($verb); - if(! $activity) { - return EMPTY_STR; + if (!$activity) { + return EMPTY_STR; } $is_rsvp = false; - if (in_array($activity, [ ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE ])) { + if (in_array($activity, [ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE])) { $is_rsvp = true; } - $extended_like = false; - $object = $target = null; - $post_type = EMPTY_STR; - $objtype = EMPTY_STR; - - if(argc() == 3) { - - if(! $observer) + $object = $target = null; + $post_type = EMPTY_STR; + $objtype = EMPTY_STR; + + if (argc() == 3) { + + if (!$observer) killme(); - + $extended_like = true; - $obj_type = argv(1); - $obj_id = argv(2); - $public = true; - - if($obj_type == 'profile') { + $obj_type = argv(1); + $obj_id = argv(2); + $public = true; + + if ($obj_type == 'profile') { $r = q("select * from profile where profile_guid = '%s' limit 1", dbesc(argv(2)) ); - if(! $r) - killme(); + if (!$r) + killme(); $owner_uid = $r[0]['uid']; - if($r[0]['is_default']) + if ($r[0]['is_default']) $public = true; - if(! $public) { + if (!$public) { $d = q("select abook_xchan from abook where abook_profile = '%s' and abook_channel = %d", dbesc($r[0]['profile_guid']), intval($owner_uid) ); - if(! $d) { + if (!$d) { // forgery - illegal - if($interactive) { - notice( t('Invalid request.') . EOL); + if ($interactive) { + notice(t('Invalid request.') . EOL); return $o; } killme(); @@ -159,122 +171,122 @@ class Like extends \Zotlabs\Web\Controller { // $d now contains a list of those who can see this profile - only send the status notification // to them. $allow_cid = $allow_gid = $deny_cid = $deny_gid = ''; - foreach($d as $dd) { + foreach ($d as $dd) { $allow_cid .= '<' . $dd['abook_xchan'] . '>'; } } $post_type = t('channel'); - $objtype = ACTIVITY_OBJ_PROFILE; - + $objtype = ACTIVITY_OBJ_PROFILE; + $profile = $r[0]; } - elseif($obj_type == 'thing') { - + elseif ($obj_type == 'thing') { + $r = q("select * from obj where obj_type = %d and obj_obj = '%s' limit 1", - intval(TERM_OBJ_THING), - dbesc(argv(2)) - ); - - if(! $r) { - if($interactive) { - notice( t('Invalid request.') . EOL); + intval(TERM_OBJ_THING), + dbesc(argv(2)) + ); + + if (!$r) { + if ($interactive) { + notice(t('Invalid request.') . EOL); return $o; } - killme(); + killme(); } - + $owner_uid = $r[0]['obj_channel']; - + $allow_cid = $r[0]['allow_cid']; $allow_gid = $r[0]['allow_gid']; - $deny_cid = $r[0]['deny_cid']; - $deny_gid = $r[0]['deny_gid']; - if($allow_cid || $allow_gid || $deny_cid || $deny_gid) + $deny_cid = $r[0]['deny_cid']; + $deny_gid = $r[0]['deny_gid']; + if ($allow_cid || $allow_gid || $deny_cid || $deny_gid) $public = false; - + $post_type = t('thing'); - $objtype = ACTIVITY_OBJ_PROFILE; - $tgttype = ACTIVITY_OBJ_THING; - + $objtype = ACTIVITY_OBJ_PROFILE; + $tgttype = ACTIVITY_OBJ_THING; + $links = array(); - $links[] = array('rel' => 'alternate', 'type' => 'text/html', - 'href' => z_root() . '/thing/' . $r[0]['obj_obj']); - if($r[0]['imgurl']) + $links[] = array('rel' => 'alternate', 'type' => 'text/html', + 'href' => z_root() . '/thing/' . $r[0]['obj_obj']); + if ($r[0]['imgurl']) $links[] = array('rel' => 'photo', 'href' => $r[0]['obj_imgurl']); - + $target = json_encode(array( 'type' => $tgttype, 'title' => $r[0]['obj_term'], 'id' => z_root() . '/thing/' . $r[0]['obj_obj'], 'link' => $links )); - + $plink = '[zrl=' . z_root() . '/thing/' . $r[0]['obj_obj'] . ']' . $r[0]['obj_term'] . '[/zrl]'; - + } - - if(! ($owner_uid && $r)) { - if($interactive) { - notice( t('Invalid request.') . EOL); + + if (!($owner_uid && $r)) { + if ($interactive) { + notice(t('Invalid request.') . EOL); return $o; } killme(); } - + // The resultant activity is going to be a wall-to-wall post, so make sure this is allowed - - $perms = get_all_perms($owner_uid,$observer['xchan_hash']); - - if(! ($perms['post_like'] && $perms['view_profile'])) { - if($interactive) { - notice( t('Permission denied.') . EOL); + + $perms = get_all_perms($owner_uid, $observer['xchan_hash']); + + if (!($perms['post_like'] && $perms['view_profile'])) { + if ($interactive) { + notice(t('Permission denied.') . EOL); return $o; } killme(); } - + $ch = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1", intval($owner_uid) ); - if(! $ch) { - if($interactive) { - notice( t('Channel unavailable.') . EOL); + if (!$ch) { + if ($interactive) { + notice(t('Channel unavailable.') . EOL); return $o; } killme(); } - - if(! $plink) + + if (!$plink) $plink = '[zrl=' . z_root() . '/profile/' . $ch[0]['channel_address'] . ']' . $post_type . '[/zrl]'; - - $object = json_encode(Activity::fetch_profile([ 'id' => channel_url($ch[0]) ])); + + $object = json_encode(Activity::fetch_profile(['id' => channel_url($ch[0])])); // second like of the same thing is "undo" for the first like - + $z = q("select * from likes where channel_id = %d and liker = '%s' and verb = '%s' and target_type = '%s' and target_id = '%s' limit 1", intval($ch[0]['channel_id']), dbesc($observer['xchan_hash']), dbesc($activity), - dbesc(($tgttype)?$tgttype:$objtype), + dbesc(($tgttype) ? $tgttype : $objtype), dbesc($obj_id) ); - - if($z) { + + if ($z) { $z[0]['deleted'] = 1; - Libsync::build_sync_packet($ch[0]['channel_id'],array('likes' => $z)); - + Libsync::build_sync_packet($ch[0]['channel_id'], array('likes' => $z)); + q("delete from likes where id = %d", intval($z[0]['id']) ); - if($z[0]['i_mid']) { + if ($z[0]['i_mid']) { $r = q("select id from item where mid = '%s' and uid = %d limit 1", dbesc($z[0]['i_mid']), intval($ch[0]['channel_id']) ); - if($r) - drop_item($r[0]['id'],false); - if($interactive) { - notice( t('Previous action reversed.') . EOL); + if ($r) + drop_item($r[0]['id'], false); + if ($interactive) { + notice(t('Previous action reversed.') . EOL); return $o; } } @@ -283,19 +295,19 @@ class Like extends \Zotlabs\Web\Controller { } else { - if(! $observer) + if (!$observer) killme(); - + // this is used to like an item or comment - + $item_id = ((argc() == 2) ? notags(trim(argv(1))) : 0); - + logger('like: verb ' . $verb . ' item ' . $item_id, LOGGER_DEBUG); - + // get the item. Allow linked photos (which are normally hidden) to be liked - $r = q("SELECT * FROM item WHERE id = %d - and item_type in (0,6,7) and item_deleted = 0 and item_unpublished = 0 + $r = q("SELECT * FROM item WHERE id = %d + and item_type in (0,6,7) and item_deleted = 0 and item_unpublished = 0 and item_delayed = 0 and item_pending_remove = 0 and item_blocked = 0 LIMIT 1", intval($item_id) ); @@ -304,32 +316,30 @@ class Like extends \Zotlabs\Web\Controller { // create a copy of the parent in your stream. If not the conversation // parent, copy that as well. - if($r) { - if($r[0]['uid'] === $sys_channel['channel_id'] && local_channel()) { - $r = [ copy_of_pubitem(\App::get_channel(), $r[0]['mid']) ]; + if ($r) { + if ($r[0]['uid'] === $sys_channel['channel_id'] && local_channel()) { + $r = [copy_of_pubitem(App::get_channel(), $r[0]['mid'])]; } } - if(! $item_id || (! $r)) { + if (!$item_id || (!$r)) { logger('like: no item ' . $item_id); killme(); } - xchan_query($r,true); - - $item = $r[0]; + xchan_query($r, true); + $item = $r[0]; $owner_uid = $r[0]['uid']; $owner_aid = $r[0]['aid']; - $can_comment = false; - if((array_key_exists('owner',$item)) && intval($item['owner']['abook_self'])) - $can_comment = perm_is_allowed($item['uid'],$observer['xchan_hash'],'post_comments'); - else - $can_comment = can_comment_on_post($observer['xchan_hash'],$item); + if ((array_key_exists('owner', $item)) && intval($item['owner']['abook_self'])) + $can_comment = perm_is_allowed($item['uid'], $observer['xchan_hash'], 'post_comments'); + else + $can_comment = can_comment_on_post($observer['xchan_hash'], $item); - if(! $can_comment) { - notice( t('Permission denied') . EOL); + if (!$can_comment) { + notice(t('Permission denied') . EOL); killme(); } @@ -337,7 +347,7 @@ class Like extends \Zotlabs\Web\Controller { dbesc($item['owner_xchan']) ); - if($r) + if ($r) $thread_owner = $r[0]; else killme(); @@ -345,223 +355,207 @@ class Like extends \Zotlabs\Web\Controller { $r = q("select * from xchan where xchan_hash = '%s' limit 1", dbesc($item['author_xchan']) ); - if($r) + if ($r) $item_author = $r[0]; else killme(); - $verbs = " '".dbesc($activity)."' "; - - $multi_undo = false; - + $verbs = " '" . dbesc($activity) . "' "; + + $multi_undo = false; + // event participation and consensus items are essentially radio toggles. If you make a subsequent choice, - // we need to eradicate your first choice. - - if($activity === ACTIVITY_ATTEND || $activity === ACTIVITY_ATTENDNO || $activity === ACTIVITY_ATTENDMAYBE) { - $verbs = " '" . dbesc(ACTIVITY_ATTEND) . "','" . dbesc(ACTIVITY_ATTENDNO) . "','" . dbesc(ACTIVITY_ATTENDMAYBE) . "' "; + // we need to eradicate your first choice. + + if ($activity === ACTIVITY_ATTEND || $activity === ACTIVITY_ATTENDNO || $activity === ACTIVITY_ATTENDMAYBE) { + $verbs = " '" . dbesc(ACTIVITY_ATTEND) . "','" . dbesc(ACTIVITY_ATTENDNO) . "','" . dbesc(ACTIVITY_ATTENDMAYBE) . "' "; $multi_undo = 1; } - if($activity === ACTIVITY_AGREE || $activity === ACTIVITY_DISAGREE || $activity === ACTIVITY_ABSTAIN) { - $verbs = " '" . dbesc(ACTIVITY_AGREE) . "','" . dbesc(ACTIVITY_DISAGREE) . "','" . dbesc(ACTIVITY_ABSTAIN) . "' "; + if ($activity === ACTIVITY_AGREE || $activity === ACTIVITY_DISAGREE || $activity === ACTIVITY_ABSTAIN) { + $verbs = " '" . dbesc(ACTIVITY_AGREE) . "','" . dbesc(ACTIVITY_DISAGREE) . "','" . dbesc(ACTIVITY_ABSTAIN) . "' "; $multi_undo = true; } - + $item_normal = item_normal(); - + $r = q("SELECT id, parent, uid, verb FROM item WHERE verb in ( $verbs ) $item_normal AND author_xchan = '%s' AND thr_parent = '%s' and uid = %d ", dbesc($observer['xchan_hash']), dbesc($item['mid']), intval($owner_uid) ); - - if($r) { + + if ($r) { // already liked it. Drop that item. require_once('include/items.php'); - foreach($r as $rr) { - drop_item($rr['id'],false,DROPITEM_PHASE1); + foreach ($r as $rr) { + drop_item($rr['id'], false, DROPITEM_PHASE1); // set the changed timestamp on the parent so we'll see the update without a page reload - $z = q("update item set changed = '%s' where id = %d and uid = %d", + q("update item set changed = '%s' where id = %d and uid = %d", dbesc(datetime_convert()), intval($rr['parent']), intval($rr['uid']) ); - // Prior activity was a duplicate of the one we're submitting, just undo it; + // Prior activity was a duplicate of the one we're submitting, just undo it; // don't fall through and create another - if(activity_match($rr['verb'],$activity)) + if (activity_match($rr['verb'], $activity)) $multi_undo = false; - + // drop_item was not done interactively, so we need to invoke the notifier // in order to push the changes to connections - \Zotlabs\Daemon\Master::Summon(array('Notifier','drop',$rr['id'])); + Master::Summon(array('Notifier', 'drop', $rr['id'])); - } - - if($interactive) + + if ($interactive) return; - - if(! $multi_undo) { + + if (!$multi_undo) { $ret = self::like_response([ - 'item' => $item, - 'orig_item_id' => $item_id, - 'owner_xchan' => $thread_owner, - 'conv_mode' => $mode + 'item' => $item, + 'orig_item_id' => $item_id, + 'owner_xchan' => $thread_owner ]); json_return_and_die($ret); } - - } } - + $uuid = item_message_id(); - + $arr = array(); - - $arr['uuid'] = $uuid; - $arr['mid'] = z_root() . (($is_rsvp) ? '/activity/' : '/item/') . $uuid; - if($extended_like) { + $arr['uuid'] = $uuid; + $arr['mid'] = z_root() . (($is_rsvp) ? '/activity/' : '/item/') . $uuid; + + if ($extended_like) { $arr['item_thread_top'] = 1; - $arr['item_origin'] = 1; - $arr['item_wall'] = 1; + $arr['item_origin'] = 1; + $arr['item_wall'] = 1; } else { $post_type = (($item['resource_type'] === 'photo') ? t('photo') : t('status')); - if($item['obj_type'] === ACTIVITY_OBJ_EVENT) + if ($item['obj_type'] === ACTIVITY_OBJ_EVENT) $post_type = t('event'); - - $links = array(array('rel' => 'alternate','type' => 'text/html', 'href' => $item['plink'])); - $objtype = (($item['resource_type'] === 'photo') ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE ); - if($objtype === ACTIVITY_OBJ_NOTE && (! intval($item['item_thread_top']))) + $objtype = (($item['resource_type'] === 'photo') ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE); + + if ($objtype === ACTIVITY_OBJ_NOTE && (!intval($item['item_thread_top']))) $objtype = ACTIVITY_OBJ_COMMENT; - - $body = $item['body']; - - $object = json_encode(Activity::fetch_item( [ 'id' => $item['mid'] ])); + $object = json_encode(Activity::fetch_item(['id' => $item['mid']])); + + if (!intval($item['item_thread_top'])) + $post_type = 'comment'; - if(! intval($item['item_thread_top'])) - $post_type = 'comment'; - - $arr['item_origin'] = 1; + $arr['item_origin'] = 1; $arr['item_notshown'] = 1; - $arr['item_type'] = $item['item_type']; - - if(intval($item['item_wall'])) + $arr['item_type'] = $item['item_type']; + + if (intval($item['item_wall'])) $arr['item_wall'] = 1; - + // if this was a linked photo and was hidden, unhide it. - - if(intval($item['item_hidden'])) { + + if (intval($item['item_hidden'])) { $r = q("update item set item_hidden = 0 where id = %d", intval($item['id']) ); - } - + } + } - - if($verb === 'like') + + if ($verb === 'like') $bodyverb = t('%1$s likes %2$s\'s %3$s'); - if($verb === 'dislike') + if ($verb === 'dislike') $bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s'); - if($verb === 'agree') + if ($verb === 'agree') $bodyverb = t('%1$s agrees with %2$s\'s %3$s'); - if($verb === 'disagree') + if ($verb === 'disagree') $bodyverb = t('%1$s doesn\'t agree with %2$s\'s %3$s'); - if($verb === 'abstain') + if ($verb === 'abstain') $bodyverb = t('%1$s abstains from a decision on %2$s\'s %3$s'); - if($verb === 'attendyes') + if ($verb === 'attendyes') $bodyverb = t('%1$s is attending %2$s\'s %3$s'); - if($verb === 'attendno') + if ($verb === 'attendno') $bodyverb = t('%1$s is not attending %2$s\'s %3$s'); - if($verb === 'attendmaybe') + if ($verb === 'attendmaybe') $bodyverb = t('%1$s may attend %2$s\'s %3$s'); - - if(! isset($bodyverb)) - killme(); - - - - if($extended_like) { - $ulink = '[zrl=' . $ch[0]['xchan_url'] . '][bdi]' . $ch[0]['xchan_name'] . '[/bdi][/zrl]'; - $alink = '[zrl=' . $observer['xchan_url'] . '][bdi]' . $observer['xchan_name'] . '[/bdi][/zrl]'; + + if (!isset($bodyverb)) + killme(); + + if ($extended_like) { + $ulink = '[zrl=' . $ch[0]['xchan_url'] . '][bdi]' . $ch[0]['xchan_name'] . '[/bdi][/zrl]'; + $alink = '[zrl=' . $observer['xchan_url'] . '][bdi]' . $observer['xchan_name'] . '[/bdi][/zrl]'; $private = (($public) ? 0 : 1); } else { - $arr['parent'] = $item['id']; - $arr['thr_parent'] = $item['mid']; - $ulink = '[zrl=' . $item_author['xchan_url'] . '][bdi]' . $item_author['xchan_name'] . '[/bdi][/zrl]'; - $alink = '[zrl=' . $observer['xchan_url'] . '][bdi]' . $observer['xchan_name'] . '[/bdi][/zrl]'; - $plink = '[zrl=' . z_root() . '/display/' . gen_link_id($item['mid']) . ']' . $post_type . '[/zrl]'; - $allow_cid = $item['allow_cid']; - $allow_gid = $item['allow_gid']; - $deny_cid = $item['deny_cid']; - $deny_gid = $item['deny_gid']; - $private = $item['private']; - + $arr['parent'] = $item['id']; + $arr['thr_parent'] = $item['mid']; + $ulink = '[zrl=' . $item_author['xchan_url'] . '][bdi]' . $item_author['xchan_name'] . '[/bdi][/zrl]'; + $alink = '[zrl=' . $observer['xchan_url'] . '][bdi]' . $observer['xchan_name'] . '[/bdi][/zrl]'; + $plink = '[zrl=' . z_root() . '/display/' . gen_link_id($item['mid']) . ']' . $post_type . '[/zrl]'; + $allow_cid = $item['allow_cid']; + $allow_gid = $item['allow_gid']; + $deny_cid = $item['deny_cid']; + $deny_gid = $item['deny_gid']; + $private = $item['private']; + } - - + $arr['aid'] = (($extended_like) ? $ch[0]['channel_account_id'] : $owner_aid); $arr['uid'] = $owner_uid; - - - $arr['item_flags'] = $item_flags; - $arr['item_wall'] = $item_wall; + $arr['item_flags'] = $item['item_flags']; + $arr['item_wall'] = $item['item_wall']; $arr['parent_mid'] = (($extended_like) ? $arr['mid'] : $item['mid']); $arr['owner_xchan'] = (($extended_like) ? $ch[0]['xchan_hash'] : $thread_owner['xchan_hash']); $arr['author_xchan'] = $observer['xchan_hash']; - - - $arr['body'] = sprintf( $bodyverb, $alink, $ulink, $plink ); - if($obj_type === 'thing' && $r[0]['imgurl']) { + $arr['body'] = sprintf($bodyverb, $alink, $ulink, $plink); + + if ($obj_type === 'thing' && $r[0]['imgurl']) { $arr['body'] .= "\n\n[zmg=80x80]" . $r[0]['imgurl'] . '[/zmg]'; - } - if($obj_type === 'profile') { - if($public) { - $arr['body'] .= "\n\n" . '[embed]' . z_root() . '/profile/' . $ch[0]['channel_address'] . '[/embed]'; + } + if ($obj_type === 'profile') { + if ($public) { + $arr['body'] .= "\n\n" . '[embed]' . z_root() . '/profile/' . $ch[0]['channel_address'] . '[/embed]'; } else $arr['body'] .= "\n\n[zmg=80x80]" . $profile['thumb'] . '[/zmg]'; - } - - - $arr['verb'] = $activity; - $arr['obj_type'] = $objtype; - $arr['obj'] = $object; - - if($target) { - $arr['tgt_type'] = $tgttype; - $arr['target'] = $target; } - - $arr['allow_cid'] = $allow_cid; - $arr['allow_gid'] = $allow_gid; - $arr['deny_cid'] = $deny_cid; - $arr['deny_gid'] = $deny_gid; - $arr['item_private'] = $private; - - call_hooks('post_local',$arr); - - $post = item_store($arr); + + $arr['verb'] = $activity; + $arr['obj_type'] = $objtype; + $arr['obj'] = $object; + + if ($target) { + $arr['tgt_type'] = $tgttype; + $arr['target'] = $target; + } + + $arr['allow_cid'] = $allow_cid; + $arr['allow_gid'] = $allow_gid; + $arr['deny_cid'] = $deny_cid; + $arr['deny_gid'] = $deny_gid; + $arr['item_private'] = $private; + + call_hooks('post_local', $arr); + + $post = item_store($arr); $post_id = $post['item_id']; // save the conversation from expiration - if(local_channel() && array_key_exists('item',$post) && (intval($post['item']['id']) != intval($post['item']['parent']))) - retain_item($post['item']['parent']); - + if (local_channel() && array_key_exists('item', $post) && (intval($post['item']['id']) != intval($post['item']['parent']))) + retain_item($post['item']['parent']); + $arr['id'] = $post_id; - + call_hooks('post_local_end', $arr); - - - if($extended_like) { + + if ($extended_like) { $r = q("insert into likes (channel_id,liker,likee,iid,i_mid,verb,target_type,target_id,target) values (%d,'%s','%s',%d,'%s','%s','%s','%s','%s')", intval($ch[0]['channel_id']), dbesc($observer['xchan_hash']), @@ -569,39 +563,38 @@ class Like extends \Zotlabs\Web\Controller { intval($post_id), dbesc($arr['mid']), dbesc($activity), - dbesc(($tgttype)? $tgttype : $objtype), + dbesc(($tgttype) ? $tgttype : $objtype), dbesc($obj_id), - dbesc(($target) ? $target : $object) + dbesc(($target) ? $target : $object) ); $r = q("select * from likes where liker = '%s' and likee = '%s' and i_mid = '%s' and verb = '%s' and target_type = '%s' and target_id = '%s' ", dbesc($observer['xchan_hash']), dbesc($ch[0]['channel_hash']), dbesc($arr['mid']), dbesc($activity), - dbesc(($tgttype)? $tgttype : $objtype), + dbesc(($tgttype) ? $tgttype : $objtype), dbesc($obj_id) ); - if($r) - Libsync::build_sync_packet($ch[0]['channel_id'],array('likes' => $r)); - + if ($r) + Libsync::build_sync_packet($ch[0]['channel_id'], array('likes' => $r)); + } - - \Zotlabs\Daemon\Master::Summon(array('Notifier','like',$post_id)); - - if($interactive) { - notice( t('Action completed.') . EOL); + + Master::Summon(array('Notifier', 'like', $post_id)); + + if ($interactive) { + notice(t('Action completed.') . EOL); $o .= t('Thank you.'); return $o; } $ret = self::like_response([ - 'item' => $item, - 'orig_item_id' => $item_id, - 'owner_xchan' => $thread_owner, - 'conv_mode' => $mode + 'item' => $item, + 'orig_item_id' => $item_id, + 'owner_xchan' => $thread_owner ]); json_return_and_die($ret); } - + } diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php index 4a1692d64..e9edd8de3 100644 --- a/Zotlabs/Module/Network.php +++ b/Zotlabs/Module/Network.php @@ -22,42 +22,42 @@ class Network extends \Zotlabs\Web\Controller { if(in_array(substr($_GET['search'],0,1),[ '@', '!', '?'])) goaway('search' . '?f=&search=' . $_GET['search']); - + if(count($_GET) < 2) { $network_options = get_pconfig(local_channel(),'system','network_page_default'); if($network_options) goaway('network' . '?f=&' . $network_options); } - + $channel = App::get_channel(); App::$profile_uid = local_channel(); head_set_icon($channel['xchan_photo_s']); - + } - + function get($update = 0, $load = false) { - + if(! local_channel()) { $_SESSION['return_url'] = App::$query_string; return login(false); } - + $o = ''; $arr = array('query' => App::$query_string); - + call_hooks('network_content_init', $arr); - + $channel = App::get_channel(); $item_normal = item_normal(); $item_normal_update = item_normal_update(); - + $datequery = $datequery2 = ''; - + $group = 0; - + $nouveau = false; - + $datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : ''); $datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : ''); $gid = ((x($_GET,'gid')) ? intval($_GET['gid']) : 0); @@ -87,13 +87,13 @@ class Network extends \Zotlabs\Web\Controller { $search = ''; } } - + if($datequery) $order = 'post'; - - + + // filter by collection (e.g. group) - + if($gid) { $r = q("SELECT * FROM pgrp WHERE id = %d AND uid = %d LIMIT 1", intval($gid), @@ -106,12 +106,12 @@ class Network extends \Zotlabs\Web\Controller { goaway(z_root() . '/network'); // NOTREACHED } - + $group = $gid; $group_hash = $r[0]['hash']; $def_acl = array('allow_gid' => '<' . $r[0]['hash'] . '>'); } - + $default_cmin = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmin',0) : (-1)); $default_cmax = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmax',99) : (-1)); @@ -127,7 +127,7 @@ class Network extends \Zotlabs\Web\Controller { $net = ((x($_GET,'net')) ? $_GET['net'] : ''); $pf = ((x($_GET,'pf')) ? $_GET['pf'] : ''); $unseen = ((x($_GET,'unseen')) ? $_GET['unseen'] : ''); - + if (Apps::system_app_installed(local_channel(),'Affinity Tool')) { $affinity_locked = intval(get_pconfig(local_channel(),'affinity','lock',1)); if ($affinity_locked) { @@ -155,16 +155,16 @@ class Network extends \Zotlabs\Web\Controller { } $def_acl = [ 'allow_cid' => '<' . $cid_r[0]['abook_xchan'] . '>', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ]; } - + if(! $update) { - + // search terms header if($search || $hashtags) { $o .= replace_macros(get_markup_template("section_title.tpl"),array( '$title' => t('Search Results For:') . ' ' . (($search) ? htmlspecialchars($search, ENT_COMPAT,'UTF-8') : '#' . htmlspecialchars($hashtags, ENT_COMPAT,'UTF-8')) )); } - + nav_set_selected('Network'); $bang = '!'; @@ -179,14 +179,14 @@ class Network extends \Zotlabs\Web\Controller { } $channel_acl = array( - 'allow_cid' => $channel['channel_allow_cid'], - 'allow_gid' => $channel['channel_allow_gid'], - 'deny_cid' => $channel['channel_deny_cid'], + 'allow_cid' => $channel['channel_allow_cid'], + 'allow_gid' => $channel['channel_allow_gid'], + 'deny_cid' => $channel['channel_deny_cid'], 'deny_gid' => $channel['channel_deny_gid'] ); $private_editing = (($group || $cid) ? true : false); - + $x = array( 'is_owner' => true, 'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''), @@ -204,28 +204,28 @@ class Network extends \Zotlabs\Web\Controller { 'jotnets' => true, 'reset' => t('Reset form') ); - + $status_editor = status_editor($a,$x,false,'Network'); $o .= $status_editor; } - - + + // We don't have to deal with ACL's on this page. You're looking at everything // that belongs to you, hence you can see all of it. We will filter by group if // desired. - - + + $sql_options = (($star) ? " and item_starred = 1 " : ''); - + $sql_nets = ''; $item_thread_top = ' AND item_thread_top = 1 '; - + $sql_extra = ''; - + if($group) { $contact_str = ''; @@ -241,18 +241,18 @@ class Network extends \Zotlabs\Web\Controller { } $item_thread_top = ''; $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND (( author_xchan IN ( $contact_str ) OR owner_xchan in ( $contact_str )) or allow_gid like '" . protect_sprintf('%<' . dbesc($group_hash) . '>%') . "' ) and id = parent $item_normal ) "; - + $x = group_rec_byhash(local_channel(), $group_hash); - + if($x) { $title = replace_macros(get_markup_template("section_title.tpl"),array( '$title' => t('Privacy group: ') . $x['gname'] )); } - + $o = $title; $o .= $status_editor; - + } elseif($cid_r) { $item_thread_top = ''; @@ -324,75 +324,26 @@ class Network extends \Zotlabs\Web\Controller { } } - + if(x($category)) { $sql_extra .= protect_sprintf(term_query('item', $category, TERM_CATEGORY)); } if(x($hashtags)) { $sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG, TERM_COMMUNITYTAG)); } - - if(! $update) { - // The special div is needed for liveUpdate to kick in for this page. - // We only launch liveUpdate if you aren't filtering in some incompatible - // way and also you aren't writing a comment (discovered in javascript). - $maxheight = get_pconfig(local_channel(),'system','network_divmore_height'); - if(! $maxheight) - $maxheight = 400; - - - $o .= '<div id="live-network"></div>' . "\r\n"; - $o .= "<script> var profile_uid = " . local_channel() - . "; var profile_page = " . App::$pager['page'] - . "; divmore_height = " . intval($maxheight) . "; </script>\r\n"; - - App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array( - '$baseurl' => z_root(), - '$pgtype' => 'network', - '$uid' => ((local_channel()) ? local_channel() : '0'), - '$gid' => (($gid) ? $gid : '0'), - '$cid' => (($cid) ? $cid : '0'), - '$cmin' => (($cmin) ? $cmin : '(-1)'), - '$cmax' => (($cmax) ? $cmax : '(-1)'), - '$star' => (($star) ? $star : '0'), - '$liked' => (($liked) ? $liked : '0'), - '$conv' => (($conv) ? $conv : '0'), - '$spam' => (($spam) ? $spam : '0'), - '$fh' => '0', - '$dm' => (($dm) ? $dm : '0'), - '$nouveau' => (($nouveau) ? $nouveau : '0'), - '$wall' => '0', - '$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0), - '$page' => ((App::$pager['page'] != 1) ? App::$pager['page'] : 1), - '$search' => (($search) ? urlencode($search) : ''), - '$xchan' => (($xchan) ? urlencode($xchan) : ''), - '$order' => $order, - '$file' => (($file) ? urlencode($file) : ''), - '$cats' => (($category) ? urlencode($category) : ''), - '$tags' => (($hashtags) ? urlencode($hashtags) : ''), - '$dend' => $datequery, - '$mid' => '', - '$verb' => (($verb) ? urlencode($verb) : ''), - '$net' => (($net) ? urlencode($net) : ''), - '$dbegin' => $datequery2, - '$pf' => (($pf) ? intval($pf) : 0), - '$unseen' => (($unseen) ? urlencode($unseen) : '') - )); - } - $sql_extra3 = ''; - + if($datequery) { $sql_extra3 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery)))); } if($datequery2) { $sql_extra3 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2)))); } - + $sql_extra2 = (($nouveau) ? '' : " AND item.parent = item.id "); $sql_extra3 = (($nouveau) ? '' : $sql_extra3); - + if(x($_GET,'search')) { $search = escape_tags($_GET['search']); if(strpos($search,'#') === 0) { @@ -405,7 +356,7 @@ class Network extends \Zotlabs\Web\Controller { ); } } - + if ($verb) { // the presence of a leading dot in the verb determines @@ -425,7 +376,7 @@ class Network extends \Zotlabs\Web\Controller { ); } } - + if(strlen($file)) { $sql_extra .= term_query('item',$file,TERM_FILE); } @@ -433,52 +384,52 @@ class Network extends \Zotlabs\Web\Controller { if ($dm) { $sql_extra .= " AND item_private = 2 "; } - + if($conv) { $item_thread_top = ''; $sql_extra .= " AND ( author_xchan = '" . dbesc($channel['channel_hash']) . "' OR item_mentionsme = 1 ) "; } - + if($update && ! $load) { - + // only setup pagination on initial page view $pager_sql = ''; - + } else { $itemspage = get_pconfig(local_channel(),'system','itemspage'); App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 10)); $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']), intval(App::$pager['start'])); } - + // cmin and cmax are both -1 when the affinity tool is disabled if(($cmin != (-1)) || ($cmax != (-1))) { - + // Not everybody who shows up in the network stream will be in your address book. // By default those that aren't are assumed to have closeness = 99; but this isn't // recorded anywhere. So if cmax is 99, we'll open the search up to anybody in // the stream with a NULL address book entry. - + $sql_nets .= " AND "; - + if($cmax == 99) $sql_nets .= " ( "; - + $sql_nets .= "( abook.abook_closeness >= " . intval($cmin) . " "; $sql_nets .= " AND abook.abook_closeness <= " . intval($cmax) . " ) "; - + if($cmax == 99) $sql_nets .= " OR abook.abook_closeness IS NULL ) "; - + } - $net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : ''); + $net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : ''); $net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : ''); $abook_uids = " and abook.abook_channel = " . local_channel() . " "; $uids = " and item.uid = " . local_channel() . " "; - + if(feature_enabled(local_channel(), 'network_list_mode')) $page_mode = 'list'; else @@ -504,7 +455,7 @@ class Network extends \Zotlabs\Web\Controller { if($nouveau && $load) { // "New Item View" - show all items unthreaded in reverse created date order - $items = q("SELECT item.*, item.id AS item_id, created FROM item + $items = q("SELECT item.*, item.id AS item_id, created FROM item left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids ) $net_query WHERE true $uids $item_normal @@ -517,23 +468,23 @@ class Network extends \Zotlabs\Web\Controller { $parents_str = ids_to_querystr($items,'item_id'); require_once('include/items.php'); - + xchan_query($items); - + $items = fetch_post_tags($items,true); } elseif($update) { - + // Normal conversation view - + if($order === 'post') $ordering = "created"; else $ordering = "commented"; - + if($load) { // Fetch a page full of parent items for this page - $r = q("SELECT item.parent AS item_id FROM item + $r = q("SELECT item.parent AS item_id FROM item left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids ) $net_query WHERE true $uids $item_thread_top $item_normal @@ -557,18 +508,18 @@ class Network extends \Zotlabs\Web\Controller { } // Then fetch all the children of the parents that are on this page - + if($r) { - + $parents_str = ids_to_querystr($r,'item_id'); - + $items = q("SELECT item.*, item.id AS item_id FROM item WHERE true $uids $item_normal AND item.parent IN ( %s ) $sql_extra ", dbesc($parents_str) ); - + xchan_query($items,true); $items = fetch_post_tags($items,true); $items = conv_sort($items,$ordering); @@ -578,20 +529,70 @@ class Network extends \Zotlabs\Web\Controller { } } - + $mode = (($nouveau) ? 'network-new' : 'network'); if($search) $mode = 'search'; - + + if(! $update) { + // The special div is needed for liveUpdate to kick in for this page. + // We only launch liveUpdate if you aren't filtering in some incompatible + // way and also you aren't writing a comment (discovered in javascript). + + $maxheight = get_pconfig(local_channel(),'system','network_divmore_height'); + if(! $maxheight) + $maxheight = 400; + + + $o .= '<div id="live-network"></div>' . "\r\n"; + $o .= "<script> var profile_uid = " . local_channel() + . "; var profile_page = " . App::$pager['page'] + . "; divmore_height = " . intval($maxheight) . "; </script>\r\n"; + + App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array( + '$baseurl' => z_root(), + '$pgtype' => 'network', + '$uid' => ((local_channel()) ? local_channel() : '0'), + '$gid' => (($gid) ? $gid : '0'), + '$cid' => (($cid) ? $cid : '0'), + '$cmin' => (($cmin) ? $cmin : '(-1)'), + '$cmax' => (($cmax) ? $cmax : '(-1)'), + '$star' => (($star) ? $star : '0'), + '$liked' => (($liked) ? $liked : '0'), + '$conv' => (($conv) ? $conv : '0'), + '$spam' => (($spam) ? $spam : '0'), + '$fh' => '0', + '$dm' => (($dm) ? $dm : '0'), + '$nouveau' => (($nouveau) ? $nouveau : '0'), + '$wall' => '0', + '$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0), + '$page' => ((App::$pager['page'] != 1) ? App::$pager['page'] : 1), + '$search' => (($search) ? urlencode($search) : ''), + '$xchan' => (($xchan) ? urlencode($xchan) : ''), + '$order' => $order, + '$file' => (($file) ? urlencode($file) : ''), + '$cats' => (($category) ? urlencode($category) : ''), + '$tags' => (($hashtags) ? urlencode($hashtags) : ''), + '$dend' => $datequery, + '$mid' => '', + '$verb' => (($verb) ? urlencode($verb) : ''), + '$net' => (($net) ? urlencode($net) : ''), + '$dbegin' => $datequery2, + '$pf' => (($pf) ? intval($pf) : 0), + '$unseen' => (($unseen) ? urlencode($unseen) : ''), + '$page_mode' => $page_mode + )); + } + $o .= conversation($items,$mode,$update,$page_mode); - + if(($items) && (! $update)) $o .= alt_pager(count($items)); $_SESSION['loadtime'] = datetime_convert(); - + return $o; } - + } diff --git a/Zotlabs/Module/Notifications.php b/Zotlabs/Module/Notifications.php index 1762ad5f6..55268e0a2 100644 --- a/Zotlabs/Module/Notifications.php +++ b/Zotlabs/Module/Notifications.php @@ -19,7 +19,7 @@ class Notifications extends \Zotlabs\Web\Controller { $r = q("select count(*) as total from notify where uid = %d and seen = 0", intval(local_channel()) ); - if($r && intval($t[0]['total']) > 49) { + if($r && intval($r[0]['total']) > 49) { $r = q("select * from notify where uid = %d and seen = 0 order by created desc limit 50", intval(local_channel()) @@ -32,7 +32,7 @@ class Notifications extends \Zotlabs\Web\Controller { $r2 = q("select * from notify where uid = %d and seen = 1 order by created desc limit %d", intval(local_channel()), - intval(50 - intval($t[0]['total'])) + intval(50 - intval($r[0]['total'])) ); $r = array_merge($r1,$r2); } @@ -41,7 +41,7 @@ class Notifications extends \Zotlabs\Web\Controller { $notifications_available = 1; foreach ($r as $rr) { $x = strip_tags(bbcode($rr['msg'])); - $notif_content .= replace_macros(get_markup_template('notify.tpl'),array( + $notif_content = replace_macros(get_markup_template('notify.tpl'),array( '$item_link' => z_root().'/notify/view/'. $rr['id'], '$item_image' => $rr['photo'], '$item_text' => $x, @@ -52,7 +52,7 @@ class Notifications extends \Zotlabs\Web\Controller { } } else { - $notif_content .= t('No more system notifications.'); + $notif_content = t('No more system notifications.'); } $o .= replace_macros(get_markup_template('notifications.tpl'),array( diff --git a/Zotlabs/Module/Owa.php b/Zotlabs/Module/Owa.php index d6aeb8af5..9a3513f34 100644 --- a/Zotlabs/Module/Owa.php +++ b/Zotlabs/Module/Owa.php @@ -39,7 +39,7 @@ class Owa extends Controller { $found = discover_by_webbie(str_replace('acct:','',$keyId)); if ($found) { $r = q("SELECT * FROM hubloc LEFT JOIN xchan ON hubloc_hash = xchan_hash - WHERE OR hubloc_id_url = '%s'", + WHERE hubloc_id_url = '%s'", dbesc($keyId) ); } diff --git a/Zotlabs/Module/Photo.php b/Zotlabs/Module/Photo.php index 01edda9ae..041bdf5a2 100644 --- a/Zotlabs/Module/Photo.php +++ b/Zotlabs/Module/Photo.php @@ -35,7 +35,7 @@ class Photo extends \Zotlabs\Web\Controller { call_hooks('cache_mode_hook', $cache_mode); $observer_xchan = get_observer_hash(); - $cachecontrol = ''; + $cachecontrol = ', no-cache'; if(isset($type)) { @@ -102,7 +102,7 @@ class Photo extends \Zotlabs\Web\Controller { $modified = filemtime($default); } - $cachecontrol = ', must-revalidate'; + $cachecontrol .= ', must-revalidate'; } else { @@ -147,7 +147,7 @@ class Photo extends \Zotlabs\Web\Controller { ); if($r) { $allowed = (-1); - + $filename = $r[0]['filename']; $u = intval($r[0]['photo_usage']); if($u) { $allowed = 1; @@ -169,6 +169,7 @@ class Photo extends \Zotlabs\Web\Controller { $url = z_root() . '/sslify/' . $filename . '?f=&url=' . urlencode($url); goaway($url); } + $cachecontrol = ''; } } } @@ -271,7 +272,7 @@ class Photo extends \Zotlabs\Web\Controller { // in the event that infrastructure caching is present. $smaxage = intval($maxage/12); - header("Cache-Control: no-cache, s-maxage=" . $smaxage . ", max-age=" . $maxage . $cachecontrol); + header("Cache-Control: s-maxage=" . $smaxage . ", max-age=" . $maxage . $cachecontrol); } diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php index fa9216c97..099289c03 100644 --- a/Zotlabs/Module/Photos.php +++ b/Zotlabs/Module/Photos.php @@ -16,66 +16,66 @@ require_once('include/text.php'); class Photos extends \Zotlabs\Web\Controller { function init() { - + if(observer_prohibited()) { return; } - + if(argc() > 1) { $nick = argv(1); - + profile_load($nick); - + $channelx = channelx_by_nick($nick); - + if(! $channelx) return; - + \App::$data['channel'] = $channelx; - + $observer = \App::get_observer(); \App::$data['observer'] = $observer; - + $observer_xchan = (($observer) ? $observer['xchan_hash'] : ''); - + head_set_icon(\App::$data['channel']['xchan_photo_s']); - + \App::$page['htmlhead'] .= "<script> var profile_uid = " . ((\App::$data['channel']) ? \App::$data['channel']['channel_id'] : 0) . "; </script>" ; - + } - + return; } - - - + + + function post() { - + logger('mod-photos: photos_post: begin' , LOGGER_DEBUG); - + logger('mod_photos: REQUEST ' . print_r($_REQUEST,true), LOGGER_DATA); logger('mod_photos: FILES ' . print_r($_FILES,true), LOGGER_DATA); - + $ph = photo_factory(''); - + $phototypes = $ph->supportedTypes(); - + $can_post = false; - + $page_owner_uid = \App::$data['channel']['channel_id']; - + if(perm_is_allowed($page_owner_uid,get_observer_hash(),'write_storage')) $can_post = true; - + if(! $can_post) { notice( t('Permission denied.') . EOL ); if(is_ajax()) killme(); return; } - + $s = abook_self($page_owner_uid); - + if(! $s) { notice( t('Page owner information could not be retrieved.') . EOL); logger('mod_photos: post: unable to locate contact record for page owner. uid=' . $page_owner_uid); @@ -83,30 +83,30 @@ class Photos extends \Zotlabs\Web\Controller { killme(); return; } - - $owner_record = $s[0]; - + + $owner_record = $s[0]; + $acl = new \Zotlabs\Access\AccessList(\App::$data['channel']); - + if((argc() > 3) && (argv(2) === 'album')) { - + $album = argv(3); if(! photos_album_exists($page_owner_uid, get_observer_hash(), $album)) { notice( t('Album not found.') . EOL); goaway(z_root() . '/' . $_SESSION['photo_return']); } - - + + /* * DELETE photo album and all its photos */ - + if($_REQUEST['dropalbum'] == t('Delete Album')) { - - + + $folder_hash = ''; - + $r = q("select * from attach where is_dir = 1 and uid = %d and hash = '%s'", intval($page_owner_uid), dbesc($album) @@ -116,13 +116,13 @@ class Photos extends \Zotlabs\Web\Controller { return; } $folder_hash = $r[0]['hash']; - - + + $res = array(); $admin_delete = false; // get the list of photos we are about to delete - + if(remote_channel() && (! local_channel())) { $str = photos_album_get_db_idstr($page_owner_uid,$album,remote_channel()); } @@ -139,7 +139,7 @@ class Photos extends \Zotlabs\Web\Controller { if(! $str) { goaway(z_root() . '/' . $_SESSION['photo_return']); } - + $r = q("select id from item where resource_id in ( $str ) and resource_type = 'photo' and uid = %d " . item_normal(), intval($page_owner_uid) ); @@ -148,34 +148,34 @@ class Photos extends \Zotlabs\Web\Controller { attach_delete($page_owner_uid, $i['resource_id'], true ); } } - + // remove the associated photos in case they weren't attached to an item - + q("delete from photo where resource_id in ( $str ) and uid = %d", intval($page_owner_uid) ); - + // @FIXME do the same for the linked attach - + if($folder_hash) { attach_delete($page_owner_uid, $folder_hash, true ); - if(! $admin_delete) { + if(! $admin_delete) { $sync = attach_export_data(\App::$data['channel'],$folder_hash, true); - - if($sync) + + if($sync) Libsync::build_sync_packet($page_owner_uid,array('file' => array($sync))); } } - + } - + goaway(z_root() . '/photos/' . \App::$data['channel']['channel_address']); } - + if((argc() > 2) && (x($_REQUEST,'delete')) && ($_REQUEST['delete'] === t('Delete Photo'))) { // same as above but remove single photo - + $ob_hash = get_observer_hash(); if(! $ob_hash) goaway(z_root() . '/' . $_SESSION['photo_return']); @@ -185,18 +185,18 @@ class Photos extends \Zotlabs\Web\Controller { intval(local_channel()), dbesc(argv(2)) ); - + if($r) { attach_delete($page_owner_uid, $r[0]['resource_id'], true ); $sync = attach_export_data(\App::$data['channel'],$r[0]['resource_id'], true); - - if($sync) + + if($sync) Libsync::build_sync_packet($page_owner_uid,array('file' => array($sync))); } elseif(is_site_admin()) { // If the admin deletes a photo, don't sync attach_delete($page_owner_uid, argv(2), true); - } + } goaway(z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/album/' . $_SESSION['album_return']); @@ -208,10 +208,10 @@ class Photos extends \Zotlabs\Web\Controller { intval($page_owner_uid) ); if(($m) && ($m[0]['folder'] != $_POST['move_to_album'])) { - attach_move($page_owner_uid,argv(2),$_POST['move_to_album']); + attach_move($page_owner_uid,argv(2),$_POST['move_to_album']); $sync = attach_export_data(\App::$data['channel'], argv(2), false); - if($sync) + if($sync) Libsync::build_sync_packet($page_owner_uid,array('file' => array($sync))); if(! ($_POST['desc'] && $_POST['newtag'])) @@ -220,28 +220,28 @@ class Photos extends \Zotlabs\Web\Controller { } if((argc() > 2) && ((x($_POST,'desc') !== false) || (x($_POST,'newtag') !== false))) { - + $desc = ((x($_POST,'desc')) ? notags(trim($_POST['desc'])) : ''); $rawtags = ((x($_POST,'newtag')) ? notags(trim($_POST['newtag'])) : ''); $item_id = ((x($_POST,'item_id')) ? intval($_POST['item_id']) : 0); $is_nsfw = ((x($_POST,'adult')) ? intval($_POST['adult']) : 0); - + $acl->set_from_array($_POST); $perm = $acl->get(); - + $resource_id = argv(2); - - if((x($_POST,'rotate') !== false) && + + if((x($_POST,'rotate') !== false) && ( (intval($_POST['rotate']) == 1) || (intval($_POST['rotate']) == 2) )) { logger('rotate'); - + $r = q("select * from photo where resource_id = '%s' and uid = %d and imgscale = 0 limit 1", dbesc($resource_id), intval($page_owner_uid) ); if(count($r)) { - + $ph = photo_factory(@file_get_contents(dbunescbin($r[0]['content'])), $r[0]['mimetype']); if($ph->is_valid()) { $rotate_deg = ( (intval($_POST['rotate']) == 1) ? 270 : 90 ); @@ -255,12 +255,12 @@ class Photos extends \Zotlabs\Web\Controller { dbesc($resource_id), intval($page_owner_uid) ); - + $ph->saveImage(dbunescbin($r[0]['content'])); - - $arr = [ + + $arr = [ 'aid' => get_account_id(), - 'uid' => intval($page_owner_uid), + 'uid' => intval($page_owner_uid), 'resource_id' => dbesc($resource_id), 'filename' => $r[0]['filename'], 'imgscale' => 0, @@ -277,28 +277,31 @@ class Photos extends \Zotlabs\Web\Controller { unset($arr['os_syspath']); - if($width > 1024 || $height > 1024) + $width = $r[0]['width']; + $height = $r[0]['height']; + + if($width > 1024 || $height > 1024) $ph->scaleImage(1024); $ph->storeThumbnail($arr, PHOTO_RES_1024); - if($width > 640 || $height > 640) + if($width > 640 || $height > 640) $ph->scaleImage(640); $ph->storeThumbnail($arr, PHOTO_RES_640); - if($width > 320 || $height > 320) + if($width > 320 || $height > 320) $ph->scaleImage(320); $ph->storeThumbnail($arr, PHOTO_RES_320); } } } - + $p = q("SELECT mimetype, is_nsfw, description, resource_id, imgscale, allow_cid, allow_gid, deny_cid, deny_gid FROM photo WHERE resource_id = '%s' AND uid = %d ORDER BY imgscale DESC", dbesc($resource_id), intval($page_owner_uid) ); if($p) { $ext = $phototypes[$p[0]['mimetype']]; - + $r = q("UPDATE photo SET description = '%s', allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' WHERE resource_id = '%s' AND uid = %d", dbesc($desc), dbesc($perm['allow_cid']), @@ -309,9 +312,7 @@ class Photos extends \Zotlabs\Web\Controller { intval($page_owner_uid) ); } - - $item_private = (($str_contact_allow || $str_group_allow || $str_contact_deny || $str_group_deny) ? true : false); - + $old_is_nsfw = $p[0]['is_nsfw']; if($old_is_nsfw != $is_nsfw) { $r = q("update photo set is_nsfw = %d where resource_id = '%s' and uid = %d", @@ -320,31 +321,31 @@ class Photos extends \Zotlabs\Web\Controller { intval($page_owner_uid) ); } - + /* Don't make the item visible if the only change was the album name */ - + $visibility = 0; if($p[0]['description'] !== $desc || strlen($rawtags)) $visibility = 1; - + if(! $item_id) { $item_id = photos_create_item(\App::$data['channel'],get_observer_hash(),$p[0],$visibility); - + } - + if($item_id) { $r = q("SELECT * FROM item WHERE id = %d AND uid = %d LIMIT 1", intval($item_id), intval($page_owner_uid) ); - + if($r) { $old_tag = $r[0]['tag']; $old_inform = $r[0]['inform']; } } - - + + // make sure the linked item has the same permissions as the photo regardless of any other changes $x = q("update item set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', item_private = %d where id = %d", @@ -355,7 +356,7 @@ class Photos extends \Zotlabs\Web\Controller { intval($acl->is_private()), intval($item_id) ); - + // make sure the attach has the same permissions as the photo regardless of any other changes $x = q("update attach set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' where hash = '%s' and uid = %d and is_photo = 1", dbesc($perm['allow_cid']), @@ -365,46 +366,46 @@ class Photos extends \Zotlabs\Web\Controller { dbesc($resource_id), intval($page_owner_uid) ); - - - + + + if(strlen($rawtags)) { - + $str_tags = ''; $inform = ''; - + // if the new tag doesn't have a namespace specifier (@foo or #foo) give it a mention - + $x = substr($rawtags,0,1); if($x !== '@' && $x !== '#') $rawtags = '@' . $rawtags; - + require_once('include/text.php'); $profile_uid = \App::$profile['profile_uid']; - + $results = linkify_tags($rawtags, (local_channel()) ? local_channel() : $profile_uid); - + $success = $results['success']; $post_tags = array(); - + foreach($results as $result) { $success = $result['success']; if($success['replaced']) { $post_tags[] = array( - 'uid' => $profile_uid, + 'uid' => $profile_uid, 'ttype' => $success['termtype'], 'otype' => TERM_OBJ_POST, 'term' => $success['term'], 'url' => $success['url'] - ); + ); } } - + $r = q("select * from item where id = %d and uid = %d limit 1", intval($item_id), intval($page_owner_uid) ); - + if($r) { $r = fetch_post_tags($r,true); $datarray = $r[0]; @@ -412,42 +413,42 @@ class Photos extends \Zotlabs\Web\Controller { if((! array_key_exists('term',$datarray)) || (! is_array($datarray['term']))) $datarray['term'] = $post_tags; else - $datarray['term'] = array_merge($datarray['term'],$post_tags); + $datarray['term'] = array_merge($datarray['term'],$post_tags); } item_store_update($datarray,$execflag); } - + } $sync = attach_export_data(\App::$data['channel'],$resource_id); - - if($sync) + + if($sync) Libsync::build_sync_packet($page_owner_uid,array('file' => array($sync))); - + goaway(z_root() . '/' . $_SESSION['photo_return']); return; // NOTREACHED - - + + } - - + + /** * default post action - upload a photo */ - + $channel = \App::$data['channel']; $observer = \App::$data['observer']; - + $_REQUEST['source'] = 'photos'; require_once('include/attach.php'); - + if(! local_channel()) { $_REQUEST['contact_allow'] = expand_acl($channel['channel_allow_cid']); $_REQUEST['group_allow'] = expand_acl($channel['channel_allow_gid']); $_REQUEST['contact_deny'] = expand_acl($channel['channel_deny_cid']); $_REQUEST['group_deny'] = expand_acl($channel['channel_deny_gid']); } - + $matches = []; $partial = false; @@ -467,7 +468,7 @@ class Photos extends \Zotlabs\Web\Controller { if($x['partial']) { header('Range: bytes=0-' . (($x['length']) ? $x['length'] - 1 : 0)); - json_return_and_die($result); + json_return_and_die($x); } else { header('Range: bytes=0-' . (($x['size']) ? $x['size'] - 1 : 0)); @@ -481,7 +482,7 @@ class Photos extends \Zotlabs\Web\Controller { ]; } } - else { + else { if(! array_key_exists('userfile',$_FILES)) { $_FILES['userfile'] = [ 'name' => $_FILES['files']['name'], @@ -494,53 +495,53 @@ class Photos extends \Zotlabs\Web\Controller { } $r = attach_store($channel,get_observer_hash(), '', $_REQUEST); - + if(! $r['success']) { notice($r['message'] . EOL); goaway(z_root() . '/photos/' . \App::$data['channel']['channel_address']); - } + } goaway(z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/album/' . $r['data']['folder']); - + } - - - + + + function get() { - + // URLs: // photos/name // photos/name/album/xxxxx (xxxxx is album name) // photos/name/image/xxxxx - - + + if(observer_prohibited()) { notice( t('Public access denied.') . EOL); return; } - + $unsafe = ((array_key_exists('unsafe',$_REQUEST) && $_REQUEST['unsafe']) ? 1 : 0); - + require_once('include/bbcode.php'); require_once('include/security.php'); require_once('include/conversation.php'); - + if(! x(\App::$data,'channel')) { notice( t('No photos selected') . EOL ); return; } - + $ph = photo_factory(''); $phototypes = $ph->supportedTypes(); - + $_SESSION['photo_return'] = \App::$cmd; - + // - // Parse arguments + // Parse arguments // - + $can_comment = perm_is_allowed(\App::$profile['profile_uid'],get_observer_hash(),'post_comments'); - + if(argc() > 3) { $datatype = argv(2); $datum = argv(3); @@ -552,70 +553,70 @@ class Photos extends \Zotlabs\Web\Controller { else $datatype = 'summary'; } - + if(argc() > 4) $cmd = argv(4); else $cmd = 'view'; - + // // Setup permissions structures // - + $can_post = false; $visitor = 0; - - + + $owner_uid = \App::$data['channel']['channel_id']; $owner_aid = \App::$data['channel']['channel_account_id']; - + $observer = \App::get_observer(); - + $can_post = perm_is_allowed($owner_uid,$observer['xchan_hash'],'write_storage'); $can_view = perm_is_allowed($owner_uid,$observer['xchan_hash'],'view_storage'); - + if(! $can_view) { notice( t('Access to this item is restricted.') . EOL); return; } - + $sql_item = item_permissions_sql($owner_uid,get_observer_hash()); $sql_extra = permissions_sql($owner_uid,get_observer_hash(),'photo'); $sql_attach = permissions_sql($owner_uid,get_observer_hash(),'attach'); nav_set_selected('Photos'); - + $o = '<script src="vendor/blueimp/jquery-file-upload/js/vendor/jquery.ui.widget.js"></script> <script src="vendor/blueimp/jquery-file-upload/js/jquery.iframe-transport.js"></script> <script src="vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js"></script>'; - $o .= "<script> var profile_uid = " . \App::$profile['profile_uid'] + $o .= "<script> var profile_uid = " . \App::$profile['profile_uid'] . "; var netargs = '?f='; var profile_page = " . \App::$pager['page'] . "; </script>\r\n"; - + $_is_owner = (local_channel() && (local_channel() == $owner_uid)); - + /** * Display upload form */ - + if( $can_post) { - + $uploader = ''; - + $ret = array('post_url' => z_root() . '/photos/' . \App::$data['channel']['channel_address'], 'addon_text' => $uploader, 'default_upload' => true); - + call_hooks('photo_upload_form',$ret); - + /* Show space usage */ - + $r = q("select sum(filesize) as total from photo where aid = %d and imgscale = 0 ", intval(\App::$data['channel']['channel_account_id']) ); - - + + $limit = engr_units_to_bytes(service_class_fetch(\App::$data['channel']['channel_id'],'photo_upload_limit')); if($limit !== false) { $usage_message = sprintf( t("%1$.2f MB of %2$.2f MB photo storage used."), $r[0]['total'] / 1024000, $limit / 1024000 ); @@ -623,22 +624,22 @@ class Photos extends \Zotlabs\Web\Controller { else { $usage_message = sprintf( t('%1$.2f MB photo storage used.'), $r[0]['total'] / 1024000 ); } - + if($_is_owner) { $channel = \App::get_channel(); - + $acl = new \Zotlabs\Access\AccessList($channel); $channel_acl = $acl->get(); - + $lockstate = (($acl->is_private()) ? 'lock' : 'unlock'); } - + $aclselect = (($_is_owner) ? populate_acl($channel_acl,false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_storage')) : ''); - + // this is wrong but is to work around an issue with js_upload wherein it chokes if these variables - // don't exist. They really should be set to a parseable representation of the channel's default permissions - // which can be processed by getSelected() - + // don't exist. They really should be set to a parseable representation of the channel's default permissions + // which can be processed by getSelected() + if(! $aclselect) { $aclselect = '<input id="group_allow" type="hidden" name="allow_gid[]" value="" /><input id="contact_allow" type="hidden" name="allow_cid[]" value="" /><input id="group_deny" type="hidden" name="deny_gid[]" value="" /><input id="contact_deny" type="hidden" name="deny_cid[]" value="" />'; } @@ -648,11 +649,11 @@ class Photos extends \Zotlabs\Web\Controller { if($datum) { $h = attach_by_hash_nodata($datum,get_observer_hash()); $selname = $h['data']['display_path']; - } + } + - $albums = ((array_key_exists('albums', \App::$data)) ? \App::$data['albums'] : photos_albums_list(\App::$data['channel'],\App::$data['observer'])); - + if(! $selname) { $def_album = get_pconfig(\App::$data['channel']['channel_id'],'system','photo_path'); if($def_album) { @@ -660,7 +661,7 @@ class Photos extends \Zotlabs\Web\Controller { $albums['album'][] = array('text' => $selname); } } - + $tpl = get_markup_template('photos_upload.tpl'); $upload_form = replace_macros($tpl,array( '$pagename' => t('Upload Photos'), @@ -685,22 +686,22 @@ class Photos extends \Zotlabs\Web\Controller { '$default' => (($ret['default_upload']) ? true : false), '$uploadurl' => $ret['post_url'], '$submit' => t('Upload') - + )); - + } - + // // dispatch request // - + /* * Display a single photo album */ - + if($datatype === 'album') { - head_add_link([ + head_add_link([ 'rel' => 'alternate', 'type' => 'application/json+oembed', 'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string), @@ -710,7 +711,7 @@ class Photos extends \Zotlabs\Web\Controller { if($x = photos_album_exists($owner_uid, get_observer_hash(), $datum)) { \App::set_pager_itemspage(30); $album = $x['display_path']; - } + } else { goaway(z_root() . '/photos/' . \App::$data['channel']['channel_address']); } @@ -721,7 +722,7 @@ class Photos extends \Zotlabs\Web\Controller { $order = 'DESC'; $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.imgscale, p.description, p.created FROM photo p INNER JOIN - (SELECT resource_id, max(imgscale) imgscale FROM photo left join attach on folder = '%s' and photo.resource_id = attach.hash WHERE attach.uid = %d AND imgscale <= 4 AND photo_usage IN ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY resource_id) ph + (SELECT resource_id, max(imgscale) imgscale FROM photo left join attach on folder = '%s' and photo.resource_id = attach.hash WHERE attach.uid = %d AND imgscale <= 4 AND photo_usage IN ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY resource_id) ph ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale) ORDER BY created $order LIMIT %d OFFSET %d", dbesc($x['hash']), @@ -739,9 +740,9 @@ class Photos extends \Zotlabs\Web\Controller { if($can_post) { $album_e = $album; $albums = ((array_key_exists('albums', \App::$data)) ? \App::$data['albums'] : photos_albums_list(\App::$data['channel'],\App::$data['observer'])); - + // @fixme - syncronise actions with DAV - + // $edit_tpl = get_markup_template('album_edit.tpl'); // $album_edit = replace_macros($edit_tpl,array( // '$nametext' => t('Enter a new album name'), @@ -753,32 +754,32 @@ class Photos extends \Zotlabs\Web\Controller { // '$submit' => t('Submit'), // '$dropsubmit' => t('Delete Album') // )); - + } - + if($_GET['order'] === 'posted') $order = array(t('Show Newest First'), z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/album/' . $datum); else $order = array(t('Show Oldest First'), z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/album/' . $datum . '?f=&order=posted'); - + $photos = array(); if(count($r)) { $twist = 'rotright'; foreach($r as $rr) { - + if($twist == 'rotright') $twist = 'rotleft'; else $twist = 'rotright'; - + $ext = $phototypes[$rr['mimetype']]; - + $imgalt_e = $rr['filename']; $desc_e = $rr['description']; - + $imagelink = (z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/image/' . $rr['resource_id'] . (($_GET['order'] === 'posted') ? '?f=&order=posted' : '')); - + $photos[] = array( 'id' => $rr['id'], 'twist' => ' ' . $twist . rand(2,4), @@ -793,7 +794,7 @@ class Photos extends \Zotlabs\Web\Controller { ); } } - + if($_REQUEST['aj']) { if($photos) { $o = replace_macros(get_markup_template('photosajax.tpl'),array( @@ -821,71 +822,71 @@ class Photos extends \Zotlabs\Web\Controller { '$upload_form' => $upload_form, '$usage' => $usage_message )); - + } - + if((! $photos) && ($_REQUEST['aj'])) { $o .= '<div id="content-complete"></div>'; echo $o; killme(); } - + return $o; - - } - - /** + + } + + /** * Display one photo */ - + if($datatype === 'image') { - + \App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$cmd) . '" title="oembed" />' . "\r\n"; - + $x = q("select folder from attach where hash = '%s' and uid = %d $sql_attach limit 1", dbesc($datum), intval($owner_uid) ); // fetch image, item containing image, then comments - - $ph = q("SELECT id,aid,uid,xchan,resource_id,created,edited,title,description,album,filename,mimetype,height,width,filesize,imgscale,photo_usage,is_nsfw,allow_cid,allow_gid,deny_cid,deny_gid FROM photo WHERE uid = %d AND resource_id = '%s' + + $ph = q("SELECT id,aid,uid,xchan,resource_id,created,edited,title,description,album,filename,mimetype,height,width,filesize,imgscale,photo_usage,is_nsfw,allow_cid,allow_gid,deny_cid,deny_gid FROM photo WHERE uid = %d AND resource_id = '%s' $sql_extra ORDER BY imgscale ASC ", intval($owner_uid), dbesc($datum) ); - + if(! ($ph && $x)) { - + /* Check again - this time without specifying permissions */ - + $ph = q("SELECT id FROM photo WHERE uid = %d AND resource_id = '%s' LIMIT 1", intval($owner_uid), dbesc($datum) ); - if($ph) + if($ph) notice( t('Permission denied. Access to this item may be restricted.') . EOL); else notice( t('Photo not available') . EOL ); return; } - - - + + + $prevlink = ''; $nextlink = ''; - + if($_GET['order'] === 'posted') $order = 'ASC'; else $order = 'DESC'; - + $prvnxt = q("SELECT hash FROM attach WHERE folder = '%s' AND uid = %d AND is_photo = 1 $sql_attach ORDER BY created $order ", dbesc($x[0]['folder']), intval($owner_uid) - ); + ); if(count($prvnxt)) { for($z = 0; $z < count($prvnxt); $z++) { @@ -899,12 +900,12 @@ class Photos extends \Zotlabs\Web\Controller { break; } } - + $prevlink = z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/image/' . $prvnxt[$prv]['hash'] . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); $nextlink = z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/image/' . $prvnxt[$nxt]['hash'] . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''); } - - + + if(count($ph) == 1) $hires = $lores = $ph[0]; if(count($ph) > 1) { @@ -917,74 +918,74 @@ class Photos extends \Zotlabs\Web\Controller { $lores = $ph[1]; } } - + $album_link = z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/album/' . $x[0]['folder']; $tools = Null; $lock = Null; - + if($can_post && ($ph[0]['uid'] == $owner_uid)) { $tools = array( 'profile'=>array(z_root() . '/profile_photo/use/'.$ph[0]['resource_id'], t('Use as profile photo')), 'cover'=>array(z_root() . '/cover_photo/use/'.$ph[0]['resource_id'], t('Use as cover photo')), ); } - + // lockstate $lockstate = ( ( (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid']) || strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid'])) ) ? array('lock', t('Private Photo')) : array('unlock', Null)); - + \App::$page['htmlhead'] .= '<script>$(document).keydown(function(event) {' . "\n"; if($prevlink) \App::$page['htmlhead'] .= 'if(event.ctrlKey && event.keyCode == 37) { event.preventDefault(); window.location.href = \'' . $prevlink . '\'; }' . "\n"; if($nextlink) \App::$page['htmlhead'] .= 'if(event.ctrlKey && event.keyCode == 39) { event.preventDefault(); window.location.href = \'' . $nextlink . '\'; }' . "\n"; \App::$page['htmlhead'] .= '});</script>'; - + if($prevlink) $prevlink = array($prevlink, t('Previous')); - + $photo = array( 'href' => z_root() . '/photo/' . $hires['resource_id'] . '-' . $hires['imgscale'] . '.' . $phototypes[$hires['mimetype']], 'title'=> t('View Full Size'), 'src' => z_root() . '/photo/' . $lores['resource_id'] . '-' . $lores['imgscale'] . '.' . $phototypes[$lores['mimetype']] ); - + if($nextlink) $nextlink = array($nextlink, t('Next')); - - + + // Do we have an item for this photo? - - $linked_items = q("SELECT * FROM item WHERE resource_id = '%s' and resource_type = 'photo' + + $linked_items = q("SELECT * FROM item WHERE resource_id = '%s' and resource_type = 'photo' $sql_item LIMIT 1", dbesc($datum) ); - + $map = null; - + if($linked_items) { - + xchan_query($linked_items); $linked_items = fetch_post_tags($linked_items,true); - + $link_item = $linked_items[0]; $item_normal = item_normal(); - - $r = q("select * from item where parent_mid = '%s' + + $r = q("select * from item where parent_mid = '%s' $item_normal and uid = %d $sql_item ", dbesc($link_item['mid']), intval($link_item['uid']) - + ); - + if($r) { xchan_query($r); $r = fetch_post_tags($r,true); $r = conv_sort($r,'commented'); } - + $tags = array(); if($link_item['term']) { $cnt = 0; @@ -997,23 +998,23 @@ class Photos extends \Zotlabs\Web\Controller { $cnt ++; } } - + if((local_channel()) && (local_channel() == $link_item['uid'])) { q("UPDATE item SET item_unseen = 0 WHERE parent = %d and uid = %d and item_unseen = 1", intval($link_item['parent']), intval(local_channel()) ); } - + if($link_item['coord']) { $map = generate_map($link_item['coord']); } } - + // logger('mod_photo: link_item' . print_r($link_item,true)); - - // FIXME - remove this when we move to conversation module - + + // FIXME - remove this when we move to conversation module + $r = $r[0]['children']; $edit = null; @@ -1023,11 +1024,11 @@ class Photos extends \Zotlabs\Web\Controller { $caption_e = $ph[0]['description']; $aclselect_e = (($_is_owner) ? populate_acl($ph[0], true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_storage')) : ''); $albums = ((array_key_exists('albums', \App::$data)) ? \App::$data['albums'] : photos_albums_list(\App::$data['channel'],\App::$data['observer'])); - + $_SESSION['album_return'] = bin2hex($ph[0]['album']); $folder_list = attach_folder_select_list($ph[0]['uid']); - + $edit = [ 'edit' => t('Edit photo'), 'id' => $link_item['id'], @@ -1058,17 +1059,17 @@ class Photos extends \Zotlabs\Web\Controller { 'delete' => t('Delete Photo') ]; } - + if(count($linked_items)) { - + $cmnt_tpl = get_markup_template('comment_item.tpl'); $tpl = get_markup_template('photo_item.tpl'); $return_url = \App::$cmd; - + $like_tpl = get_markup_template('like_noshare.tpl'); - + $likebuttons = ''; - + if($observer && ($can_post || $can_comment)) { $likebuttons = [ 'id' => $link_item['id'], @@ -1078,12 +1079,12 @@ class Photos extends \Zotlabs\Web\Controller { 'wait' => t('Please wait') ]; } - + $comments = ''; if(! $r) { if($observer && ($can_post || $can_comment)) { $commentbox = replace_macros($cmnt_tpl,array( - '$return_path' => '', + '$return_path' => '', '$mode' => 'photos', '$jsreload' => $return_url, '$type' => 'wall-comment', @@ -1101,28 +1102,28 @@ class Photos extends \Zotlabs\Web\Controller { )); } } - + $alike = array(); $dlike = array(); - + $like = ''; $dislike = ''; - + $conv_responses = array( 'like' => array('title' => t('Likes','title')),'dislike' => array('title' => t('Dislikes','title')), - 'agree' => array('title' => t('Agree','title')),'disagree' => array('title' => t('Disagree','title')), 'abstain' => array('title' => t('Abstain','title')), + 'agree' => array('title' => t('Agree','title')),'disagree' => array('title' => t('Disagree','title')), 'abstain' => array('title' => t('Abstain','title')), 'attendyes' => array('title' => t('Attending','title')), 'attendno' => array('title' => t('Not attending','title')), 'attendmaybe' => array('title' => t('Might attend','title')) ); - - - - + + + + if($r) { - + foreach($r as $item) { builtin_activity_puller($item, $conv_responses); } - + $like_count = ((x($alike,$link_item['mid'])) ? $alike[$link_item['mid']] : ''); $like_list = ((x($alike,$link_item['mid'])) ? $alike[$link_item['mid'] . '-l'] : ''); @@ -1133,7 +1134,7 @@ class Photos extends \Zotlabs\Web\Controller { $like_list_part = ''; } $like_button_label = tt('Like','Likes',$like_count,'noun'); - + //if (feature_enabled($conv->get_profile_owner(),'dislike')) { $dislike_count = ((x($dlike,$link_item['mid'])) ? $dlike[$link_item['mid']] : ''); $dislike_list = ((x($dlike,$link_item['mid'])) ? $dlike[$link_item['mid'] . '-l'] : ''); @@ -1145,44 +1146,44 @@ class Photos extends \Zotlabs\Web\Controller { $dislike_list_part = ''; } //} - - + + $like = ((isset($alike[$link_item['mid']])) ? format_like($alike[$link_item['mid']],$alike[$link_item['mid'] . '-l'],'like',$link_item['mid']) : ''); $dislike = ((isset($dlike[$link_item['mid']])) ? format_like($dlike[$link_item['mid']],$dlike[$link_item['mid'] . '-l'],'dislike',$link_item['mid']) : ''); - + // display comments - + foreach($r as $item) { $comment = ''; $template = $tpl; $sparkle = ''; - + if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) && ($item['id'] != $item['parent'])) continue; - + $redirect_url = z_root() . '/redir/' . $item['cid'] ; - - + + $profile_url = zid($item['author']['xchan_url']); $sparkle = ''; - - + + $profile_name = $item['author']['xchan_name']; $profile_avatar = $item['author']['xchan_photo_m']; - + $profile_link = $profile_url; - + $drop = ''; - + if($observer['xchan_hash'] === $item['author_xchan'] || $observer['xchan_hash'] === $item['owner_xchan']) $drop = replace_macros(get_markup_template('photo_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete'))); - - + + $name_e = $profile_name; $title_e = $item['title']; unobscure($item); $body_e = prepare_text($item['body'],$item['mimetype']); - + $comments .= replace_macros($template,array( '$id' => $item['id'], '$mode' => 'photos', @@ -1197,9 +1198,9 @@ class Photos extends \Zotlabs\Web\Controller { '$drop' => $drop, '$comment' => $comment )); - + } - + if($observer && ($can_post || $can_comment)) { $commentbox = replace_macros($cmnt_tpl,array( '$return_path' => '', @@ -1216,20 +1217,20 @@ class Photos extends \Zotlabs\Web\Controller { '$ww' => '' )); } - + } $paginate = paginate($a); } - + $album_e = array($album_link,$ph[0]['album']); $like_e = $like; $dislike_e = $dislike; - - + + $response_verbs = array('like'); if(feature_enabled($owner_uid,'dislike')) $response_verbs[] = 'dislike'; - + $responses = get_responses($conv_responses,$response_verbs,'',$link_item); $hookdata = [ @@ -1238,7 +1239,7 @@ class Photos extends \Zotlabs\Web\Controller { 'nickname' => \App::$data['channel']['channel_address'] ]; call_hooks('photo_view_filter', $hookdata); - + $photo_tpl = get_markup_template('photo_view.tpl'); $o .= replace_macros($photo_tpl, array( '$id' => $ph[0]['id'], @@ -1255,7 +1256,7 @@ class Photos extends \Zotlabs\Web\Controller { '$tag_hdr' => t('In This Photo:'), '$tags' => $tags, 'responses' => $responses, - '$edit' => $edit, + '$edit' => $edit, '$map' => $map, '$map_text' => t('Map'), '$likebuttons' => $likebuttons, @@ -1277,26 +1278,26 @@ class Photos extends \Zotlabs\Web\Controller { '$paginate' => $paginate, '$onclick' => $hookdata['onclick'] )); - + \App::$data['photo_html'] = $o; - + return $o; } - + // Default - show recent photos with upload link (if applicable) //$o = ''; - + \App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$cmd) . '" title="oembed" />' . "\r\n"; - + \App::set_pager_itemspage(30); - - $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.album, p.imgscale, p.created, p.display_path - FROM photo p - INNER JOIN ( SELECT resource_id, max(imgscale) imgscale FROM photo - WHERE photo.uid = %d AND photo_usage IN ( %d, %d ) - AND is_nsfw = %d $sql_extra group by resource_id ) ph - ON (p.resource_id = ph.resource_id and p.imgscale = ph.imgscale) + + $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.album, p.imgscale, p.created, p.display_path + FROM photo p + INNER JOIN ( SELECT resource_id, max(imgscale) imgscale FROM photo + WHERE photo.uid = %d AND photo_usage IN ( %d, %d ) + AND is_nsfw = %d $sql_extra group by resource_id ) ph + ON (p.resource_id = ph.resource_id and p.imgscale = ph.imgscale) ORDER by p.created DESC LIMIT %d OFFSET %d", intval(\App::$data['channel']['channel_id']), intval(PHOTO_NORMAL), @@ -1305,9 +1306,9 @@ class Photos extends \Zotlabs\Web\Controller { intval(\App::$pager['itemspage']), intval(\App::$pager['start']) ); - - - + + + $photos = array(); if($r) { $twist = 'rotright'; @@ -1321,7 +1322,7 @@ class Photos extends \Zotlabs\Web\Controller { else $twist = 'rotright'; $ext = $phototypes[$rr['mimetype']]; - + $alt_e = $rr['filename']; $name_e = dirname($rr['display_path']); @@ -1335,11 +1336,11 @@ class Photos extends \Zotlabs\Web\Controller { 'album' => array( 'name' => $name_e, ), - + ); } } - + if($_REQUEST['aj']) { if($photos) { $o = replace_macros(get_markup_template('photosajax.tpl'),array( @@ -1355,7 +1356,7 @@ class Photos extends \Zotlabs\Web\Controller { } else { $o .= "<script> var page_query = '" . escape_tags(urlencode($_GET['q'])) . "'; var extra_args = '" . extra_query_args() . "' ; </script>"; - $tpl = get_markup_template('photos_recent.tpl'); + $tpl = get_markup_template('photos_recent.tpl'); $o .= replace_macros($tpl, array( '$title' => t('Recent Photos'), '$album_id' => bin2hex(t('Recent Photos')), @@ -1365,18 +1366,18 @@ class Photos extends \Zotlabs\Web\Controller { '$upload_form' => $upload_form, '$usage' => $usage_message )); - + } - + if((! $photos) && ($_REQUEST['aj'])) { $o .= '<div id="content-complete"></div>'; echo $o; killme(); } - + // paginate($a); return $o; } - - + + } diff --git a/Zotlabs/Module/Profile.php b/Zotlabs/Module/Profile.php index 4235f0b97..0373630a9 100644 --- a/Zotlabs/Module/Profile.php +++ b/Zotlabs/Module/Profile.php @@ -90,7 +90,7 @@ class Profile extends \Zotlabs\Web\Controller { if(argc() > 2 && argv(2) === 'vcard') { header('Content-type: text/vcard'); - header('content-disposition: attachment; filename="' . t('vcard') . '-' . $profile['channel_address'] . '.vcf"' ); + header('content-disposition: attachment; filename="' . t('vcard') . '-' . \App::$profile['channel_address'] . '.vcf"' ); echo \App::$profile['profile_vcard']; killme(); } diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php index 9ac0e725e..ca6ab435f 100644 --- a/Zotlabs/Module/Profiles.php +++ b/Zotlabs/Module/Profiles.php @@ -12,11 +12,11 @@ class Profiles extends \Zotlabs\Web\Controller { function init() { nav_set_selected('Profiles', 'settings/profiles'); - + if(! local_channel()) { return; } - + if((argc() > 2) && (argv(1) === "drop") && intval(argv(2))) { $r = q("SELECT * FROM profile WHERE id = %d AND uid = %d AND is_default = 0 LIMIT 1", intval(argv(2)), @@ -28,11 +28,11 @@ class Profiles extends \Zotlabs\Web\Controller { return; // NOTREACHED } $profile_guid = $r['profile_guid']; - + check_form_security_token_redirectOnErr('/profiles', 'profile_drop', 't'); - + // move every contact using this profile as their default to the user default - + $r = q("UPDATE abook SET abook_profile = (SELECT profile_guid FROM profile WHERE is_default = 1 AND uid = %d LIMIT 1) WHERE abook_profile = '%s' AND abook_channel = %d ", intval(local_channel()), dbesc($profile_guid), @@ -44,34 +44,34 @@ class Profiles extends \Zotlabs\Web\Controller { ); if($r) info( t('Profile deleted.') . EOL); - - // @fixme this is a much more complicated sync - add any changed abook entries and + + // @fixme this is a much more complicated sync - add any changed abook entries and // also add deleted flag to profile structure // profiles_build_sync is just here as a placeholder - it doesn't work at all here - + // profiles_build_sync(local_channel()); - + goaway(z_root() . '/profiles'); return; // NOTREACHED } - - - - - + + + + + if((argc() > 1) && (argv(1) === 'new')) { - + // check_form_security_token_redirectOnErr('/profiles', 'profile_new', 't'); - + $r0 = q("SELECT id FROM profile WHERE uid = %d", intval(local_channel())); $num_profiles = count($r0); - + $name = t('Profile-') . ($num_profiles + 1); - + $r1 = q("SELECT fullname, photo, thumb FROM profile WHERE uid = %d AND is_default = 1 LIMIT 1", intval(local_channel())); - + $r2 = profile_store_lowlevel( [ 'aid' => intval(get_account_id()), @@ -83,27 +83,27 @@ class Profiles extends \Zotlabs\Web\Controller { 'thumb' => $r1[0]['thumb'] ] ); - + $r3 = q("SELECT id FROM profile WHERE uid = %d AND profile_name = '%s' LIMIT 1", intval(local_channel()), dbesc($name) ); - + info( t('New profile created.') . EOL); if(count($r3) == 1) goaway(z_root() . '/profiles/' . $r3[0]['id']); - + goaway(z_root() . '/profiles'); - } - + } + if((argc() > 2) && (argv(1) === 'clone')) { - + check_form_security_token_redirectOnErr('/profiles', 'profile_clone', 't'); - + $r0 = q("SELECT id FROM profile WHERE uid = %d", intval(local_channel())); $num_profiles = count($r0); - + $name = t('Profile-') . ($num_profiles + 1); $r1 = q("SELECT * FROM profile WHERE uid = %d AND id = %d LIMIT 1", intval(local_channel()), @@ -116,30 +116,30 @@ class Profiles extends \Zotlabs\Web\Controller { } unset($r1[0]['id']); $r1[0]['is_default'] = 0; - $r1[0]['publish'] = 0; + $r1[0]['publish'] = 0; $r1[0]['profile_name'] = dbesc($name); $r1[0]['profile_guid'] = dbesc(random_string()); - + create_table_from_array('profile', $r1[0]); - + $r3 = q("SELECT id FROM profile WHERE uid = %d AND profile_name = '%s' LIMIT 1", intval(local_channel()), dbesc($name) ); info( t('New profile created.') . EOL); - + profiles_build_sync(local_channel()); - + if(($r3) && (count($r3) == 1)) goaway(z_root() . '/profiles/' . $r3[0]['id']); - + goaway(z_root() . '/profiles'); - + return; // NOTREACHED } - + if((argc() > 2) && (argv(1) === 'export')) { - + $r1 = q("SELECT * FROM profile WHERE uid = %d AND id = %d LIMIT 1", intval(local_channel()), intval(argv(2)) @@ -151,7 +151,7 @@ class Profiles extends \Zotlabs\Web\Controller { } header('content-type: application/octet_stream'); header('content-disposition: attachment; filename="' . $r1[0]['profile_name'] . '.json"' ); - + unset($r1[0]['id']); unset($r1[0]['aid']); unset($r1[0]['uid']); @@ -162,10 +162,10 @@ class Profiles extends \Zotlabs\Web\Controller { echo json_encode($r1[0]); killme(); } - - - - + + + + // Run profile_load() here to make sure the theme is set before // we start loading content if(((argc() > 1) && (intval(argv(1)))) || !feature_enabled(local_channel(),'multi_profiles')) { @@ -187,28 +187,28 @@ class Profiles extends \Zotlabs\Web\Controller { \App::$error = 404; return; } - + $chan = \App::get_channel(); - + profile_load($chan['channel_address'],$r[0]['id']); } } - + function post() { - + if(! local_channel()) { notice( t('Permission denied.') . EOL); return; } - + require_once('include/activities.php'); - + $namechanged = false; - - + + // import from json export file. // Only import fields that are allowed on this hub - + if(x($_FILES,'userfile')) { $src = $_FILES['userfile']['tmp_name']; $filesize = intval($_FILES['userfile']['size']); @@ -230,10 +230,10 @@ class Profiles extends \Zotlabs\Web\Controller { } } } - + call_hooks('profile_post', $_POST); - - + + if((argc() > 1) && (argv(1) !== "new") && intval(argv(1))) { $orig = q("SELECT * FROM profile WHERE id = %d AND uid = %d LIMIT 1", intval(\App::$argv[1]), @@ -243,26 +243,26 @@ class Profiles extends \Zotlabs\Web\Controller { notice( t('Profile not found.') . EOL); return; } - + check_form_security_token_redirectOnErr('/profiles', 'profile_edit'); - + $is_default = (($orig[0]['is_default']) ? 1 : 0); - + $profile_name = notags(trim($_POST['profile_name'])); if(! strlen($profile_name)) { notice( t('Profile Name is required.') . EOL); return; } - + $dob = $_POST['dob'] ? escape_tags(trim($_POST['dob'])) : '0000-00-00'; // FIXME: Needs to be validated? - + $y = substr($dob,0,4); if((! ctype_digit($y)) || ($y < 1900)) $ignore_year = true; else $ignore_year = false; - + if($dob != '0000-00-00') { if(strpos($dob,'0000-') === 0) { $ignore_year = true; @@ -272,12 +272,12 @@ class Profiles extends \Zotlabs\Web\Controller { if($ignore_year) $dob = '0000-' . $dob; } - + $name = escape_tags(trim($_POST['name'])); - + if($orig[0]['fullname'] != $name) { $namechanged = true; - + $v = validate_channelname($name); if($v) { notice($v); @@ -285,7 +285,7 @@ class Profiles extends \Zotlabs\Web\Controller { $name = $orig[0]['fullname']; } } - + $pdesc = escape_tags(trim($_POST['pdesc'])); $gender = escape_tags(trim($_POST['gender'])); $address = escape_tags(trim($_POST['address'])); @@ -301,10 +301,10 @@ class Profiles extends \Zotlabs\Web\Controller { $hometown = escape_tags(trim($_POST['hometown'])); $politic = escape_tags(trim($_POST['politic'])); $religion = escape_tags(trim($_POST['religion'])); - + $likes = fix_mce_lf(escape_tags(trim($_POST['likes']))); $dislikes = fix_mce_lf(escape_tags(trim($_POST['dislikes']))); - + $about = fix_mce_lf(escape_tags(trim($_POST['about']))); $interest = fix_mce_lf(escape_tags(trim($_POST['interest']))); $contact = fix_mce_lf(escape_tags(trim($_POST['contact']))); @@ -316,11 +316,11 @@ class Profiles extends \Zotlabs\Web\Controller { $romance = fix_mce_lf(escape_tags(trim($_POST['romance']))); $work = fix_mce_lf(escape_tags(trim($_POST['work']))); $education = fix_mce_lf(escape_tags(trim($_POST['education']))); - + $hide_friends = ((intval($_POST['hide_friends'])) ? 1: 0); - + // start fresh and create a new vcard. TODO: preserve the original guid or whatever else needs saving -// $orig_vcard = (($orig[0]['profile_vcard']) ? \Sabre\VObject\Reader::read($orig[0]['profile_vcard']) : null); +// $orig_vcard = (($orig[0]['profile_vcard']) ? \Sabre\VObject\Reader::read($orig[0]['profile_vcard']) : null); $orig_vcard = null; @@ -347,7 +347,7 @@ class Profiles extends \Zotlabs\Web\Controller { 5 => $postal_code, 6 => $country_name ]; - + $profile_vcard = update_vcard($defcard,$orig_vcard); $orig_vcard = \Sabre\VObject\Reader::read($profile_vcard); @@ -370,19 +370,19 @@ class Profiles extends \Zotlabs\Web\Controller { linkify_tags($romance, local_channel()); linkify_tags($work, local_channel()); linkify_tags($education, local_channel()); - - + + $with = ((x($_POST,'with')) ? escape_tags(trim($_POST['with'])) : ''); - + if(! strlen($howlong)) $howlong = NULL_DATE; else $howlong = datetime_convert(date_default_timezone_get(),'UTC',$howlong); - + // linkify the relationship target if applicable - + $withchanged = false; - + if(strlen($with)) { if($with != strip_tags($orig[0]['partner'])) { $withchanged = true; @@ -392,7 +392,7 @@ class Profiles extends \Zotlabs\Web\Controller { $lookup = substr($lookup,1); $lookup = str_replace('_',' ', $lookup); $newname = $lookup; - + $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE xchan_name = '%s' AND abook_channel = %d LIMIT 1", dbesc($newname), intval(local_channel()) @@ -407,8 +407,8 @@ class Profiles extends \Zotlabs\Web\Controller { $prf = $r[0]['xchan_url']; $newname = $r[0]['xchan_name']; } - - + + if($prf) { $with = str_replace($lookup,'<a href="' . $prf . '">' . $newname . '</a>', $with); if(strpos($with,'@') === 0) @@ -418,7 +418,7 @@ class Profiles extends \Zotlabs\Web\Controller { else $with = $orig[0]['partner']; } - + $profile_fields_basic = get_profile_fields_basic(); $profile_fields_advanced = get_profile_fields_advanced(); $advanced = ((feature_enabled(local_channel(),'advanced_profiles')) ? true : false); @@ -426,7 +426,7 @@ class Profiles extends \Zotlabs\Web\Controller { $fields = $profile_fields_advanced; else $fields = $profile_fields_basic; - + $z = q("select * from profdef where true"); if($z) { foreach($z as $zz) { @@ -453,7 +453,7 @@ class Profiles extends \Zotlabs\Web\Controller { } } } - + $changes = array(); $value = ''; if($is_default) { @@ -513,12 +513,12 @@ class Profiles extends \Zotlabs\Web\Controller { $comma2 = (($region && $country_name) ? ', ' : ''); $value = $locality . $comma1 . $region . $comma2 . $country_name; } - + profile_activity($changes,$value); - - } - - $r = q("UPDATE profile + + } + + $r = q("UPDATE profile SET profile_name = '%s', fullname = '%s', pdesc = '%s', @@ -591,10 +591,10 @@ class Profiles extends \Zotlabs\Web\Controller { intval(argv(1)), intval(local_channel()) ); - + if($r) info( t('Profile updated.') . EOL); - + $r = q("select * from profile where id = %d and uid = %d limit 1", intval(argv(1)), intval(local_channel()) @@ -603,9 +603,9 @@ class Profiles extends \Zotlabs\Web\Controller { require_once('include/zot.php'); Libsync::build_sync_packet(local_channel(),array('profile' => $r)); } - + $channel = \App::get_channel(); - + if($namechanged && $is_default) { $r = q("UPDATE xchan SET xchan_name = '%s', xchan_name_date = '%s' WHERE xchan_url = '%s'", dbesc($name), @@ -617,7 +617,7 @@ class Profiles extends \Zotlabs\Web\Controller { dbesc($channel['xchan_hash']) ); } - + if($is_default) { // reload the info for the sidebar widget - why does this not work? profile_load($channel['channel_address']); @@ -625,24 +625,24 @@ class Profiles extends \Zotlabs\Web\Controller { } } } - - + + function get() { - + $o = ''; - + $channel = \App::get_channel(); - + if(! local_channel()) { notice( t('Permission denied.') . EOL); return; } - + require_once('include/channel.php'); - + $profile_fields_basic = get_profile_fields_basic(); $profile_fields_advanced = get_profile_fields_advanced(); - + if(((argc() > 1) && (intval(argv(1)))) || !feature_enabled(local_channel(),'multi_profiles')) { if(feature_enabled(local_channel(),'multi_profiles')) $id = \App::$argv[1]; @@ -652,7 +652,7 @@ class Profiles extends \Zotlabs\Web\Controller { ); if($x) $id = $x[0]['id']; - } + } $r = q("SELECT * FROM profile WHERE id = %d AND uid = %d LIMIT 1", intval($id), intval(local_channel()) @@ -661,20 +661,20 @@ class Profiles extends \Zotlabs\Web\Controller { notice( t('Profile not found.') . EOL); return; } - + $editselect = 'none'; - + \App::$page['htmlhead'] .= replace_macros(get_markup_template('profed_head.tpl'), array( '$baseurl' => z_root(), '$editselect' => $editselect, )); - + $advanced = ((feature_enabled(local_channel(),'advanced_profiles')) ? true : false); if($advanced) $fields = $profile_fields_advanced; else $fields = $profile_fields_basic; - + $hide_friends = array( 'hide_friends', t('Hide your connections list from viewers of this profile'), @@ -682,36 +682,36 @@ class Profiles extends \Zotlabs\Web\Controller { '', array(t('No'),t('Yes')) ); - + $q = q("select * from profdef where true"); if($q) { $extra_fields = array(); - + foreach($q as $qq) { $mine = q("select v from profext where k = '%s' and hash = '%s' and channel_id = %d limit 1", - dbesc($qq['field_name']), + dbesc($qq['field_name']), dbesc($r[0]['profile_guid']), intval(local_channel()) ); - + if(array_key_exists($qq['field_name'],$fields)) { $extra_fields[] = array($qq['field_name'],$qq['field_desc'],(($mine) ? $mine[0]['v'] : ''), $qq['field_help']); } } } - + //logger('extra_fields: ' . print_r($extra_fields,true)); $vc = $r[0]['profile_vcard']; - $vctmp = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); + $vctmp = (($vc) ? \Sabre\VObject\Reader::read($vc) : null); $vcard = (($vctmp) ? get_vcard_array($vctmp,$r[0]['id']) : [] ); - + $f = get_config('system','birthday_input_format'); if(! $f) $f = 'ymd'; - + $is_default = (($r[0]['is_default']) ? 1 : 0); - + $tpl = get_markup_template("profile_edit.tpl"); $o .= replace_macros($tpl,array( '$multi_profiles' => ((feature_enabled(local_channel(),'multi_profiles')) ? true : false), @@ -749,7 +749,7 @@ class Profiles extends \Zotlabs\Web\Controller { '$default' => t('This is your default profile.') . EOL . translate_scope(map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'view_profile'))), '$advanced' => $advanced, '$name' => array('name', t('Your full name'), $r[0]['fullname'], t('Required'), '*'), - '$pdesc' => array('pdesc', t('Title/Description'), $r[0]['pdesc']), + '$pdesc' => array('pdesc', t('Short title/tescription'), $r[0]['pdesc'], t('Maximal 190 characters'), '', 'maxlength="190"'), '$dob' => dob($r[0]['dob']), '$hide_friends' => $hide_friends, '$address' => array('address', t('Street address'), $r[0]['address']), @@ -802,18 +802,18 @@ class Profiles extends \Zotlabs\Web\Controller { '$delete' => t('Delete'), '$cancel' => t('Cancel'), )); - + $arr = array('profile' => $r[0], 'entry' => $o); call_hooks('profile_edit', $arr); - + return $o; } else { - + $r = q("SELECT * FROM profile WHERE uid = %d", local_channel()); if($r) { - + $tpl = get_markup_template('profile_entry.tpl'); foreach($r as $rr) { $profiles .= replace_macros($tpl, array( @@ -821,24 +821,24 @@ class Profiles extends \Zotlabs\Web\Controller { '$id' => $rr['id'], '$alt' => t('Profile Image'), '$profile_name' => $rr['profile_name'], - '$visible' => (($rr['is_default']) - ? '<strong>' . translate_scope(map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'view_profile'))) . '</strong>' + '$visible' => (($rr['is_default']) + ? '<strong>' . translate_scope(map_scope(\Zotlabs\Access\PermissionLimits::Get($channel['channel_id'],'view_profile'))) . '</strong>' : '<a href="' . z_root() . '/profperm/' . $rr['id'] . '" />' . t('Edit visibility') . '</a>') )); } - + $tpl_header = get_markup_template('profile_listing_header.tpl'); $o .= replace_macros($tpl_header,array( '$header' => t('Edit Profiles'), '$cr_new' => t('Create New'), '$cr_new_link' => 'profiles/new?t=' . get_form_security_token("profile_new"), '$profiles' => $profiles - )); - + )); + } return $o; } - + } - + } diff --git a/Zotlabs/Module/Pubsites.php b/Zotlabs/Module/Pubsites.php index daec5dde3..4b64d9af6 100644 --- a/Zotlabs/Module/Pubsites.php +++ b/Zotlabs/Module/Pubsites.php @@ -1,18 +1,19 @@ <?php namespace Zotlabs\Module; +use Zotlabs\Lib\Libzotdir; class Pubsites extends \Zotlabs\Web\Controller { function get() { - require_once('include/dir_fns.php'); + require_once('include/dir_fns.php'); $dirmode = intval(get_config('system','directory_mode')); - + if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) { $url = z_root() . '/dirsearch'; } if(! $url) { - $directory = find_upstream_directory($dirmode); + $directory = Libzotdir::find_upstream_directory($dirmode); $url = $directory['url'] . '/dirsearch'; } $url .= '/sites'; @@ -20,12 +21,12 @@ class Pubsites extends \Zotlabs\Web\Controller { $rating_enabled = get_config('system','rating_enabled'); $o .= '<div class="generic-content-wrapper">'; - + $o .= '<div class="section-title-wrapper"><h2>' . t('Public Hubs') . '</h2></div>'; - - $o .= '<div class="section-content-tools-wrapper"><div class="descriptive-text">' . + + $o .= '<div class="section-content-tools-wrapper"><div class="descriptive-text">' . t('The listed hubs allow public registration for the $Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details.') . '</div>' . EOL; - + $ret = z_fetch_url($url); if($ret['success']) { $j = json_decode($ret['body'],true); @@ -48,8 +49,8 @@ class Pubsites extends \Zotlabs\Web\Controller { $host = strtolower(substr($jj['url'],strpos($jj['url'],'://')+3)); $rate_links = ((local_channel()) ? '<td><a href="rate?f=&target=' . $host . '" class="btn-btn-default"><i class="fa fa-check-square-o"></i> ' . t('Rate') . '</a></td>' : ''); $location = ''; - if(!empty($jj['location'])) { - $location = '<p title="' . t('Location') . '" style="margin: 5px 5px 0 0; text-align: right"><i class="fa fa-globe"></i> ' . $jj['location'] . '</p>'; + if(!empty($jj['location'])) { + $location = '<p title="' . t('Location') . '" style="margin: 5px 5px 0 0; text-align: right"><i class="fa fa-globe"></i> ' . $jj['location'] . '</p>'; } else { $location = '<br /> '; @@ -61,14 +62,14 @@ class Pubsites extends \Zotlabs\Web\Controller { $o .= '</tr>'; } } - + $o .= '</table>'; - + $o .= '</div></div>'; - + } } return $o; } - + } diff --git a/Zotlabs/Module/Regver.php b/Zotlabs/Module/Regver.php index 82b162f56..c45723063 100644 --- a/Zotlabs/Module/Regver.php +++ b/Zotlabs/Module/Regver.php @@ -6,8 +6,6 @@ class Regver extends \Zotlabs\Web\Controller { function get() { - global $lang; - $_SESSION['return_url'] = \App::$cmd; if(argc() != 3) diff --git a/Zotlabs/Module/Sse_bs.php b/Zotlabs/Module/Sse_bs.php index 287c24829..396e07001 100644 --- a/Zotlabs/Module/Sse_bs.php +++ b/Zotlabs/Module/Sse_bs.php @@ -123,7 +123,7 @@ class Sse_bs extends Controller { $mids[] = '\'' . dbesc(@base64url_decode(substr($a,4))) . '\''; } - $str = implode($mids, ','); + $str = implode(',', $mids); $x = [ 'channel_id' => self::$uid, 'update' => 'unset' ]; call_hooks('update_unseen',$x); @@ -162,7 +162,7 @@ class Sse_bs extends Controller { $item_normal = item_normal(); if ($notifications) { - $items = q("SELECT * FROM item + $items = q("SELECT * FROM item WHERE uid = %d AND created <= '%s' AND item_unseen = 1 AND item_wall = 0 AND item_private IN (0, 1) @@ -190,7 +190,7 @@ class Sse_bs extends Controller { } - $r = q("SELECT count(id) as total FROM item + $r = q("SELECT count(id) as total FROM item WHERE uid = %d and item_unseen = 1 AND item_wall = 0 AND item_private IN (0, 1) AND obj_type NOT IN ('Document', 'Video', 'Audio', 'Image') AND author_xchan != '%s' @@ -231,10 +231,10 @@ class Sse_bs extends Controller { $item_normal = item_normal(); if ($notifications) { - $items = q("SELECT * FROM item + $items = q("SELECT * FROM item WHERE uid = %d AND created <= '%s' - AND item_unseen = 1 AND item_wall = 0 AND item_private = 2 + AND item_unseen = 1 AND item_private = 2 AND obj_type NOT IN ('Document', 'Video', 'Audio', 'Image') AND author_xchan != '%s' $item_normal @@ -259,8 +259,8 @@ class Sse_bs extends Controller { } - $r = q("SELECT count(id) as total FROM item - WHERE uid = %d and item_unseen = 1 AND item_wall = 0 AND item_private = 2 + $r = q("SELECT count(id) as total FROM item + WHERE uid = %d and item_unseen = 1 AND item_private = 2 $item_normal $sql_extra AND author_xchan != '%s'", @@ -300,10 +300,10 @@ class Sse_bs extends Controller { $item_normal = item_normal(); if ($notifications) { - $items = q("SELECT * FROM item + $items = q("SELECT * FROM item WHERE uid = %d AND created <= '%s' - AND item_unseen = 1 AND item_wall = 1 + AND item_unseen = 1 AND item_wall = 1 AND item_private IN (0, 1) AND obj_type NOT IN ('Document', 'Video', 'Audio', 'Image') AND author_xchan != '%s' $item_normal @@ -328,8 +328,8 @@ class Sse_bs extends Controller { } - $r = q("SELECT count(id) as total FROM item - WHERE uid = %d and item_unseen = 1 AND item_wall = 1 + $r = q("SELECT count(id) as total FROM item + WHERE uid = %d and item_unseen = 1 AND item_wall = 1 AND item_private IN (0, 1) $item_normal $sql_extra AND author_xchan != '%s'", @@ -379,7 +379,7 @@ class Sse_bs extends Controller { $item_normal = item_normal(); if ($notifications) { - $items = q("SELECT * FROM item + $items = q("SELECT * FROM item WHERE uid = %d AND created <= '%s' AND item_unseen = 1 @@ -410,7 +410,7 @@ class Sse_bs extends Controller { } - $r = q("SELECT count(id) as total FROM item + $r = q("SELECT count(id) as total FROM item WHERE uid = %d AND item_unseen = 1 AND created > '%s' $item_normal @@ -516,7 +516,7 @@ class Sse_bs extends Controller { $p_str = ids_to_querystr($p, 'parent'); $p_sql = (($p_str) ? "OR parent IN ( $p_str )" : ''); - $r = q("select mid from item + $r = q("select mid from item where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and item_unseen = 1 $sql_extra $item_normal", intval(self::$uid), dbesc($forums[$x]['xchan_hash']), @@ -577,7 +577,7 @@ class Sse_bs extends Controller { $item_normal = item_normal(); - $r = q("SELECT * FROM item + $r = q("SELECT * FROM item WHERE verb = '%s' AND obj_type IN ('Document', 'Video', 'Audio', 'Image') AND uid = %d diff --git a/Zotlabs/Module/Zfinger.php b/Zotlabs/Module/Zfinger.php index 533f0a5db..ce7117ad8 100644 --- a/Zotlabs/Module/Zfinger.php +++ b/Zotlabs/Module/Zfinger.php @@ -7,7 +7,7 @@ use Zotlabs\Lib\Libzot; class Zfinger extends \Zotlabs\Web\Controller { function init() { - + require_once('include/zot.php'); require_once('include/crypto.php'); @@ -26,7 +26,7 @@ class Zfinger extends \Zotlabs\Web\Controller { if($chan) { $headers['Digest'] = HTTPSig::generate_digest_header($ret); - $h = HTTPSig::create_sig($headers,$chan['channel_prvkey'],'acct:' . channel_reddress($chan)); + $h = HTTPSig::create_sig($headers,$chan['channel_prvkey'], channel_url($chan)); HTTPSig::set_headers($h); } else { @@ -37,7 +37,7 @@ class Zfinger extends \Zotlabs\Web\Controller { echo $ret; killme(); - + } - + } diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php index 7b20e9ddb..fdef35210 100644 --- a/Zotlabs/Storage/Browser.php +++ b/Zotlabs/Storage/Browser.php @@ -264,7 +264,6 @@ class Browser extends DAV\Browser\Plugin { $ft['attach_id'] = $id; $ft['icon'] = $icon; $ft['photo_icon'] = $photo_icon; - $ft['is_owner'] = $is_owner; $ft['is_creator'] = $is_creator; $ft['rel_path'] = (($data) ? '/cloud/' . $nick .'/' . $data['display_path'] : $href); $ft['full_path'] = z_root() . (($data) ? '/cloud/' . $nick .'/' . $data['display_path'] : $href); @@ -295,9 +294,16 @@ class Browser extends DAV\Browser\Plugin { // create a copy of the list which we can alter for the current resource $folders = $folder_list; + if($data['is_dir']) { - // can not copy a folder into itself - unset($folders[$folder_hash]); + + $rm_path = $folders[$folder_hash]; + // can not copy a folder into itself or own child folders + foreach($folders as $k => $v) { + if(strpos($v, $rm_path) === 0) + unset($folders[$k]); + } + } $ft['newfolder'] = ['newfolder_' . $id, t('Select a target location'), $data['folder'], '', $folders]; @@ -325,7 +331,7 @@ class Browser extends DAV\Browser\Plugin { } $ft['attach_bbcode'] = $attach_bbcode; - $link_bbcode = '[zrl]' . $ft['full_path'] . '[/zrl]'; + $link_bbcode = '[zrl=' . $ft['full_path'] . ']' . $ft['name'] . '[/zrl]'; $ft['link_bbcode'] = $link_bbcode; $f[] = $ft; @@ -360,7 +366,7 @@ class Browser extends DAV\Browser\Plugin { '$upload' => t('Add Files'), '$is_owner' => $is_owner, '$is_admin' => is_site_admin(), - '$admin_delete' => t('Admin Delete'), + '$admin_delete_label' => t('Admin Delete'), '$parentpath' => $parent_path, '$folder_parent' => $folder_parent, '$folder' => $parent->folder_hash, @@ -373,26 +379,36 @@ class Browser extends DAV\Browser\Plugin { '$size' => t('Size'), '$lastmod' => t('Last Modified'), '$parent' => t('parent'), - '$edit' => t('Submit'), - '$delete' => t('Delete'), + '$submit_label' => t('Submit'), + '$cancel_label' => t('Cancel'), + '$delete_label' => t('Delete'), '$channel_id' => $channel_id, '$cpdesc' => t('Copy/paste this code to attach file to a post'), '$cpldesc' => t('Copy/paste this URL to link file from a web page'), - '$categories' => ['categories', t('Categories')], '$recurse' => ['recurse', t('Set permissions for all files and sub folders'), 0, '', [t('No'), t('Yes')]], - '$newfolder' => ['newfolder', t('Select a target location'), $parent->folder_hash, '', $folder_list], '$copy' => ['copy', t('Copy to target location'), 0, '', [t('No'), t('Yes')]], '$return_path' => $path, - '$lockstate' => $lockstate, '$allow_cid' => acl2json($channel_acl['allow_cid']), '$allow_gid' => acl2json($channel_acl['allow_gid']), '$deny_cid' => acl2json($channel_acl['deny_cid']), - '$deny_gid' => acl2json($channel_acl['deny_gid']) - - + '$deny_gid' => acl2json($channel_acl['deny_gid']), + '$is_owner' => $is_owner, + '$select_all_label' => t('Select All'), + '$bulk_actions_label' => t('Bulk Actions'), + '$adjust_permissions_label' => t('Adjust Permissions'), + '$move_copy_label' => t('Move or Copy'), + '$categories_label' => t('Categories'), + '$download_label' => t('Download'), + '$info_label' => t('Info'), + '$rename_label' => t('Rename'), + '$post_label' => t('Post'), + '$attach_bbcode_label' => t('Attachment BBcode'), + '$embed_bbcode_label' => t('Embed BBcode'), + '$link_bbcode_label' => t('Link BBcode'), + '$close_label' => t('Close') )); $a = false; @@ -491,7 +507,7 @@ class Browser extends DAV\Browser\Plugin { $breadcrumbs_html = ''; - if($display_path && ! $_REQUEST['cat']){ + if($display_path && ! $_REQUEST['cat'] && ! $_SESSION['cloud_tiles']){ $breadcrumbs = []; $folders = explode('/', $display_path); $folder_hashes = explode('/', $node->os_path); @@ -534,7 +550,8 @@ class Browser extends DAV\Browser\Plugin { '$folder' => $node->folder_hash, '$dragdroptext' => t('Drop files here to immediately upload'), '$notify' => ['notify', t('Show in your contacts shared folder'), 0, '', [t('No'), t('Yes')]], - '$breadcrumbs_html' => $breadcrumbs_html + '$breadcrumbs_html' => $breadcrumbs_html, + '$drop_area_label' => t('You can select files via the upload button or drop them right here or into an existing folder.') )); } diff --git a/Zotlabs/Web/HTTPSig.php b/Zotlabs/Web/HTTPSig.php index 1f6979191..0b3e2bf2e 100644 --- a/Zotlabs/Web/HTTPSig.php +++ b/Zotlabs/Web/HTTPSig.php @@ -225,7 +225,7 @@ class HTTPSig { } if($keytype === 'zot6') { - $key = self::get_zotfinger_key($id,$force); + $key = self::get_zotfinger_key($id); if($key) { return $key; } diff --git a/Zotlabs/Widget/Dirsort.php b/Zotlabs/Widget/Dirsort.php index e75a00e50..2fb38b7df 100644 --- a/Zotlabs/Widget/Dirsort.php +++ b/Zotlabs/Widget/Dirsort.php @@ -2,10 +2,10 @@ namespace Zotlabs\Widget; -require_once('include/dir_fns.php'); +use Zotlabs\Lib\Libzotdir; class Dirsort { function widget($arr) { - return dir_sort_links(); + return Libzotdir::dir_sort_links(); } } diff --git a/Zotlabs/Zot6/Finger.php b/Zotlabs/Zot6/Finger.php index 22ce4685d..cec3f98ab 100644 --- a/Zotlabs/Zot6/Finger.php +++ b/Zotlabs/Zot6/Finger.php @@ -88,7 +88,7 @@ class Finger { $headers = []; $headers['X-Zot-Channel'] = $channel['channel_address'] . '@' . \App::get_hostname(); $headers['X-Zot-Nonce'] = random_string(); - $xhead = HTTPSig::create_sig($headers,$channel['channel_prvkey'],'acct:' . channel_reddress($channel)); + $xhead = HTTPSig::create_sig($headers,$channel['channel_prvkey'], channel_url($channel)); $retries = 0; @@ -100,7 +100,7 @@ class Finger { $result = z_post_url('http://' . $host . $rhs,$postvars, $retries, [ 'headers' => $xhead ]); } } - } + } else { $rhs .= '?f=&address=' . urlencode($address) . '&token=' . self::$token; diff --git a/Zotlabs/Zot6/Zot6Handler.php b/Zotlabs/Zot6/Zot6Handler.php index d717b147b..bd321c4b1 100644 --- a/Zotlabs/Zot6/Zot6Handler.php +++ b/Zotlabs/Zot6/Zot6Handler.php @@ -226,18 +226,18 @@ class Zot6Handler implements IHandler { if ($recipients) { // basically this means "unfriend" foreach ($recipients as $recip) { - $r = q("select channel.*,xchan.* from channel + $channel = q("select channel.*,xchan.* from channel left join xchan on channel_hash = xchan_hash where channel_hash = '%s' limit 1", dbesc($recip) ); - if ($r) { - $r = q("select abook_id from abook where uid = %d and abook_xchan = '%s' limit 1", - intval($r[0]['channel_id']), + if ($channel) { + $abook = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s' limit 1", + intval($channel[0]['channel_id']), dbesc($sender) ); - if ($r) { - contact_remove($r[0]['channel_id'],$r[0]['abook_id']); + if ($abook) { + contact_remove($channel[0]['channel_id'],$abook[0]['abook_id']); } } } diff --git a/app/mail.apd b/app/mail.apd deleted file mode 100644 index f94a2b3c7..000000000 --- a/app/mail.apd +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -url: $baseurl/mail/combined -requires: local_channel -name: Mail -photo: icon:envelope -categories: nav_featured_app, Personal diff --git a/app/mail.png b/app/mail.png Binary files differdeleted file mode 100644 index bbd9f8449..000000000 --- a/app/mail.png +++ /dev/null @@ -50,7 +50,7 @@ require_once('include/attach.php'); require_once('include/bbcode.php'); define ( 'PLATFORM_NAME', 'hubzilla' ); -define ( 'STD_VERSION', '5.1.11' ); +define ( 'STD_VERSION', '5.3.1' ); define ( 'ZOT_REVISION', '6.0' ); define ( 'DB_UPDATE_VERSION', 1240 ); @@ -82,11 +82,16 @@ define ( 'DIRECTORY_MODE_STANDALONE', 0x0100); // A detached (off the grid) hub define ( 'DIRECTORY_REALM', 'RED_GLOBAL'); define ( 'DIRECTORY_FALLBACK_MASTER', 'https://hub.netzgemeinde.eu'); -$DIRECTORY_FALLBACK_SERVERS = array( - 'https://hub.netzgemeinde.eu', - 'https://zotsite.net', - 'https://hub.libranet.de' -); + +function get_directory_fallback_servers() { + $ret = [ + 'https://hub.netzgemeinde.eu', + 'https://zotsite.net', + 'https://hub.libranet.de' + ]; + + return $ret; +} /** @@ -355,6 +360,7 @@ define ( 'UPDATE_FLAGS_UPDATED', 0x0001); define ( 'UPDATE_FLAGS_FORCED', 0x0002); define ( 'UPDATE_FLAGS_DELETED', 0x1000); +define ( 'HUBLOC_OFFLINE', 0x0001); define ( 'DROPITEM_NORMAL', 0); define ( 'DROPITEM_PHASE1', 1); @@ -2017,7 +2023,7 @@ function proc_run(){ } $args = array_map('escapeshellarg',$args); - $cmdline = implode($args," "); + $cmdline = implode(' ', $args); if(is_windows()) { $cwd = getcwd(); diff --git a/composer.json b/composer.json index 5d4baa6dd..d138ccc43 100644 --- a/composer.json +++ b/composer.json @@ -23,12 +23,15 @@ "source": "https://framagit.org/hubzilla/core/" }, "require": { - "php": ">=5.5", + "php": ">=7.3", "ext-curl": "*", "ext-gd": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-openssl": "*", + "ext-json": "*", + "ext-zip": "*", + "ext-posix": "*", "sabre/dav": "^4.0", "michelf/php-markdown": "^1.7", "bshaffer/oauth2-server-php": "^1.9", diff --git a/include/attach.php b/include/attach.php index b4f697f81..9ba6be109 100644 --- a/include/attach.php +++ b/include/attach.php @@ -2987,10 +2987,7 @@ function attach_folder_select_list($channel_id) { if($r) { foreach($r as $rv) { - $x = attach_folder_rpaths($r,$rv); - if($x) { - $out[$x[0]] = $x[1]; - } + $out[$rv['hash']] = $rv['display_path']; } } @@ -3020,7 +3017,7 @@ function attach_folder_rpaths($all_folders,$that_folder) { if(! $found) $error = true; } - while((! $found) && (! $error) && ($parent_hash != '')); + while((! $error) && ($parent_hash != '')); } return (($error) ? false : [ $current_hash , $path ]); @@ -3067,8 +3064,7 @@ function attach_syspaths($channel_id,$attach_hash) { function attach_upgrade() { - - $r = q("select id, uid, hash from attach where os_path = '' and display_path = '' limit 100"); + $r = q("SELECT id, uid, hash FROM attach WHERE os_path = '' OR display_path = '' LIMIT 100"); if($r) { foreach($r as $rv) { $x = attach_syspaths($rv['uid'],$rv['hash']); diff --git a/include/bbcode.php b/include/bbcode.php index d79429719..e1a5c7e47 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -966,7 +966,7 @@ function bbtopoll($s) { $pl['poll_id'] = $match[1]; $pl['poll_question'] = $match[2]; - $match = ''; + $match = []; if(preg_match_all("/\[poll\-answer=(.*?)\](.*?)\[\/poll\-answer\]/is",$s,$match,PREG_SET_ORDER)) { $pl['answer'] = []; foreach($match as $m) { @@ -1349,7 +1349,7 @@ function bbcode($Text, $options = []) { // Check for table of content with params while(strpos($Text,'[toc') !== false) { $toc_id = 'toc-' . random_string(10); - $Text = preg_replace("/\[toc([^\]]+?)\]/ism", '<ul id="' . $toc_id . '" class="toc"$1></ul><script>$("#' . $toc_id . '").toc();</script>', $Text, 1); + $Text = preg_replace("/\[toc([^\]]+?)\]/ism", '<ul id="' . $toc_id . '" class="toc" $1></ul><script>$("#' . $toc_id . '").toc();</script>', $Text, 1); } // Check for centered text if (strpos($Text,'[/center]') !== false) { diff --git a/include/bookmarks.php b/include/bookmarks.php index 21456c871..145119347 100644 --- a/include/bookmarks.php +++ b/include/bookmarks.php @@ -18,7 +18,7 @@ function bookmark_add($channel,$sender,$taxonomy,$private,$opts = null) { $channel_id = $channel['channel_id']; if($private) - $iarr['contact_allow'] = array($channel['channel_hash']); + $iarr['contact_allow'] = array($channel['channel_hash']); $iarr['mitem_link'] = $taxonomy['url']; $iarr['mitem_desc'] = $taxonomy['term']; $iarr['mitem_flags'] = (($ischat) ? MENU_ITEM_CHATROOM : 0); @@ -41,34 +41,34 @@ function bookmark_add($channel,$sender,$taxonomy,$private,$opts = null) { if(! $menu_id) { $x = menu_list($arr['menu_channel_id'],$arr['menu_name'],$arr['menu_flags']); - if($x) + if($x) $menu_id = $x[0]['menu_id']; - else + else $menu_id = menu_create($arr); } if(! $menu_id) { logger('bookmark_add: unable to create menu ' . $arr['menu_name']); - return; + return; } logger('add_bookmark: menu_id ' . $menu_id); $r = q("select * from menu_item where mitem_link = '%s' and mitem_menu_id = %d and mitem_channel_id = %d limit 1", dbesc($iarr['mitem_link']), intval($menu_id), - intval($channel_id) + intval($channel_id) ); if($r) logger('add_bookmark: duplicate menu entry', LOGGER_DEBUG); if(! $r) { $r = menu_add_item($menu_id,$channel_id,$iarr); - menu_sync_packet($channel_id,get_observer_hash(),$menu_id); + menu_sync_packet($channel_id,get_observer_hash(),$menu_id); } return $r; } function get_bookmark_link($observer) { - if((! $observer) || ($observer['xchan_network'] !== 'zot')) + if((! $observer) || !in_array($observer['xchan_network'], ['zot6', 'zot'])) return ''; $h = @parse_url($observer['xchan_url']); diff --git a/include/cdav.php b/include/cdav.php index ef248a9fe..fcce0ec4a 100644 --- a/include/cdav.php +++ b/include/cdav.php @@ -111,7 +111,7 @@ function process_cdav_card($f, &$vcard, $edit = false) { function import_cdav_card($id, $ext, $table, $column, $objects, $profile, $backend, &$ids, $notice = false) { $i = 0; - $newid = (count($ids) ? false : true); + $newid = (count($ids) ? false : true); while ($object = $objects->getNext()) { @@ -161,7 +161,7 @@ function import_cdav_card($id, $ext, $table, $column, $objects, $profile, $backe ); } - if($notice && $exp == 'vcf') { + if($notice && $ext == 'vcf') { notice( '<strong>' . t('INVALID CARD DISMISSED!') . '</strong>' . EOL . '<strong>' . t('Name: ') . '</strong>' . (($object->FN) ? $object->FN : t('Unknown')) . EOL . diff --git a/include/channel.php b/include/channel.php index d610a0b9a..2d79cd074 100644 --- a/include/channel.php +++ b/include/channel.php @@ -651,7 +651,7 @@ function change_channel_keys($channel) { foreach($h as $hv) { $hv['hubloc_guid_sig'] = $sig; $hv['hubloc_hash'] = $hash; - $hv['hubloc_url_sig'] = base64url_encode(rsa_sign(z_root(),$modifed['channel_prvkey'])); + $hv['hubloc_url_sig'] = base64url_encode(rsa_sign(z_root(),$modified['channel_prvkey'])); hubloc_store_lowlevel($hv); } } diff --git a/include/connections.php b/include/connections.php index 100e595d0..87db7faa9 100644 --- a/include/connections.php +++ b/include/connections.php @@ -211,8 +211,8 @@ function mark_orphan_hubsxchans() { if($dirmode == DIRECTORY_MODE_NORMAL) return; - $r = q("update hubloc set hubloc_error = 1 where hubloc_error = 0 - and hubloc_network = 'zot' and hubloc_connected < %s - interval %s", + $r = q("UPDATE hubloc SET hubloc_error = 1 WHERE hubloc_error = 0 + AND hubloc_network IN ('zot6', 'zot') AND hubloc_connected < %s - INTERVAL %s", db_utcnow(), db_quoteinterval('36 day') ); @@ -357,7 +357,7 @@ function contact_remove($channel_id, $abook_id) { call_hooks('connection_remove',$x); - $archive = get_pconfig($channel_id, 'system','archive_removed_contacts'); + $archive = get_pconfig($channel_id, 'system', 'archive_removed_contacts'); if($archive) { q("update abook set abook_archived = 1 where abook_id = %d and abook_channel = %d", intval($abook_id), @@ -472,7 +472,7 @@ function random_profile() { $r = q("select xchan_url, xchan_hash from xchan left join hubloc on hubloc_hash = xchan_hash where xchan_hidden = 0 and xchan_system = 0 and - xchan_network = 'zot' and xchan_deleted = 0 and + xchan_network = 'zot6' and xchan_deleted = 0 and hubloc_connected > %s - interval %s order by $randfunc limit 1", db_utcnow(), db_quoteinterval('30 day') diff --git a/include/conversation.php b/include/conversation.php index 6615b04c3..087e8c135 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -90,18 +90,18 @@ function item_redir_and_replace_images($body, $images, $cid) { function localize_item(&$item){ if (activity_match($item['verb'],ACTIVITY_LIKE) || activity_match($item['verb'],ACTIVITY_DISLIKE)){ - + if(! $item['obj']) return; if(intval($item['item_thread_top'])) - return; + return; $obj = json_decode($item['obj'],true); if((! $obj) && ($item['obj'])) { logger('localize_item: failed to decode object: ' . print_r($item['obj'],true)); } - + if(is_array($obj['author']) && $obj['author']['link']) $author_link = get_rel_link($obj['author']['link'],'alternate'); elseif(is_array($obj['actor']) && $obj['actor']['url']) @@ -167,7 +167,7 @@ function localize_item(&$item){ if($author_link && $author_name && $item_url) { $author = '[zrl=' . chanlink_url($item['author']['xchan_url']) . ']' . $item['author']['xchan_name'] . '[/zrl]'; $objauthor = '[zrl=' . chanlink_url($author_link) . ']' . $author_name . '[/zrl]'; - + $plink = '[zrl=' . zid($item_url) . ']' . $post_type . '[/zrl]'; if(activity_match($item['verb'],ACTIVITY_LIKE)) { @@ -189,7 +189,7 @@ function localize_item(&$item){ $item['shortlocalize'] = sprintf($shortbodyverb, '[bdi]' . $author_name . '[/bdi]', $post_type); $item['body'] = $item['localize'] = sprintf($bodyverb, '[bdi]' . $author . '[/bdi]', '[bdi]' . $objauthor . '[/bdi]', $plink); - if($Bphoto != "") + if($Bphoto != "") $item['body'] .= "\n\n\n" . '[zrl=' . chanlink_url($author_link) . '][zmg=80x80]' . $Bphoto . '[/zmg][/zrl]'; } @@ -201,7 +201,7 @@ function localize_item(&$item){ if (activity_match($item['verb'],ACTIVITY_FRIEND)) { - if ($item['obj_type'] == "" || $item['obj_type'] !== ACTIVITY_OBJ_PERSON) + if ($item['obj_type'] == "" || $item['obj_type'] !== ACTIVITY_OBJ_PERSON) return; $Aname = $item['author']['xchan_name']; @@ -209,7 +209,7 @@ function localize_item(&$item){ $obj= json_decode($item['obj'],true); - + $Blink = $Bphoto = ''; if($obj['link']) { @@ -282,7 +282,7 @@ function localize_item(&$item){ $Alink = $item['author']['xchan_url']; $A = '[zrl=' . chanlink_url($Alink) . '][bdi]' . $Aname . '[/bdi][/zrl]'; - + $txt = t('%1$s is %2$s','mood'); $item['body'] = sprintf($txt, $A, t($verb)); @@ -295,15 +295,15 @@ function localize_item(&$item){ // (and update to json storage) if (activity_match($item['verb'],ACTIVITY_TAG)) { - $r = q("SELECT * from item,contact WHERE + $r = q("SELECT * from item,contact WHERE item.contact-id=contact.id AND item.mid='%s';", dbesc($item['parent_mid'])); if(count($r)==0) return; $obj=$r[0]; - + $author = '[zrl=' . zid($item['author-link']) . ']' . $item['author-name'] . '[/zrl]'; $objauthor = '[zrl=' . zid($obj['author-link']) . ']' . $obj['author-name'] . '[/zrl]'; - + switch($obj['verb']){ case ACTIVITY_POST: switch ($obj['obj_type']){ @@ -416,7 +416,7 @@ function count_descendants($item) { * likes (etc.) can apply to other things besides posts. Check if they are post * children, in which case we handle them specially. Activities which are unrecognised * as having special meaning and hidden will be treated as posts or comments and visible - * in the stream. + * in the stream. * * @param array $item * @return boolean @@ -438,14 +438,14 @@ function visible_activity($item) { } // We only need edit activities for other federated protocols - // which do not support edits natively. While this does federate + // which do not support edits natively. While this does federate // edits, it presents a number of issues locally - such as #757 and #758. // The SQL check for an edit activity would not perform that well so to fix these issues - // requires an additional item flag (perhaps 'item_edit_activity') that we can add to the + // requires an additional item flag (perhaps 'item_edit_activity') that we can add to the // query for searches and notifications. - // For now we'll just forget about trying to make edits work on network protocols that - // don't support them. + // For now we'll just forget about trying to make edits work on network protocols that + // don't support them. // if(is_edit_activity($item)) // return false; @@ -455,7 +455,7 @@ function visible_activity($item) { /** * @brief Check if a given activity is an edit activity - * + * * * @param array $item * @return boolean @@ -463,11 +463,11 @@ function visible_activity($item) { function is_edit_activity($item) { - $post_types = [ ACTIVITY_OBJ_NOTE, ACTIVITY_OBJ_COMMENT, basename(ACTIVITY_OBJ_NOTE), basename(ACTIVITY_OBJ_COMMENT)]; + $post_types = [ ACTIVITY_OBJ_NOTE, ACTIVITY_OBJ_COMMENT, basename(ACTIVITY_OBJ_NOTE), basename(ACTIVITY_OBJ_COMMENT)]; - // In order to share edits with networks which have no concept of editing, we'll create + // In order to share edits with networks which have no concept of editing, we'll create // separate activities to indicate the edit. Our network will not require them, since our - // edits are automatically applied and the activity indicated. + // edits are automatically applied and the activity indicated. if(($item['verb'] === ACTIVITY_UPDATE) && (in_array($item['obj_type'],$post_types))) return true; @@ -678,12 +678,12 @@ function conversation($items, $mode, $update, $page_mode = 'traditional', $prepa foreach($items as $item) { - $x = [ - 'mode' => $mode, - 'item' => $item + $x = [ + 'mode' => $mode, + 'item' => $item ]; call_hooks('stream_item',$x); - + if($x['item']['blocked']) continue; @@ -699,7 +699,7 @@ function conversation($items, $mode, $update, $page_mode = 'traditional', $prepa $is_new = false; if($mode === 'search' || $mode === 'community') { - if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) + if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) && ($item['id'] != $item['parent'])) continue; } @@ -726,7 +726,7 @@ function conversation($items, $mode, $update, $page_mode = 'traditional', $prepa $drop = array( 'pagedropping' => $page_dropping, 'dropping' => $dropping, - 'select' => t('Select'), + 'select' => t('Select'), 'delete' => t('Delete'), ); @@ -769,7 +769,7 @@ function conversation($items, $mode, $update, $page_mode = 'traditional', $prepa $tmp_item = array( 'template' => $tpl, 'toplevel' => 'toplevel_item', - 'item_type' => intval($item['item_type']), + 'item_type' => intval($item['item_type']), 'mode' => $mode, 'approve' => t('Approve'), 'delete' => t('Delete'), @@ -844,7 +844,7 @@ function conversation($items, $mode, $update, $page_mode = 'traditional', $prepa $conv = new Zotlabs\Lib\ThreadStream($mode, $preview, $uploading, $prepared_item); - // In the display mode we don't have a profile owner. + // In the display mode we don't have a profile owner. if($mode === 'display' && $items) $conv->set_profile_owner($items[0]['uid']); @@ -861,7 +861,7 @@ function conversation($items, $mode, $update, $page_mode = 'traditional', $prepa $x = [ 'mode' => $mode, 'item' => $item ]; call_hooks('stream_item',$x); - + if($x['item']['blocked']) continue; @@ -970,9 +970,9 @@ function best_link_url($item) { function thread_action_menu($item,$mode = '') { $menu = []; - + if((local_channel()) && local_channel() == $item['uid']) { - $menu[] = [ + $menu[] = [ 'menu' => 'view_source', 'title' => t('View Source'), 'icon' => 'code', @@ -982,7 +982,7 @@ function thread_action_menu($item,$mode = '') { if(! in_array($mode, [ 'network-new', 'search', 'community'])) { if($item['parent'] == $item['id'] && (get_observer_hash() != $item['author_xchan'])) { - $menu[] = [ + $menu[] = [ 'menu' => 'follow_thread', 'title' => t('Follow Thread'), 'icon' => 'plus', @@ -991,7 +991,7 @@ function thread_action_menu($item,$mode = '') { ]; } - $menu[] = [ + $menu[] = [ 'menu' => 'unfollow_thread', 'title' => t('Unfollow Thread'), 'icon' => 'minus', @@ -1018,7 +1018,7 @@ function author_is_pmable($xchan, $abook) { call_hooks('author_is_pmable',$x); if($x['result'] !== 'unset') return $x['result']; - + if($xchan['xchan_network'] === 'zot' && get_observer_hash()) return true; return false; @@ -1063,7 +1063,7 @@ function thread_author_menu($item, $mode = '') { if($contact) { $poke_link = ((Apps::system_app_installed($local_channel, 'Poke')) ? z_root() . '/poke/?f=&c=' . $contact['abook_id'] : ''); - if (! intval($contact['abook_self'])) + if (! intval($contact['abook_self'])) $contact_url = z_root() . '/connedit/' . $contact['abook_id']; $posts_link = z_root() . '/network/?cid=' . $contact['abook_id']; @@ -1075,7 +1075,7 @@ function thread_author_menu($item, $mode = '') { $ratings_url = (($rating_enabled) ? z_root() . '/ratings/' . urlencode($item['author_xchan']) : ''); if($profile_link) { - $menu[] = [ + $menu[] = [ 'menu' => 'view_profile', 'title' => t('View Profile'), 'icon' => 'fw', @@ -1085,7 +1085,7 @@ function thread_author_menu($item, $mode = '') { } if($posts_link) { - $menu[] = [ + $menu[] = [ 'menu' => 'view_posts', 'title' => t('Recent Activity'), 'icon' => 'fw', @@ -1095,7 +1095,7 @@ function thread_author_menu($item, $mode = '') { } if($follow_url) { - $menu[] = [ + $menu[] = [ 'menu' => 'follow', 'title' => t('Connect'), 'icon' => 'fw', @@ -1105,7 +1105,7 @@ function thread_author_menu($item, $mode = '') { } if($contact_url) { - $menu[] = [ + $menu[] = [ 'menu' => 'connedit', 'title' => t('Edit Connection'), 'icon' => 'fw', @@ -1115,7 +1115,7 @@ function thread_author_menu($item, $mode = '') { } if($pm_url) { - $menu[] = [ + $menu[] = [ 'menu' => 'prv_message', 'title' => t('Message'), 'icon' => 'fw', @@ -1125,7 +1125,7 @@ function thread_author_menu($item, $mode = '') { } if($ratings_url) { - $menu[] = [ + $menu[] = [ 'menu' => 'ratings', 'title' => t('Ratings'), 'icon' => 'fw', @@ -1135,7 +1135,7 @@ function thread_author_menu($item, $mode = '') { } if($poke_link) { - $menu[] = [ + $menu[] = [ 'menu' => 'poke', 'title' => t('Poke'), 'icon' => 'fw', @@ -1209,8 +1209,8 @@ function builtin_activity_puller($item, &$conv_responses) { if((activity_match($item['verb'], $verb)) && ($item['id'] != $item['parent'])) { $name = (($item['author']['xchan_name']) ? $item['author']['xchan_name'] : t('Unknown')); - $url = (($item['author_xchan'] && $item['author']['xchan_photo_s']) - ? '<a class="dropdown-item" href="' . chanlink_hash($item['author_xchan']) . '">' . '<img class="menu-img-1" src="' . zid($item['author']['xchan_photo_s']) . '" alt="' . urlencode($name) . '" /> ' . $name . '</a>' + $url = (($item['author_xchan'] && $item['author']['xchan_photo_s']) + ? '<a class="dropdown-item" href="' . chanlink_hash($item['author_xchan']) . '">' . '<img class="menu-img-1" src="' . zid($item['author']['xchan_photo_s']) . '" alt="' . urlencode($name) . '" /> ' . $name . '</a>' : '<a class="dropdown-item" href="#" class="disabled">' . $name . '</a>' ); @@ -1222,7 +1222,7 @@ function builtin_activity_puller($item, &$conv_responses) { if($item['obj_type'] === 'Answer') continue; - if(! ((isset($conv_responses[$mode][$item['thr_parent'] . '-l'])) + if(! ((isset($conv_responses[$mode][$item['thr_parent'] . '-l'])) && (is_array($conv_responses[$mode][$item['thr_parent'] . '-l'])))) $conv_responses[$mode][$item['thr_parent'] . '-l'] = array(); @@ -1297,9 +1297,9 @@ function status_editor($a, $x, $popup = false, $module='') { } /** - * This is our general purpose content editor. + * This is our general purpose content editor. * It was once nicknamed "jot" and you may see references to "jot" littered throughout the code. - * They are referring to the content editor or components thereof. + * They are referring to the content editor or components thereof. */ function hz_status_editor($a, $x, $popup = false) { @@ -1341,7 +1341,7 @@ function hz_status_editor($a, $x, $popup = false) { $weblink = (($mimetype === 'text/bbcode') ? t('Insert web link') : false); if(x($x, 'hide_weblink')) $weblink = false; - + $embedPhotos = t('Embed (existing) photo from your photo albums'); $writefiles = (($mimetype === 'text/bbcode') ? perm_is_allowed($x['profile_uid'], get_observer_hash(), 'write_storage') : false); @@ -1366,9 +1366,9 @@ function hz_status_editor($a, $x, $popup = false) { $webpage = ((x($x,'webpage')) ? $x['webpage'] : ''); $reset = ((x($x,'reset')) ? $x['reset'] : ''); - + $feature_auto_save_draft = ((feature_enabled($x['profile_uid'], 'auto_save_draft')) ? "true" : "false"); - + $tpl = get_markup_template('jot-header.tpl'); $tplmacros = [ @@ -1394,7 +1394,7 @@ function hz_status_editor($a, $x, $popup = false) { '$reset' => $reset ]; - call_hooks('jot_header_tpl_filter',$tplmacros); + call_hooks('jot_header_tpl_filter',$tplmacros); App::$page['htmlhead'] .= replace_macros($tpl, $tplmacros); $tpl = get_markup_template('jot.tpl'); @@ -1421,7 +1421,7 @@ function hz_status_editor($a, $x, $popup = false) { $catsenabled = ((feature_enabled($x['profile_uid'], 'categories') && (! $webpage)) ? 'categories' : ''); // avoid illegal offset errors - if(! array_key_exists('permissions',$x)) + if(! array_key_exists('permissions',$x)) $x['permissions'] = [ 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '' ]; $jotplugins = ''; @@ -1539,7 +1539,7 @@ function get_item_children($arr, $parent) { $thr_parent = $item['thr_parent']; if($thr_parent == '') $thr_parent = $item['parent_mid']; - + if($thr_parent == $parent['mid']) { $item['children'] = get_item_children($arr, $item); $children[] = $item; @@ -1698,9 +1698,9 @@ function prepare_page($item) { return replace_macros(get_markup_template($tpl), array( '$body' => $body['html'] )); - + } - + $tpl = get_pconfig($item['uid'], 'system', 'pagetemplate'); if (! $tpl) $tpl = 'page_display.tpl'; diff --git a/include/dir_fns.php b/include/dir_fns.php index f477b35dd..88a1bb74f 100644 --- a/include/dir_fns.php +++ b/include/dir_fns.php @@ -16,7 +16,6 @@ require_once('include/permissions.php'); * @return array */ function find_upstream_directory($dirmode) { - global $DIRECTORY_FALLBACK_SERVERS; $preferred = get_config('system','directory_server'); @@ -28,7 +27,7 @@ function find_upstream_directory($dirmode) { ); if(($r) && ($r[0]['site_flags'] & DIRECTORY_MODE_STANDALONE)) { $preferred = ''; - } + } } @@ -39,14 +38,16 @@ function find_upstream_directory($dirmode) { * from our list of directory servers. However, if we're a directory * server ourself, point at the local instance * We will then set this value so this should only ever happen once. - * Ideally there will be an admin setting to change to a different + * Ideally there will be an admin setting to change to a different * directory server if you don't like our choice or if circumstances change. */ + $directory_fallback_servers = get_directory_fallback_servers(); + $dirmode = intval(get_config('system','directory_mode')); if ($dirmode == DIRECTORY_MODE_NORMAL) { - $toss = mt_rand(0,count($DIRECTORY_FALLBACK_SERVERS)); - $preferred = $DIRECTORY_FALLBACK_SERVERS[$toss]; + $toss = mt_rand(0,count($directory_fallback_servers)); + $preferred = $directory_fallback_servers[$toss]; set_config('system','directory_server',$preferred); } else{ set_config('system','directory_server',z_root()); @@ -94,7 +95,7 @@ function get_directory_setting($observer, $setting) { $ret = get_config('directory', $setting); - // 'safemode' is the default if there is no observer or no established preference. + // 'safemode' is the default if there is no observer or no established preference. if($setting == 'safemode' && $ret === false) $ret = 1; @@ -152,8 +153,8 @@ function dir_sort_links() { * * Checks the directory mode of this hub to see if it is some form of directory server. If it is, * get the directory realm of this hub. Fetch a list of all other directory servers in this realm and request - * a directory sync packet. This will contain both directory updates and new ratings. Store these all in the DB. - * In the case of updates, we will query each of them asynchronously from a poller task. Ratings are stored + * a directory sync packet. This will contain both directory updates and new ratings. Store these all in the DB. + * In the case of updates, we will query each of them asynchronously from a poller task. Ratings are stored * directly if the rater's signature matches. * * @param int $dirmode; @@ -189,7 +190,7 @@ function sync_directories($dirmode) { [ 'site_url' => DIRECTORY_FALLBACK_MASTER, 'site_flags' => DIRECTORY_MODE_PRIMARY, - 'site_update' => NULL_DATE, + 'site_update' => NULL_DATE, 'site_directory' => DIRECTORY_FALLBACK_MASTER . '/dirsearch', 'site_realm' => DIRECTORY_REALM, 'site_valid' => 1, @@ -335,11 +336,11 @@ function update_directory_entry($ud) { // modify the directory search to only return zot6 entries, and also modify this function // to *only* fetch the zot6 entries. // Otherwise we'll be showing duplicates or have a mostly empty directory for a good chunk of - // the transition period. Directory server load will likely increase "moderately" during this transition. - // The one month counter begins when the primary directory has upgraded to a release which uses this code. + // the transition period. Directory server load will likely increase "moderately" during this transition. + // The one month counter begins when the primary directory has upgraded to a release which uses this code. // Hubzilla channels running traditional zot which have not upgraded can or will be dropped from the directory or // "not found" at the end of the transition period as the directory will only serve zot6 entries at that time. - + $uri = Webfinger::zot_url($ud['ud_addr']); if($uri) { $record = Zotfinger::exec($uri); @@ -347,8 +348,8 @@ function update_directory_entry($ud) { // Check the HTTP signature $hsig = $record['signature']; - if($hsig && $hsig['signer'] === $url && $hsig['header_valid'] === true && $hsig['content_valid'] === true) { - $x = \Zotlabs\Lib\Libzot::import_xchan($record['data'], 0, $ud); + if($hsig && $hsig['signer'] === $uri && $hsig['header_valid'] === true && $hsig['content_valid'] === true) { + $x = Libzot::import_xchan($record['data'], 0, $ud); if($x['success']) { $success = true; } @@ -394,7 +395,7 @@ function local_dir_update($uid, $force) { $profile['description'] = $p[0]['pdesc']; $profile['birthday'] = $p[0]['dob']; - if ($age = age($p[0]['dob'],$p[0]['channel_timezone'],'')) + if ($age = age($p[0]['dob'],$p[0]['channel_timezone'],'')) $profile['age'] = $age; $profile['gender'] = $p[0]['gender']; diff --git a/include/help.php b/include/help.php index affe64495..ebf1ccc08 100644 --- a/include/help.php +++ b/include/help.php @@ -299,7 +299,7 @@ function load_context_help() { break; array_pop($args); - $path = implode($args,'/'); + $path = implode('/', $args); } return $context_help; diff --git a/include/html2plain.php b/include/html2plain.php index 979354079..fde70bd01 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -40,7 +40,7 @@ function breaklines($line, $level, $wraplength = 75) $newlines[] = $line; - return(implode($newlines, "\n")); + return(implode("\n", $newlines)); } function quotelevel($message, $wraplength = 75) @@ -73,7 +73,7 @@ function quotelevel($message, $wraplength = 75) if (!$startquote or ($line != '')) $newlines[] = breaklines($line, $currlevel, $wraplength); } - return(implode($newlines, "\n")); + return(implode("\n", $newlines)); } function collecturls($message) { diff --git a/include/import.php b/include/import.php index d02cc1e1f..b512e1f11 100644 --- a/include/import.php +++ b/include/import.php @@ -1358,7 +1358,7 @@ function sync_files($channel, $files) { $headers = []; $headers['Accept'] = 'application/x-zot+json' ; $headers['Sigtoken'] = random_string(); - $headers = HTTPSig::create_sig($headers,$channel['channel_prvkey'], 'acct:' . channel_reddress($channel),true,'sha512'); + $headers = HTTPSig::create_sig($headers, $channel['channel_prvkey'], channel_url($channel), true, 'sha512'); $x = z_post_url($fetch_url,$parr,$redirects,[ 'filep' => $fp, 'headers' => $headers]); fclose($fp); @@ -1463,7 +1463,7 @@ function sync_files($channel, $files) { $headers = []; $headers['Accept'] = 'application/x-zot+json' ; $headers['Sigtoken'] = random_string(); - $headers = HTTPSig::create_sig($headers,$channel['channel_prvkey'],'acct:' . channel_reddress($channel),true,'sha512'); + $headers = HTTPSig::create_sig($headers, $channel['channel_prvkey'], channel_url($channel), true, 'sha512'); $x = z_post_url($fetch_url,$parr,$redirects,[ 'filep' => $fp, 'headers' => $headers]); fclose($fp); diff --git a/include/items.php b/include/items.php index 2426c189f..bfca354d1 100755 --- a/include/items.php +++ b/include/items.php @@ -11,6 +11,7 @@ use Zotlabs\Lib\ThreadListener; use Zotlabs\Lib\IConfig; use Zotlabs\Lib\Activity; use Zotlabs\Lib\Libsync; +use Zotlabs\Lib\Libzot; use Zotlabs\Access\PermissionLimits; use Zotlabs\Access\PermissionRoles; use Zotlabs\Access\AccessList; @@ -130,7 +131,7 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) { case 'sit': case 'any': case 'con': - if($rr['xchan_network'] != 'zot') + if(!in_array($rr['xchan_network'], ['zot6', 'zot'])) break; case 'pub': case '': @@ -790,8 +791,8 @@ function get_item_elements($x,$allow_code = false) { dbesc($arr['author_xchan']) ); if($r) { - if($r[0]['xchan_pubkey'] && $r[0]['xchan_network'] === 'zot') { - if(rsa_verify($x['body'],base64url_decode($arr['sig']),$r[0]['xchan_pubkey'])) { + if($r[0]['xchan_pubkey'] && $r[0]['xchan_network'] === 'zot6') { + if(Libzot::verify($x['body'], $arr['sig'], $r[0]['xchan_pubkey'])) { $arr['item_verified'] = 1; } else { @@ -2206,6 +2207,7 @@ function item_store_update($arr, $allow_exec = false, $deliver = true) { return $ret; } + // override the unseen flag with the original $arr['item_unseen'] = $orig[0]['item_unseen']; @@ -2672,6 +2674,11 @@ function tag_deliver($uid, $item_id) { } if ($is_group && intval($item['item_private']) === 2 && intval($item['item_thread_top'])) { + + // do not turn the groups own direkt messages into group items + if($item['item_wall'] && $item['author_xchan'] === $u[0]['channel_hash']) + return; + // group delivery via DM if(perm_is_allowed($uid,$item['owner_xchan'],'post_wall') || perm_is_allowed($uid,$item['owner_xchan'],'tag_deliver')) { logger('group DM delivery for ' . $u[0]['channel_address']); @@ -2682,6 +2689,12 @@ function tag_deliver($uid, $item_id) { if ($is_group && intval($item['item_thread_top']) && intval($item['item_wall']) && $item['author_xchan'] !== $item['owner_xchan']) { + + if($item['resource_type'] === 'group_item') { + logger('resource_type group_item: already shared'); + return; + } + if (strpos($item['body'],'[/share]')) { logger('W2W post already shared'); return; @@ -3113,11 +3126,12 @@ function tgroup_check($uid, $item) { } } } -*/ + if(! $found) { logger('tgroup_check: mention was in a reshare or exceeded max_tagged_forums - ignoring'); continue; } +*/ return true; } @@ -3203,16 +3217,18 @@ function start_delivery_chain($channel, $item, $item_id, $parent, $group = false $arr = []; if ($edit) { + // process edit or delete action - $r = q("select * from item where source_xchan = '%s' and body like '%s' and uid = %d limit 1", - dbesc($item['owner_xchan']), - dbesc("%message_id='" . $item['mid'] . "'%"), - intval($channel['channel_id']) + $r = q("select * from item where uid = %d and resource_id = '%s' and source_xchan = '%s' and resource_type = 'group_item' limit 1", + intval($channel['channel_id']), + dbesc($item['mid']), + dbesc($item['author_xchan']) ); + if ($r) { if (intval($item['item_deleted'])) { - drop_item($r[0]['id'],false,DROPITEM_PHASE1); - Master::Summon([ 'Notifier','drop',$r[0]['id'] ]); + drop_item($r[0]['id'], false, DROPITEM_PHASE1); + Master::Summon([ 'Notifier', 'drop', $r[0]['id'] ]); return; } $arr['id'] = intval($r[0]['id']); @@ -3242,6 +3258,9 @@ function start_delivery_chain($channel, $item, $item_id, $parent, $group = false $arr['item_uplink'] = 0; $arr['source_xchan'] = $item['owner_xchan']; + $arr['resource_id'] = $item['mid']; + $arr['resource_type'] = 'group_item'; + $arr['item_private'] = (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 1 : 0); @@ -3263,12 +3282,13 @@ function start_delivery_chain($channel, $item, $item_id, $parent, $group = false "' message_id='" . $item['mid'] . "']"; if($item['title']) - $bb .= '[b]'.$item['title'].'[/b]'."\r\n"; + $bb .= '[h3][b]'.$item['title'].'[/b][/h3]'."\r\n"; $bb .= $item['body']; $bb .= "[/share]"; } $arr['body'] = $bb; + $arr['term'] = $item['term']; $arr['author_xchan'] = $channel['channel_hash']; $arr['owner_xchan'] = $channel['channel_hash']; @@ -3950,10 +3970,10 @@ function drop_item($id,$interactive = true,$stage = DROPITEM_NORMAL) { ); if($items) { foreach($items as $i) - delete_item_lowlevel($i,$stage,$force); + delete_item_lowlevel($i, $stage); } else - delete_item_lowlevel($item,$stage,$force); + delete_item_lowlevel($item, $stage); if(! $interactive) return 1; @@ -3987,7 +4007,6 @@ function drop_item($id,$interactive = true,$stage = DROPITEM_NORMAL) { * * @param array $item * @param int $stage - * @param boolean $force * @return boolean */ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL) { @@ -4458,7 +4477,7 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C $sql_extra = " AND item.parent IN ( SELECT parent FROM item WHERE $item_uids and item_thread_top = 1 $sql_options $item_normal ) "; if($arr['since_id']) - $sql_extra .= " and item.id > " . $since_id . " "; + $sql_extra .= " and item.id > " . intval($arr['since_id']) . " "; if($arr['cat']) $sql_extra .= protect_sprintf(term_query('item', $arr['cat'], TERM_CATEGORY)); @@ -4705,7 +4724,7 @@ function webpage_to_namespace($webpage) { function update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid) { - if(! $post_id) + if(! intval($post_id)) return; $page_type = webpage_to_namespace($webpage); @@ -4727,7 +4746,7 @@ function update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remo // as the entire mid. If it were the post_id the link would be less portable. IConfig::Set( - intval($post_id), + $post_id, 'system', $page_type, ($pagetitle) ? $pagetitle : substr($mid,0,16), diff --git a/include/js_strings.php b/include/js_strings.php index 6f559f4c4..e06e105fd 100644 --- a/include/js_strings.php +++ b/include/js_strings.php @@ -47,10 +47,10 @@ function js_strings() { 'days' => tt('%d days', '%d days', '%d'), 'months' => tt('%d months', '%d months', '%d'), 'years' => tt('%d years', '%d years', '%d'), - + // get plural function code 'plural_func' => tf(), - + '$t01' => ((t('timeago.prefixAgo') == 'timeago.prefixAgo') ? '' : ((t('timeago.prefixAgo') == 'NONE') ? '' : t('timeago.prefixAgo'))), '$t02' => ((t('timeago.prefixFromNow') == 'timeago.prefixFromNow') ? '' : ((t('timeago.prefixFromNow') == 'NONE') ? '' : t('timeago.prefixFromNow'))), '$t03' => ((t('timeago.suffixAgo') == 'timeago.suffixAgo') ? 'ago' : ((t('timeago.suffixAgo') == 'NONE') ? '' : t('timeago.suffixAgo'))), @@ -113,6 +113,9 @@ function js_strings() { '$month' => t('month','calendar'), '$week' => t('week','calendar'), '$day' => t('day','calendar'), - '$allday' => t('All day','calendar') + '$allday' => t('All day','calendar'), + + // mod cloud + '$download_info' => t('Please stand by while your download is being prepared.') )); } diff --git a/include/network.php b/include/network.php index bcd66cf85..324a99eba 100644 --- a/include/network.php +++ b/include/network.php @@ -714,7 +714,7 @@ function sxml2array ( $xmlObject, $out = array () ) * @brief xml2array() will convert the given XML text to an array in the XML structure. * * Link: http://www.bin-co.com/php/scripts/xml2array/ - * Portions significantly re-written by mike@macgirvin.com + * Portions significantly re-written by mike@macgirvin.com * (namespaces, lowercase tags, get_attribute default changed, more...) * * Examples: $array = xml2array(file_get_contents('feed.xml')); @@ -1113,8 +1113,8 @@ function discover_by_webbie($webbie, $protocol = '') { // Check the HTTP signature $hsig = $record['signature']; - if($hsig && ($hsig['signer'] === $url || $hsig['signer'] === $link['href']) && $hsig['header_valid'] === true && $hsig['content_valid'] === true) - $hsig_valid = true; + if($hsig && $hsig['signer'] === $link['href'] && $hsig['header_valid'] === true && $hsig['content_valid'] === true) + $hsig_valid = true; if(! $hsig_valid) { logger('http signature not valid: ' . print_r($hsig,true)); @@ -1431,7 +1431,7 @@ function scrape_feed($url) { function do_delivery($deliveries, $force = false) { // $force is set if a site that wasn't responding suddenly returns to life. - // Try and shove through everything going to that site while it's responding. + // Try and shove through everything going to that site while it's responding. if(! (is_array($deliveries) && count($deliveries))) return; @@ -2069,7 +2069,7 @@ function get_request_string($url) { * Takes the output of parse_url and builds a URL from it * */ - + function unparse_url($parsed_url) { $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : ''; $host = isset($parsed_url['host']) ? $parsed_url['host'] : ''; @@ -2081,4 +2081,4 @@ function unparse_url($parsed_url) { $query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : ''; $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : ''; return "$scheme$user$pass$host$port$path$query$fragment"; -} +} diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php index 52f761b65..f61919eea 100644 --- a/include/photo/photo_driver.php +++ b/include/photo/photo_driver.php @@ -38,6 +38,10 @@ function photo_factory($data, $type = null) { $v = Imagick::getVersion(); preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m); if(version_compare($m[1], '6.6.7') >= 0) { + $limits = get_config('system', 'imagick_limits', false); + if ($limits) + foreach ($limits as $k => $v) + IMagick::setResourceLimit($k, $v); $ph = new PhotoImagick($data, $type); } else { // earlier imagick versions have issues with scaling png's diff --git a/include/security.php b/include/security.php index c9df00f1e..40905925f 100644 --- a/include/security.php +++ b/include/security.php @@ -19,26 +19,26 @@ function authenticate_success($user_record, $channel = null, $login_initial = fa $lastlog_updated = false; - if(x($user_record, 'account_id')) { + if (x($user_record, 'account_id')) { App::$account = $user_record; $_SESSION['account_id'] = $user_record['account_id']; $_SESSION['authenticated'] = 1; - if($channel) + if ($channel) $uid_to_load = $channel['channel_id']; - if(! $uid_to_load) { - $uid_to_load = (((x($_SESSION,'uid')) && (intval($_SESSION['uid']))) + if (!$uid_to_load) { + $uid_to_load = (((x($_SESSION, 'uid')) && (intval($_SESSION['uid']))) ? intval($_SESSION['uid']) : intval(App::$account['account_default_channel']) ); } - if($uid_to_load) { + if ($uid_to_load) { change_channel($uid_to_load); } - if($login_initial || $update_lastlog) { + if ($login_initial || $update_lastlog) { q("update account set account_lastlog = '%s' where account_id = %d", dbesc(datetime_convert()), intval($_SESSION['account_id']) @@ -50,24 +50,24 @@ function authenticate_success($user_record, $channel = null, $login_initial = fa } - if(($login_initial) && (! $lastlog_updated)) { + if (($login_initial) && (!$lastlog_updated)) { call_hooks('logged_in', $user_record); // might want to log success here } - if($return || x($_SESSION, 'workflow')) { + if ($return || x($_SESSION, 'workflow')) { unset($_SESSION['workflow']); return; } - if((App::$module !== 'home') && x($_SESSION,'login_return_url') && strlen($_SESSION['login_return_url'])) { + if ((App::$module !== 'home') && x($_SESSION, 'login_return_url') && strlen($_SESSION['login_return_url'])) { $return_url = $_SESSION['login_return_url']; // don't let members get redirected to a raw ajax page update - this can happen // if DHCP changes the IP address at an unfortunate time and paranoia is turned on - if(strstr($return_url,'update_')) + if (strstr($return_url, 'update_')) $return_url = ''; unset($_SESSION['login_return_url']); @@ -76,11 +76,11 @@ function authenticate_success($user_record, $channel = null, $login_initial = fa /* This account has never created a channel. Send them to new_channel by default */ - if(App::$module === 'login') { + if (App::$module === 'login') { $r = q("select count(channel_id) as total from channel where channel_account_id = %d and channel_removed = 0 ", intval(App::$account['account_id']) ); - if(($r) && (! $r[0]['total'])) + if (($r) && (!$r[0]['total'])) goaway(z_root() . '/new_channel'); } @@ -88,14 +88,14 @@ function authenticate_success($user_record, $channel = null, $login_initial = fa } function atoken_login($atoken) { - if(! $atoken) + if (!$atoken) return false; $_SESSION['authenticated'] = 1; $_SESSION['visitor_id'] = $atoken['xchan_hash']; $_SESSION['atoken'] = $atoken['atoken_id']; - \App::set_observer($atoken); + App::set_observer($atoken); return true; } @@ -109,14 +109,14 @@ function atoken_login($atoken) { function atoken_xchan($atoken) { $c = channelx_by_n($atoken['atoken_uid']); - if($c) { + if ($c) { return [ 'atoken_id' => $atoken['atoken_id'], - 'xchan_hash' => substr($c['channel_hash'],0,16) . '.' . $atoken['atoken_name'], + 'xchan_hash' => substr($c['channel_hash'], 0, 16) . '.' . $atoken['atoken_name'], 'xchan_name' => $atoken['atoken_name'], - 'xchan_addr' => 'guest:' . $atoken['atoken_name'] . '@' . \App::get_hostname(), + 'xchan_addr' => 'guest:' . $atoken['atoken_name'] . '@' . App::get_hostname(), 'xchan_network' => 'unknown', - 'xchan_url' => z_root() . '/guest/' . substr($c['channel_hash'],0,16) . '.' . $atoken['atoken_name'], + 'xchan_url' => z_root() . '/guest/' . substr($c['channel_hash'], 0, 16) . '.' . $atoken['atoken_name'], 'xchan_hidden' => 1, 'xchan_photo_mimetype' => 'image/png', 'xchan_photo_l' => z_root() . '/' . get_default_profile_photo(300), @@ -133,16 +133,16 @@ function atoken_delete($atoken_id) { $r = q("select * from atoken where atoken_id = %d", intval($atoken_id) ); - if(! $r) + if (!$r) return; $c = q("select channel_id, channel_hash from channel where channel_id = %d", intval($r[0]['atoken_uid']) ); - if(! $c) + if (!$c) return; - $atoken_xchan = substr($c[0]['channel_hash'],0,16) . '.' . $r[0]['atoken_name']; + $atoken_xchan = substr($c[0]['channel_hash'], 0, 16) . '.' . $r[0]['atoken_name']; q("delete from atoken where atoken_id = %d", intval($atoken_id) @@ -168,41 +168,41 @@ function atoken_create_xchan($xchan) { $r = q("select xchan_hash from xchan where xchan_hash = '%s'", dbesc($xchan['xchan_hash']) ); - if($r) + if ($r) return; $xchan['xchan_guid'] = $xchan['xchan_hash']; $store = []; - foreach($xchan as $k => $v) { - if(strpos($k,'xchan_') === 0) { + foreach ($xchan as $k => $v) { + if (strpos($k, 'xchan_') === 0) { $store[$k] = $v; } } - - $r = xchan_store_lowlevel($store); + + xchan_store_lowlevel($store); return true; } -function atoken_abook($uid,$xchan_hash) { +function atoken_abook($uid, $xchan_hash) { - if(substr($xchan_hash,16,1) != '.') + if (substr($xchan_hash, 16, 1) != '.') return false; $r = q("select channel_hash from channel where channel_id = %d limit 1", intval($uid) ); - if(! $r) + if (!$r) return false; $x = q("select * from atoken where atoken_uid = %d and atoken_name = '%s'", intval($uid), - dbesc(substr($xchan_hash,17)) + dbesc(substr($xchan_hash, 17)) ); - if($x) { + if ($x) { $xchan = atoken_xchan($x[0]); $xchan['abook_blocked'] = 0; $xchan['abook_ignored'] = 0; @@ -215,12 +215,12 @@ function atoken_abook($uid,$xchan_hash) { function pseudo_abook($xchan) { - if(! $xchan) + if (!$xchan) return false; // set abook_pseudo to flag that we aren't really connected. - $xchan['abook_pseudo'] = 1; + $xchan['abook_pseudo'] = 1; $xchan['abook_blocked'] = 0; $xchan['abook_ignored'] = 0; $xchan['abook_pending'] = 0; @@ -240,7 +240,7 @@ function change_channel($change_channel) { $ret = false; - if($change_channel) { + if ($change_channel) { $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel_id = %d and channel_account_id = %d and channel_removed = 0 limit 1", intval($change_channel), @@ -249,7 +249,7 @@ function change_channel($change_channel) { // It's not there. Is this an administrator, and is this the sys channel? if (is_developer()) { - if (! $r) { + if (!$r) { if (is_site_admin()) { $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel_id = %d and channel_system = 1 and channel_removed = 0 limit 1", intval($change_channel) @@ -258,19 +258,19 @@ function change_channel($change_channel) { } } - if($r) { + if ($r) { $hash = $r[0]['channel_hash']; $_SESSION['uid'] = intval($r[0]['channel_id']); App::set_channel($r[0]); $_SESSION['theme'] = $r[0]['channel_theme']; - $_SESSION['mobile_theme'] = get_pconfig(local_channel(),'system', 'mobile_theme'); - $_SESSION['cloud_tiles'] = get_pconfig(local_channel(),'system', 'cloud_tiles'); + $_SESSION['mobile_theme'] = get_pconfig(local_channel(), 'system', 'mobile_theme'); + $_SESSION['cloud_tiles'] = get_pconfig(local_channel(), 'system', 'cloud_tiles'); date_default_timezone_set($r[0]['channel_timezone']); // Update the active timestamp at most once a day - if(substr($r[0]['channel_active'],0,10) !== substr(datetime_convert(),0,10)) { - $z = q("UPDATE channel SET channel_active = '%s' WHERE channel_id = %d", + if (substr($r[0]['channel_active'], 0, 10) !== substr(datetime_convert(), 0, 10)) { + q("UPDATE channel SET channel_active = '%s' WHERE channel_id = %d", dbesc(datetime_convert()), intval($r[0]['channel_id']) ); @@ -280,17 +280,17 @@ function change_channel($change_channel) { $x = q("select * from xchan where xchan_hash = '%s' limit 1", dbesc($hash) ); - if($x) { + if ($x) { $_SESSION['my_url'] = $x[0]['xchan_url']; $_SESSION['my_address'] = channel_reddress($r[0]); App::set_observer($x[0]); App::set_perms(get_all_perms(local_channel(), $hash)); } - if(! is_dir('store/' . $r[0]['channel_address'])) - @os_mkdir('store/' . $r[0]['channel_address'], STORAGE_DEFAULT_PERMISSIONS,true); + if (!is_dir('store/' . $r[0]['channel_address'])) + @os_mkdir('store/' . $r[0]['channel_address'], STORAGE_DEFAULT_PERMISSIONS, true); - $arr = [ 'channel_id' => $change_channel, 'chanx' => $ret ]; + $arr = ['channel_id' => $change_channel, 'chanx' => $ret]; call_hooks('change_channel', $arr); } @@ -333,18 +333,17 @@ function permissions_sql($owner_id, $remote_observer = null, $table = '') { if (($local_channel) && ($local_channel == $owner_id)) { return EMPTY_STR; } - /** - * Authenticated visitor. + * Authenticated visitor. */ else { - $observer = ((! is_null($remote_observer)) ? $remote_observer : get_observer_hash()); + $observer = ((!is_null($remote_observer)) ? $remote_observer : get_observer_hash()); if ($observer) { - $sec = get_security_ids($owner_id,$observer); + $sec = get_security_ids($owner_id, $observer); // always allow the channel owner, even if authenticated as a visitor @@ -354,14 +353,14 @@ function permissions_sql($owner_id, $remote_observer = null, $table = '') { return EMPTY_STR; } } - } + } if (is_array($sec['allow_cid']) && count($sec['allow_cid'])) { $ca = []; foreach ($sec['allow_cid'] as $c) { $ca[] = '<' . $c . '>'; } - $cs = implode('|',$ca); + $cs = implode('|', $ca); } else { $cs = '<<>>'; // should be impossible to match @@ -372,7 +371,7 @@ function permissions_sql($owner_id, $remote_observer = null, $table = '') { foreach ($sec['allow_gid'] as $g) { $ga[] = '<' . $g . '>'; } - $gs = implode('|',$ga); + $gs = implode('|', $ga); } else { $gs = '<<>>'; // should be impossible to match @@ -420,39 +419,38 @@ function item_permissions_sql($owner_id, $remote_observer = null) { * Profile owner - everything is visible */ - if(($local_channel) && ($local_channel == $owner_id)) { + if (($local_channel) && ($local_channel == $owner_id)) { $sql = ''; } - /** - * Authenticated visitor. + * Authenticated visitor. */ else { - $observer = (($remote_observer) ? $remote_observer : get_observer_hash()); + $observer = (($remote_observer) ? $remote_observer : get_observer_hash()); - if($observer) { + if ($observer) { - $scope = scopes_sql($owner_id,$observer); - $sec = get_security_ids($owner_id,$observer); + $scope = scopes_sql($owner_id, $observer); + $sec = get_security_ids($owner_id, $observer); // always allow the channel owner, even if authenticated as a visitor - if($sec['channel_id']) { - foreach($sec['channel_id'] as $ch) { - if($observer === $ch) { + if ($sec['channel_id']) { + foreach ($sec['channel_id'] as $ch) { + if ($observer === $ch) { return EMPTY_STR; } } - } + } if (is_array($sec['allow_cid']) && count($sec['allow_cid'])) { $ca = []; foreach ($sec['allow_cid'] as $c) { $ca[] = '<' . $c . '>'; } - $cs = implode('|',$ca); + $cs = implode('|', $ca); } else { $cs = '<<>>'; // should be impossible to match @@ -463,7 +461,7 @@ function item_permissions_sql($owner_id, $remote_observer = null) { foreach ($sec['allow_gid'] as $g) { $ga[] = '<' . $g . '>'; } - $gs = implode('|',$ga); + $gs = implode('|', $ga); } else { $gs = '<<>>'; // should be impossible to match @@ -493,21 +491,20 @@ function item_permissions_sql($owner_id, $remote_observer = null) { */ - -function scopes_sql($uid,$observer) { +function scopes_sql($uid, $observer) { $str = " and ( public_policy = 'authenticated' "; - if(! is_foreigner($observer)) + if (!is_foreigner($observer)) $str .= " or public_policy = 'network: red' "; - if(local_channel()) + if (local_channel()) $str .= " or public_policy = 'site: " . App::get_hostname() . "' "; $ab = q("select * from abook where abook_xchan = '%s' and abook_channel = %d limit 1", dbesc($observer), intval($uid) ); - if(! $ab) + if (!$ab) return $str . " ) "; - if($ab[0]['abook_pending']) + if ($ab[0]['abook_pending']) $str .= " or public_policy = 'any connections' "; $str .= " or public_policy = 'contacts' ) "; return $str; @@ -526,14 +523,14 @@ function public_permissions_sql($observer_hash) { if ($observer_hash) { - $sec = get_security_ids($owner_id,$observer_hash); + $sec = get_security_ids($owner_id, $observer_hash); if (is_array($sec['allow_cid']) && count($sec['allow_cid'])) { $ca = []; foreach ($sec['allow_cid'] as $c) { $ca[] = '<' . $c . '>'; } - $cs = implode('|',$ca); + $cs = implode('|', $ca); } else { $cs = '<<>>'; // should be impossible to match @@ -544,7 +541,7 @@ function public_permissions_sql($observer_hash) { foreach ($sec['allow_gid'] as $g) { $ga[] = '<' . $g . '>'; } - $gs = implode('|',$ga); + $gs = implode('|', $ga); } else { $gs = '<<>>'; // should be impossible to match @@ -598,7 +595,7 @@ function check_form_security_token($typename = '', $formname = 'form_security_to $x = explode('.', $hash); if (time() > (IntVal($x[0]) + $max_livetime) || time() < (IntVal($x[0]) + $min_livetime)) - return false; + return false; $sec_hash = hash('whirlpool', App::$observer['xchan_guid'] . ((local_channel()) ? App::$channel['channel_prvkey'] : '') . session_id() . $x[0] . $typename); @@ -606,16 +603,19 @@ function check_form_security_token($typename = '', $formname = 'form_security_to } function check_form_security_std_err_msg() { + /** @noinspection PhpToStringImplementationInspection */ return t('The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it.') . EOL; } + function check_form_security_token_redirectOnErr($err_redirect, $typename = '', $formname = 'form_security_token') { if (!check_form_security_token($typename, $formname)) { logger('check_form_security_token failed: user ' . App::$observer['xchan_name'] . ' - form element ' . $typename); logger('check_form_security_token failed: _REQUEST data: ' . print_r($_REQUEST, true), LOGGER_DATA); - notice( check_form_security_std_err_msg() ); - goaway(z_root() . $err_redirect ); + notice(check_form_security_std_err_msg()); + goaway(z_root() . $err_redirect); } } + function check_form_security_token_ForbiddenOnErr($typename = '', $formname = 'form_security_token') { if (!check_form_security_token($typename, $formname)) { logger('check_form_security_token failed: user ' . App::$observer['xchan_name'] . ' - form element ' . $typename); @@ -636,7 +636,7 @@ function init_groups_visitor($contact_id) { dbesc($contact_id) ); - if (! $x) { + if (!$x) { return $groups; } @@ -648,8 +648,8 @@ function init_groups_visitor($contact_id) { dbesc($x[0]['xchan_pubkey']) ); - if($xchans) { - $hashes = ids_to_querystr($xchans,'xchan_hash',true); + if ($xchans) { + $hashes = ids_to_querystr($xchans, 'xchan_hash', true); } // private profiles are treated as a virtual group @@ -672,21 +672,19 @@ function init_groups_visitor($contact_id) { } - - function get_security_ids($channel_id, $ob_hash) { - $ret = [ - 'channel_id' => [], - 'allow_cid' => [], - 'allow_gid' => [] + $ret = [ + 'channel_id' => [], + 'allow_cid' => [], + 'allow_gid' => [] ]; - if($channel_id) { + if ($channel_id) { $ch = q("select channel_hash, channel_portable_id from channel where channel_id = %d", - intval($channel_id) + intval($channel_id) ); - if($ch) { + if ($ch) { $ret['channel_id'][] = $ch[0]['channel_hash']; $ret['channel_id'][] = $ch[0]['channel_portable_id']; } @@ -709,13 +707,13 @@ function get_security_ids($channel_id, $ob_hash) { ); if ($xchans) { - $ret['allow_cid'] = ids_to_array($xchans,'xchan_hash'); - $hashes = ids_to_querystr($xchans,'xchan_hash',true); + $ret['allow_cid'] = ids_to_array($xchans, 'xchan_hash'); + $hashes = ids_to_querystr($xchans, 'xchan_hash', true); // private profiles are treated as a virtual group $r = q("SELECT abook_profile from abook where abook_xchan in ( " . protect_sprintf($hashes) . " ) and abook_profile != '' "); - if($r) { + if ($r) { foreach ($r as $rv) { $groups[] = 'vp.' . $rv['abook_profile']; } @@ -724,7 +722,7 @@ function get_security_ids($channel_id, $ob_hash) { // physical groups this identity is a member of $r = q("SELECT hash FROM pgrp left join pgrp_member on pgrp.id = pgrp_member.gid WHERE xchan in ( " . protect_sprintf($hashes) . " ) "); - if($r) { + if ($r) { foreach ($r as $rv) { $groups[] = $rv['hash']; } @@ -746,39 +744,39 @@ function get_security_ids($channel_id, $ob_hash) { // will likely be too expensive. // Returns a string list of comma separated channel_ids suitable for direct inclusion in a SQL query -function stream_perms_api_uids($perms = NULL, $limit = 0, $rand = 0 ) { - $perms = is_null($perms) ? (PERMS_SITE|PERMS_NETWORK|PERMS_PUBLIC) : $perms; +function stream_perms_api_uids($perms = NULL, $limit = 0, $rand = 0) { + $perms = is_null($perms) ? (PERMS_SITE | PERMS_NETWORK | PERMS_PUBLIC) : $perms; $ret = array(); $limit_sql = (($limit) ? " LIMIT " . intval($limit) . " " : ''); $random_sql = (($rand) ? " ORDER BY " . db_getfunc('RAND') . " " : ''); - if(local_channel()) + if (local_channel()) $ret[] = local_channel(); $x = q("select uid, v from pconfig where cat = 'perm_limits' and k = 'view_stream' "); - if($x) { + if ($x) { $y = []; - foreach($x as $xv) { - if(intval($xv['v']) & $perms) { + foreach ($x as $xv) { + if (intval($xv['v']) & $perms) { $y[] = $xv; } } - if($y) { - $ids = ids_to_querystr($y,'uid'); + if ($y) { + $ids = ids_to_querystr($y, 'uid'); $r = q("select channel_id from channel where channel_id in ( $ids ) and ( channel_pageflags & %d ) = 0 and channel_system = 0 and channel_removed = 0 $random_sql $limit_sql ", - intval(PAGE_ADULT|PAGE_CENSORED) + intval(PAGE_ADULT | PAGE_CENSORED) ); - if($r) { - foreach($r as $rr) - if(! in_array($rr['channel_id'], $ret)) + if ($r) { + foreach ($r as $rr) + if (!in_array($rr['channel_id'], $ret)) $ret[] = $rr['channel_id']; } } } $str = ''; - if($ret) { - foreach($ret as $rr) { - if($str) + if ($ret) { + foreach ($ret as $rr) { + if ($str) $str .= ','; $str .= intval($rr); } @@ -791,39 +789,39 @@ function stream_perms_api_uids($perms = NULL, $limit = 0, $rand = 0 ) { return $str; } -function stream_perms_xchans($perms = NULL ) { - $perms = is_null($perms) ? (PERMS_SITE|PERMS_NETWORK|PERMS_PUBLIC) : $perms; +function stream_perms_xchans($perms = NULL) { + $perms = is_null($perms) ? (PERMS_SITE | PERMS_NETWORK | PERMS_PUBLIC) : $perms; $ret = array(); - if(local_channel()) + if (local_channel()) $ret[] = get_observer_hash(); $x = q("select uid, v from pconfig where cat = 'perm_limits' and k = 'view_stream' "); - if($x) { + if ($x) { $y = []; - foreach($x as $xv) { - if(intval($xv['v']) & $perms) { + foreach ($x as $xv) { + if (intval($xv['v']) & $perms) { $y[] = $xv; } } - if($y) { - $ids = ids_to_querystr($y,'uid'); + if ($y) { + $ids = ids_to_querystr($y, 'uid'); $r = q("select channel_hash from channel where channel_id in ( $ids ) and ( channel_pageflags & %d ) = 0 and channel_system = 0 and channel_removed = 0 ", - intval(PAGE_ADULT|PAGE_CENSORED) + intval(PAGE_ADULT | PAGE_CENSORED) ); - if($r) { - foreach($r as $rr) - if(! in_array($rr['channel_hash'], $ret)) + if ($r) { + foreach ($r as $rr) + if (!in_array($rr['channel_hash'], $ret)) $ret[] = $rr['channel_hash']; } } } $str = ''; - if($ret) { - foreach($ret as $rr) { - if($str) + if ($ret) { + foreach ($ret as $rr) { + if ($str) $str .= ','; $str .= "'" . dbesc($rr) . "'"; } diff --git a/include/text.php b/include/text.php index 76df9e17b..d6b196f1e 100644 --- a/include/text.php +++ b/include/text.php @@ -1801,7 +1801,7 @@ function prepare_body(&$item,$attach = false,$opts = false) { $tags = format_hashtags($item); - if($item['resource_type']) + if($item['resource_type'] == 'photo') $mentions = format_mentions($item); $categories = format_categories($item,$writeable); diff --git a/library/ASNValue.class.php b/library/ASNValue.class.php index 7a3c5d20e..7c17d10b4 100644 --- a/library/ASNValue.class.php +++ b/library/ASNValue.class.php @@ -110,7 +110,7 @@ class ASNValue function SetIntBuffer($Value) { if (strlen($Value) > 1) { - $firstByte = ord($Value{0}); + $firstByte = ord($Value[0]); if ($firstByte & 0x80) { //first bit set $Value = chr(0x00) . $Value; } @@ -122,7 +122,7 @@ class ASNValue function GetIntBuffer() { $result = $this->Value; - if (ord($result{0}) == 0x00) { + if (ord($result[0]) == 0x00) { $result = substr($result, 1); } diff --git a/util/connect b/util/connect index 7ceda300f..44128d580 100755 --- a/util/connect +++ b/util/connect @@ -2,6 +2,7 @@ <?php use Zotlabs\Lib\Libsync; +use Zotlabs\Lib\Connect; // connect utility @@ -11,7 +12,6 @@ if(! file_exists('include/cli_startup.php')) { } require_once('include/cli_startup.php'); -require_once('include/follow.php'); cli_startup(); @@ -33,7 +33,7 @@ cli_startup(); exit(1); } - $result = new_contact($c['channel_id'],$argv[2],$c,false,false); + $result = Connect::connect($channel, $argv[2]); if($result['success'] == false) { echo $result['message']; diff --git a/util/hmessages.po b/util/hmessages.po index 5600f9fda..2679119a1 100644 --- a/util/hmessages.po +++ b/util/hmessages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 5.1.2\n" +"Project-Id-Version: 5.2RC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-10-25 07:30+0000\n" +"POT-Creation-Date: 2021-01-05 08:42+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -21,8 +21,8 @@ msgstr "" #: ../../addon/cart/submodules/orderoptions.php:335 #: ../../addon/cart/submodules/orderoptions.php:359 #: ../../addon/cart/submodules/orderoptions.php:435 -#: ../../addon/cart/submodules/orderoptions.php:459 ../../include/text.php:3379 -#: ../../Zotlabs/Module/Admin/Site.php:185 +#: ../../addon/cart/submodules/orderoptions.php:459 ../../include/text.php:3381 +#: ../../Zotlabs/Module/Admin/Site.php:191 msgid "Default" msgstr "" @@ -79,18 +79,18 @@ msgstr "" #: ../../Zotlabs/Widget/Wiki_pages.php:99 #: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Module/Tokens.php:188 #: ../../Zotlabs/Module/Import_items.php:129 -#: ../../Zotlabs/Module/Import.php:649 ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Import.php:645 ../../Zotlabs/Module/Setup.php:304 #: ../../Zotlabs/Module/Setup.php:344 ../../Zotlabs/Module/Group.php:151 #: ../../Zotlabs/Module/Group.php:167 ../../Zotlabs/Module/Oauth.php:111 #: ../../Zotlabs/Module/Chat.php:209 ../../Zotlabs/Module/Chat.php:248 #: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Mitem.php:259 -#: ../../Zotlabs/Module/Filestorage.php:203 +#: ../../Zotlabs/Module/Filestorage.php:208 #: ../../Zotlabs/Module/Connect.php:107 ../../Zotlabs/Module/Editpost.php:86 #: ../../Zotlabs/Module/Admin/Themes.php:158 #: ../../Zotlabs/Module/Admin/Features.php:66 #: ../../Zotlabs/Module/Admin/Security.php:120 #: ../../Zotlabs/Module/Admin/Accounts.php:168 -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:293 #: ../../Zotlabs/Module/Admin/Logs.php:84 #: ../../Zotlabs/Module/Admin/Channels.php:147 #: ../../Zotlabs/Module/Admin/Account_edit.php:73 @@ -99,8 +99,8 @@ msgstr "" #: ../../Zotlabs/Module/Events.php:501 ../../Zotlabs/Module/Permcats.php:129 #: ../../Zotlabs/Module/Mood.php:158 ../../Zotlabs/Module/Appman.php:155 #: ../../Zotlabs/Module/Email_validation.php:40 -#: ../../Zotlabs/Module/Photos.php:1057 ../../Zotlabs/Module/Photos.php:1097 -#: ../../Zotlabs/Module/Photos.php:1215 ../../Zotlabs/Module/Profiles.php:725 +#: ../../Zotlabs/Module/Photos.php:1058 ../../Zotlabs/Module/Photos.php:1098 +#: ../../Zotlabs/Module/Photos.php:1216 ../../Zotlabs/Module/Profiles.php:725 #: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Xchan.php:15 #: ../../Zotlabs/Module/Affinity.php:87 ../../Zotlabs/Module/Rate.php:166 #: ../../Zotlabs/Module/Settings/Network.php:62 @@ -111,7 +111,7 @@ msgstr "" #: ../../Zotlabs/Module/Settings/Manage.php:43 #: ../../Zotlabs/Module/Settings/Channel_home.php:91 #: ../../Zotlabs/Module/Settings/Calendar.php:42 -#: ../../Zotlabs/Module/Settings/Display.php:190 +#: ../../Zotlabs/Module/Settings/Display.php:188 #: ../../Zotlabs/Module/Settings/Directory.php:42 #: ../../Zotlabs/Module/Settings/Editor.php:42 #: ../../Zotlabs/Module/Settings/Connections.php:42 @@ -121,9 +121,10 @@ msgstr "" #: ../../Zotlabs/Module/Defperms.php:266 ../../Zotlabs/Module/Pconfig.php:116 #: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Thing.php:328 #: ../../Zotlabs/Module/Thing.php:381 ../../Zotlabs/Module/Pdledit.php:108 -#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Connedit.php:907 -#: ../../Zotlabs/Module/Locs.php:125 ../../Zotlabs/Module/Sources.php:125 +#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Connedit.php:896 +#: ../../Zotlabs/Module/Locs.php:132 ../../Zotlabs/Module/Sources.php:125 #: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Lib/ThreadItem.php:825 +#: ../../Zotlabs/Storage/Browser.php:375 msgid "Submit" msgstr "" @@ -175,26 +176,29 @@ msgstr "" #: ../../addon/libertree/Mod_Libertree.php:59 #: ../../addon/socialauth/Mod_SocialAuth.php:214 #: ../../addon/ljpost/Mod_Ljpost.php:63 ../../addon/ljpost/Mod_Ljpost.php:67 -#: ../../addon/ljpost/Mod_Ljpost.php:71 ../../include/conversation.php:1463 +#: ../../addon/ljpost/Mod_Ljpost.php:71 ../../include/conversation.php:1466 #: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../Zotlabs/Module/Import.php:638 -#: ../../Zotlabs/Module/Import.php:642 ../../Zotlabs/Module/Import.php:643 +#: ../../include/dir_fns.php:144 ../../Zotlabs/Module/Import.php:634 +#: ../../Zotlabs/Module/Import.php:638 ../../Zotlabs/Module/Import.php:639 #: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177 #: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257 -#: ../../Zotlabs/Module/Filestorage.php:198 -#: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Module/Admin/Site.php:253 ../../Zotlabs/Module/Events.php:478 +#: ../../Zotlabs/Module/Filestorage.php:203 +#: ../../Zotlabs/Module/Filestorage.php:211 +#: ../../Zotlabs/Module/Admin/Site.php:259 ../../Zotlabs/Module/Events.php:478 #: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Api.php:99 -#: ../../Zotlabs/Module/Photos.php:672 ../../Zotlabs/Module/Profiles.php:683 +#: ../../Zotlabs/Module/Photos.php:673 ../../Zotlabs/Module/Profiles.php:683 #: ../../Zotlabs/Module/Settings/Channel.php:311 -#: ../../Zotlabs/Module/Settings/Display.php:90 +#: ../../Zotlabs/Module/Settings/Display.php:88 #: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 #: ../../Zotlabs/Module/Defperms.php:198 ../../Zotlabs/Module/Wiki.php:227 -#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:414 -#: ../../Zotlabs/Module/Connedit.php:799 ../../Zotlabs/Module/Sources.php:124 -#: ../../Zotlabs/Module/Sources.php:159 ../../Zotlabs/Lib/Libzotdir.php:162 -#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165 -#: ../../Zotlabs/Storage/Browser.php:411 ../../boot.php:1703 +#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:403 +#: ../../Zotlabs/Module/Connedit.php:788 ../../Zotlabs/Module/Sources.php:124 +#: ../../Zotlabs/Module/Sources.php:159 ../../Zotlabs/Lib/Libzotdir.php:164 +#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../Zotlabs/Lib/Libzotdir.php:167 +#: ../../Zotlabs/Storage/Browser.php:303 ../../Zotlabs/Storage/Browser.php:304 +#: ../../Zotlabs/Storage/Browser.php:305 ../../Zotlabs/Storage/Browser.php:382 +#: ../../Zotlabs/Storage/Browser.php:384 ../../Zotlabs/Storage/Browser.php:545 +#: ../../boot.php:1704 msgid "No" msgstr "" @@ -238,26 +242,28 @@ msgstr "" #: ../../addon/libertree/Mod_Libertree.php:59 #: ../../addon/socialauth/Mod_SocialAuth.php:214 #: ../../addon/ljpost/Mod_Ljpost.php:63 ../../addon/ljpost/Mod_Ljpost.php:67 -#: ../../addon/ljpost/Mod_Ljpost.php:71 ../../include/conversation.php:1463 +#: ../../addon/ljpost/Mod_Ljpost.php:71 ../../include/conversation.php:1466 #: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../Zotlabs/Module/Import.php:638 -#: ../../Zotlabs/Module/Import.php:642 ../../Zotlabs/Module/Import.php:643 +#: ../../include/dir_fns.php:144 ../../Zotlabs/Module/Import.php:634 +#: ../../Zotlabs/Module/Import.php:638 ../../Zotlabs/Module/Import.php:639 #: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177 #: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257 -#: ../../Zotlabs/Module/Filestorage.php:198 -#: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Module/Admin/Site.php:255 ../../Zotlabs/Module/Events.php:478 +#: ../../Zotlabs/Module/Filestorage.php:203 +#: ../../Zotlabs/Module/Filestorage.php:211 +#: ../../Zotlabs/Module/Admin/Site.php:261 ../../Zotlabs/Module/Events.php:478 #: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Api.php:98 -#: ../../Zotlabs/Module/Photos.php:672 ../../Zotlabs/Module/Profiles.php:683 +#: ../../Zotlabs/Module/Photos.php:673 ../../Zotlabs/Module/Profiles.php:683 #: ../../Zotlabs/Module/Settings/Channel.php:311 -#: ../../Zotlabs/Module/Settings/Display.php:90 +#: ../../Zotlabs/Module/Settings/Display.php:88 #: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 #: ../../Zotlabs/Module/Defperms.php:198 ../../Zotlabs/Module/Wiki.php:227 -#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:414 +#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:403 #: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 -#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../Zotlabs/Lib/Libzotdir.php:163 -#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../Zotlabs/Storage/Browser.php:411 -#: ../../boot.php:1703 +#: ../../Zotlabs/Lib/Libzotdir.php:164 ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../Zotlabs/Lib/Libzotdir.php:167 ../../Zotlabs/Storage/Browser.php:303 +#: ../../Zotlabs/Storage/Browser.php:304 ../../Zotlabs/Storage/Browser.php:305 +#: ../../Zotlabs/Storage/Browser.php:382 ../../Zotlabs/Storage/Browser.php:384 +#: ../../Zotlabs/Storage/Browser.php:545 ../../boot.php:1704 msgid "Yes" msgstr "" @@ -412,8 +418,9 @@ msgid "Channel Reputation" msgstr "" #: ../../addon/channelreputation/channelreputation.php:233 -#: ../../include/acl_selectors.php:146 ../../Zotlabs/Widget/Pinned.php:160 -#: ../../Zotlabs/Module/Photos.php:1274 ../../Zotlabs/Lib/ThreadItem.php:495 +#: ../../include/acl_selectors.php:155 ../../Zotlabs/Widget/Pinned.php:160 +#: ../../Zotlabs/Module/Photos.php:1275 ../../Zotlabs/Lib/ThreadItem.php:495 +#: ../../Zotlabs/Storage/Browser.php:404 msgid "Close" msgstr "" @@ -467,7 +474,7 @@ msgstr "" #: ../../addon/xmpp/Mod_Xmpp.php:35 ../../Zotlabs/Module/Tokens.php:99 #: ../../Zotlabs/Module/Group.php:107 ../../Zotlabs/Module/Oauth.php:100 #: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Poke.php:165 -#: ../../Zotlabs/Module/Cdav.php:872 ../../Zotlabs/Module/Webpages.php:48 +#: ../../Zotlabs/Module/Cdav.php:876 ../../Zotlabs/Module/Webpages.php:48 #: ../../Zotlabs/Module/Pubstream.php:20 ../../Zotlabs/Module/Permcats.php:63 #: ../../Zotlabs/Module/Lang.php:17 ../../Zotlabs/Module/Uexport.php:61 #: ../../Zotlabs/Module/Mood.php:134 ../../Zotlabs/Module/Cards.php:51 @@ -500,7 +507,7 @@ msgstr "" #: ../../addon/superblock/Mod_Superblock.php:91 #: ../../Zotlabs/Module/Tagrm.php:137 ../../Zotlabs/Module/Admin/Addons.php:459 #: ../../Zotlabs/Module/Profile_photo.php:501 -#: ../../Zotlabs/Module/Cover_photo.php:424 ../../Zotlabs/Module/Photos.php:995 +#: ../../Zotlabs/Module/Cover_photo.php:424 ../../Zotlabs/Module/Photos.php:996 msgid "Remove" msgstr "" @@ -563,13 +570,13 @@ msgid "Page to load after image selection." msgstr "" #: ../../addon/openclipatar/openclipatar.php:57 ../../include/nav.php:112 -#: ../../include/conversation.php:1077 ../../Zotlabs/Module/Connedit.php:611 +#: ../../include/conversation.php:1080 ../../Zotlabs/Module/Connedit.php:600 #: ../../Zotlabs/Lib/Apps.php:344 msgid "View Profile" msgstr "" #: ../../addon/openclipatar/openclipatar.php:58 ../../include/nav.php:117 -#: ../../include/channel.php:1528 +#: ../../include/channel.php:1542 msgid "Edit Profile" msgstr "" @@ -679,7 +686,7 @@ msgstr "" #: ../../addon/queueworker/Mod_Queueworker.php:119 ../../include/text.php:1151 #: ../../include/text.php:1163 ../../Zotlabs/Widget/Notes.php:23 #: ../../Zotlabs/Module/Admin/Profs.php:94 -#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Filer.php:53 +#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Filer.php:54 #: ../../Zotlabs/Module/Rbmark.php:32 ../../Zotlabs/Module/Rbmark.php:104 msgid "Save" msgstr "" @@ -731,10 +738,10 @@ msgstr "" msgid "Photo Gallery" msgstr "" -#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1425 +#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1439 #: ../../Zotlabs/Module/Hcard.php:12 ../../Zotlabs/Module/Editwebpage.php:32 #: ../../Zotlabs/Module/Profile.php:20 ../../Zotlabs/Module/Webpages.php:39 -#: ../../Zotlabs/Module/Filestorage.php:53 ../../Zotlabs/Module/Connect.php:17 +#: ../../Zotlabs/Module/Filestorage.php:59 ../../Zotlabs/Module/Connect.php:17 #: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Cards.php:42 #: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Editblock.php:31 #: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Articles.php:43 @@ -762,18 +769,21 @@ msgstr "" #: ../../addon/openid/Mod_Id.php:53 ../../addon/mail/Mod_Mail.php:25 #: ../../addon/pumpio/pumpio.php:44 ../../addon/keepout/keepout.php:36 -#: ../../include/photos.php:27 ../../include/items.php:3966 +#: ../../include/photos.php:27 ../../include/items.php:3979 #: ../../include/attach.php:156 ../../include/attach.php:205 -#: ../../include/attach.php:278 ../../include/attach.php:386 -#: ../../include/attach.php:400 ../../include/attach.php:407 -#: ../../include/attach.php:489 ../../include/attach.php:1055 -#: ../../include/attach.php:1129 ../../include/attach.php:1292 -#: ../../Zotlabs/Module/Article_edit.php:51 ../../Zotlabs/Module/Network.php:19 +#: ../../include/attach.php:278 ../../include/attach.php:329 +#: ../../include/attach.php:424 ../../include/attach.php:438 +#: ../../include/attach.php:445 ../../include/attach.php:527 +#: ../../include/attach.php:1091 ../../include/attach.php:1164 +#: ../../include/attach.php:1327 ../../Zotlabs/Module/Article_edit.php:51 +#: ../../Zotlabs/Module/Attach_edit.php:90 +#: ../../Zotlabs/Module/Attach_edit.php:99 +#: ../../Zotlabs/Module/Attach_edit.php:106 ../../Zotlabs/Module/Network.php:19 #: ../../Zotlabs/Module/Register.php:80 ../../Zotlabs/Module/Setup.php:206 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 -#: ../../Zotlabs/Module/Channel.php:181 ../../Zotlabs/Module/Channel.php:348 -#: ../../Zotlabs/Module/Channel.php:387 ../../Zotlabs/Module/Group.php:15 +#: ../../Zotlabs/Module/Channel.php:177 ../../Zotlabs/Module/Channel.php:332 +#: ../../Zotlabs/Module/Channel.php:371 ../../Zotlabs/Module/Group.php:15 #: ../../Zotlabs/Module/Group.php:31 ../../Zotlabs/Module/Card_edit.php:51 #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 @@ -781,23 +791,23 @@ msgstr "" #: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Chat.php:113 #: ../../Zotlabs/Module/Chat.php:118 #: ../../Zotlabs/Module/Channel_calendar.php:230 -#: ../../Zotlabs/Module/Like.php:193 ../../Zotlabs/Module/Poke.php:157 -#: ../../Zotlabs/Module/Item.php:483 ../../Zotlabs/Module/Item.php:502 -#: ../../Zotlabs/Module/Item.php:512 ../../Zotlabs/Module/Item.php:1428 +#: ../../Zotlabs/Module/Like.php:230 ../../Zotlabs/Module/Poke.php:157 +#: ../../Zotlabs/Module/Item.php:485 ../../Zotlabs/Module/Item.php:504 +#: ../../Zotlabs/Module/Item.php:514 ../../Zotlabs/Module/Item.php:1442 #: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Profile.php:85 #: ../../Zotlabs/Module/Profile.php:101 #: ../../Zotlabs/Module/Sharedwithme.php:19 #: ../../Zotlabs/Module/Webpages.php:133 -#: ../../Zotlabs/Module/Filestorage.php:17 -#: ../../Zotlabs/Module/Filestorage.php:72 -#: ../../Zotlabs/Module/Filestorage.php:90 -#: ../../Zotlabs/Module/Filestorage.php:113 -#: ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:20 +#: ../../Zotlabs/Module/Filestorage.php:78 +#: ../../Zotlabs/Module/Filestorage.php:96 +#: ../../Zotlabs/Module/Filestorage.php:119 +#: ../../Zotlabs/Module/Filestorage.php:165 #: ../../Zotlabs/Module/Editpost.php:17 #: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Events.php:277 #: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Authtest.php:16 #: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Moderate.php:15 -#: ../../Zotlabs/Module/Display.php:442 ../../Zotlabs/Module/Common.php:38 +#: ../../Zotlabs/Module/Display.php:425 ../../Zotlabs/Module/Common.php:38 #: ../../Zotlabs/Module/New_channel.php:105 #: ../../Zotlabs/Module/New_channel.php:130 #: ../../Zotlabs/Module/Service_limits.php:11 ../../Zotlabs/Module/Mood.php:126 @@ -824,22 +834,22 @@ msgstr "" #: ../../Zotlabs/Module/Thing.php:343 ../../Zotlabs/Module/Pdledit.php:35 #: ../../Zotlabs/Module/Wiki.php:59 ../../Zotlabs/Module/Wiki.php:285 #: ../../Zotlabs/Module/Wiki.php:428 ../../Zotlabs/Module/Suggest.php:32 -#: ../../Zotlabs/Module/Connedit.php:407 +#: ../../Zotlabs/Module/Connedit.php:396 #: ../../Zotlabs/Module/Notifications.php:11 #: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 -#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Locs.php:91 +#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Locs.php:100 #: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Lib/Chatroom.php:135 #: ../../Zotlabs/Web/WebServer.php:116 msgid "Permission denied." msgstr "" #: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1708 +#: ../../include/selectors.php:77 ../../include/channel.php:1722 msgid "Male" msgstr "" #: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1706 +#: ../../include/selectors.php:77 ../../include/channel.php:1720 msgid "Female" msgstr "" @@ -885,11 +895,11 @@ msgstr "" #: ../../addon/openid/MysqlProvider.php:56 #: ../../addon/openid/MysqlProvider.php:57 ../../addon/redred/Mod_Redred.php:71 -#: ../../addon/rtof/Mod_Rtof.php:57 ../../include/network.php:1736 -#: ../../Zotlabs/Module/Cdav.php:1372 +#: ../../addon/rtof/Mod_Rtof.php:57 ../../include/network.php:1737 +#: ../../Zotlabs/Module/Cdav.php:1376 #: ../../Zotlabs/Module/Admin/Accounts.php:171 #: ../../Zotlabs/Module/Admin/Accounts.php:183 -#: ../../Zotlabs/Module/Profiles.php:789 ../../Zotlabs/Module/Connedit.php:930 +#: ../../Zotlabs/Module/Profiles.php:789 ../../Zotlabs/Module/Connedit.php:919 msgid "Email" msgstr "" @@ -1108,7 +1118,7 @@ msgstr "" msgid "Channel is required." msgstr "" -#: ../../addon/redred/Mod_Redred.php:29 ../../Zotlabs/Module/Network.php:329 +#: ../../addon/redred/Mod_Redred.php:29 ../../Zotlabs/Module/Network.php:322 msgid "Invalid channel." msgstr "" @@ -1165,7 +1175,7 @@ msgstr "" #: ../../addon/redfiles/redfiles.php:109 ../../addon/hzfiles/hzfiles.php:75 #: ../../include/items.php:439 ../../Zotlabs/Module/Import_items.php:120 #: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Group.php:99 -#: ../../Zotlabs/Module/Like.php:295 ../../Zotlabs/Module/Cloud.php:119 +#: ../../Zotlabs/Module/Like.php:332 ../../Zotlabs/Module/Cloud.php:123 #: ../../Zotlabs/Module/Share.php:72 ../../Zotlabs/Module/Subthread.php:86 #: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:82 #: ../../Zotlabs/Web/WebServer.php:115 @@ -1211,11 +1221,11 @@ msgstr "" msgid "0 or blank to import all available" msgstr "" -#: ../../addon/redphotos/redphotohelper.php:71 ../../addon/pubcrawl/as.php:1841 +#: ../../addon/redphotos/redphotohelper.php:71 ../../addon/pubcrawl/as.php:2057 #: ../../addon/diaspora/Receiver.php:1597 ../../include/text.php:2252 -#: ../../include/conversation.php:128 ../../Zotlabs/Module/Like.php:386 +#: ../../include/conversation.php:128 ../../Zotlabs/Module/Like.php:433 #: ../../Zotlabs/Module/Tagger.php:71 ../../Zotlabs/Module/Subthread.php:112 -#: ../../Zotlabs/Lib/Activity.php:2953 +#: ../../Zotlabs/Lib/Activity.php:2971 msgid "photo" msgstr "" @@ -1347,7 +1357,7 @@ msgid "Post to GNU social" msgstr "" #: ../../addon/statusnet/statusnet.php:593 -#: ../../Zotlabs/Module/Admin/Site.php:295 +#: ../../Zotlabs/Module/Admin/Site.php:301 msgid "Site name" msgstr "" @@ -1535,16 +1545,16 @@ msgstr "" msgid "Until modified date yyyy-mm-dd" msgstr "" -#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1325 +#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1328 msgid "Set your location" msgstr "" -#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1326 +#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1329 msgid "Clear browser location" msgstr "" #: ../../addon/hsse/hsse.php:95 ../../addon/mail/Mod_Mail.php:166 -#: ../../addon/mail/Mod_Mail.php:309 ../../include/conversation.php:1338 +#: ../../addon/mail/Mod_Mail.php:309 ../../include/conversation.php:1341 #: ../../Zotlabs/Module/Article_edit.php:100 #: ../../Zotlabs/Module/Card_edit.php:101 #: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:220 @@ -1552,193 +1562,194 @@ msgstr "" msgid "Insert web link" msgstr "" -#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1342 +#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1345 msgid "Embed (existing) photo from your photo albums" msgstr "" #: ../../addon/hsse/hsse.php:134 ../../addon/mail/Mod_Mail.php:119 -#: ../../addon/mail/Mod_Mail.php:240 ../../include/conversation.php:1377 +#: ../../addon/mail/Mod_Mail.php:240 ../../include/conversation.php:1380 #: ../../Zotlabs/Module/Chat.php:218 msgid "Please enter a link URL:" msgstr "" -#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1378 +#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1381 msgid "Tag term:" msgstr "" -#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1379 +#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1382 msgid "Where are you right now?" msgstr "" -#: ../../addon/hsse/hsse.php:139 ../../include/conversation.php:1382 +#: ../../addon/hsse/hsse.php:139 ../../include/conversation.php:1385 #: ../../Zotlabs/Module/Profile_photo.php:509 #: ../../Zotlabs/Module/Cover_photo.php:430 ../../Zotlabs/Module/Wiki.php:403 msgid "Choose images to embed" msgstr "" -#: ../../addon/hsse/hsse.php:140 ../../include/conversation.php:1383 +#: ../../addon/hsse/hsse.php:140 ../../include/conversation.php:1386 #: ../../Zotlabs/Module/Profile_photo.php:510 #: ../../Zotlabs/Module/Cover_photo.php:431 ../../Zotlabs/Module/Wiki.php:404 msgid "Choose an album" msgstr "" -#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1384 +#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1387 msgid "Choose a different album..." msgstr "" -#: ../../addon/hsse/hsse.php:142 ../../include/conversation.php:1385 +#: ../../addon/hsse/hsse.php:142 ../../include/conversation.php:1388 #: ../../Zotlabs/Module/Profile_photo.php:512 #: ../../Zotlabs/Module/Cover_photo.php:433 ../../Zotlabs/Module/Wiki.php:406 msgid "Error getting album list" msgstr "" -#: ../../addon/hsse/hsse.php:143 ../../include/conversation.php:1386 +#: ../../addon/hsse/hsse.php:143 ../../include/conversation.php:1389 #: ../../Zotlabs/Module/Profile_photo.php:513 #: ../../Zotlabs/Module/Cover_photo.php:434 ../../Zotlabs/Module/Wiki.php:407 msgid "Error getting photo link" msgstr "" -#: ../../addon/hsse/hsse.php:144 ../../include/conversation.php:1387 +#: ../../addon/hsse/hsse.php:144 ../../include/conversation.php:1390 #: ../../Zotlabs/Module/Profile_photo.php:514 #: ../../Zotlabs/Module/Cover_photo.php:435 ../../Zotlabs/Module/Wiki.php:408 msgid "Error getting album" msgstr "" -#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1388 +#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1391 msgid "Comments enabled" msgstr "" -#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1389 +#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1392 msgid "Comments disabled" msgstr "" -#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1399 +#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1402 #: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Module/Events.php:486 -#: ../../Zotlabs/Module/Photos.php:1098 ../../Zotlabs/Lib/ThreadItem.php:835 +#: ../../Zotlabs/Module/Photos.php:1099 ../../Zotlabs/Lib/ThreadItem.php:835 msgid "Preview" msgstr "" -#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1432 +#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1435 #: ../../Zotlabs/Widget/Cdav.php:136 ../../Zotlabs/Module/Webpages.php:256 -#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1077 +#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1078 #: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194 msgid "Share" msgstr "" -#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1441 +#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1444 msgid "Page link name" msgstr "" -#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1444 +#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1447 msgid "Post as" msgstr "" -#: ../../addon/hsse/hsse.php:200 ../../include/conversation.php:1446 +#: ../../addon/hsse/hsse.php:200 ../../include/conversation.php:1449 #: ../../Zotlabs/Lib/ThreadItem.php:826 msgid "Bold" msgstr "" -#: ../../addon/hsse/hsse.php:201 ../../include/conversation.php:1447 +#: ../../addon/hsse/hsse.php:201 ../../include/conversation.php:1450 #: ../../Zotlabs/Lib/ThreadItem.php:827 msgid "Italic" msgstr "" -#: ../../addon/hsse/hsse.php:202 ../../include/conversation.php:1448 +#: ../../addon/hsse/hsse.php:202 ../../include/conversation.php:1451 #: ../../Zotlabs/Lib/ThreadItem.php:828 msgid "Underline" msgstr "" -#: ../../addon/hsse/hsse.php:203 ../../include/conversation.php:1449 +#: ../../addon/hsse/hsse.php:203 ../../include/conversation.php:1452 #: ../../Zotlabs/Lib/ThreadItem.php:829 msgid "Quote" msgstr "" -#: ../../addon/hsse/hsse.php:204 ../../include/conversation.php:1450 +#: ../../addon/hsse/hsse.php:204 ../../include/conversation.php:1453 #: ../../Zotlabs/Lib/ThreadItem.php:830 msgid "Code" msgstr "" -#: ../../addon/hsse/hsse.php:205 ../../include/conversation.php:1451 +#: ../../addon/hsse/hsse.php:205 ../../include/conversation.php:1454 #: ../../Zotlabs/Lib/ThreadItem.php:832 msgid "Attach/Upload file" msgstr "" -#: ../../addon/hsse/hsse.php:208 ../../include/conversation.php:1454 +#: ../../addon/hsse/hsse.php:208 ../../include/conversation.php:1457 #: ../../Zotlabs/Module/Wiki.php:400 msgid "Embed an image from your albums" msgstr "" #: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 -#: ../../include/conversation.php:1455 ../../include/conversation.php:1508 +#: ../../include/conversation.php:1458 ../../include/conversation.php:1511 #: ../../Zotlabs/Module/Article_edit.php:130 #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 #: ../../Zotlabs/Module/Card_edit.php:131 ../../Zotlabs/Module/Oauth.php:112 #: ../../Zotlabs/Module/Oauth.php:138 ../../Zotlabs/Module/Editwebpage.php:169 -#: ../../Zotlabs/Module/Cdav.php:1054 ../../Zotlabs/Module/Cdav.php:1386 +#: ../../Zotlabs/Module/Cdav.php:1058 ../../Zotlabs/Module/Cdav.php:1390 #: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 #: ../../Zotlabs/Module/Editpost.php:110 #: ../../Zotlabs/Module/Admin/Addons.php:427 #: ../../Zotlabs/Module/Profile_photo.php:507 -#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Filer.php:55 +#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Filer.php:56 #: ../../Zotlabs/Module/Editlayout.php:140 #: ../../Zotlabs/Module/Cover_photo.php:428 #: ../../Zotlabs/Module/Profiles.php:803 ../../Zotlabs/Module/Oauth2.php:117 #: ../../Zotlabs/Module/Oauth2.php:145 ../../Zotlabs/Module/Wiki.php:368 -#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Connedit.php:944 +#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Connedit.php:933 +#: ../../Zotlabs/Storage/Browser.php:376 msgid "Cancel" msgstr "" #: ../../addon/hsse/hsse.php:210 ../../addon/hsse/hsse.php:257 -#: ../../include/conversation.php:1456 ../../include/conversation.php:1507 +#: ../../include/conversation.php:1459 ../../include/conversation.php:1510 #: ../../Zotlabs/Module/Profile_photo.php:508 #: ../../Zotlabs/Module/Cover_photo.php:429 ../../Zotlabs/Module/Wiki.php:402 msgid "OK" msgstr "" -#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1458 +#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1461 msgid "Toggle voting" msgstr "" -#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1465 +#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1468 msgid "Disable comments" msgstr "" -#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1466 +#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1469 msgid "Toggle comments" msgstr "" -#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1471 +#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1474 #: ../../Zotlabs/Module/Article_edit.php:116 #: ../../Zotlabs/Module/Card_edit.php:117 -#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:673 -#: ../../Zotlabs/Module/Photos.php:1043 +#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:674 +#: ../../Zotlabs/Module/Photos.php:1044 msgid "Title (optional)" msgstr "" -#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1474 +#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1477 msgid "Categories (optional, comma-separated list)" msgstr "" -#: ../../addon/hsse/hsse.php:225 ../../include/conversation.php:1475 +#: ../../addon/hsse/hsse.php:225 ../../include/conversation.php:1478 #: ../../Zotlabs/Module/Events.php:487 msgid "Permission settings" msgstr "" -#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1497 +#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1500 msgid "Other networks and post services" msgstr "" #: ../../addon/hsse/hsse.php:250 ../../addon/mail/Mod_Mail.php:170 -#: ../../addon/mail/Mod_Mail.php:313 ../../include/conversation.php:1500 +#: ../../addon/mail/Mod_Mail.php:313 ../../include/conversation.php:1503 msgid "Set expiration date" msgstr "" -#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1503 +#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1506 msgid "Set publish date" msgstr "" #: ../../addon/hsse/hsse.php:255 ../../addon/mail/Mod_Mail.php:172 -#: ../../addon/mail/Mod_Mail.php:315 ../../include/conversation.php:1505 +#: ../../addon/mail/Mod_Mail.php:315 ../../include/conversation.php:1508 #: ../../Zotlabs/Module/Chat.php:219 ../../Zotlabs/Lib/ThreadItem.php:839 msgid "Encrypt text" msgstr "" @@ -1853,37 +1864,36 @@ msgstr "" msgid "Enter some text" msgstr "" -#: ../../addon/pubcrawl/as.php:1135 ../../include/cdav.php:158 +#: ../../addon/pubcrawl/as.php:1187 ../../include/cdav.php:158 #: ../../include/cdav.php:159 ../../include/cdav.php:167 -#: ../../include/conversation.php:1208 ../../Zotlabs/Widget/Album.php:84 +#: ../../include/conversation.php:1211 ../../Zotlabs/Widget/Album.php:84 #: ../../Zotlabs/Widget/Pinned.php:270 ../../Zotlabs/Widget/Portfolio.php:95 -#: ../../Zotlabs/Module/Embedphotos.php:176 ../../Zotlabs/Module/Photos.php:792 -#: ../../Zotlabs/Module/Photos.php:1254 ../../Zotlabs/Lib/Activity.php:1492 +#: ../../Zotlabs/Module/Embedphotos.php:176 ../../Zotlabs/Module/Photos.php:793 +#: ../../Zotlabs/Module/Photos.php:1255 ../../Zotlabs/Lib/Activity.php:1508 #: ../../Zotlabs/Lib/Apps.php:1112 ../../Zotlabs/Lib/Apps.php:1196 -#: ../../Zotlabs/Storage/Browser.php:164 msgid "Unknown" msgstr "" -#: ../../addon/pubcrawl/as.php:1429 ../../addon/pubcrawl/as.php:1679 -#: ../../addon/pubcrawl/as.php:1887 ../../include/network.php:1735 -#: ../../Zotlabs/Lib/Activity.php:2803 ../../Zotlabs/Lib/Activity.php:2997 +#: ../../addon/pubcrawl/as.php:1483 ../../addon/pubcrawl/as.php:1895 +#: ../../addon/pubcrawl/as.php:2103 ../../include/network.php:1736 +#: ../../Zotlabs/Lib/Activity.php:2821 ../../Zotlabs/Lib/Activity.php:3015 msgid "ActivityPub" msgstr "" -#: ../../addon/pubcrawl/as.php:1841 ../../addon/diaspora/Receiver.php:1597 -#: ../../Zotlabs/Module/Like.php:386 ../../Zotlabs/Module/Subthread.php:112 +#: ../../addon/pubcrawl/as.php:2057 ../../addon/diaspora/Receiver.php:1597 +#: ../../Zotlabs/Module/Like.php:433 ../../Zotlabs/Module/Subthread.php:112 msgid "status" msgstr "" -#: ../../addon/pubcrawl/as.php:1878 ../../addon/diaspora/Receiver.php:1537 -#: ../../include/conversation.php:174 ../../Zotlabs/Module/Like.php:422 -#: ../../Zotlabs/Lib/Activity.php:2988 +#: ../../addon/pubcrawl/as.php:2094 ../../addon/diaspora/Receiver.php:1537 +#: ../../include/conversation.php:174 ../../Zotlabs/Module/Like.php:469 +#: ../../Zotlabs/Lib/Activity.php:3006 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../addon/pubcrawl/as.php:1880 ../../include/conversation.php:177 -#: ../../Zotlabs/Module/Like.php:424 ../../Zotlabs/Lib/Activity.php:2990 +#: ../../addon/pubcrawl/as.php:2096 ../../include/conversation.php:177 +#: ../../Zotlabs/Module/Like.php:471 ../../Zotlabs/Lib/Activity.php:3008 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "" @@ -2175,19 +2185,19 @@ msgstr "" #: ../../Zotlabs/Widget/Wiki_page_history.php:22 #: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Oauth.php:113 #: ../../Zotlabs/Module/Oauth.php:139 ../../Zotlabs/Module/Chat.php:257 -#: ../../Zotlabs/Module/Cdav.php:1368 ../../Zotlabs/Module/Sharedwithme.php:106 +#: ../../Zotlabs/Module/Cdav.php:1372 ../../Zotlabs/Module/Sharedwithme.php:106 #: ../../Zotlabs/Module/Admin/Channels.php:159 #: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 -#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:926 +#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:915 #: ../../Zotlabs/Lib/NativeWikiPage.php:564 -#: ../../Zotlabs/Storage/Browser.php:291 +#: ../../Zotlabs/Storage/Browser.php:370 msgid "Name" msgstr "" #: ../../addon/rendezvous/rendezvous.php:173 #: ../../addon/cart/submodules/hzservices.php:655 #: ../../addon/cart/submodules/manualcat.php:260 -#: ../../Zotlabs/Module/Cdav.php:1010 ../../Zotlabs/Module/Events.php:481 +#: ../../Zotlabs/Module/Cdav.php:1014 ../../Zotlabs/Module/Events.php:481 #: ../../Zotlabs/Module/Appman.php:145 ../../Zotlabs/Module/Rbmark.php:101 msgid "Description" msgstr "" @@ -2997,7 +3007,7 @@ msgstr "" msgid "Smileybutton Settings" msgstr "" -#: ../../addon/redfiles/redfilehelper.php:64 ../../include/attach.php:2035 +#: ../../addon/redfiles/redfilehelper.php:64 ../../include/attach.php:2099 msgid "file" msgstr "" @@ -3040,7 +3050,7 @@ msgid "Unable to create a unique channel address. Import failed." msgstr "" #: ../../addon/diaspora/import_diaspora.php:142 -#: ../../Zotlabs/Module/Import.php:597 +#: ../../Zotlabs/Module/Import.php:593 msgid "Import completed." msgstr "" @@ -3084,17 +3094,17 @@ msgstr "" msgid "%1$s dislikes %2$s's %3$s" msgstr "" -#: ../../addon/diaspora/Receiver.php:2184 ../../Zotlabs/Module/Like.php:432 +#: ../../addon/diaspora/Receiver.php:2184 ../../Zotlabs/Module/Like.php:479 #, php-format msgid "%1$s is attending %2$s's %3$s" msgstr "" -#: ../../addon/diaspora/Receiver.php:2186 ../../Zotlabs/Module/Like.php:434 +#: ../../addon/diaspora/Receiver.php:2186 ../../Zotlabs/Module/Like.php:481 #, php-format msgid "%1$s is not attending %2$s's %3$s" msgstr "" -#: ../../addon/diaspora/Receiver.php:2188 ../../Zotlabs/Module/Like.php:436 +#: ../../addon/diaspora/Receiver.php:2188 ../../Zotlabs/Module/Like.php:483 #, php-format msgid "%1$s may attend %2$s's %3$s" msgstr "" @@ -3151,7 +3161,7 @@ msgstr "" msgid "This channel" msgstr "" -#: ../../addon/workflow/workflow.php:285 ../../Zotlabs/Module/Locs.php:123 +#: ../../addon/workflow/workflow.php:285 ../../Zotlabs/Module/Locs.php:130 msgid "Primary" msgstr "" @@ -3182,8 +3192,8 @@ msgid "Web link." msgstr "" #: ../../addon/workflow/workflow.php:2617 -#: ../../addon/workflow/workflow.php:2678 ../../Zotlabs/Module/Cdav.php:1370 -#: ../../Zotlabs/Module/Connedit.php:928 +#: ../../addon/workflow/workflow.php:2678 ../../Zotlabs/Module/Cdav.php:1374 +#: ../../Zotlabs/Module/Connedit.php:917 msgid "Title" msgstr "" @@ -3402,25 +3412,25 @@ msgid "Not allowed." msgstr "" #: ../../addon/flashcards/Mod_Flashcards.php:254 -#: ../../include/acl_selectors.php:144 ../../Zotlabs/Module/Chat.php:241 -#: ../../Zotlabs/Module/Filestorage.php:190 ../../Zotlabs/Module/Photos.php:677 -#: ../../Zotlabs/Module/Photos.php:1046 ../../Zotlabs/Module/Thing.php:321 -#: ../../Zotlabs/Module/Thing.php:374 ../../Zotlabs/Module/Connedit.php:693 +#: ../../include/acl_selectors.php:153 ../../Zotlabs/Module/Chat.php:241 +#: ../../Zotlabs/Module/Filestorage.php:195 ../../Zotlabs/Module/Photos.php:678 +#: ../../Zotlabs/Module/Photos.php:1047 ../../Zotlabs/Module/Thing.php:321 +#: ../../Zotlabs/Module/Thing.php:374 ../../Zotlabs/Module/Connedit.php:682 msgid "Permissions" msgstr "" #: ../../addon/flashcards/Mod_Flashcards.php:261 -#: ../../Zotlabs/Module/Filestorage.php:197 +#: ../../Zotlabs/Module/Filestorage.php:202 msgid "Set/edit permissions" msgstr "" #: ../../addon/flashcards/Mod_Flashcards.php:284 -#: ../../addon/flashcards/Mod_Flashcards.php:285 ../../include/items.php:3889 -#: ../../Zotlabs/Module/Filestorage.php:26 +#: ../../addon/flashcards/Mod_Flashcards.php:285 ../../include/items.php:3902 +#: ../../Zotlabs/Module/Filestorage.php:29 #: ../../Zotlabs/Module/Admin/Themes.php:72 #: ../../Zotlabs/Module/Admin/Addons.php:260 -#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45 -#: ../../Zotlabs/Module/Display.php:446 ../../Zotlabs/Module/Admin.php:62 +#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:42 +#: ../../Zotlabs/Module/Display.php:429 ../../Zotlabs/Module/Admin.php:62 #: ../../Zotlabs/Module/Thing.php:96 msgid "Item not found." msgstr "" @@ -4090,10 +4100,10 @@ msgid "Network: %s" msgstr "" #: ../../include/text.php:1150 ../../include/text.php:1162 -#: ../../include/nav.php:188 ../../include/acl_selectors.php:139 +#: ../../include/nav.php:188 ../../include/acl_selectors.php:148 #: ../../Zotlabs/Widget/Sitesearch.php:31 #: ../../Zotlabs/Widget/Activity_filter.php:193 -#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:378 +#: ../../Zotlabs/Module/Search.php:41 ../../Zotlabs/Module/Connections.php:378 #: ../../Zotlabs/Lib/Apps.php:353 msgid "Search" msgstr "" @@ -4312,11 +4322,11 @@ msgid "Unknown Attachment" msgstr "" #: ../../include/text.php:1562 ../../Zotlabs/Module/Sharedwithme.php:108 -#: ../../Zotlabs/Storage/Browser.php:293 +#: ../../Zotlabs/Storage/Browser.php:372 msgid "Size" msgstr "" -#: ../../include/text.php:1562 ../../include/feedutils.php:871 +#: ../../include/text.php:1562 ../../include/feedutils.php:873 msgid "unknown" msgstr "" @@ -4391,14 +4401,14 @@ msgstr "" #: ../../include/text.php:2255 ../../include/event.php:1259 #: ../../include/conversation.php:132 #: ../../Zotlabs/Module/Channel_calendar.php:219 -#: ../../Zotlabs/Module/Like.php:388 ../../Zotlabs/Module/Tagger.php:75 +#: ../../Zotlabs/Module/Like.php:435 ../../Zotlabs/Module/Tagger.php:75 #: ../../Zotlabs/Module/Events.php:266 msgid "event" msgstr "" #: ../../include/text.php:2258 ../../include/conversation.php:158 #: ../../include/bbcode.php:523 ../../include/markdown.php:204 -#: ../../Zotlabs/Module/Tagger.php:79 ../../Zotlabs/Lib/Activity.php:2953 +#: ../../Zotlabs/Module/Tagger.php:79 ../../Zotlabs/Lib/Activity.php:2971 msgid "post" msgstr "" @@ -4503,10 +4513,6 @@ msgstr "" msgid "Specify folder" msgstr "" -#: ../../include/text.php:3101 ../../Zotlabs/Storage/Browser.php:131 -msgid "Collection" -msgstr "" - #: ../../include/opengraph.php:56 #, php-format msgid "This is the home page of %s." @@ -4525,7 +4531,7 @@ msgid "Finishes:" msgstr "" #: ../../include/event.php:63 ../../include/event.php:134 -#: ../../include/channel.php:1619 ../../Zotlabs/Module/Directory.php:352 +#: ../../include/channel.php:1633 ../../Zotlabs/Module/Directory.php:352 msgid "Location:" msgstr "" @@ -4565,46 +4571,46 @@ msgstr "" msgid "Cancelled" msgstr "" -#: ../../include/event.php:1422 ../../include/connections.php:733 -#: ../../Zotlabs/Module/Cdav.php:1377 ../../Zotlabs/Module/Profiles.php:794 -#: ../../Zotlabs/Module/Connedit.php:935 +#: ../../include/event.php:1422 ../../include/connections.php:734 +#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:794 +#: ../../Zotlabs/Module/Connedit.php:924 msgid "Mobile" msgstr "" -#: ../../include/event.php:1423 ../../include/connections.php:734 -#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:795 -#: ../../Zotlabs/Module/Connedit.php:936 +#: ../../include/event.php:1423 ../../include/connections.php:735 +#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Profiles.php:795 +#: ../../Zotlabs/Module/Connedit.php:925 msgid "Home" msgstr "" -#: ../../include/event.php:1424 ../../include/connections.php:735 +#: ../../include/event.php:1424 ../../include/connections.php:736 msgid "Home, Voice" msgstr "" -#: ../../include/event.php:1425 ../../include/connections.php:736 +#: ../../include/event.php:1425 ../../include/connections.php:737 msgid "Home, Fax" msgstr "" -#: ../../include/event.php:1426 ../../include/connections.php:737 -#: ../../Zotlabs/Module/Cdav.php:1379 ../../Zotlabs/Module/Profiles.php:796 -#: ../../Zotlabs/Module/Connedit.php:937 +#: ../../include/event.php:1426 ../../include/connections.php:738 +#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Profiles.php:796 +#: ../../Zotlabs/Module/Connedit.php:926 msgid "Work" msgstr "" -#: ../../include/event.php:1427 ../../include/connections.php:738 +#: ../../include/event.php:1427 ../../include/connections.php:739 msgid "Work, Voice" msgstr "" -#: ../../include/event.php:1428 ../../include/connections.php:739 +#: ../../include/event.php:1428 ../../include/connections.php:740 msgid "Work, Fax" msgstr "" #: ../../include/event.php:1429 ../../include/event.php:1436 #: ../../include/selectors.php:60 ../../include/selectors.php:77 #: ../../include/selectors.php:115 ../../include/selectors.php:151 -#: ../../include/connections.php:740 ../../include/connections.php:747 -#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Profiles.php:797 -#: ../../Zotlabs/Module/Connedit.php:938 +#: ../../include/connections.php:741 ../../include/connections.php:748 +#: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Profiles.php:797 +#: ../../Zotlabs/Module/Connedit.php:927 #: ../../Zotlabs/Access/PermissionRoles.php:310 msgid "Other" msgstr "" @@ -4623,7 +4629,6 @@ msgstr "" #: ../../include/features.php:82 ../../include/nav.php:463 #: ../../include/nav.php:466 ../../Zotlabs/Lib/Apps.php:346 -#: ../../Zotlabs/Storage/Browser.php:140 msgid "Calendar" msgstr "" @@ -4937,8 +4942,8 @@ msgstr "" msgid "Delete this item?" msgstr "" -#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1096 -#: ../../Zotlabs/Module/Photos.php:1214 ../../Zotlabs/Lib/ThreadItem.php:824 +#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1097 +#: ../../Zotlabs/Module/Photos.php:1215 ../../Zotlabs/Lib/ThreadItem.php:824 msgid "Comment" msgstr "" @@ -4999,7 +5004,7 @@ msgid "Rate This Channel (this is public)" msgstr "" #: ../../include/js_strings.php:20 ../../Zotlabs/Module/Rate.php:155 -#: ../../Zotlabs/Module/Connedit.php:890 +#: ../../Zotlabs/Module/Connedit.php:879 msgid "Rating" msgstr "" @@ -5016,9 +5021,9 @@ msgid "Unsaved changes. Are you sure you wish to leave this page?" msgstr "" #: ../../include/js_strings.php:25 ../../Zotlabs/Module/Pubsites.php:52 -#: ../../Zotlabs/Module/Cdav.php:1011 ../../Zotlabs/Module/Events.php:483 +#: ../../Zotlabs/Module/Cdav.php:1015 ../../Zotlabs/Module/Events.php:483 #: ../../Zotlabs/Module/Profiles.php:511 ../../Zotlabs/Module/Profiles.php:736 -#: ../../Zotlabs/Module/Locs.php:121 +#: ../../Zotlabs/Module/Locs.php:128 msgid "Location" msgstr "" @@ -5271,6 +5276,10 @@ msgctxt "calendar" msgid "All day" msgstr "" +#: ../../include/js_strings.php:119 +msgid "Please stand by while your download is being prepared." +msgstr "" + #: ../../include/help.php:80 msgid "Help:" msgstr "" @@ -5285,9 +5294,9 @@ msgstr "" msgid "Not Found" msgstr "" -#: ../../include/help.php:132 ../../Zotlabs/Module/Display.php:139 -#: ../../Zotlabs/Module/Display.php:156 ../../Zotlabs/Module/Display.php:176 -#: ../../Zotlabs/Module/Display.php:182 ../../Zotlabs/Module/Page.php:136 +#: ../../include/help.php:132 ../../Zotlabs/Module/Display.php:136 +#: ../../Zotlabs/Module/Display.php:153 ../../Zotlabs/Module/Display.php:173 +#: ../../Zotlabs/Module/Display.php:179 ../../Zotlabs/Module/Page.php:136 #: ../../Zotlabs/Module/Block.php:77 ../../Zotlabs/Lib/NativeWikiPage.php:521 #: ../../Zotlabs/Web/Router.php:185 msgid "Page not found." @@ -5325,8 +5334,8 @@ msgstr "" msgid "Photo Albums" msgstr "" -#: ../../include/photos.php:667 ../../Zotlabs/Module/Photos.php:1347 -#: ../../Zotlabs/Module/Photos.php:1360 ../../Zotlabs/Module/Photos.php:1361 +#: ../../include/photos.php:667 ../../Zotlabs/Module/Photos.php:1348 +#: ../../Zotlabs/Module/Photos.php:1361 ../../Zotlabs/Module/Photos.php:1362 msgid "Recent Photos" msgstr "" @@ -5334,43 +5343,43 @@ msgstr "" msgid "Upload New Photos" msgstr "" -#: ../../include/network.php:1730 ../../include/network.php:1731 +#: ../../include/network.php:1731 ../../include/network.php:1732 msgid "Friendica" msgstr "" -#: ../../include/network.php:1732 +#: ../../include/network.php:1733 msgid "OStatus" msgstr "" -#: ../../include/network.php:1733 +#: ../../include/network.php:1734 msgid "GNU-Social" msgstr "" -#: ../../include/network.php:1734 +#: ../../include/network.php:1735 msgid "RSS/Atom" msgstr "" -#: ../../include/network.php:1737 +#: ../../include/network.php:1738 msgid "Diaspora" msgstr "" -#: ../../include/network.php:1738 +#: ../../include/network.php:1739 msgid "Facebook" msgstr "" -#: ../../include/network.php:1739 +#: ../../include/network.php:1740 msgid "Zot" msgstr "" -#: ../../include/network.php:1740 +#: ../../include/network.php:1741 msgid "LinkedIn" msgstr "" -#: ../../include/network.php:1741 +#: ../../include/network.php:1742 msgid "XMPP/IM" msgstr "" -#: ../../include/network.php:1742 +#: ../../include/network.php:1743 msgid "MySpace" msgstr "" @@ -5404,8 +5413,8 @@ msgid_plural "%d invitations available" msgstr[0] "" msgstr[1] "" -#: ../../include/contact_widgets.php:16 ../../include/acl_selectors.php:135 -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../include/contact_widgets.php:16 ../../include/acl_selectors.php:144 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "Advanced" msgstr "" @@ -5448,25 +5457,28 @@ msgstr "" msgid "Advanced example: name=fred and country=iceland" msgstr "" -#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:99 -#: ../../include/contact_widgets.php:142 ../../include/contact_widgets.php:187 +#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:111 +#: ../../include/contact_widgets.php:155 ../../include/contact_widgets.php:200 +#: ../../include/contact_widgets.php:235 #: ../../Zotlabs/Widget/Appcategories.php:46 ../../Zotlabs/Widget/Filer.php:31 msgid "Everything" msgstr "" -#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139 -#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409 -#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511 -#: ../../include/taxonomy.php:532 ../../Zotlabs/Widget/Appcategories.php:43 -#: ../../Zotlabs/Module/Cdav.php:1066 +#: ../../include/contact_widgets.php:108 ../../include/contact_widgets.php:152 +#: ../../include/contact_widgets.php:197 ../../include/contact_widgets.php:232 +#: ../../include/taxonomy.php:418 ../../include/taxonomy.php:500 +#: ../../include/taxonomy.php:520 ../../include/taxonomy.php:541 +#: ../../Zotlabs/Widget/Appcategories.php:43 ../../Zotlabs/Module/Cdav.php:1070 +#: ../../Zotlabs/Storage/Browser.php:293 ../../Zotlabs/Storage/Browser.php:381 +#: ../../Zotlabs/Storage/Browser.php:396 msgid "Categories" msgstr "" -#: ../../include/contact_widgets.php:218 +#: ../../include/contact_widgets.php:265 msgid "Common Connections" msgstr "" -#: ../../include/contact_widgets.php:222 +#: ../../include/contact_widgets.php:269 #, php-format msgid "View all %d common connections" msgstr "" @@ -5506,7 +5518,7 @@ msgid "Manage your channels" msgstr "" #: ../../include/nav.php:101 ../../include/group.php:321 -#: ../../include/acl_selectors.php:87 +#: ../../include/acl_selectors.php:86 #: ../../Zotlabs/Widget/Activity_filter.php:82 #: ../../Zotlabs/Module/Group.php:142 ../../Zotlabs/Module/Group.php:154 #: ../../Zotlabs/Lib/Group.php:324 ../../Zotlabs/Lib/Apps.php:364 @@ -5529,7 +5541,7 @@ msgid "Account/Channel Settings" msgstr "" #: ../../include/nav.php:109 ../../include/nav.php:138 -#: ../../include/nav.php:157 ../../boot.php:1697 +#: ../../include/nav.php:157 ../../boot.php:1698 msgid "Logout" msgstr "" @@ -5541,7 +5553,7 @@ msgstr "" msgid "Your profile page" msgstr "" -#: ../../include/nav.php:115 ../../include/channel.php:1524 +#: ../../include/nav.php:115 ../../include/channel.php:1538 #: ../../Zotlabs/Module/Profiles.php:832 msgid "Edit Profiles" msgstr "" @@ -5555,7 +5567,7 @@ msgid "Edit your profile" msgstr "" #: ../../include/nav.php:124 ../../include/nav.php:128 -#: ../../Zotlabs/Lib/Apps.php:336 ../../boot.php:1698 +#: ../../Zotlabs/Lib/Apps.php:336 ../../boot.php:1699 msgid "Login" msgstr "" @@ -5572,7 +5584,7 @@ msgid "Log me out of this site" msgstr "" #: ../../include/nav.php:162 ../../Zotlabs/Module/Register.php:293 -#: ../../boot.php:1678 +#: ../../boot.php:1679 msgid "Register" msgstr "" @@ -5599,7 +5611,7 @@ msgstr "" #: ../../include/nav.php:324 ../../Zotlabs/Widget/Notifications.php:182 #: ../../Zotlabs/Module/New_channel.php:157 #: ../../Zotlabs/Module/New_channel.php:164 -#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:872 +#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:861 msgid "Loading" msgstr "" @@ -5640,7 +5652,7 @@ msgid "Profile Details" msgstr "" #: ../../include/nav.php:452 ../../Zotlabs/Module/Fbrowser.php:85 -#: ../../Zotlabs/Lib/Apps.php:340 ../../Zotlabs/Storage/Browser.php:278 +#: ../../Zotlabs/Lib/Apps.php:340 ../../Zotlabs/Storage/Browser.php:344 msgid "Files" msgstr "" @@ -5730,7 +5742,7 @@ msgstr "" msgid "YYYY-MM-DD or MM-DD" msgstr "" -#: ../../include/datetime.php:238 ../../boot.php:2702 +#: ../../include/datetime.php:238 ../../boot.php:2703 msgid "never" msgstr "" @@ -5864,7 +5876,7 @@ msgstr "" msgid "Cannot connect to yourself." msgstr "" -#: ../../include/conversation.php:135 ../../Zotlabs/Module/Like.php:129 +#: ../../include/conversation.php:135 ../../Zotlabs/Module/Like.php:166 msgid "channel" msgstr "" @@ -5894,275 +5906,275 @@ msgctxt "mood" msgid "%1$s is %2$s" msgstr "" -#: ../../include/conversation.php:515 ../../Zotlabs/Lib/ThreadItem.php:500 +#: ../../include/conversation.php:516 ../../Zotlabs/Lib/ThreadItem.php:500 msgid "This is an unsaved preview" msgstr "" -#: ../../include/conversation.php:651 ../../Zotlabs/Module/Photos.php:1112 +#: ../../include/conversation.php:652 ../../Zotlabs/Module/Photos.php:1113 msgctxt "title" msgid "Likes" msgstr "" -#: ../../include/conversation.php:652 ../../Zotlabs/Module/Photos.php:1112 +#: ../../include/conversation.php:653 ../../Zotlabs/Module/Photos.php:1113 msgctxt "title" msgid "Dislikes" msgstr "" -#: ../../include/conversation.php:653 ../../Zotlabs/Widget/Pinned.php:77 -#: ../../Zotlabs/Module/Photos.php:1113 +#: ../../include/conversation.php:654 ../../Zotlabs/Widget/Pinned.php:77 +#: ../../Zotlabs/Module/Photos.php:1114 msgctxt "title" msgid "Agree" msgstr "" -#: ../../include/conversation.php:654 ../../Zotlabs/Widget/Pinned.php:78 -#: ../../Zotlabs/Module/Photos.php:1113 +#: ../../include/conversation.php:655 ../../Zotlabs/Widget/Pinned.php:78 +#: ../../Zotlabs/Module/Photos.php:1114 msgctxt "title" msgid "Disagree" msgstr "" -#: ../../include/conversation.php:655 ../../Zotlabs/Widget/Pinned.php:79 -#: ../../Zotlabs/Module/Photos.php:1113 +#: ../../include/conversation.php:656 ../../Zotlabs/Widget/Pinned.php:79 +#: ../../Zotlabs/Module/Photos.php:1114 msgctxt "title" msgid "Abstain" msgstr "" -#: ../../include/conversation.php:656 ../../Zotlabs/Widget/Pinned.php:66 -#: ../../Zotlabs/Module/Photos.php:1114 +#: ../../include/conversation.php:657 ../../Zotlabs/Widget/Pinned.php:66 +#: ../../Zotlabs/Module/Photos.php:1115 msgctxt "title" msgid "Attending" msgstr "" -#: ../../include/conversation.php:657 ../../Zotlabs/Widget/Pinned.php:67 -#: ../../Zotlabs/Module/Photos.php:1114 +#: ../../include/conversation.php:658 ../../Zotlabs/Widget/Pinned.php:67 +#: ../../Zotlabs/Module/Photos.php:1115 msgctxt "title" msgid "Not attending" msgstr "" -#: ../../include/conversation.php:658 ../../Zotlabs/Widget/Pinned.php:68 -#: ../../Zotlabs/Module/Photos.php:1114 +#: ../../include/conversation.php:659 ../../Zotlabs/Widget/Pinned.php:68 +#: ../../Zotlabs/Module/Photos.php:1115 msgctxt "title" msgid "Might attend" msgstr "" -#: ../../include/conversation.php:728 ../../Zotlabs/Lib/ThreadItem.php:180 +#: ../../include/conversation.php:729 ../../Zotlabs/Lib/ThreadItem.php:180 msgid "Select" msgstr "" -#: ../../include/conversation.php:729 ../../include/conversation.php:774 +#: ../../include/conversation.php:730 ../../include/conversation.php:775 #: ../../Zotlabs/Module/Article_edit.php:128 #: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Module/Oauth.php:174 -#: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Cdav.php:1052 -#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Webpages.php:257 +#: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Cdav.php:1056 +#: ../../Zotlabs/Module/Cdav.php:1389 ../../Zotlabs/Module/Webpages.php:257 #: ../../Zotlabs/Module/Admin/Accounts.php:175 #: ../../Zotlabs/Module/Admin/Channels.php:149 #: ../../Zotlabs/Module/Admin/Profs.php:176 ../../Zotlabs/Module/Blocks.php:162 #: ../../Zotlabs/Module/Editblock.php:139 #: ../../Zotlabs/Module/Editlayout.php:138 #: ../../Zotlabs/Module/Connections.php:328 -#: ../../Zotlabs/Module/Photos.php:1178 ../../Zotlabs/Module/Profiles.php:802 +#: ../../Zotlabs/Module/Photos.php:1179 ../../Zotlabs/Module/Profiles.php:802 #: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Thing.php:269 -#: ../../Zotlabs/Module/Connedit.php:671 ../../Zotlabs/Module/Connedit.php:943 +#: ../../Zotlabs/Module/Connedit.php:660 ../../Zotlabs/Module/Connedit.php:932 #: ../../Zotlabs/Lib/Apps.php:558 ../../Zotlabs/Lib/ThreadItem.php:170 -#: ../../Zotlabs/Storage/Browser.php:297 +#: ../../Zotlabs/Storage/Browser.php:377 msgid "Delete" msgstr "" -#: ../../include/conversation.php:733 ../../Zotlabs/Lib/ThreadItem.php:273 +#: ../../include/conversation.php:734 ../../Zotlabs/Lib/ThreadItem.php:273 msgid "Toggle Star Status" msgstr "" -#: ../../include/conversation.php:738 ../../Zotlabs/Lib/ThreadItem.php:103 +#: ../../include/conversation.php:739 ../../Zotlabs/Lib/ThreadItem.php:103 msgid "Private Message" msgstr "" -#: ../../include/conversation.php:745 ../../Zotlabs/Widget/Pinned.php:88 +#: ../../include/conversation.php:746 ../../Zotlabs/Widget/Pinned.php:88 #: ../../Zotlabs/Lib/ThreadItem.php:284 msgid "Message signature validated" msgstr "" -#: ../../include/conversation.php:746 ../../Zotlabs/Widget/Pinned.php:89 +#: ../../include/conversation.php:747 ../../Zotlabs/Widget/Pinned.php:89 #: ../../Zotlabs/Lib/ThreadItem.php:285 msgid "Message signature incorrect" msgstr "" -#: ../../include/conversation.php:773 +#: ../../include/conversation.php:774 #: ../../Zotlabs/Module/Admin/Accounts.php:173 #: ../../Zotlabs/Module/Connections.php:342 msgid "Approve" msgstr "" -#: ../../include/conversation.php:778 +#: ../../include/conversation.php:779 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: ../../include/conversation.php:798 +#: ../../include/conversation.php:799 msgid "Categories:" msgstr "" -#: ../../include/conversation.php:799 +#: ../../include/conversation.php:800 msgid "Filed under:" msgstr "" -#: ../../include/conversation.php:805 ../../Zotlabs/Widget/Pinned.php:133 +#: ../../include/conversation.php:806 ../../Zotlabs/Widget/Pinned.php:133 #: ../../Zotlabs/Lib/ThreadItem.php:429 #, php-format msgid "from %s" msgstr "" -#: ../../include/conversation.php:808 ../../Zotlabs/Widget/Pinned.php:136 +#: ../../include/conversation.php:809 ../../Zotlabs/Widget/Pinned.php:136 #: ../../Zotlabs/Lib/ThreadItem.php:432 #, php-format msgid "last edited: %s" msgstr "" -#: ../../include/conversation.php:809 ../../Zotlabs/Widget/Pinned.php:137 +#: ../../include/conversation.php:810 ../../Zotlabs/Widget/Pinned.php:137 #: ../../Zotlabs/Lib/ThreadItem.php:433 #, php-format msgid "Expires: %s" msgstr "" -#: ../../include/conversation.php:824 +#: ../../include/conversation.php:825 msgid "View in context" msgstr "" -#: ../../include/conversation.php:826 ../../Zotlabs/Module/Photos.php:1078 +#: ../../include/conversation.php:827 ../../Zotlabs/Module/Photos.php:1079 #: ../../Zotlabs/Lib/ThreadItem.php:501 msgid "Please wait" msgstr "" -#: ../../include/conversation.php:925 +#: ../../include/conversation.php:928 msgid "remove" msgstr "" -#: ../../include/conversation.php:929 +#: ../../include/conversation.php:932 msgid "Loading..." msgstr "" -#: ../../include/conversation.php:930 ../../Zotlabs/Lib/ThreadItem.php:301 +#: ../../include/conversation.php:933 ../../Zotlabs/Lib/ThreadItem.php:301 msgid "Conversation Tools" msgstr "" -#: ../../include/conversation.php:931 +#: ../../include/conversation.php:934 msgid "Delete Selected Items" msgstr "" -#: ../../include/conversation.php:974 +#: ../../include/conversation.php:977 msgid "View Source" msgstr "" -#: ../../include/conversation.php:984 +#: ../../include/conversation.php:987 msgid "Follow Thread" msgstr "" -#: ../../include/conversation.php:993 +#: ../../include/conversation.php:996 msgid "Unfollow Thread" msgstr "" -#: ../../include/conversation.php:1087 ../../Zotlabs/Module/Connedit.php:632 +#: ../../include/conversation.php:1090 ../../Zotlabs/Module/Connedit.php:621 msgid "Recent Activity" msgstr "" -#: ../../include/conversation.php:1097 ../../include/connections.php:110 -#: ../../include/channel.php:1604 ../../Zotlabs/Widget/Suggestions.php:46 +#: ../../include/conversation.php:1100 ../../include/connections.php:110 +#: ../../include/channel.php:1618 ../../Zotlabs/Widget/Suggestions.php:46 #: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Module/Directory.php:368 #: ../../Zotlabs/Module/Connections.php:349 ../../Zotlabs/Module/Suggest.php:71 msgid "Connect" msgstr "" -#: ../../include/conversation.php:1107 +#: ../../include/conversation.php:1110 msgid "Edit Connection" msgstr "" -#: ../../include/conversation.php:1117 +#: ../../include/conversation.php:1120 msgid "Message" msgstr "" -#: ../../include/conversation.php:1127 ../../Zotlabs/Module/Pubsites.php:35 +#: ../../include/conversation.php:1130 ../../Zotlabs/Module/Pubsites.php:35 #: ../../Zotlabs/Module/Ratings.php:97 msgid "Ratings" msgstr "" -#: ../../include/conversation.php:1137 ../../Zotlabs/Module/Poke.php:199 +#: ../../include/conversation.php:1140 ../../Zotlabs/Module/Poke.php:199 #: ../../Zotlabs/Lib/Apps.php:351 msgid "Poke" msgstr "" -#: ../../include/conversation.php:1259 +#: ../../include/conversation.php:1262 #, php-format msgid "%s likes this." msgstr "" -#: ../../include/conversation.php:1259 +#: ../../include/conversation.php:1262 #, php-format msgid "%s doesn't like this." msgstr "" -#: ../../include/conversation.php:1263 +#: ../../include/conversation.php:1266 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgid_plural "<span %1$s>%2$d people</span> like this." msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1265 +#: ../../include/conversation.php:1268 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgid_plural "<span %1$s>%2$d people</span> don't like this." msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1271 +#: ../../include/conversation.php:1274 msgid "and" msgstr "" -#: ../../include/conversation.php:1274 +#: ../../include/conversation.php:1277 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1275 +#: ../../include/conversation.php:1278 #, php-format msgid "%s like this." msgstr "" -#: ../../include/conversation.php:1275 +#: ../../include/conversation.php:1278 #, php-format msgid "%s don't like this." msgstr "" -#: ../../include/conversation.php:1459 +#: ../../include/conversation.php:1462 msgid "Toggle poll" msgstr "" -#: ../../include/conversation.php:1460 +#: ../../include/conversation.php:1463 msgid "Option" msgstr "" -#: ../../include/conversation.php:1461 +#: ../../include/conversation.php:1464 msgid "Add option" msgstr "" -#: ../../include/conversation.php:1462 +#: ../../include/conversation.php:1465 msgid "Minutes" msgstr "" -#: ../../include/conversation.php:1462 +#: ../../include/conversation.php:1465 msgid "Hours" msgstr "" -#: ../../include/conversation.php:1462 +#: ../../include/conversation.php:1465 msgid "Days" msgstr "" -#: ../../include/conversation.php:1463 +#: ../../include/conversation.php:1466 msgid "Allow multiple answers" msgstr "" -#: ../../include/conversation.php:1746 ../../include/taxonomy.php:659 -#: ../../include/channel.php:1767 ../../Zotlabs/Module/Photos.php:1135 +#: ../../include/conversation.php:1749 ../../include/taxonomy.php:668 +#: ../../include/channel.php:1781 ../../Zotlabs/Module/Photos.php:1136 #: ../../Zotlabs/Lib/ThreadItem.php:242 msgctxt "noun" msgid "Like" @@ -6170,7 +6182,7 @@ msgid_plural "Likes" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1749 ../../Zotlabs/Module/Photos.php:1140 +#: ../../include/conversation.php:1752 ../../Zotlabs/Module/Photos.php:1141 #: ../../Zotlabs/Lib/ThreadItem.php:247 msgctxt "noun" msgid "Dislike" @@ -6178,42 +6190,42 @@ msgid_plural "Dislikes" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1752 +#: ../../include/conversation.php:1755 msgctxt "noun" msgid "Attending" msgid_plural "Attending" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1755 +#: ../../include/conversation.php:1758 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1758 +#: ../../include/conversation.php:1761 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1761 +#: ../../include/conversation.php:1764 msgctxt "noun" msgid "Agree" msgid_plural "Agrees" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1764 +#: ../../include/conversation.php:1767 msgctxt "noun" msgid "Disagree" msgid_plural "Disagrees" msgstr[0] "" msgstr[1] "" -#: ../../include/conversation.php:1767 +#: ../../include/conversation.php:1770 msgctxt "noun" msgid "Abstain" msgid_plural "Abstains" @@ -6280,11 +6292,11 @@ msgstr "" msgid "Hermaphrodite" msgstr "" -#: ../../include/selectors.php:60 ../../include/channel.php:1712 +#: ../../include/selectors.php:60 ../../include/channel.php:1726 msgid "Neuter" msgstr "" -#: ../../include/selectors.php:60 ../../include/channel.php:1714 +#: ../../include/selectors.php:60 ../../include/channel.php:1728 msgid "Non-specific" msgstr "" @@ -6388,7 +6400,7 @@ msgstr "" #: ../../Zotlabs/Module/Settings/Channel.php:76 #: ../../Zotlabs/Module/Settings/Channel.php:79 #: ../../Zotlabs/Module/Settings/Channel.php:90 -#: ../../Zotlabs/Module/Connedit.php:728 +#: ../../Zotlabs/Module/Connedit.php:717 msgid "Friends" msgstr "" @@ -6476,11 +6488,11 @@ msgstr "" msgid "Ask me" msgstr "" -#: ../../include/connections.php:133 +#: ../../include/connections.php:134 msgid "New window" msgstr "" -#: ../../include/connections.php:134 +#: ../../include/connections.php:135 msgid "Open the selected location in a different window or browser tab" msgstr "" @@ -6517,48 +6529,48 @@ msgstr "" msgid "add" msgstr "" -#: ../../include/taxonomy.php:320 +#: ../../include/taxonomy.php:323 msgid "Trending" msgstr "" -#: ../../include/taxonomy.php:320 ../../include/taxonomy.php:449 -#: ../../include/taxonomy.php:470 ../../Zotlabs/Widget/Tagcloud.php:22 +#: ../../include/taxonomy.php:323 ../../include/taxonomy.php:458 +#: ../../include/taxonomy.php:479 ../../Zotlabs/Widget/Tagcloud.php:22 msgid "Tags" msgstr "" -#: ../../include/taxonomy.php:550 +#: ../../include/taxonomy.php:559 msgid "Keywords" msgstr "" -#: ../../include/taxonomy.php:571 +#: ../../include/taxonomy.php:580 msgid "have" msgstr "" -#: ../../include/taxonomy.php:571 +#: ../../include/taxonomy.php:580 msgid "has" msgstr "" -#: ../../include/taxonomy.php:572 +#: ../../include/taxonomy.php:581 msgid "want" msgstr "" -#: ../../include/taxonomy.php:572 +#: ../../include/taxonomy.php:581 msgid "wants" msgstr "" -#: ../../include/taxonomy.php:573 ../../Zotlabs/Lib/ThreadItem.php:317 +#: ../../include/taxonomy.php:582 ../../Zotlabs/Lib/ThreadItem.php:317 msgid "like" msgstr "" -#: ../../include/taxonomy.php:573 +#: ../../include/taxonomy.php:582 msgid "likes" msgstr "" -#: ../../include/taxonomy.php:574 ../../Zotlabs/Lib/ThreadItem.php:318 +#: ../../include/taxonomy.php:583 ../../Zotlabs/Lib/ThreadItem.php:318 msgid "dislike" msgstr "" -#: ../../include/taxonomy.php:574 +#: ../../include/taxonomy.php:583 msgid "dislikes" msgstr "" @@ -6599,67 +6611,67 @@ msgstr "" msgid "Visible to specific connections." msgstr "" -#: ../../include/items.php:4466 ../../Zotlabs/Module/Group.php:62 +#: ../../include/items.php:4474 ../../Zotlabs/Module/Group.php:62 #: ../../Zotlabs/Module/Group.php:214 msgid "Privacy group not found." msgstr "" -#: ../../include/items.php:4482 +#: ../../include/items.php:4490 msgid "Privacy group is empty." msgstr "" -#: ../../include/items.php:4489 +#: ../../include/items.php:4497 #, php-format msgid "Privacy group: %s" msgstr "" -#: ../../include/items.php:4499 ../../Zotlabs/Module/Connedit.php:870 +#: ../../include/items.php:4507 ../../Zotlabs/Module/Connedit.php:859 #, php-format msgid "Connection: %s" msgstr "" -#: ../../include/items.php:4501 +#: ../../include/items.php:4509 msgid "Connection not found." msgstr "" -#: ../../include/items.php:4835 ../../Zotlabs/Module/Cover_photo.php:297 +#: ../../include/items.php:4843 ../../Zotlabs/Module/Cover_photo.php:297 msgid "female" msgstr "" -#: ../../include/items.php:4836 ../../Zotlabs/Module/Cover_photo.php:298 +#: ../../include/items.php:4844 ../../Zotlabs/Module/Cover_photo.php:298 #, php-format msgid "%1$s updated her %2$s" msgstr "" -#: ../../include/items.php:4837 ../../Zotlabs/Module/Cover_photo.php:299 +#: ../../include/items.php:4845 ../../Zotlabs/Module/Cover_photo.php:299 msgid "male" msgstr "" -#: ../../include/items.php:4838 ../../Zotlabs/Module/Cover_photo.php:300 +#: ../../include/items.php:4846 ../../Zotlabs/Module/Cover_photo.php:300 #, php-format msgid "%1$s updated his %2$s" msgstr "" -#: ../../include/items.php:4840 ../../Zotlabs/Module/Cover_photo.php:302 +#: ../../include/items.php:4848 ../../Zotlabs/Module/Cover_photo.php:302 #, php-format msgid "%1$s updated their %2$s" msgstr "" -#: ../../include/items.php:4842 +#: ../../include/items.php:4850 msgid "profile photo" msgstr "" -#: ../../include/items.php:5034 +#: ../../include/items.php:5042 #, php-format msgid "[Edited %s]" msgstr "" -#: ../../include/items.php:5034 +#: ../../include/items.php:5042 msgctxt "edit_activity" msgid "Post" msgstr "" -#: ../../include/items.php:5034 +#: ../../include/items.php:5042 msgctxt "edit_activity" msgid "Comment" msgstr "" @@ -6732,13 +6744,14 @@ msgstr "" msgid "This action is not available under your subscription plan." msgstr "" -#: ../../include/photo/photo_driver.php:413 +#: ../../include/photo/photo_driver.php:417 #: ../../Zotlabs/Module/Profile_photo.php:147 #: ../../Zotlabs/Module/Profile_photo.php:284 msgid "Profile Photos" msgstr "" -#: ../../include/attach.php:273 ../../include/attach.php:381 +#: ../../include/attach.php:273 ../../include/attach.php:324 +#: ../../include/attach.php:419 msgid "Item was not found." msgstr "" @@ -6746,65 +6759,65 @@ msgstr "" msgid "Unknown error." msgstr "" -#: ../../include/attach.php:574 +#: ../../include/attach.php:612 msgid "No source file." msgstr "" -#: ../../include/attach.php:596 +#: ../../include/attach.php:634 msgid "Cannot locate file to replace" msgstr "" -#: ../../include/attach.php:615 +#: ../../include/attach.php:653 msgid "Cannot locate file to revise/update" msgstr "" -#: ../../include/attach.php:759 +#: ../../include/attach.php:795 #, php-format msgid "File exceeds size limit of %d" msgstr "" -#: ../../include/attach.php:780 +#: ../../include/attach.php:816 #, php-format msgid "You have reached your limit of %1$.0f Mbytes attachment storage." msgstr "" -#: ../../include/attach.php:968 +#: ../../include/attach.php:1004 msgid "File upload failed. Possible system limit or action terminated." msgstr "" -#: ../../include/attach.php:997 +#: ../../include/attach.php:1033 msgid "Stored file could not be verified. Upload failed." msgstr "" -#: ../../include/attach.php:1069 ../../include/attach.php:1085 +#: ../../include/attach.php:1105 ../../include/attach.php:1121 msgid "Path not available." msgstr "" -#: ../../include/attach.php:1134 ../../include/attach.php:1297 +#: ../../include/attach.php:1169 ../../include/attach.php:1332 msgid "Empty pathname" msgstr "" -#: ../../include/attach.php:1160 +#: ../../include/attach.php:1195 msgid "duplicate filename or path" msgstr "" -#: ../../include/attach.php:1185 +#: ../../include/attach.php:1220 msgid "Path not found." msgstr "" -#: ../../include/attach.php:1253 +#: ../../include/attach.php:1288 msgid "mkdir failed." msgstr "" -#: ../../include/attach.php:1257 +#: ../../include/attach.php:1292 msgid "database storage failed." msgstr "" -#: ../../include/attach.php:1303 +#: ../../include/attach.php:1338 msgid "Empty path" msgstr "" -#: ../../include/attach.php:2035 +#: ../../include/attach.php:2099 #, php-format msgid "%s shared a %s with you" msgstr "" @@ -6814,8 +6827,8 @@ msgstr "" msgid "%1$s's bookmarks" msgstr "" -#: ../../include/menu.php:120 ../../include/channel.php:1524 -#: ../../include/channel.php:1528 ../../Zotlabs/Widget/Cdav.php:138 +#: ../../include/menu.php:120 ../../include/channel.php:1538 +#: ../../include/channel.php:1542 ../../Zotlabs/Widget/Cdav.php:138 #: ../../Zotlabs/Widget/Cdav.php:175 ../../Zotlabs/Module/Article_edit.php:98 #: ../../Zotlabs/Module/Group.php:253 ../../Zotlabs/Module/Card_edit.php:99 #: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Module/Editwebpage.php:142 @@ -6829,7 +6842,7 @@ msgstr "" #: ../../Zotlabs/Module/Oauth2.php:194 ../../Zotlabs/Module/Thing.php:268 #: ../../Zotlabs/Module/Wiki.php:211 ../../Zotlabs/Module/Wiki.php:384 #: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Lib/Apps.php:557 -#: ../../Zotlabs/Lib/ThreadItem.php:148 ../../Zotlabs/Storage/Browser.php:296 +#: ../../Zotlabs/Lib/ThreadItem.php:148 msgid "Edit" msgstr "" @@ -6951,187 +6964,187 @@ msgstr "" msgid "Unable to retrieve modified identity" msgstr "" -#: ../../include/channel.php:1371 +#: ../../include/channel.php:1385 msgid "Requested channel is not available." msgstr "" -#: ../../include/channel.php:1517 ../../Zotlabs/Module/Profiles.php:730 +#: ../../include/channel.php:1531 ../../Zotlabs/Module/Profiles.php:730 msgid "Change profile photo" msgstr "" -#: ../../include/channel.php:1525 +#: ../../include/channel.php:1539 msgid "Create New Profile" msgstr "" -#: ../../include/channel.php:1543 ../../Zotlabs/Module/Profiles.php:822 +#: ../../include/channel.php:1557 ../../Zotlabs/Module/Profiles.php:822 msgid "Profile Image" msgstr "" -#: ../../include/channel.php:1546 +#: ../../include/channel.php:1560 msgid "Visible to everybody" msgstr "" -#: ../../include/channel.php:1547 ../../Zotlabs/Module/Profiles.php:727 +#: ../../include/channel.php:1561 ../../Zotlabs/Module/Profiles.php:727 #: ../../Zotlabs/Module/Profiles.php:826 msgid "Edit visibility" msgstr "" -#: ../../include/channel.php:1623 ../../include/channel.php:1751 +#: ../../include/channel.php:1637 ../../include/channel.php:1765 msgid "Gender:" msgstr "" -#: ../../include/channel.php:1624 ../../include/channel.php:1795 +#: ../../include/channel.php:1638 ../../include/channel.php:1809 msgid "Status:" msgstr "" -#: ../../include/channel.php:1625 ../../include/channel.php:1819 +#: ../../include/channel.php:1639 ../../include/channel.php:1833 msgid "Homepage:" msgstr "" -#: ../../include/channel.php:1626 +#: ../../include/channel.php:1640 msgid "Online Now" msgstr "" -#: ../../include/channel.php:1679 +#: ../../include/channel.php:1693 msgid "Change your profile photo" msgstr "" -#: ../../include/channel.php:1710 +#: ../../include/channel.php:1724 msgid "Trans" msgstr "" -#: ../../include/channel.php:1749 ../../Zotlabs/Module/Settings/Channel.php:501 +#: ../../include/channel.php:1763 ../../Zotlabs/Module/Settings/Channel.php:501 msgid "Full Name:" msgstr "" -#: ../../include/channel.php:1756 +#: ../../include/channel.php:1770 msgid "Like this channel" msgstr "" -#: ../../include/channel.php:1780 +#: ../../include/channel.php:1794 msgid "j F, Y" msgstr "" -#: ../../include/channel.php:1781 +#: ../../include/channel.php:1795 msgid "j F" msgstr "" -#: ../../include/channel.php:1788 +#: ../../include/channel.php:1802 msgid "Birthday:" msgstr "" -#: ../../include/channel.php:1792 ../../Zotlabs/Module/Directory.php:347 +#: ../../include/channel.php:1806 ../../Zotlabs/Module/Directory.php:347 msgid "Age:" msgstr "" -#: ../../include/channel.php:1801 +#: ../../include/channel.php:1815 #, php-format msgid "for %1$d %2$s" msgstr "" -#: ../../include/channel.php:1813 +#: ../../include/channel.php:1827 msgid "Tags:" msgstr "" -#: ../../include/channel.php:1817 +#: ../../include/channel.php:1831 msgid "Sexual Preference:" msgstr "" -#: ../../include/channel.php:1821 ../../Zotlabs/Module/Directory.php:365 +#: ../../include/channel.php:1835 ../../Zotlabs/Module/Directory.php:365 msgid "Hometown:" msgstr "" -#: ../../include/channel.php:1823 +#: ../../include/channel.php:1837 msgid "Political Views:" msgstr "" -#: ../../include/channel.php:1825 +#: ../../include/channel.php:1839 msgid "Religion:" msgstr "" -#: ../../include/channel.php:1827 ../../Zotlabs/Module/Directory.php:367 +#: ../../include/channel.php:1841 ../../Zotlabs/Module/Directory.php:367 msgid "About:" msgstr "" -#: ../../include/channel.php:1829 +#: ../../include/channel.php:1843 msgid "Hobbies/Interests:" msgstr "" -#: ../../include/channel.php:1831 +#: ../../include/channel.php:1845 msgid "Likes:" msgstr "" -#: ../../include/channel.php:1833 +#: ../../include/channel.php:1847 msgid "Dislikes:" msgstr "" -#: ../../include/channel.php:1835 +#: ../../include/channel.php:1849 msgid "Contact information and Social Networks:" msgstr "" -#: ../../include/channel.php:1837 +#: ../../include/channel.php:1851 msgid "My other channels:" msgstr "" -#: ../../include/channel.php:1839 +#: ../../include/channel.php:1853 msgid "Musical interests:" msgstr "" -#: ../../include/channel.php:1841 +#: ../../include/channel.php:1855 msgid "Books, literature:" msgstr "" -#: ../../include/channel.php:1843 +#: ../../include/channel.php:1857 msgid "Television:" msgstr "" -#: ../../include/channel.php:1845 +#: ../../include/channel.php:1859 msgid "Film/dance/culture/entertainment:" msgstr "" -#: ../../include/channel.php:1847 +#: ../../include/channel.php:1861 msgid "Love/Romance:" msgstr "" -#: ../../include/channel.php:1849 +#: ../../include/channel.php:1863 msgid "Work/employment:" msgstr "" -#: ../../include/channel.php:1851 +#: ../../include/channel.php:1865 msgid "School/education:" msgstr "" -#: ../../include/channel.php:1872 ../../Zotlabs/Module/Profperm.php:113 +#: ../../include/channel.php:1886 ../../Zotlabs/Module/Profperm.php:113 #: ../../Zotlabs/Lib/Apps.php:362 msgid "Profile" msgstr "" -#: ../../include/channel.php:1874 +#: ../../include/channel.php:1888 msgid "Like this thing" msgstr "" -#: ../../include/channel.php:1875 ../../Zotlabs/Module/Events.php:699 +#: ../../include/channel.php:1889 ../../Zotlabs/Module/Events.php:699 msgid "Export" msgstr "" -#: ../../include/channel.php:2314 ../../Zotlabs/Module/Cover_photo.php:304 +#: ../../include/channel.php:2328 ../../Zotlabs/Module/Cover_photo.php:304 msgid "cover photo" msgstr "" -#: ../../include/channel.php:2603 ../../Zotlabs/Module/Rmagic.php:96 -#: ../../boot.php:1699 +#: ../../include/channel.php:2597 ../../Zotlabs/Module/Rmagic.php:96 +#: ../../boot.php:1700 msgid "Remote Authentication" msgstr "" -#: ../../include/channel.php:2604 ../../Zotlabs/Module/Rmagic.php:97 +#: ../../include/channel.php:2598 ../../Zotlabs/Module/Rmagic.php:97 msgid "Enter your channel address (e.g. channel@example.com)" msgstr "" -#: ../../include/channel.php:2605 ../../Zotlabs/Module/Rmagic.php:98 +#: ../../include/channel.php:2599 ../../Zotlabs/Module/Rmagic.php:98 msgid "Authenticate" msgstr "" -#: ../../include/channel.php:2763 ../../Zotlabs/Module/Admin/Accounts.php:91 +#: ../../include/channel.php:2757 ../../Zotlabs/Module/Admin/Accounts.php:91 #, php-format msgid "Account '%s' deleted" msgstr "" @@ -7141,49 +7154,49 @@ msgstr "" msgid "Visible to your default audience" msgstr "" -#: ../../include/acl_selectors.php:100 +#: ../../include/acl_selectors.php:99 msgid "Profile-Based Privacy Groups" msgstr "" -#: ../../include/acl_selectors.php:113 ../../Zotlabs/Widget/Forums.php:100 +#: ../../include/acl_selectors.php:118 +msgid "Private Forum" +msgstr "" + +#: ../../include/acl_selectors.php:124 ../../Zotlabs/Widget/Forums.php:100 #: ../../Zotlabs/Widget/Activity_filter.php:115 #: ../../Zotlabs/Widget/Notifications.php:139 #: ../../Zotlabs/Widget/Notifications.php:140 msgid "Forums" msgstr "" -#: ../../include/acl_selectors.php:115 -msgid "Private Forum" -msgstr "" - -#: ../../include/acl_selectors.php:126 +#: ../../include/acl_selectors.php:135 #: ../../Zotlabs/Lib/PermissionDescription.php:107 msgid "Only me" msgstr "" -#: ../../include/acl_selectors.php:133 +#: ../../include/acl_selectors.php:142 msgid "Share with" msgstr "" -#: ../../include/acl_selectors.php:134 +#: ../../include/acl_selectors.php:143 msgid "Custom selection" msgstr "" -#: ../../include/acl_selectors.php:136 +#: ../../include/acl_selectors.php:145 msgid "" "Select \"Allow\" to allow viewing. \"Don't allow\" lets you override and " "limit the scope of \"Allow\"." msgstr "" -#: ../../include/acl_selectors.php:137 ../../Zotlabs/Module/Authorize.php:32 +#: ../../include/acl_selectors.php:146 ../../Zotlabs/Module/Authorize.php:32 msgid "Allow" msgstr "" -#: ../../include/acl_selectors.php:138 +#: ../../include/acl_selectors.php:147 msgid "Don't allow" msgstr "" -#: ../../include/acl_selectors.php:171 +#: ../../include/acl_selectors.php:180 #, php-format msgid "" "Post permissions %s cannot be changed %s after a post is shared.</br />These " @@ -7210,23 +7223,23 @@ msgstr "" msgid "Embedding disabled" msgstr "" -#: ../../include/dir_fns.php:140 ../../Zotlabs/Lib/Libzotdir.php:160 +#: ../../include/dir_fns.php:140 ../../Zotlabs/Lib/Libzotdir.php:162 msgid "Directory Options" msgstr "" -#: ../../include/dir_fns.php:142 ../../Zotlabs/Lib/Libzotdir.php:162 +#: ../../include/dir_fns.php:142 ../../Zotlabs/Lib/Libzotdir.php:164 msgid "Safe Mode" msgstr "" -#: ../../include/dir_fns.php:143 ../../Zotlabs/Lib/Libzotdir.php:163 +#: ../../include/dir_fns.php:143 ../../Zotlabs/Lib/Libzotdir.php:165 msgid "Public Forums Only" msgstr "" -#: ../../include/dir_fns.php:144 ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../include/dir_fns.php:144 ../../Zotlabs/Lib/Libzotdir.php:167 msgid "This Website Only" msgstr "" -#: ../../include/zid.php:364 +#: ../../include/zid.php:360 #, php-format msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "" @@ -7298,13 +7311,13 @@ msgid "Page name" msgstr "" #: ../../Zotlabs/Widget/Album.php:78 ../../Zotlabs/Widget/Portfolio.php:87 -#: ../../Zotlabs/Module/Embedphotos.php:170 ../../Zotlabs/Module/Photos.php:786 -#: ../../Zotlabs/Module/Photos.php:1332 +#: ../../Zotlabs/Module/Embedphotos.php:170 ../../Zotlabs/Module/Photos.php:787 +#: ../../Zotlabs/Module/Photos.php:1333 msgid "View Photo" msgstr "" #: ../../Zotlabs/Widget/Album.php:95 ../../Zotlabs/Widget/Portfolio.php:108 -#: ../../Zotlabs/Module/Embedphotos.php:186 ../../Zotlabs/Module/Photos.php:817 +#: ../../Zotlabs/Module/Embedphotos.php:186 ../../Zotlabs/Module/Photos.php:818 msgid "Edit Album" msgstr "" @@ -7312,8 +7325,8 @@ msgstr "" #: ../../Zotlabs/Widget/Cdav.php:182 ../../Zotlabs/Widget/Portfolio.php:110 #: ../../Zotlabs/Module/Embedphotos.php:188 #: ../../Zotlabs/Module/Profile_photo.php:500 -#: ../../Zotlabs/Module/Cover_photo.php:423 ../../Zotlabs/Module/Photos.php:687 -#: ../../Zotlabs/Storage/Browser.php:398 +#: ../../Zotlabs/Module/Cover_photo.php:423 ../../Zotlabs/Module/Photos.php:688 +#: ../../Zotlabs/Storage/Browser.php:533 msgid "Upload" msgstr "" @@ -7428,7 +7441,7 @@ msgid "Channel Calendar" msgstr "" #: ../../Zotlabs/Widget/Cdav.php:129 ../../Zotlabs/Widget/Cdav.php:143 -#: ../../Zotlabs/Module/Cdav.php:1051 +#: ../../Zotlabs/Module/Cdav.php:1055 msgid "CalDAV Calendars" msgstr "" @@ -7449,13 +7462,13 @@ msgid "Create new CalDAV calendar" msgstr "" #: ../../Zotlabs/Widget/Cdav.php:140 ../../Zotlabs/Widget/Cdav.php:178 -#: ../../Zotlabs/Module/Cdav.php:1055 ../../Zotlabs/Module/Cdav.php:1383 +#: ../../Zotlabs/Module/Cdav.php:1059 ../../Zotlabs/Module/Cdav.php:1387 #: ../../Zotlabs/Module/Webpages.php:254 #: ../../Zotlabs/Module/New_channel.php:189 ../../Zotlabs/Module/Cards.php:113 #: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Profiles.php:800 #: ../../Zotlabs/Module/Articles.php:117 ../../Zotlabs/Module/Menu.php:182 -#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Layouts.php:185 -#: ../../Zotlabs/Storage/Browser.php:282 ../../Zotlabs/Storage/Browser.php:396 +#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Layouts.php:185 +#: ../../Zotlabs/Storage/Browser.php:358 ../../Zotlabs/Storage/Browser.php:531 msgid "Create" msgstr "" @@ -7467,7 +7480,7 @@ msgstr "" msgid "Calendar Tools" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:143 ../../Zotlabs/Module/Cdav.php:1051 +#: ../../Zotlabs/Widget/Cdav.php:143 ../../Zotlabs/Module/Cdav.php:1055 msgid "Channel Calendars" msgstr "" @@ -7604,7 +7617,7 @@ msgstr "" msgid "photo/image" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:22 ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Widget/Admin.php:22 ../../Zotlabs/Module/Admin/Site.php:292 msgid "Site" msgstr "" @@ -7864,25 +7877,25 @@ msgid "View public stream" msgstr "" #: ../../Zotlabs/Widget/Newmember.php:75 -#: ../../Zotlabs/Module/Settings/Display.php:206 +#: ../../Zotlabs/Module/Settings/Display.php:203 msgid "New Member Links" msgstr "" -#: ../../Zotlabs/Widget/Affinity.php:30 ../../Zotlabs/Module/Connedit.php:726 +#: ../../Zotlabs/Widget/Affinity.php:30 ../../Zotlabs/Module/Connedit.php:715 msgid "Me" msgstr "" -#: ../../Zotlabs/Widget/Affinity.php:31 ../../Zotlabs/Module/Connedit.php:727 +#: ../../Zotlabs/Widget/Affinity.php:31 ../../Zotlabs/Module/Connedit.php:716 msgid "Family" msgstr "" -#: ../../Zotlabs/Widget/Affinity.php:33 ../../Zotlabs/Module/Connedit.php:729 +#: ../../Zotlabs/Widget/Affinity.php:33 ../../Zotlabs/Module/Connedit.php:718 msgid "Acquaintances" msgstr "" #: ../../Zotlabs/Widget/Affinity.php:34 ../../Zotlabs/Module/Connections.php:97 #: ../../Zotlabs/Module/Connections.php:111 -#: ../../Zotlabs/Module/Connedit.php:730 +#: ../../Zotlabs/Module/Connedit.php:719 msgid "All" msgstr "" @@ -8026,7 +8039,7 @@ msgid "New Registrations Notifications" msgstr "" #: ../../Zotlabs/Widget/Notifications.php:162 -#: ../../Zotlabs/Module/Pubstream.php:114 ../../Zotlabs/Lib/Apps.php:375 +#: ../../Zotlabs/Module/Pubstream.php:105 ../../Zotlabs/Lib/Apps.php:375 msgid "Public Stream" msgstr "" @@ -8093,27 +8106,27 @@ msgstr "" msgid "Expires (yyyy-mm-dd)" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:910 +#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:899 msgid "Their Settings" msgstr "" #: ../../Zotlabs/Module/Tokens.php:181 ../../Zotlabs/Module/Permcats.php:122 -#: ../../Zotlabs/Module/Defperms.php:267 ../../Zotlabs/Module/Connedit.php:911 +#: ../../Zotlabs/Module/Defperms.php:267 ../../Zotlabs/Module/Connedit.php:900 msgid "My Settings" msgstr "" #: ../../Zotlabs/Module/Tokens.php:183 ../../Zotlabs/Module/Permcats.php:124 -#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Connedit.php:906 +#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Connedit.php:895 msgid "inherited" msgstr "" #: ../../Zotlabs/Module/Tokens.php:186 ../../Zotlabs/Module/Permcats.php:127 -#: ../../Zotlabs/Module/Defperms.php:270 ../../Zotlabs/Module/Connedit.php:913 +#: ../../Zotlabs/Module/Defperms.php:270 ../../Zotlabs/Module/Connedit.php:902 msgid "Individual Permissions" msgstr "" #: ../../Zotlabs/Module/Tokens.php:187 ../../Zotlabs/Module/Permcats.php:128 -#: ../../Zotlabs/Module/Connedit.php:914 +#: ../../Zotlabs/Module/Connedit.php:903 msgid "" "Some permissions may be inherited from your channel's <a href=\"settings" "\"><strong>privacy settings</strong></a>, which have higher priority than " @@ -8130,10 +8143,11 @@ msgid "Item not found" msgstr "" #: ../../Zotlabs/Module/Article_edit.php:44 +#: ../../Zotlabs/Module/Attach_edit.php:52 #: ../../Zotlabs/Module/Wall_upload.php:31 #: ../../Zotlabs/Module/Card_edit.php:44 ../../Zotlabs/Module/Chanview.php:95 -#: ../../Zotlabs/Module/Cal.php:31 ../../Zotlabs/Module/Page.php:75 -#: ../../Zotlabs/Module/Block.php:41 +#: ../../Zotlabs/Module/Cal.php:31 ../../Zotlabs/Module/Attach.php:21 +#: ../../Zotlabs/Module/Page.php:75 ../../Zotlabs/Module/Block.php:41 msgid "Channel not found." msgstr "" @@ -8141,29 +8155,43 @@ msgstr "" msgid "Edit Article" msgstr "" -#: ../../Zotlabs/Module/Network.php:110 +#: ../../Zotlabs/Module/Attach_edit.php:69 +#: ../../Zotlabs/Module/Filestorage.php:109 +msgid "File not found." +msgstr "" + +#: ../../Zotlabs/Module/Attach_edit.php:118 +msgid "Can not copy folder into itself." +msgstr "" + +#: ../../Zotlabs/Module/Attach_edit.php:131 +#, php-format +msgid "Can not move folder \"%s\" into itself." +msgstr "" + +#: ../../Zotlabs/Module/Network.php:105 msgid "No such group" msgstr "" -#: ../../Zotlabs/Module/Network.php:157 +#: ../../Zotlabs/Module/Network.php:152 msgid "No such channel" msgstr "" -#: ../../Zotlabs/Module/Network.php:169 ../../Zotlabs/Module/Channel.php:195 +#: ../../Zotlabs/Module/Network.php:164 ../../Zotlabs/Module/Channel.php:189 msgid "Search Results For:" msgstr "" -#: ../../Zotlabs/Module/Network.php:210 ../../Zotlabs/Module/Channel.php:230 -#: ../../Zotlabs/Module/Hq.php:134 ../../Zotlabs/Module/Pubstream.php:99 -#: ../../Zotlabs/Module/Display.php:79 +#: ../../Zotlabs/Module/Network.php:205 ../../Zotlabs/Module/Channel.php:224 +#: ../../Zotlabs/Module/Hq.php:125 ../../Zotlabs/Module/Pubstream.php:95 +#: ../../Zotlabs/Module/Display.php:76 msgid "Reset form" msgstr "" -#: ../../Zotlabs/Module/Network.php:246 +#: ../../Zotlabs/Module/Network.php:239 msgid "Privacy group is empty" msgstr "" -#: ../../Zotlabs/Module/Network.php:256 +#: ../../Zotlabs/Module/Network.php:249 msgid "Privacy group: " msgstr "" @@ -8198,7 +8226,7 @@ msgid "Use this form to import existing posts and content from an export file." msgstr "" #: ../../Zotlabs/Module/Import_items.php:127 -#: ../../Zotlabs/Module/Import.php:632 +#: ../../Zotlabs/Module/Import.php:628 msgid "File to Upload" msgstr "" @@ -8211,42 +8239,42 @@ msgstr "" msgid "No channel. Import failed." msgstr "" -#: ../../Zotlabs/Module/Import.php:625 +#: ../../Zotlabs/Module/Import.php:621 msgid "You must be logged in to use this feature." msgstr "" -#: ../../Zotlabs/Module/Import.php:630 +#: ../../Zotlabs/Module/Import.php:626 msgid "Import Channel" msgstr "" -#: ../../Zotlabs/Module/Import.php:631 +#: ../../Zotlabs/Module/Import.php:627 msgid "" "Use this form to import an existing channel from a different server/hub. You " "may retrieve the channel identity from the old server/hub via the network or " "provide an export file." msgstr "" -#: ../../Zotlabs/Module/Import.php:633 +#: ../../Zotlabs/Module/Import.php:629 msgid "Or provide the old server/hub details" msgstr "" -#: ../../Zotlabs/Module/Import.php:635 +#: ../../Zotlabs/Module/Import.php:631 msgid "Your old identity address (xyz@example.com)" msgstr "" -#: ../../Zotlabs/Module/Import.php:636 +#: ../../Zotlabs/Module/Import.php:632 msgid "Your old login email address" msgstr "" -#: ../../Zotlabs/Module/Import.php:637 +#: ../../Zotlabs/Module/Import.php:633 msgid "Your old login password" msgstr "" -#: ../../Zotlabs/Module/Import.php:638 +#: ../../Zotlabs/Module/Import.php:634 msgid "Import a few months of posts if possible (limited by available memory" msgstr "" -#: ../../Zotlabs/Module/Import.php:640 +#: ../../Zotlabs/Module/Import.php:636 msgid "" "For either option, please choose whether to make this hub your new primary " "address, or whether your old location should continue this role. You will be " @@ -8254,25 +8282,25 @@ msgid "" "location for files, photos, and media." msgstr "" -#: ../../Zotlabs/Module/Import.php:642 +#: ../../Zotlabs/Module/Import.php:638 msgid "Make this hub my primary location" msgstr "" -#: ../../Zotlabs/Module/Import.php:643 +#: ../../Zotlabs/Module/Import.php:639 msgid "Move this channel (disable all previous locations)" msgstr "" -#: ../../Zotlabs/Module/Import.php:644 +#: ../../Zotlabs/Module/Import.php:640 msgid "Use this channel nickname instead of the one provided" msgstr "" -#: ../../Zotlabs/Module/Import.php:644 +#: ../../Zotlabs/Module/Import.php:640 msgid "" "Leave blank to keep your existing channel nickname. You will be randomly " "assigned a similar nickname if either name is already allocated on this site." msgstr "" -#: ../../Zotlabs/Module/Import.php:646 +#: ../../Zotlabs/Module/Import.php:642 msgid "" "This process may take several minutes to complete. Please submit the form " "only once and leave this page open until finished." @@ -8427,7 +8455,7 @@ msgid "yes" msgstr "" #: ../../Zotlabs/Module/Register.php:277 -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:294 msgid "Registration" msgstr "" @@ -8439,18 +8467,18 @@ msgstr "" #: ../../Zotlabs/Module/Search.php:17 #: ../../Zotlabs/Module/Viewconnections.php:23 -#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Display.php:29 +#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Display.php:26 #: ../../Zotlabs/Module/Directory.php:71 ../../Zotlabs/Module/Directory.php:76 -#: ../../Zotlabs/Module/Photos.php:518 +#: ../../Zotlabs/Module/Photos.php:519 msgid "Public access denied." msgstr "" -#: ../../Zotlabs/Module/Search.php:231 +#: ../../Zotlabs/Module/Search.php:222 #, php-format msgid "Items tagged with: %s" msgstr "" -#: ../../Zotlabs/Module/Search.php:233 +#: ../../Zotlabs/Module/Search.php:224 #, php-format msgid "Search results for: %s" msgstr "" @@ -8492,9 +8520,9 @@ msgstr "" msgid "System check" msgstr "" -#: ../../Zotlabs/Module/Setup.php:260 ../../Zotlabs/Module/Cdav.php:1032 +#: ../../Zotlabs/Module/Setup.php:260 ../../Zotlabs/Module/Cdav.php:1036 #: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Events.php:707 -#: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Photos.php:955 +#: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Photos.php:956 msgid "Next" msgstr "" @@ -8963,11 +8991,11 @@ msgstr "" msgid "Only posts" msgstr "" -#: ../../Zotlabs/Module/Channel.php:178 +#: ../../Zotlabs/Module/Channel.php:174 msgid "Insufficient permissions. Request redirected to profile page." msgstr "" -#: ../../Zotlabs/Module/Channel.php:465 ../../Zotlabs/Module/Display.php:376 +#: ../../Zotlabs/Module/Channel.php:449 ../../Zotlabs/Module/Display.php:359 msgid "" "You must enable javascript for your browser to be able to view this content." msgstr "" @@ -9134,10 +9162,10 @@ msgid "Key and Secret are required" msgstr "" #: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137 -#: ../../Zotlabs/Module/Cdav.php:1049 ../../Zotlabs/Module/Cdav.php:1384 +#: ../../Zotlabs/Module/Cdav.php:1053 ../../Zotlabs/Module/Cdav.php:1388 #: ../../Zotlabs/Module/Admin/Addons.php:457 #: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Oauth2.php:58 -#: ../../Zotlabs/Module/Oauth2.php:144 ../../Zotlabs/Module/Connedit.php:942 +#: ../../Zotlabs/Module/Oauth2.php:144 ../../Zotlabs/Module/Connedit.php:931 #: ../../Zotlabs/Lib/Apps.php:536 msgid "Update" msgstr "" @@ -9222,15 +9250,15 @@ msgstr "" msgid "This directory server requires an access token" msgstr "" -#: ../../Zotlabs/Module/Hq.php:140 +#: ../../Zotlabs/Module/Hq.php:131 msgid "Welcome to Hubzilla!" msgstr "" -#: ../../Zotlabs/Module/Hq.php:140 +#: ../../Zotlabs/Module/Hq.php:131 msgid "You have got no unseen posts..." msgstr "" -#: ../../Zotlabs/Module/Pin.php:35 ../../Zotlabs/Module/Item.php:448 +#: ../../Zotlabs/Module/Pin.php:35 ../../Zotlabs/Module/Item.php:450 msgid "Unable to locate original post." msgstr "" @@ -9335,7 +9363,7 @@ msgid "Delete event" msgstr "" #: ../../Zotlabs/Module/Channel_calendar.php:393 -#: ../../Zotlabs/Module/Cdav.php:939 ../../Zotlabs/Module/Cal.php:167 +#: ../../Zotlabs/Module/Cdav.php:943 ../../Zotlabs/Module/Cal.php:167 msgid "Link to source" msgstr "" @@ -9349,57 +9377,57 @@ msgstr "" msgid "Failed to remove event" msgstr "" -#: ../../Zotlabs/Module/Like.php:57 +#: ../../Zotlabs/Module/Like.php:93 msgid "Like/Dislike" msgstr "" -#: ../../Zotlabs/Module/Like.php:62 +#: ../../Zotlabs/Module/Like.php:98 msgid "This action is restricted to members." msgstr "" -#: ../../Zotlabs/Module/Like.php:63 +#: ../../Zotlabs/Module/Like.php:99 msgid "" "Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href=" "\"register\">register as a new $Projectname member</a> to continue." msgstr "" -#: ../../Zotlabs/Module/Like.php:117 ../../Zotlabs/Module/Like.php:143 -#: ../../Zotlabs/Module/Like.php:181 +#: ../../Zotlabs/Module/Like.php:154 ../../Zotlabs/Module/Like.php:180 +#: ../../Zotlabs/Module/Like.php:218 msgid "Invalid request." msgstr "" -#: ../../Zotlabs/Module/Like.php:158 +#: ../../Zotlabs/Module/Like.php:195 msgid "thing" msgstr "" -#: ../../Zotlabs/Module/Like.php:204 +#: ../../Zotlabs/Module/Like.php:241 msgid "Channel unavailable." msgstr "" -#: ../../Zotlabs/Module/Like.php:240 +#: ../../Zotlabs/Module/Like.php:277 msgid "Previous action reversed." msgstr "" -#: ../../Zotlabs/Module/Like.php:426 +#: ../../Zotlabs/Module/Like.php:473 #, php-format msgid "%1$s agrees with %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Like.php:428 +#: ../../Zotlabs/Module/Like.php:475 #, php-format msgid "%1$s doesn't agree with %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Like.php:430 +#: ../../Zotlabs/Module/Like.php:477 #, php-format msgid "%1$s abstains from a decision on %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Like.php:547 +#: ../../Zotlabs/Module/Like.php:592 msgid "Action completed." msgstr "" -#: ../../Zotlabs/Module/Like.php:548 +#: ../../Zotlabs/Module/Like.php:593 msgid "Thank you." msgstr "" @@ -9435,168 +9463,168 @@ msgstr "" msgid "Make this post private" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:814 ../../Zotlabs/Module/Events.php:28 +#: ../../Zotlabs/Module/Cdav.php:818 ../../Zotlabs/Module/Events.php:28 msgid "Calendar entries imported." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:816 ../../Zotlabs/Module/Events.php:30 +#: ../../Zotlabs/Module/Cdav.php:820 ../../Zotlabs/Module/Events.php:30 msgid "No calendar entries found." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:872 +#: ../../Zotlabs/Module/Cdav.php:876 msgid "CardDAV App" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:873 +#: ../../Zotlabs/Module/Cdav.php:877 msgid "CalDAV capable addressbook" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1005 ../../Zotlabs/Module/Events.php:468 +#: ../../Zotlabs/Module/Cdav.php:1009 ../../Zotlabs/Module/Events.php:468 msgid "Event title" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1006 ../../Zotlabs/Module/Events.php:474 +#: ../../Zotlabs/Module/Cdav.php:1010 ../../Zotlabs/Module/Events.php:474 msgid "Start date and time" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1007 +#: ../../Zotlabs/Module/Cdav.php:1011 msgid "End date and time" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1008 ../../Zotlabs/Module/Events.php:497 +#: ../../Zotlabs/Module/Cdav.php:1012 ../../Zotlabs/Module/Events.php:497 msgid "Timezone:" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1031 ../../Zotlabs/Module/Events.php:697 +#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:697 #: ../../Zotlabs/Module/Events.php:706 ../../Zotlabs/Module/Cal.php:205 -#: ../../Zotlabs/Module/Photos.php:946 +#: ../../Zotlabs/Module/Photos.php:947 msgid "Previous" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1033 ../../Zotlabs/Module/Events.php:708 +#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:708 #: ../../Zotlabs/Module/Cal.php:207 msgid "Today" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1034 ../../Zotlabs/Module/Events.php:703 +#: ../../Zotlabs/Module/Cdav.php:1038 ../../Zotlabs/Module/Events.php:703 msgid "Month" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:704 +#: ../../Zotlabs/Module/Cdav.php:1039 ../../Zotlabs/Module/Events.php:704 msgid "Week" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1036 ../../Zotlabs/Module/Events.php:705 +#: ../../Zotlabs/Module/Cdav.php:1040 ../../Zotlabs/Module/Events.php:705 msgid "Day" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1037 +#: ../../Zotlabs/Module/Cdav.php:1041 msgid "List month" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1038 +#: ../../Zotlabs/Module/Cdav.php:1042 msgid "List week" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1039 +#: ../../Zotlabs/Module/Cdav.php:1043 msgid "List day" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1047 +#: ../../Zotlabs/Module/Cdav.php:1051 msgid "More" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1048 +#: ../../Zotlabs/Module/Cdav.php:1052 msgid "Less" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1050 +#: ../../Zotlabs/Module/Cdav.php:1054 msgid "Select calendar" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1053 +#: ../../Zotlabs/Module/Cdav.php:1057 msgid "Delete all" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1056 +#: ../../Zotlabs/Module/Cdav.php:1060 msgid "Sorry! Editing of recurrent events is not yet implemented." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1369 ../../Zotlabs/Module/Connedit.php:927 +#: ../../Zotlabs/Module/Cdav.php:1373 ../../Zotlabs/Module/Connedit.php:916 msgid "Organisation" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1371 ../../Zotlabs/Module/Profiles.php:788 -#: ../../Zotlabs/Module/Connedit.php:929 +#: ../../Zotlabs/Module/Cdav.php:1375 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Connedit.php:918 msgid "Phone" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1373 ../../Zotlabs/Module/Profiles.php:790 -#: ../../Zotlabs/Module/Connedit.php:931 +#: ../../Zotlabs/Module/Cdav.php:1377 ../../Zotlabs/Module/Profiles.php:790 +#: ../../Zotlabs/Module/Connedit.php:920 msgid "Instant messenger" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1374 ../../Zotlabs/Module/Profiles.php:791 -#: ../../Zotlabs/Module/Connedit.php:932 +#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Connedit.php:921 msgid "Website" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Cdav.php:1379 #: ../../Zotlabs/Module/Admin/Channels.php:160 #: ../../Zotlabs/Module/Profiles.php:504 ../../Zotlabs/Module/Profiles.php:792 -#: ../../Zotlabs/Module/Connedit.php:933 ../../Zotlabs/Module/Locs.php:122 +#: ../../Zotlabs/Module/Connedit.php:922 ../../Zotlabs/Module/Locs.php:129 msgid "Address" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Profiles.php:793 -#: ../../Zotlabs/Module/Connedit.php:934 +#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Profiles.php:793 +#: ../../Zotlabs/Module/Connedit.php:923 msgid "Note" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:798 -#: ../../Zotlabs/Module/Connedit.php:939 +#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Profiles.php:798 +#: ../../Zotlabs/Module/Connedit.php:928 msgid "Add Contact" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Profiles.php:799 -#: ../../Zotlabs/Module/Connedit.php:940 +#: ../../Zotlabs/Module/Cdav.php:1386 ../../Zotlabs/Module/Profiles.php:799 +#: ../../Zotlabs/Module/Connedit.php:929 msgid "Add Field" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Connedit.php:945 +#: ../../Zotlabs/Module/Cdav.php:1391 ../../Zotlabs/Module/Connedit.php:934 msgid "P.O. Box" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1388 ../../Zotlabs/Module/Connedit.php:946 +#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:935 msgid "Additional" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1389 ../../Zotlabs/Module/Connedit.php:947 +#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Connedit.php:936 msgid "Street" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1390 ../../Zotlabs/Module/Connedit.php:948 +#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:937 msgid "Locality" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1391 ../../Zotlabs/Module/Connedit.php:949 +#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:938 msgid "Region" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:950 +#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:939 msgid "ZIP Code" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Profiles.php:759 -#: ../../Zotlabs/Module/Connedit.php:951 +#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Profiles.php:759 +#: ../../Zotlabs/Module/Connedit.php:940 msgid "Country" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1452 +#: ../../Zotlabs/Module/Cdav.php:1456 msgid "Default Calendar" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1463 +#: ../../Zotlabs/Module/Cdav.php:1467 msgid "Default Addressbook" msgstr "" @@ -9614,32 +9642,32 @@ msgctxt "acl" msgid "Profile" msgstr "" -#: ../../Zotlabs/Module/Item.php:734 +#: ../../Zotlabs/Module/Item.php:736 msgid "Empty post discarded." msgstr "" -#: ../../Zotlabs/Module/Item.php:1186 +#: ../../Zotlabs/Module/Item.php:1187 msgid "Duplicate post suppressed." msgstr "" -#: ../../Zotlabs/Module/Item.php:1331 +#: ../../Zotlabs/Module/Item.php:1332 msgid "System error. Post not saved." msgstr "" -#: ../../Zotlabs/Module/Item.php:1365 +#: ../../Zotlabs/Module/Item.php:1366 msgid "Your comment is awaiting approval." msgstr "" -#: ../../Zotlabs/Module/Item.php:1482 +#: ../../Zotlabs/Module/Item.php:1496 msgid "Unable to obtain post information from database." msgstr "" -#: ../../Zotlabs/Module/Item.php:1489 +#: ../../Zotlabs/Module/Item.php:1503 #, php-format msgid "You have reached your limit of %1$.0f top level posts." msgstr "" -#: ../../Zotlabs/Module/Item.php:1496 +#: ../../Zotlabs/Module/Item.php:1510 #, php-format msgid "You have reached your limit of %1$.0f webpages." msgstr "" @@ -9783,7 +9811,7 @@ msgid "NEW" msgstr "" #: ../../Zotlabs/Module/Sharedwithme.php:109 -#: ../../Zotlabs/Storage/Browser.php:294 +#: ../../Zotlabs/Storage/Browser.php:373 msgid "Last Modified" msgstr "" @@ -9885,44 +9913,47 @@ msgstr "" msgid "Import complete." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:103 -msgid "File not found." +#: ../../Zotlabs/Module/Filestorage.php:14 +#: ../../Zotlabs/Module/Filestorage.php:53 +msgid "Deprecated!" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:152 +#: ../../Zotlabs/Module/Filestorage.php:157 msgid "Permission Denied." msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:185 +#: ../../Zotlabs/Module/Filestorage.php:190 msgid "Edit file permissions" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:198 +#: ../../Zotlabs/Module/Filestorage.php:203 msgid "Include all files and sub folders" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:199 +#: ../../Zotlabs/Module/Filestorage.php:204 msgid "Return to file list" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:201 +#: ../../Zotlabs/Module/Filestorage.php:206 +#: ../../Zotlabs/Storage/Browser.php:379 msgid "Copy/paste this code to attach file to a post" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:202 +#: ../../Zotlabs/Module/Filestorage.php:207 +#: ../../Zotlabs/Storage/Browser.php:380 msgid "Copy/paste this URL to link file from a web page" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:204 +#: ../../Zotlabs/Module/Filestorage.php:209 msgid "Share this file" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:205 +#: ../../Zotlabs/Module/Filestorage.php:210 msgid "Show URL to this file" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Storage/Browser.php:411 +#: ../../Zotlabs/Module/Filestorage.php:211 +#: ../../Zotlabs/Storage/Browser.php:545 msgid "Show in your contacts shared folder" msgstr "" @@ -9981,19 +10012,19 @@ msgstr "" msgid "Restricted or Premium Channel" msgstr "" -#: ../../Zotlabs/Module/Cloud.php:116 +#: ../../Zotlabs/Module/Cloud.php:120 msgid "Not found" msgstr "" -#: ../../Zotlabs/Module/Cloud.php:122 +#: ../../Zotlabs/Module/Cloud.php:126 msgid "Please refresh page" msgstr "" -#: ../../Zotlabs/Module/Cloud.php:125 +#: ../../Zotlabs/Module/Cloud.php:129 msgid "Unknown error" msgstr "" -#: ../../Zotlabs/Module/Share.php:104 ../../Zotlabs/Lib/Activity.php:2119 +#: ../../Zotlabs/Module/Share.php:104 ../../Zotlabs/Lib/Activity.php:2133 #, php-format msgid "🔁 Repeated %1$s's %2$s" msgstr "" @@ -10002,7 +10033,7 @@ msgstr "" msgid "Post repeated" msgstr "" -#: ../../Zotlabs/Module/Acl.php:361 +#: ../../Zotlabs/Module/Acl.php:368 msgid "network" msgstr "" @@ -10010,7 +10041,7 @@ msgstr "" msgid "Item is not editable" msgstr "" -#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 +#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:150 msgid "Edit post" msgstr "" @@ -10095,7 +10126,7 @@ msgstr "" #: ../../Zotlabs/Module/Admin/Themes.php:156 #: ../../Zotlabs/Module/Admin/Security.php:98 #: ../../Zotlabs/Module/Admin/Accounts.php:166 -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:291 #: ../../Zotlabs/Module/Admin/Logs.php:82 #: ../../Zotlabs/Module/Admin/Channels.php:145 #: ../../Zotlabs/Module/Admin/Addons.php:342 @@ -10313,12 +10344,12 @@ msgid "No registrations." msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:176 -#: ../../Zotlabs/Module/Connedit.php:639 +#: ../../Zotlabs/Module/Connedit.php:628 msgid "Block" msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:177 -#: ../../Zotlabs/Module/Connedit.php:639 +#: ../../Zotlabs/Module/Connedit.php:628 msgid "Unblock" msgstr "" @@ -10358,420 +10389,430 @@ msgid "" "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:159 +#: ../../Zotlabs/Module/Admin/Site.php:165 msgid "Site settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:196 -#: ../../Zotlabs/Module/Settings/Display.php:120 +#: ../../Zotlabs/Module/Admin/Site.php:202 +#: ../../Zotlabs/Module/Settings/Display.php:118 #, php-format msgid "%s - (Incompatible)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:203 +#: ../../Zotlabs/Module/Admin/Site.php:209 msgid "mobile" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:205 +#: ../../Zotlabs/Module/Admin/Site.php:211 msgid "experimental" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:207 +#: ../../Zotlabs/Module/Admin/Site.php:213 msgid "unsupported" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:254 +#: ../../Zotlabs/Module/Admin/Site.php:260 msgid "Yes - with approval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:260 +#: ../../Zotlabs/Module/Admin/Site.php:266 msgid "My site is not a public server" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:261 +#: ../../Zotlabs/Module/Admin/Site.php:267 msgid "My site has paid access only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:262 +#: ../../Zotlabs/Module/Admin/Site.php:268 msgid "My site has free access only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:263 +#: ../../Zotlabs/Module/Admin/Site.php:269 msgid "My site offers free accounts with optional paid upgrades" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:283 msgid "Default permission role for new accounts" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:283 msgid "" "This role will be used for the first channel created after registration." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:295 msgid "File upload" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "Policies" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Banner/Logo" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Unfiltered HTML/CSS/JS is allowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:304 msgid "Administrator Information" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:304 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:299 ../../Zotlabs/Module/Siteinfo.php:24 +#: ../../Zotlabs/Module/Admin/Site.php:305 ../../Zotlabs/Module/Siteinfo.php:24 msgid "Site Information" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "" "Publicly visible description of this site. Displayed on siteinfo page. " "BBCode can be used here" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "System language" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "System theme" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:310 msgid "Allow Feeds as Connections" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:310 msgid "(Heavy system resource usage)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:311 msgid "Maximum image size" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:311 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Admin/Site.php:312 msgid "Does this site allow new member registration?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:307 +#: ../../Zotlabs/Module/Admin/Site.php:313 msgid "Invitation only" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:307 +#: ../../Zotlabs/Module/Admin/Site.php:313 msgid "" "Only allow new member registrations with an invitation code. Above register " "policy must be set to Yes." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:308 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "Minimum age" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:308 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "Minimum age (in years) for who may register on this site." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:309 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "Which best describes the types of account offered by this hub?" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:309 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "This is displayed on the public server site list." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "Register text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "Will be displayed prominently on the registration page." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:318 msgid "Site homepage to show visitors (default: login box)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:318 msgid "" "example: 'pubstream' to show public stream, 'page/sys/home' to show a system " "webpage called 'home' or 'include:home.html' to include a file." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:313 +#: ../../Zotlabs/Module/Admin/Site.php:319 msgid "Preserve site homepage URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:313 +#: ../../Zotlabs/Module/Admin/Site.php:319 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:320 msgid "Accounts abandoned after x days" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:320 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:321 msgid "Allowed friend domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:321 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:322 msgid "Verify Email Addresses" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:322 msgid "" "Check to verify email addresses used in account registration (recommended)." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:317 +#: ../../Zotlabs/Module/Admin/Site.php:323 msgid "Force publish" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:317 +#: ../../Zotlabs/Module/Admin/Site.php:323 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:318 +#: ../../Zotlabs/Module/Admin/Site.php:324 msgid "Import Public Streams" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:318 +#: ../../Zotlabs/Module/Admin/Site.php:324 msgid "" "Import and allow access to public content pulled from other sites. Warning: " "this content is unmoderated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../Zotlabs/Module/Admin/Site.php:325 msgid "Site only Public Streams" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../Zotlabs/Module/Admin/Site.php:325 msgid "" "Allow access to public content originating only from this site if Imported " "Public Streams are disabled." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:320 +#: ../../Zotlabs/Module/Admin/Site.php:326 msgid "Allow anybody on the internet to access the Public streams" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:320 +#: ../../Zotlabs/Module/Admin/Site.php:326 msgid "" "Disable to require authentication before viewing. Warning: this content is " "unmoderated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:321 +#: ../../Zotlabs/Module/Admin/Site.php:327 msgid "Only import Public stream posts with this text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:321 -#: ../../Zotlabs/Module/Admin/Site.php:322 -#: ../../Zotlabs/Module/Connedit.php:895 ../../Zotlabs/Module/Connedit.php:896 +#: ../../Zotlabs/Module/Admin/Site.php:327 +#: ../../Zotlabs/Module/Admin/Site.php:328 +#: ../../Zotlabs/Module/Connedit.php:884 ../../Zotlabs/Module/Connedit.php:885 msgid "" "words one per line or #tags or /patterns/ or lang=xx, leave blank to import " "all posts" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:322 +#: ../../Zotlabs/Module/Admin/Site.php:328 msgid "Do not import Public stream posts with this text" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:325 +#: ../../Zotlabs/Module/Admin/Site.php:331 msgid "Login on Homepage" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:325 +#: ../../Zotlabs/Module/Admin/Site.php:331 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:326 +#: ../../Zotlabs/Module/Admin/Site.php:332 msgid "Enable context help" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:326 +#: ../../Zotlabs/Module/Admin/Site.php:332 msgid "" "Display contextual help for the current page when the help button is pressed." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:328 +#: ../../Zotlabs/Module/Admin/Site.php:334 msgid "Reply-to email address for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:329 +#: ../../Zotlabs/Module/Admin/Site.php:335 msgid "Sender (From) email address for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:330 +#: ../../Zotlabs/Module/Admin/Site.php:336 msgid "Name of email sender for system generated email." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:332 +#: ../../Zotlabs/Module/Admin/Site.php:338 msgid "Directory Server URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:332 +#: ../../Zotlabs/Module/Admin/Site.php:338 msgid "Default directory server" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:334 +#: ../../Zotlabs/Module/Admin/Site.php:340 +msgid "Enable SSE Notifications" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Site.php:340 +msgid "" +"If disabled, traditional polling will be used. Warning: this setting might " +"not be suited for shared hosting" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Site.php:342 msgid "Proxy user" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:335 +#: ../../Zotlabs/Module/Admin/Site.php:343 msgid "Proxy URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:336 +#: ../../Zotlabs/Module/Admin/Site.php:344 msgid "Network timeout" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:336 +#: ../../Zotlabs/Module/Admin/Site.php:344 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:337 +#: ../../Zotlabs/Module/Admin/Site.php:345 msgid "Delivery interval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:337 +#: ../../Zotlabs/Module/Admin/Site.php:345 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:338 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "Deliveries per process" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:338 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust " "if necessary to tune system performance. Recommend: 1-5." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:339 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "Queue Threshold" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:339 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "" "Always defer immediate delivery if queue contains more than this number of " "entries." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:340 +#: ../../Zotlabs/Module/Admin/Site.php:348 msgid "Poll interval" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:340 +#: ../../Zotlabs/Module/Admin/Site.php:348 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:341 +#: ../../Zotlabs/Module/Admin/Site.php:349 msgid "Path to ImageMagick convert program" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:341 +#: ../../Zotlabs/Module/Admin/Site.php:349 msgid "" "If set, use this program to generate photo thumbnails for huge images ( > " "4000 pixels in either dimension), otherwise memory exhaustion may occur. " "Example: /usr/bin/convert" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:342 +#: ../../Zotlabs/Module/Admin/Site.php:350 msgid "Maximum Load Average" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:342 +#: ../../Zotlabs/Module/Admin/Site.php:350 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:343 +#: ../../Zotlabs/Module/Admin/Site.php:351 msgid "Expiration period in days for imported (grid/network) content" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:343 +#: ../../Zotlabs/Module/Admin/Site.php:351 msgid "0 for no expiration of imported content" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:344 +#: ../../Zotlabs/Module/Admin/Site.php:352 msgid "" "Do not expire any posts which have comments less than this many days ago" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:346 +#: ../../Zotlabs/Module/Admin/Site.php:354 msgid "" "Public servers: Optional landing (marketing) webpage for new registrants" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:346 +#: ../../Zotlabs/Module/Admin/Site.php:354 #, php-format msgid "Create this page first. Default is %s/register" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:347 +#: ../../Zotlabs/Module/Admin/Site.php:355 msgid "Page to display after creating a new channel" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:347 +#: ../../Zotlabs/Module/Admin/Site.php:355 msgid "Default: profiles" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:357 msgid "Optional: site location" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:357 msgid "Region or country" msgstr "" @@ -11509,11 +11550,11 @@ msgid "" "or restore these in date order (oldest first)." msgstr "" -#: ../../Zotlabs/Module/Display.php:394 +#: ../../Zotlabs/Module/Display.php:377 msgid "Article" msgstr "" -#: ../../Zotlabs/Module/Display.php:439 +#: ../../Zotlabs/Module/Display.php:422 msgid "Item has been removed." msgstr "" @@ -11617,11 +11658,11 @@ msgstr "" msgid "shared a file with you" msgstr "" -#: ../../Zotlabs/Module/Ping.php:672 ../../Zotlabs/Module/Sse_bs.php:539 +#: ../../Zotlabs/Module/Ping.php:672 ../../Zotlabs/Module/Sse_bs.php:540 msgid "Private forum" msgstr "" -#: ../../Zotlabs/Module/Ping.php:672 ../../Zotlabs/Module/Sse_bs.php:539 +#: ../../Zotlabs/Module/Ping.php:672 ../../Zotlabs/Module/Sse_bs.php:540 msgid "Public forum" msgstr "" @@ -11945,7 +11986,7 @@ msgstr "" msgid "Validation token" msgstr "" -#: ../../Zotlabs/Module/Attach.php:13 +#: ../../Zotlabs/Module/Attach.php:67 msgid "Item not available." msgstr "" @@ -12058,15 +12099,15 @@ msgstr "" msgid "Edit Block" msgstr "" -#: ../../Zotlabs/Module/Filer.php:52 +#: ../../Zotlabs/Module/Filer.php:53 msgid "Enter a folder name" msgstr "" -#: ../../Zotlabs/Module/Filer.php:52 +#: ../../Zotlabs/Module/Filer.php:53 msgid "or select an existing folder (doubleclick)" msgstr "" -#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:184 +#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Lib/ThreadItem.php:184 msgid "Save to Folder" msgstr "" @@ -12200,7 +12241,7 @@ msgid "Ignore connection" msgstr "" #: ../../Zotlabs/Module/Connections.php:344 -#: ../../Zotlabs/Module/Connedit.php:647 +#: ../../Zotlabs/Module/Connedit.php:636 msgid "Ignore" msgstr "" @@ -12245,156 +12286,156 @@ msgstr "" msgid "Delete Album" msgstr "" -#: ../../Zotlabs/Module/Photos.php:176 ../../Zotlabs/Module/Photos.php:1058 +#: ../../Zotlabs/Module/Photos.php:176 ../../Zotlabs/Module/Photos.php:1059 msgid "Delete Photo" msgstr "" -#: ../../Zotlabs/Module/Photos.php:529 +#: ../../Zotlabs/Module/Photos.php:530 msgid "No photos selected" msgstr "" -#: ../../Zotlabs/Module/Photos.php:578 +#: ../../Zotlabs/Module/Photos.php:579 msgid "Access to this item is restricted." msgstr "" -#: ../../Zotlabs/Module/Photos.php:621 +#: ../../Zotlabs/Module/Photos.php:622 #, php-format msgid "%1$.2f MB of %2$.2f MB photo storage used." msgstr "" -#: ../../Zotlabs/Module/Photos.php:624 +#: ../../Zotlabs/Module/Photos.php:625 #, php-format msgid "%1$.2f MB photo storage used." msgstr "" -#: ../../Zotlabs/Module/Photos.php:666 +#: ../../Zotlabs/Module/Photos.php:667 msgid "Upload Photos" msgstr "" -#: ../../Zotlabs/Module/Photos.php:670 +#: ../../Zotlabs/Module/Photos.php:671 msgid "Enter an album name" msgstr "" -#: ../../Zotlabs/Module/Photos.php:671 +#: ../../Zotlabs/Module/Photos.php:672 msgid "or select an existing album (doubleclick)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:672 +#: ../../Zotlabs/Module/Photos.php:673 msgid "Create a status post for this upload" msgstr "" -#: ../../Zotlabs/Module/Photos.php:674 +#: ../../Zotlabs/Module/Photos.php:675 msgid "Description (optional)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:760 +#: ../../Zotlabs/Module/Photos.php:761 msgid "Show Newest First" msgstr "" -#: ../../Zotlabs/Module/Photos.php:762 +#: ../../Zotlabs/Module/Photos.php:763 msgid "Show Oldest First" msgstr "" -#: ../../Zotlabs/Module/Photos.php:819 ../../Zotlabs/Module/Photos.php:1363 +#: ../../Zotlabs/Module/Photos.php:820 ../../Zotlabs/Module/Photos.php:1364 msgid "Add Photos" msgstr "" -#: ../../Zotlabs/Module/Photos.php:867 +#: ../../Zotlabs/Module/Photos.php:868 msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: ../../Zotlabs/Module/Photos.php:869 +#: ../../Zotlabs/Module/Photos.php:870 msgid "Photo not available" msgstr "" -#: ../../Zotlabs/Module/Photos.php:927 +#: ../../Zotlabs/Module/Photos.php:928 msgid "Use as profile photo" msgstr "" -#: ../../Zotlabs/Module/Photos.php:928 +#: ../../Zotlabs/Module/Photos.php:929 msgid "Use as cover photo" msgstr "" -#: ../../Zotlabs/Module/Photos.php:935 +#: ../../Zotlabs/Module/Photos.php:936 msgid "Private Photo" msgstr "" -#: ../../Zotlabs/Module/Photos.php:950 +#: ../../Zotlabs/Module/Photos.php:951 msgid "View Full Size" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1032 +#: ../../Zotlabs/Module/Photos.php:1033 msgid "Edit photo" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1034 +#: ../../Zotlabs/Module/Photos.php:1035 msgid "Rotate CW (right)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1035 +#: ../../Zotlabs/Module/Photos.php:1036 msgid "Rotate CCW (left)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1038 +#: ../../Zotlabs/Module/Photos.php:1039 msgid "Move photo to album" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1039 +#: ../../Zotlabs/Module/Photos.php:1040 msgid "Enter a new album name" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1040 +#: ../../Zotlabs/Module/Photos.php:1041 msgid "or select an existing one (doubleclick)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1045 +#: ../../Zotlabs/Module/Photos.php:1046 msgid "Add a Tag" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1053 +#: ../../Zotlabs/Module/Photos.php:1054 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1056 +#: ../../Zotlabs/Module/Photos.php:1057 msgid "Flag as adult in album view" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1075 ../../Zotlabs/Lib/ThreadItem.php:317 +#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:317 msgid "I like this (toggle)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:318 +#: ../../Zotlabs/Module/Photos.php:1077 ../../Zotlabs/Lib/ThreadItem.php:318 msgid "I don't like this (toggle)" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1094 ../../Zotlabs/Module/Photos.php:1212 +#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1213 #: ../../Zotlabs/Lib/ThreadItem.php:822 msgid "This is you" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Module/Photos.php:1143 +#: ../../Zotlabs/Module/Photos.php:1132 ../../Zotlabs/Module/Photos.php:1144 #: ../../Zotlabs/Lib/ThreadItem.php:238 ../../Zotlabs/Lib/ThreadItem.php:250 msgid "View all" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1246 +#: ../../Zotlabs/Module/Photos.php:1247 msgid "Photo Tools" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1255 +#: ../../Zotlabs/Module/Photos.php:1256 msgid "In This Photo:" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1260 +#: ../../Zotlabs/Module/Photos.php:1261 msgid "Map" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:489 +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:489 msgctxt "noun" msgid "Likes" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:490 +#: ../../Zotlabs/Module/Photos.php:1270 ../../Zotlabs/Lib/ThreadItem.php:490 msgctxt "noun" msgid "Dislikes" msgstr "" @@ -12423,7 +12464,7 @@ msgid "" "Password reset failed." msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1707 +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1708 msgid "Password Reset" msgstr "" @@ -13455,90 +13496,82 @@ msgstr "" msgid "Calendar Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:129 +#: ../../Zotlabs/Module/Settings/Display.php:127 #, php-format msgid "%s - (Experimental)" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:185 +#: ../../Zotlabs/Module/Settings/Display.php:183 msgid "Display Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:186 +#: ../../Zotlabs/Module/Settings/Display.php:184 msgid "Theme Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:187 +#: ../../Zotlabs/Module/Settings/Display.php:185 msgid "Custom Theme Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:188 +#: ../../Zotlabs/Module/Settings/Display.php:186 msgid "Content Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:194 +#: ../../Zotlabs/Module/Settings/Display.php:192 msgid "Display Theme:" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:195 +#: ../../Zotlabs/Module/Settings/Display.php:193 msgid "Select scheme" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:197 +#: ../../Zotlabs/Module/Settings/Display.php:195 msgid "Preload images before rendering the page" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:197 +#: ../../Zotlabs/Module/Settings/Display.php:195 msgid "" "The subjective page load time will be longer but the page will be ready when " "displayed" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:198 +#: ../../Zotlabs/Module/Settings/Display.php:196 msgid "Enable user zoom on mobile devices" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:199 +#: ../../Zotlabs/Module/Settings/Display.php:197 msgid "Update browser every xx seconds" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:199 +#: ../../Zotlabs/Module/Settings/Display.php:197 msgid "Minimum of 10 seconds, no maximum" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:200 +#: ../../Zotlabs/Module/Settings/Display.php:198 msgid "Maximum number of conversations to load at any time:" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:200 +#: ../../Zotlabs/Module/Settings/Display.php:198 msgid "Maximum of 30 items" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:201 +#: ../../Zotlabs/Module/Settings/Display.php:199 msgid "Show emoticons (smilies) as images" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:202 +#: ../../Zotlabs/Module/Settings/Display.php:200 msgid "Provide channel menu in navigation bar" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:202 +#: ../../Zotlabs/Module/Settings/Display.php:200 msgid "Default: channel menu located in app menu" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:203 -msgid "Manual conversation updates" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Display.php:203 -msgid "Default is on, turning this off may increase screen jumping" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Display.php:204 +#: ../../Zotlabs/Module/Settings/Display.php:201 msgid "Link post titles to source" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:206 +#: ../../Zotlabs/Module/Settings/Display.php:203 msgid "Display new member quick links menu" msgstr "" @@ -13610,7 +13643,7 @@ msgstr "" msgid "Submit and proceed" msgstr "" -#: ../../Zotlabs/Module/Menu.php:177 ../../Zotlabs/Module/Locs.php:124 +#: ../../Zotlabs/Module/Menu.php:177 ../../Zotlabs/Module/Locs.php:131 msgid "Drop" msgstr "" @@ -13674,23 +13707,23 @@ msgstr "" msgid "Set custom default permissions for new connections" msgstr "" -#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:870 +#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:859 msgid "Connection Default Permissions" msgstr "" -#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:871 +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:860 msgid "Apply these permissions automatically" msgstr "" -#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:872 +#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:861 msgid "Permission role" msgstr "" -#: ../../Zotlabs/Module/Defperms.php:258 ../../Zotlabs/Module/Connedit.php:873 +#: ../../Zotlabs/Module/Defperms.php:258 ../../Zotlabs/Module/Connedit.php:862 msgid "Add permission role" msgstr "" -#: ../../Zotlabs/Module/Defperms.php:262 ../../Zotlabs/Module/Connedit.php:886 +#: ../../Zotlabs/Module/Defperms.php:262 ../../Zotlabs/Module/Connedit.php:875 msgid "" "The permissions indicated on this page will be applied to all new " "connections." @@ -13951,7 +13984,7 @@ msgstr "" msgid "Error downloading wiki: " msgstr "" -#: ../../Zotlabs/Module/Wiki.php:212 +#: ../../Zotlabs/Module/Wiki.php:212 ../../Zotlabs/Storage/Browser.php:397 msgid "Download" msgstr "" @@ -13963,7 +13996,7 @@ msgstr "" msgid "Content type" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:292 +#: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:371 msgid "Type" msgstr "" @@ -14104,232 +14137,232 @@ msgstr "" msgid "Failed to update connection record." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:320 +#: ../../Zotlabs/Module/Connedit.php:309 msgid "is now connected to" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:445 +#: ../../Zotlabs/Module/Connedit.php:434 msgid "Could not access address book record." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:493 ../../Zotlabs/Module/Connedit.php:497 +#: ../../Zotlabs/Module/Connedit.php:482 ../../Zotlabs/Module/Connedit.php:486 msgid "Refresh failed - channel is currently unavailable." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:512 ../../Zotlabs/Module/Connedit.php:521 -#: ../../Zotlabs/Module/Connedit.php:530 ../../Zotlabs/Module/Connedit.php:539 -#: ../../Zotlabs/Module/Connedit.php:552 +#: ../../Zotlabs/Module/Connedit.php:501 ../../Zotlabs/Module/Connedit.php:510 +#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Module/Connedit.php:528 +#: ../../Zotlabs/Module/Connedit.php:541 msgid "Unable to set address book parameters." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:571 +#: ../../Zotlabs/Module/Connedit.php:560 msgid "Connection has been removed." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:614 +#: ../../Zotlabs/Module/Connedit.php:603 #, php-format msgid "View %s's profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:618 +#: ../../Zotlabs/Module/Connedit.php:607 msgid "Refresh Permissions" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:621 +#: ../../Zotlabs/Module/Connedit.php:610 msgid "Fetch updated permissions" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:625 +#: ../../Zotlabs/Module/Connedit.php:614 msgid "Refresh Photo" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:628 +#: ../../Zotlabs/Module/Connedit.php:617 msgid "Fetch updated photo" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:635 +#: ../../Zotlabs/Module/Connedit.php:624 msgid "View recent posts and comments" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:642 +#: ../../Zotlabs/Module/Connedit.php:631 msgid "Block (or Unblock) all communications with this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:643 +#: ../../Zotlabs/Module/Connedit.php:632 msgid "This connection is blocked!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:647 +#: ../../Zotlabs/Module/Connedit.php:636 msgid "Unignore" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:650 +#: ../../Zotlabs/Module/Connedit.php:639 msgid "Ignore (or Unignore) all inbound communications from this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:651 +#: ../../Zotlabs/Module/Connedit.php:640 msgid "This connection is ignored!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:655 +#: ../../Zotlabs/Module/Connedit.php:644 msgid "Unarchive" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:655 +#: ../../Zotlabs/Module/Connedit.php:644 msgid "Archive" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:658 +#: ../../Zotlabs/Module/Connedit.php:647 msgid "" "Archive (or Unarchive) this connection - mark channel dead but keep content" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:659 +#: ../../Zotlabs/Module/Connedit.php:648 msgid "This connection is archived!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:663 +#: ../../Zotlabs/Module/Connedit.php:652 msgid "Unhide" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:663 +#: ../../Zotlabs/Module/Connedit.php:652 msgid "Hide" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:666 +#: ../../Zotlabs/Module/Connedit.php:655 msgid "Hide or Unhide this connection from your other connections" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:667 +#: ../../Zotlabs/Module/Connedit.php:656 msgid "This connection is hidden!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:674 +#: ../../Zotlabs/Module/Connedit.php:663 msgid "Delete this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:682 +#: ../../Zotlabs/Module/Connedit.php:671 msgid "Fetch Vcard" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:685 +#: ../../Zotlabs/Module/Connedit.php:674 msgid "Fetch electronic calling card for this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:696 +#: ../../Zotlabs/Module/Connedit.php:685 msgid "Open Individual Permissions section by default" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:719 +#: ../../Zotlabs/Module/Connedit.php:708 msgid "Affinity" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:722 +#: ../../Zotlabs/Module/Connedit.php:711 msgid "Open Set Affinity section by default" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:759 +#: ../../Zotlabs/Module/Connedit.php:748 msgid "Filter" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:762 +#: ../../Zotlabs/Module/Connedit.php:751 msgid "Open Custom Filter section by default" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:799 +#: ../../Zotlabs/Module/Connedit.php:788 msgid "Approve this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:799 +#: ../../Zotlabs/Module/Connedit.php:788 msgid "Accept connection to allow communication" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:804 +#: ../../Zotlabs/Module/Connedit.php:793 msgid "Set Affinity" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:807 +#: ../../Zotlabs/Module/Connedit.php:796 msgid "Set Profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:810 +#: ../../Zotlabs/Module/Connedit.php:799 msgid "Set Affinity & Profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:858 +#: ../../Zotlabs/Module/Connedit.php:847 msgid "This connection is unreachable from this location." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:859 +#: ../../Zotlabs/Module/Connedit.php:848 msgid "This connection may be unreachable from other channel locations." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:861 +#: ../../Zotlabs/Module/Connedit.php:850 msgid "Location independence is not supported by their network." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:867 +#: ../../Zotlabs/Module/Connedit.php:856 msgid "" "This connection is unreachable from this location. Location independence is " "not supported by their network." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:871 +#: ../../Zotlabs/Module/Connedit.php:860 msgid "Connection requests will be approved without your interaction" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:880 +#: ../../Zotlabs/Module/Connedit.php:869 msgid "This connection's primary address is" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:881 +#: ../../Zotlabs/Module/Connedit.php:870 msgid "Available locations:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:887 +#: ../../Zotlabs/Module/Connedit.php:876 msgid "Connection Tools" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:889 +#: ../../Zotlabs/Module/Connedit.php:878 msgid "Slide to adjust your degree of friendship" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:891 +#: ../../Zotlabs/Module/Connedit.php:880 msgid "Slide to adjust your rating" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:897 +#: ../../Zotlabs/Module/Connedit.php:881 ../../Zotlabs/Module/Connedit.php:886 msgid "Optionally explain your rating" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:894 +#: ../../Zotlabs/Module/Connedit.php:883 msgid "Custom Filter" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:895 +#: ../../Zotlabs/Module/Connedit.php:884 msgid "Only import posts with this text" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:896 +#: ../../Zotlabs/Module/Connedit.php:885 msgid "Do not import posts with this text" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:898 +#: ../../Zotlabs/Module/Connedit.php:887 msgid "This information is public!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:903 +#: ../../Zotlabs/Module/Connedit.php:892 msgid "Connection Pending Approval" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:908 +#: ../../Zotlabs/Module/Connedit.php:897 #, php-format msgid "" "Please choose the profile you would like to display to %s when viewing your " "profile securely." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:915 +#: ../../Zotlabs/Module/Connedit.php:904 msgid "" "Some permissions may be inherited from your channel's <a href=\"settings" "\"><strong>privacy settings</strong></a>, which have higher priority than " @@ -14337,11 +14370,11 @@ msgid "" "any impact unless the inherited setting changes." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:916 +#: ../../Zotlabs/Module/Connedit.php:905 msgid "Last update:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:924 +#: ../../Zotlabs/Module/Connedit.php:913 msgid "Details" msgstr "" @@ -14370,47 +14403,47 @@ msgstr "" msgid "Download PDL file" msgstr "" -#: ../../Zotlabs/Module/Locs.php:27 ../../Zotlabs/Module/Locs.php:57 +#: ../../Zotlabs/Module/Locs.php:27 ../../Zotlabs/Module/Locs.php:66 msgid "Location not found." msgstr "" -#: ../../Zotlabs/Module/Locs.php:65 +#: ../../Zotlabs/Module/Locs.php:75 msgid "Location lookup failed." msgstr "" -#: ../../Zotlabs/Module/Locs.php:69 +#: ../../Zotlabs/Module/Locs.php:79 msgid "" "Please select another location to become primary before removing the primary " "location." msgstr "" -#: ../../Zotlabs/Module/Locs.php:99 +#: ../../Zotlabs/Module/Locs.php:108 msgid "Syncing locations" msgstr "" -#: ../../Zotlabs/Module/Locs.php:109 +#: ../../Zotlabs/Module/Locs.php:117 msgid "No locations found." msgstr "" -#: ../../Zotlabs/Module/Locs.php:120 +#: ../../Zotlabs/Module/Locs.php:127 msgid "Manage Channel Locations" msgstr "" -#: ../../Zotlabs/Module/Locs.php:126 +#: ../../Zotlabs/Module/Locs.php:133 msgid "Sync Now" msgstr "" -#: ../../Zotlabs/Module/Locs.php:127 +#: ../../Zotlabs/Module/Locs.php:134 msgid "Please wait several minutes between consecutive operations." msgstr "" -#: ../../Zotlabs/Module/Locs.php:128 +#: ../../Zotlabs/Module/Locs.php:135 msgid "" "When possible, drop a location by logging into that website/hub and removing " "your channel." msgstr "" -#: ../../Zotlabs/Module/Locs.php:129 +#: ../../Zotlabs/Module/Locs.php:136 msgid "Use this form to drop the location if the hub is no longer operating." msgstr "" @@ -14571,32 +14604,32 @@ msgctxt "permcat" msgid "publisher" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2096 +#: ../../Zotlabs/Lib/Activity.php:2110 #, php-format msgid "Likes %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2099 +#: ../../Zotlabs/Lib/Activity.php:2113 #, php-format msgid "Doesn't like %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2105 +#: ../../Zotlabs/Lib/Activity.php:2119 #, php-format msgid "Will attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2108 +#: ../../Zotlabs/Lib/Activity.php:2122 #, php-format msgid "Will not attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2111 +#: ../../Zotlabs/Lib/Activity.php:2125 #, php-format msgid "May attend %s's event" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2114 +#: ../../Zotlabs/Lib/Activity.php:2128 #, php-format msgid "May not attend %s's event" msgstr "" @@ -14964,7 +14997,7 @@ msgstr "" msgid "Invite" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:360 +#: ../../Zotlabs/Lib/Apps.php:360 ../../Zotlabs/Storage/Browser.php:400 msgid "Post" msgstr "" @@ -15113,7 +15146,7 @@ msgstr "" msgid "Privacy conflict. Discretion advised." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:174 ../../Zotlabs/Storage/Browser.php:286 +#: ../../Zotlabs/Lib/ThreadItem.php:174 ../../Zotlabs/Storage/Browser.php:362 msgid "Admin Delete" msgstr "" @@ -15396,98 +15429,148 @@ msgstr "" msgid "Can administer my channel" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:295 -msgid "parent" +#: ../../Zotlabs/Storage/Browser.php:292 +msgid "Change filename to" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:302 ../../Zotlabs/Storage/Browser.php:383 +msgid "Select a target location" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:134 -msgid "Principal" +#: ../../Zotlabs/Storage/Browser.php:303 ../../Zotlabs/Storage/Browser.php:384 +msgid "Copy to target location" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:137 -msgid "Addressbook" +#: ../../Zotlabs/Storage/Browser.php:304 ../../Zotlabs/Storage/Browser.php:382 +msgid "Set permissions for all files and sub folders" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:143 -msgid "Schedule Inbox" +#: ../../Zotlabs/Storage/Browser.php:305 +msgid "Notify your contacts about this file" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:146 -msgid "Schedule Outbox" +#: ../../Zotlabs/Storage/Browser.php:344 +msgid "File category" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:279 +#: ../../Zotlabs/Storage/Browser.php:355 msgid "Total" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:281 +#: ../../Zotlabs/Storage/Browser.php:357 msgid "Shared" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:283 +#: ../../Zotlabs/Storage/Browser.php:359 msgid "Add Files" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:367 +#: ../../Zotlabs/Storage/Browser.php:374 +msgid "parent" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:392 +msgid "Select All" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:393 +msgid "Bulk Actions" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:394 +msgid "Adjust Permissions" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:395 +msgid "Move or Copy" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:398 +msgid "Info" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:399 +msgid "Rename" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:401 +msgid "Attachment BBcode" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:402 +msgid "Embed BBcode" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:403 +msgid "Link BBcode" +msgstr "" + +#: ../../Zotlabs/Storage/Browser.php:473 #, php-format msgid "You are using %1$s of your available file storage." msgstr "" -#: ../../Zotlabs/Storage/Browser.php:372 +#: ../../Zotlabs/Storage/Browser.php:478 #, php-format msgid "You are using %1$s of %2$s available file storage. (%3$s%)" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:383 +#: ../../Zotlabs/Storage/Browser.php:489 msgid "WARNING:" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:395 +#: ../../Zotlabs/Storage/Browser.php:530 msgid "Create new folder" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:397 +#: ../../Zotlabs/Storage/Browser.php:532 msgid "Upload file" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:410 +#: ../../Zotlabs/Storage/Browser.php:544 msgid "Drop files here to immediately upload" msgstr "" -#: ../../boot.php:1677 +#: ../../Zotlabs/Storage/Browser.php:547 +msgid "" +"You can select files via the upload button or drop them right here or into " +"an existing folder." +msgstr "" + +#: ../../boot.php:1678 msgid "Create an account to access services and applications" msgstr "" -#: ../../boot.php:1701 +#: ../../boot.php:1702 msgid "Login/Email" msgstr "" -#: ../../boot.php:1702 +#: ../../boot.php:1703 msgid "Password" msgstr "" -#: ../../boot.php:1703 +#: ../../boot.php:1704 msgid "Remember me" msgstr "" -#: ../../boot.php:1706 +#: ../../boot.php:1707 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:2575 +#: ../../boot.php:2576 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "" -#: ../../boot.php:2580 +#: ../../boot.php:2581 msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: ../../boot.php:2696 +#: ../../boot.php:2697 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "" -#: ../../boot.php:2701 +#: ../../boot.php:2702 msgid "Cron/Scheduled tasks not running." msgstr "" diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 62282b235..26b7fec8e 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -277,6 +277,7 @@ return array( 'ID3Parser\\ID3Parser' => $vendorDir . '/lukasreschke/id3parser/src/ID3Parser.php', 'ID3Parser\\getID3\\Tags\\getid3_id3v1' => $vendorDir . '/lukasreschke/id3parser/src/getID3/Tags/getid3_id3v1.php', 'ID3Parser\\getID3\\Tags\\getid3_id3v2' => $vendorDir . '/lukasreschke/id3parser/src/getID3/Tags/getid3_id3v2.php', + 'ID3Parser\\getID3\\getID3' => $vendorDir . '/lukasreschke/id3parser/src/getID3/getID3.php', 'ID3Parser\\getID3\\getid3_exception' => $vendorDir . '/lukasreschke/id3parser/src/getID3/getid3_exception.php', 'ID3Parser\\getID3\\getid3_handler' => $vendorDir . '/lukasreschke/id3parser/src/getID3/getid3_handler.php', 'ID3Parser\\getID3\\getid3_lib' => $vendorDir . '/lukasreschke/id3parser/src/getID3/getid3_lib.php', @@ -1398,19 +1399,6 @@ return array( 'Zotlabs\\Storage\\File' => $baseDir . '/Zotlabs/Storage/File.php', 'Zotlabs\\Storage\\GitRepo' => $baseDir . '/Zotlabs/Storage/GitRepo.php', 'Zotlabs\\Storage\\ZotOauth2Pdo' => $baseDir . '/Zotlabs/Storage/ZotOauth2Pdo.php', - 'Zotlabs\\Tests\\Unit\\Access\\AccessListTest' => $baseDir . '/tests/unit/Access/AccessListTest.php', - 'Zotlabs\\Tests\\Unit\\Access\\PermissionLimitsTest' => $baseDir . '/tests/unit/Access/PermissionLimitsTest.php', - 'Zotlabs\\Tests\\Unit\\Access\\PermissionRolesTest' => $baseDir . '/tests/unit/Access/PermissionRolesTest.php', - 'Zotlabs\\Tests\\Unit\\Access\\PermissionsTest' => $baseDir . '/tests/unit/Access/PermissionsTest.php', - 'Zotlabs\\Tests\\Unit\\Lib\\PermissionDescriptionTest' => $baseDir . '/tests/unit/Lib/PermissionDescriptionTest.php', - 'Zotlabs\\Tests\\Unit\\Photo\\PhotoGdTest' => $baseDir . '/tests/unit/Photo/PhotoGdTest.php', - 'Zotlabs\\Tests\\Unit\\UnitTestCase' => $baseDir . '/tests/unit/UnitTestCase.php', - 'Zotlabs\\Tests\\Unit\\Web\\HttpSigTest' => $baseDir . '/tests/unit/Web/HttpSigTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\FeedutilsTest' => $baseDir . '/tests/unit/includes/FeedutilsTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\LanguageTest' => $baseDir . '/tests/unit/includes/LanguageTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\MarkdownTest' => $baseDir . '/tests/unit/includes/MarkdownTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\PhotodriverTest' => $baseDir . '/tests/unit/includes/PhotodriverTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\TextTest' => $baseDir . '/tests/unit/includes/TextTest.php', 'Zotlabs\\Text\\Tagadelic' => $baseDir . '/Zotlabs/Text/Tagadelic.php', 'Zotlabs\\Thumbs\\Epubthumb' => $baseDir . '/Zotlabs/Thumbs/Epubthumb.php', 'Zotlabs\\Thumbs\\Mp3audio' => $baseDir . '/Zotlabs/Thumbs/Mp3audio.php', @@ -1657,6 +1645,7 @@ return array( 'Zotlabs\\Update\\_1237' => $baseDir . '/Zotlabs/Update/_1237.php', 'Zotlabs\\Update\\_1238' => $baseDir . '/Zotlabs/Update/_1238.php', 'Zotlabs\\Update\\_1239' => $baseDir . '/Zotlabs/Update/_1239.php', + 'Zotlabs\\Update\\_1240' => $baseDir . '/Zotlabs/Update/_1240.php', 'Zotlabs\\Web\\Controller' => $baseDir . '/Zotlabs/Web/Controller.php', 'Zotlabs\\Web\\HTTPHeaders' => $baseDir . '/Zotlabs/Web/HTTPHeaders.php', 'Zotlabs\\Web\\HTTPSig' => $baseDir . '/Zotlabs/Web/HTTPSig.php', diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index ed5a7935c..59c2faa28 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,7 +6,6 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( - 'Zotlabs\\Tests\\Unit\\' => array($baseDir . '/tests/unit'), 'Zotlabs\\' => array($baseDir . '/Zotlabs'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Sabre\\Xml\\' => array($vendorDir . '/sabre/xml/lib'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index d88fe41d9..6988dc0b4 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -22,7 +22,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d public static $prefixLengthsPsr4 = array ( 'Z' => array ( - 'Zotlabs\\Tests\\Unit\\' => 19, 'Zotlabs\\' => 8, ), 'S' => @@ -74,10 +73,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d ); public static $prefixDirsPsr4 = array ( - 'Zotlabs\\Tests\\Unit\\' => - array ( - 0 => __DIR__ . '/../..' . '/tests/unit', - ), 'Zotlabs\\' => array ( 0 => __DIR__ . '/../..' . '/Zotlabs', @@ -463,6 +458,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'ID3Parser\\ID3Parser' => __DIR__ . '/..' . '/lukasreschke/id3parser/src/ID3Parser.php', 'ID3Parser\\getID3\\Tags\\getid3_id3v1' => __DIR__ . '/..' . '/lukasreschke/id3parser/src/getID3/Tags/getid3_id3v1.php', 'ID3Parser\\getID3\\Tags\\getid3_id3v2' => __DIR__ . '/..' . '/lukasreschke/id3parser/src/getID3/Tags/getid3_id3v2.php', + 'ID3Parser\\getID3\\getID3' => __DIR__ . '/..' . '/lukasreschke/id3parser/src/getID3/getID3.php', 'ID3Parser\\getID3\\getid3_exception' => __DIR__ . '/..' . '/lukasreschke/id3parser/src/getID3/getid3_exception.php', 'ID3Parser\\getID3\\getid3_handler' => __DIR__ . '/..' . '/lukasreschke/id3parser/src/getID3/getid3_handler.php', 'ID3Parser\\getID3\\getid3_lib' => __DIR__ . '/..' . '/lukasreschke/id3parser/src/getID3/getid3_lib.php', @@ -1584,19 +1580,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Storage\\File' => __DIR__ . '/../..' . '/Zotlabs/Storage/File.php', 'Zotlabs\\Storage\\GitRepo' => __DIR__ . '/../..' . '/Zotlabs/Storage/GitRepo.php', 'Zotlabs\\Storage\\ZotOauth2Pdo' => __DIR__ . '/../..' . '/Zotlabs/Storage/ZotOauth2Pdo.php', - 'Zotlabs\\Tests\\Unit\\Access\\AccessListTest' => __DIR__ . '/../..' . '/tests/unit/Access/AccessListTest.php', - 'Zotlabs\\Tests\\Unit\\Access\\PermissionLimitsTest' => __DIR__ . '/../..' . '/tests/unit/Access/PermissionLimitsTest.php', - 'Zotlabs\\Tests\\Unit\\Access\\PermissionRolesTest' => __DIR__ . '/../..' . '/tests/unit/Access/PermissionRolesTest.php', - 'Zotlabs\\Tests\\Unit\\Access\\PermissionsTest' => __DIR__ . '/../..' . '/tests/unit/Access/PermissionsTest.php', - 'Zotlabs\\Tests\\Unit\\Lib\\PermissionDescriptionTest' => __DIR__ . '/../..' . '/tests/unit/Lib/PermissionDescriptionTest.php', - 'Zotlabs\\Tests\\Unit\\Photo\\PhotoGdTest' => __DIR__ . '/../..' . '/tests/unit/Photo/PhotoGdTest.php', - 'Zotlabs\\Tests\\Unit\\UnitTestCase' => __DIR__ . '/../..' . '/tests/unit/UnitTestCase.php', - 'Zotlabs\\Tests\\Unit\\Web\\HttpSigTest' => __DIR__ . '/../..' . '/tests/unit/Web/HttpSigTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\FeedutilsTest' => __DIR__ . '/../..' . '/tests/unit/includes/FeedutilsTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\LanguageTest' => __DIR__ . '/../..' . '/tests/unit/includes/LanguageTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\MarkdownTest' => __DIR__ . '/../..' . '/tests/unit/includes/MarkdownTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\PhotodriverTest' => __DIR__ . '/../..' . '/tests/unit/includes/PhotodriverTest.php', - 'Zotlabs\\Tests\\Unit\\includes\\TextTest' => __DIR__ . '/../..' . '/tests/unit/includes/TextTest.php', 'Zotlabs\\Text\\Tagadelic' => __DIR__ . '/../..' . '/Zotlabs/Text/Tagadelic.php', 'Zotlabs\\Thumbs\\Epubthumb' => __DIR__ . '/../..' . '/Zotlabs/Thumbs/Epubthumb.php', 'Zotlabs\\Thumbs\\Mp3audio' => __DIR__ . '/../..' . '/Zotlabs/Thumbs/Mp3audio.php', @@ -1843,6 +1826,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Update\\_1237' => __DIR__ . '/../..' . '/Zotlabs/Update/_1237.php', 'Zotlabs\\Update\\_1238' => __DIR__ . '/../..' . '/Zotlabs/Update/_1238.php', 'Zotlabs\\Update\\_1239' => __DIR__ . '/../..' . '/Zotlabs/Update/_1239.php', + 'Zotlabs\\Update\\_1240' => __DIR__ . '/../..' . '/Zotlabs/Update/_1240.php', 'Zotlabs\\Web\\Controller' => __DIR__ . '/../..' . '/Zotlabs/Web/Controller.php', 'Zotlabs\\Web\\HTTPHeaders' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPHeaders.php', 'Zotlabs\\Web\\HTTPSig' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPSig.php', diff --git a/vendor/lukasreschke/id3parser/src/getID3/getid3.php b/vendor/lukasreschke/id3parser/src/getID3/getID3.php index 5e36f9fec..5e36f9fec 100644 --- a/vendor/lukasreschke/id3parser/src/getID3/getid3.php +++ b/vendor/lukasreschke/id3parser/src/getID3/getID3.php diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po index ea2b77f3a..dc87fe266 100644 --- a/view/es-es/hmessages.po +++ b/view/es-es/hmessages.po @@ -5,8 +5,8 @@ # Translators: # Alfonso Martínez <alfonsomthd@tutanota.com>, 2015 # inboxwall <axetransit@gmail.com>, 2015 -# jeroenpraat, 2015 -# Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2017-2020 +# jeroenpraat <jeroenpraat@disroot.org>, 2015 +# Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2017-2019 # Manuel Jiménez Friaza <mjfriaza@disroot.org>, 2015-2017 # Rafael, 2015 # tony baldwin <tonybaldwin@gmx.com>, 2014 @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: hubzilla\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-17 11:07+0000\n" -"PO-Revision-Date: 2020-09-26 10:15+0000\n" +"POT-Creation-Date: 2019-11-11 08:09+0000\n" +"PO-Revision-Date: 2019-12-12 15:14+0000\n" "Last-Translator: Manuel Jiménez Friaza <mjfriaza@disroot.org>\n" "Language-Team: Spanish (Spain) (http://www.transifex.com/Friendica/hubzilla/language/es_ES/)\n" "MIME-Version: 1.0\n" @@ -24,12 +24,8 @@ msgstr "" "Language: es_ES\n" "Plural-Forms: nplurals=2; plural=(n != 1 ? 1 : 0);\n" -#: ../../view/theme/redbasic/php/config.php:15 -#: ../../addon/cart/submodules/orderoptions.php:335 -#: ../../addon/cart/submodules/orderoptions.php:359 -#: ../../addon/cart/submodules/orderoptions.php:435 -#: ../../addon/cart/submodules/orderoptions.php:459 -#: ../../include/text.php:3360 ../../Zotlabs/Module/Admin/Site.php:185 +#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3231 +#: ../../Zotlabs/Module/Admin/Site.php:187 msgid "Default" msgstr "Predeterminado" @@ -39,7 +35,7 @@ msgid "Focus (Hubzilla default)" msgstr "Focus (predefinido)" #: ../../view/theme/redbasic/php/config.php:94 -#: ../../addon/channelreputation/channelreputation.php:143 +#: ../../addon/channelreputation/channelreputation.php:142 #: ../../addon/openclipatar/openclipatar.php:53 #: ../../addon/photocache/Mod_Photocache.php:67 #: ../../addon/redred/Mod_Redred.php:90 @@ -47,91 +43,92 @@ msgstr "Focus (predefinido)" #: ../../addon/statusnet/Mod_Statusnet.php:193 #: ../../addon/statusnet/Mod_Statusnet.php:251 #: ../../addon/statusnet/Mod_Statusnet.php:306 -#: ../../addon/statusnet/statusnet.php:602 ../../addon/rtof/Mod_Rtof.php:72 -#: ../../addon/wppost/Mod_Wppost.php:109 +#: ../../addon/statusnet/statusnet.php:602 +#: ../../addon/frphotos/frphotos.php:97 ../../addon/rtof/Mod_Rtof.php:72 +#: ../../addon/wppost/Mod_Wppost.php:97 #: ../../addon/content_import/Mod_content_import.php:142 -#: ../../addon/openstreetmap/openstreetmap.php:155 +#: ../../addon/openstreetmap/openstreetmap.php:153 #: ../../addon/ijpost/Mod_Ijpost.php:72 #: ../../addon/pubcrawl/Mod_Pubcrawl.php:65 -#: ../../addon/dwpost/Mod_Dwpost.php:80 +#: ../../addon/dwpost/Mod_Dwpost.php:71 #: ../../addon/startpage/Mod_Startpage.php:73 -#: ../../addon/mail/Mod_Mail.php:310 ../../addon/twitter/Mod_Twitter.php:184 +#: ../../addon/twitter/Mod_Twitter.php:184 #: ../../addon/pumpio/Mod_Pumpio.php:115 #: ../../addon/cart/submodules/subscriptions.php:410 -#: ../../addon/cart/submodules/hzservices.php:643 -#: ../../addon/cart/submodules/orderoptions.php:312 -#: ../../addon/cart/submodules/orderoptions.php:412 -#: ../../addon/cart/submodules/manualcat.php:252 -#: ../../addon/cart/Settings/Cart.php:132 -#: ../../addon/cart/Settings/Cart.php:142 ../../addon/cart/cart.php:1261 +#: ../../addon/cart/submodules/hzservices.php:642 +#: ../../addon/cart/submodules/manualcat.php:250 +#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1258 #: ../../addon/nofed/Mod_Nofed.php:53 #: ../../addon/smileybutton/Mod_Smileybutton.php:55 -#: ../../addon/redfiles/redfiles.php:124 ../../addon/diaspora/diaspora.php:75 -#: ../../addon/diaspora/Mod_Diaspora.php:100 ../../addon/piwik/piwik.php:95 -#: ../../addon/workflow/workflow.php:1461 -#: ../../addon/workflow/workflow.php:1520 -#: ../../addon/workflow/workflow.php:1639 -#: ../../addon/workflow/workflow.php:2742 +#: ../../addon/redfiles/redfiles.php:124 +#: ../../addon/diaspora/Mod_Diaspora.php:102 ../../addon/piwik/piwik.php:95 +#: ../../addon/workflow/workflow.php:1256 +#: ../../addon/workflow/workflow.php:1302 +#: ../../addon/workflow/workflow.php:1399 +#: ../../addon/workflow/workflow.php:2398 #: ../../addon/workflow/Settings/Mod_WorkflowSettings.php:94 #: ../../addon/likebanner/likebanner.php:57 -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:56 ../../addon/hubwall/hubwall.php:95 -#: ../../addon/flashcards/Mod_Flashcards.php:262 +#: ../../addon/chords/Mod_Chords.php:60 ../../addon/fuzzloc/Mod_Fuzzloc.php:56 +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:92 +#: ../../addon/hubwall/hubwall.php:95 +#: ../../addon/flashcards/Mod_Flashcards.php:213 #: ../../addon/libertree/Mod_Libertree.php:70 ../../addon/logrot/logrot.php:35 -#: ../../addon/skeleton/Mod_Skeleton.php:51 -#: ../../addon/socialauth/Mod_SocialAuth.php:330 -#: ../../addon/nsfw/Mod_Nsfw.php:61 ../../addon/mailtest/mailtest.php:100 -#: ../../addon/ljpost/Mod_Ljpost.php:82 ../../addon/hzfiles/hzfiles.php:86 +#: ../../addon/skeleton/Mod_Skeleton.php:51 ../../addon/nsfw/Mod_Nsfw.php:61 +#: ../../addon/mailtest/mailtest.php:100 ../../addon/ljpost/Mod_Ljpost.php:78 +#: ../../addon/hzfiles/hzfiles.php:86 +#: ../../addon/jappixmini/Mod_Jappixmini.php:261 #: ../../addon/pageheader/Mod_Pageheader.php:54 ../../addon/irc/irc.php:45 #: ../../addon/xmpp/Mod_Xmpp.php:70 ../../include/js_strings.php:22 #: ../../Zotlabs/Widget/Wiki_pages.php:42 #: ../../Zotlabs/Widget/Wiki_pages.php:99 #: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Module/Tokens.php:188 #: ../../Zotlabs/Module/Import_items.php:129 -#: ../../Zotlabs/Module/Import.php:649 ../../Zotlabs/Module/Setup.php:304 -#: ../../Zotlabs/Module/Setup.php:344 ../../Zotlabs/Module/Group.php:151 -#: ../../Zotlabs/Module/Group.php:167 ../../Zotlabs/Module/Oauth.php:111 -#: ../../Zotlabs/Module/Chat.php:209 ../../Zotlabs/Module/Chat.php:248 +#: ../../Zotlabs/Module/Import.php:646 ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Setup.php:344 ../../Zotlabs/Module/Group.php:150 +#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Oauth.php:111 +#: ../../Zotlabs/Module/Chat.php:211 ../../Zotlabs/Module/Chat.php:250 #: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Mitem.php:259 #: ../../Zotlabs/Module/Filestorage.php:203 -#: ../../Zotlabs/Module/Connect.php:107 ../../Zotlabs/Module/Editpost.php:86 +#: ../../Zotlabs/Module/Connect.php:124 ../../Zotlabs/Module/Editpost.php:86 #: ../../Zotlabs/Module/Admin/Themes.php:158 #: ../../Zotlabs/Module/Admin/Features.php:66 -#: ../../Zotlabs/Module/Admin/Security.php:120 +#: ../../Zotlabs/Module/Admin/Security.php:112 #: ../../Zotlabs/Module/Admin/Accounts.php:168 -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:289 #: ../../Zotlabs/Module/Admin/Logs.php:84 #: ../../Zotlabs/Module/Admin/Channels.php:147 #: ../../Zotlabs/Module/Admin/Account_edit.php:73 #: ../../Zotlabs/Module/Admin/Profs.php:178 #: ../../Zotlabs/Module/Admin/Addons.php:442 -#: ../../Zotlabs/Module/Events.php:501 ../../Zotlabs/Module/Permcats.php:129 +#: ../../Zotlabs/Module/Events.php:501 ../../Zotlabs/Module/Permcats.php:128 #: ../../Zotlabs/Module/Mood.php:158 ../../Zotlabs/Module/Appman.php:155 #: ../../Zotlabs/Module/Email_validation.php:40 -#: ../../Zotlabs/Module/Photos.php:1057 ../../Zotlabs/Module/Photos.php:1097 -#: ../../Zotlabs/Module/Photos.php:1215 ../../Zotlabs/Module/Profiles.php:725 +#: ../../Zotlabs/Module/Photos.php:1055 ../../Zotlabs/Module/Photos.php:1096 +#: ../../Zotlabs/Module/Photos.php:1215 ../../Zotlabs/Module/Profiles.php:723 #: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Module/Affinity.php:87 ../../Zotlabs/Module/Rate.php:166 -#: ../../Zotlabs/Module/Settings/Network.php:62 -#: ../../Zotlabs/Module/Settings/Features.php:48 -#: ../../Zotlabs/Module/Settings/Channel.php:494 +#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Module/Affinity.php:87 +#: ../../Zotlabs/Module/Rate.php:166 +#: ../../Zotlabs/Module/Settings/Network.php:61 +#: ../../Zotlabs/Module/Settings/Features.php:46 +#: ../../Zotlabs/Module/Settings/Channel.php:493 #: ../../Zotlabs/Module/Settings/Account.php:103 -#: ../../Zotlabs/Module/Settings/Events.php:42 -#: ../../Zotlabs/Module/Settings/Manage.php:43 -#: ../../Zotlabs/Module/Settings/Channel_home.php:91 -#: ../../Zotlabs/Module/Settings/Calendar.php:42 -#: ../../Zotlabs/Module/Settings/Display.php:190 -#: ../../Zotlabs/Module/Settings/Directory.php:42 -#: ../../Zotlabs/Module/Settings/Editor.php:42 -#: ../../Zotlabs/Module/Settings/Connections.php:42 -#: ../../Zotlabs/Module/Settings/Photos.php:42 -#: ../../Zotlabs/Module/Settings/Profiles.php:52 -#: ../../Zotlabs/Module/Settings/Conversation.php:49 -#: ../../Zotlabs/Module/Defperms.php:266 ../../Zotlabs/Module/Pconfig.php:116 -#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Thing.php:328 -#: ../../Zotlabs/Module/Thing.php:381 ../../Zotlabs/Module/Pdledit.php:108 -#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Connedit.php:905 +#: ../../Zotlabs/Module/Settings/Events.php:41 +#: ../../Zotlabs/Module/Settings/Manage.php:41 +#: ../../Zotlabs/Module/Settings/Channel_home.php:89 +#: ../../Zotlabs/Module/Settings/Calendar.php:41 +#: ../../Zotlabs/Module/Settings/Display.php:189 +#: ../../Zotlabs/Module/Settings/Directory.php:41 +#: ../../Zotlabs/Module/Settings/Editor.php:41 +#: ../../Zotlabs/Module/Settings/Connections.php:41 +#: ../../Zotlabs/Module/Settings/Photos.php:41 +#: ../../Zotlabs/Module/Settings/Profiles.php:50 +#: ../../Zotlabs/Module/Settings/Conversation.php:48 +#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Pconfig.php:116 +#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Thing.php:326 +#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Pdledit.php:107 +#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Connedit.php:904 #: ../../Zotlabs/Module/Locs.php:121 ../../Zotlabs/Module/Sources.php:125 -#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Lib/ThreadItem.php:825 +#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Lib/ThreadItem.php:796 msgid "Submit" msgstr "Enviar" @@ -145,131 +142,121 @@ msgstr "Estrechar la barra de navegación" #: ../../view/theme/redbasic/php/config.php:99 #: ../../view/theme/redbasic/php/config.php:116 -#: ../../addon/channelreputation/channelreputation.php:111 +#: ../../addon/channelreputation/channelreputation.php:110 #: ../../addon/redred/Mod_Redred.php:63 #: ../../addon/statusnet/Mod_Statusnet.php:260 #: ../../addon/statusnet/Mod_Statusnet.php:282 #: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/rtof/Mod_Rtof.php:49 ../../addon/wppost/Mod_Wppost.php:86 -#: ../../addon/wppost/Mod_Wppost.php:90 ../../addon/wppost/Mod_Wppost.php:94 +#: ../../addon/rtof/Mod_Rtof.php:49 ../../addon/wppost/Mod_Wppost.php:82 +#: ../../addon/wppost/Mod_Wppost.php:86 #: ../../addon/content_import/Mod_content_import.php:137 #: ../../addon/content_import/Mod_content_import.php:138 #: ../../addon/ijpost/Mod_Ijpost.php:61 #: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 -#: ../../addon/dwpost/Mod_Dwpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:65 +#: ../../addon/dwpost/Mod_Dwpost.php:60 #: ../../addon/twitter/Mod_Twitter.php:162 #: ../../addon/twitter/Mod_Twitter.php:171 #: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98 #: ../../addon/pumpio/Mod_Pumpio.php:102 #: ../../addon/cart/submodules/subscriptions.php:153 #: ../../addon/cart/submodules/subscriptions.php:425 -#: ../../addon/cart/submodules/hzservices.php:65 -#: ../../addon/cart/submodules/hzservices.php:649 -#: ../../addon/cart/submodules/hzservices.php:653 -#: ../../addon/cart/submodules/orderoptions.php:72 -#: ../../addon/cart/submodules/orderoptions.php:338 -#: ../../addon/cart/submodules/orderoptions.php:362 -#: ../../addon/cart/submodules/orderoptions.php:438 -#: ../../addon/cart/submodules/orderoptions.php:462 +#: ../../addon/cart/submodules/hzservices.php:64 +#: ../../addon/cart/submodules/hzservices.php:648 +#: ../../addon/cart/submodules/hzservices.php:652 #: ../../addon/cart/submodules/paypalbutton.php:87 #: ../../addon/cart/submodules/paypalbutton.php:95 -#: ../../addon/cart/submodules/paypalbuttonV2.php:88 -#: ../../addon/cart/submodules/paypalbuttonV2.php:96 #: ../../addon/cart/submodules/manualcat.php:63 -#: ../../addon/cart/submodules/manualcat.php:258 -#: ../../addon/cart/submodules/manualcat.php:262 -#: ../../addon/cart/Settings/Cart.php:61 ../../addon/cart/Settings/Cart.php:73 -#: ../../addon/cart/cart.php:1255 ../../addon/nofed/Mod_Nofed.php:42 +#: ../../addon/cart/submodules/manualcat.php:256 +#: ../../addon/cart/submodules/manualcat.php:260 +#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 +#: ../../addon/cart/cart.php:1252 ../../addon/nofed/Mod_Nofed.php:42 #: ../../addon/smileybutton/Mod_Smileybutton.php:44 #: ../../addon/libertree/Mod_Libertree.php:59 -#: ../../addon/socialauth/Mod_SocialAuth.php:214 -#: ../../addon/ljpost/Mod_Ljpost.php:63 ../../addon/ljpost/Mod_Ljpost.php:67 -#: ../../addon/ljpost/Mod_Ljpost.php:71 ../../include/conversation.php:1451 -#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144 -#: ../../include/dir_fns.php:145 ../../Zotlabs/Module/Import.php:638 -#: ../../Zotlabs/Module/Import.php:642 ../../Zotlabs/Module/Import.php:643 -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177 -#: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257 -#: ../../Zotlabs/Module/Filestorage.php:198 +#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/ljpost/Mod_Ljpost.php:66 +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 +#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 +#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Filestorage.php:198 #: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Module/Admin/Site.php:253 +#: ../../Zotlabs/Module/Admin/Site.php:255 #: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Events.php:478 #: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Api.php:99 -#: ../../Zotlabs/Module/Photos.php:672 ../../Zotlabs/Module/Profiles.php:683 -#: ../../Zotlabs/Module/Settings/Channel.php:310 -#: ../../Zotlabs/Module/Settings/Display.php:90 +#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Settings/Channel.php:309 +#: ../../Zotlabs/Module/Settings/Display.php:89 #: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 -#: ../../Zotlabs/Module/Defperms.php:198 ../../Zotlabs/Module/Wiki.php:227 -#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:407 -#: ../../Zotlabs/Module/Connedit.php:797 ../../Zotlabs/Module/Sources.php:124 +#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Wiki.php:227 +#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 +#: ../../Zotlabs/Module/Connedit.php:796 ../../Zotlabs/Module/Sources.php:124 #: ../../Zotlabs/Module/Sources.php:159 ../../Zotlabs/Lib/Libzotdir.php:162 #: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165 -#: ../../Zotlabs/Storage/Browser.php:411 ../../boot.php:1703 +#: ../../Zotlabs/Storage/Browser.php:411 ../../boot.php:1679 msgid "No" msgstr "No" #: ../../view/theme/redbasic/php/config.php:99 #: ../../view/theme/redbasic/php/config.php:116 -#: ../../addon/channelreputation/channelreputation.php:111 +#: ../../addon/channelreputation/channelreputation.php:110 #: ../../addon/redred/Mod_Redred.php:63 #: ../../addon/statusnet/Mod_Statusnet.php:260 #: ../../addon/statusnet/Mod_Statusnet.php:282 #: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/rtof/Mod_Rtof.php:49 ../../addon/wppost/Mod_Wppost.php:86 -#: ../../addon/wppost/Mod_Wppost.php:90 ../../addon/wppost/Mod_Wppost.php:94 +#: ../../addon/rtof/Mod_Rtof.php:49 ../../addon/wppost/Mod_Wppost.php:82 +#: ../../addon/wppost/Mod_Wppost.php:86 #: ../../addon/content_import/Mod_content_import.php:137 #: ../../addon/content_import/Mod_content_import.php:138 #: ../../addon/ijpost/Mod_Ijpost.php:61 #: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 -#: ../../addon/dwpost/Mod_Dwpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:65 +#: ../../addon/dwpost/Mod_Dwpost.php:60 #: ../../addon/twitter/Mod_Twitter.php:162 #: ../../addon/twitter/Mod_Twitter.php:171 #: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98 #: ../../addon/pumpio/Mod_Pumpio.php:102 #: ../../addon/cart/submodules/subscriptions.php:153 #: ../../addon/cart/submodules/subscriptions.php:425 -#: ../../addon/cart/submodules/hzservices.php:65 -#: ../../addon/cart/submodules/hzservices.php:649 -#: ../../addon/cart/submodules/hzservices.php:653 -#: ../../addon/cart/submodules/orderoptions.php:72 -#: ../../addon/cart/submodules/orderoptions.php:337 -#: ../../addon/cart/submodules/orderoptions.php:361 -#: ../../addon/cart/submodules/orderoptions.php:437 -#: ../../addon/cart/submodules/orderoptions.php:461 +#: ../../addon/cart/submodules/hzservices.php:64 +#: ../../addon/cart/submodules/hzservices.php:648 +#: ../../addon/cart/submodules/hzservices.php:652 #: ../../addon/cart/submodules/paypalbutton.php:87 #: ../../addon/cart/submodules/paypalbutton.php:95 -#: ../../addon/cart/submodules/paypalbuttonV2.php:88 -#: ../../addon/cart/submodules/paypalbuttonV2.php:96 #: ../../addon/cart/submodules/manualcat.php:63 -#: ../../addon/cart/submodules/manualcat.php:258 -#: ../../addon/cart/submodules/manualcat.php:262 -#: ../../addon/cart/Settings/Cart.php:61 ../../addon/cart/Settings/Cart.php:73 -#: ../../addon/cart/cart.php:1255 ../../addon/nofed/Mod_Nofed.php:42 +#: ../../addon/cart/submodules/manualcat.php:256 +#: ../../addon/cart/submodules/manualcat.php:260 +#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 +#: ../../addon/cart/cart.php:1252 ../../addon/nofed/Mod_Nofed.php:42 #: ../../addon/smileybutton/Mod_Smileybutton.php:44 #: ../../addon/libertree/Mod_Libertree.php:59 -#: ../../addon/socialauth/Mod_SocialAuth.php:214 -#: ../../addon/ljpost/Mod_Ljpost.php:63 ../../addon/ljpost/Mod_Ljpost.php:67 -#: ../../addon/ljpost/Mod_Ljpost.php:71 ../../include/conversation.php:1451 -#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144 -#: ../../include/dir_fns.php:145 ../../Zotlabs/Module/Import.php:638 -#: ../../Zotlabs/Module/Import.php:642 ../../Zotlabs/Module/Import.php:643 -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177 -#: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257 -#: ../../Zotlabs/Module/Filestorage.php:198 +#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/ljpost/Mod_Ljpost.php:66 +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 +#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 +#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Filestorage.php:198 #: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Module/Admin/Site.php:255 +#: ../../Zotlabs/Module/Admin/Site.php:257 #: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Events.php:478 #: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Api.php:98 -#: ../../Zotlabs/Module/Photos.php:672 ../../Zotlabs/Module/Profiles.php:683 -#: ../../Zotlabs/Module/Settings/Channel.php:310 -#: ../../Zotlabs/Module/Settings/Display.php:90 +#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Settings/Channel.php:309 +#: ../../Zotlabs/Module/Settings/Display.php:89 #: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 -#: ../../Zotlabs/Module/Defperms.php:198 ../../Zotlabs/Module/Wiki.php:227 -#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:407 +#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Wiki.php:227 +#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 #: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 #: ../../Zotlabs/Lib/Libzotdir.php:162 ../../Zotlabs/Lib/Libzotdir.php:163 #: ../../Zotlabs/Lib/Libzotdir.php:165 ../../Zotlabs/Storage/Browser.php:411 -#: ../../boot.php:1703 +#: ../../boot.php:1679 msgid "Yes" msgstr "Sí" @@ -357,91 +344,91 @@ msgstr "Mostrar ajustes avanzados" msgid "Source channel not found." msgstr "No se ha encontrado el canal de origen." +#: ../../addon/channelreputation/channelreputation.php:100 #: ../../addon/channelreputation/channelreputation.php:101 -#: ../../addon/channelreputation/channelreputation.php:102 #: ../../addon/cart/myshop.php:141 ../../addon/cart/myshop.php:177 #: ../../addon/cart/myshop.php:211 ../../addon/cart/myshop.php:259 #: ../../addon/cart/myshop.php:294 ../../addon/cart/myshop.php:317 msgid "Access Denied" msgstr "Acceso denegado" -#: ../../addon/channelreputation/channelreputation.php:109 +#: ../../addon/channelreputation/channelreputation.php:108 msgid "Enable Community Moderation" msgstr "Habilitar la moderación de la comunidad" -#: ../../addon/channelreputation/channelreputation.php:117 +#: ../../addon/channelreputation/channelreputation.php:116 msgid "Reputation automatically given to new members" msgstr "La reputación se otorga automáticamente a los nuevos miembros" -#: ../../addon/channelreputation/channelreputation.php:118 +#: ../../addon/channelreputation/channelreputation.php:117 msgid "Reputation will never fall below this value" msgstr "La reputación nunca caerá por debajo de este valor" -#: ../../addon/channelreputation/channelreputation.php:119 +#: ../../addon/channelreputation/channelreputation.php:118 msgid "Minimum reputation before posting is allowed" msgstr "Reputación mínima antes de que se permita el envío de entradas" -#: ../../addon/channelreputation/channelreputation.php:120 +#: ../../addon/channelreputation/channelreputation.php:119 msgid "Minimum reputation before commenting is allowed" msgstr "Mínima reputación antes de que se permitan los comentarios" -#: ../../addon/channelreputation/channelreputation.php:121 +#: ../../addon/channelreputation/channelreputation.php:120 msgid "Minimum reputation before a member is able to moderate other posts" msgstr "Reputación mínima antes de que un miembro sea capaz de moderar otros mensajes" -#: ../../addon/channelreputation/channelreputation.php:122 +#: ../../addon/channelreputation/channelreputation.php:121 msgid "" "Max ratio of moderator's reputation that can be added to/deducted from " "reputation of person being moderated" msgstr "Proporción máxima de la reputación del moderador que puede ser añadida/descontada de la reputación de la persona que está siendo moderada." -#: ../../addon/channelreputation/channelreputation.php:123 +#: ../../addon/channelreputation/channelreputation.php:122 msgid "Reputation \"cost\" to post" msgstr "\"Coste\" de la reputación a contabilizar" -#: ../../addon/channelreputation/channelreputation.php:124 +#: ../../addon/channelreputation/channelreputation.php:123 msgid "Reputation \"cost\" to comment" msgstr "\"Coste\" de la reputación para comentar" -#: ../../addon/channelreputation/channelreputation.php:125 +#: ../../addon/channelreputation/channelreputation.php:124 msgid "" "Reputation automatically recovers at this rate per hour until it reaches " "minimum_to_post" msgstr "La reputación se recupera automáticamente a esta tasa por hora hasta que alcanza el mínimo_a_post" -#: ../../addon/channelreputation/channelreputation.php:126 +#: ../../addon/channelreputation/channelreputation.php:125 msgid "" "When minimum_to_moderate > reputation > minimum_to_post reputation recovers " "at this rate per hour" msgstr "Cuando el mínimo_a_moderar > reputación > mínimo_a_publicar la reputación se recupera a esta tasa por hora " -#: ../../addon/channelreputation/channelreputation.php:140 +#: ../../addon/channelreputation/channelreputation.php:139 msgid "Community Moderation Settings" msgstr "Configuración de la moderación de la comunidad" -#: ../../addon/channelreputation/channelreputation.php:232 +#: ../../addon/channelreputation/channelreputation.php:229 msgid "Channel Reputation" msgstr "Reputación del canal" -#: ../../addon/channelreputation/channelreputation.php:233 -#: ../../include/acl_selectors.php:125 ../../Zotlabs/Widget/Pinned.php:160 -#: ../../Zotlabs/Module/Photos.php:1274 ../../Zotlabs/Lib/ThreadItem.php:495 +#: ../../addon/channelreputation/channelreputation.php:230 +#: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1274 +#: ../../Zotlabs/Lib/ThreadItem.php:463 msgid "Close" msgstr "Cerrar" -#: ../../addon/channelreputation/channelreputation.php:236 +#: ../../addon/channelreputation/channelreputation.php:233 msgid "An Error has occurred." msgstr "Se ha producido un error." -#: ../../addon/channelreputation/channelreputation.php:254 +#: ../../addon/channelreputation/channelreputation.php:251 msgid "Upvote" msgstr "Votar a favor" -#: ../../addon/channelreputation/channelreputation.php:255 +#: ../../addon/channelreputation/channelreputation.php:252 msgid "Downvote" msgstr "Votar en contra" -#: ../../addon/channelreputation/channelreputation.php:414 +#: ../../addon/channelreputation/channelreputation.php:374 msgid "Can moderate reputation on my channel." msgstr "Se puede moderar la reputación en mi canal." @@ -460,36 +447,37 @@ msgstr "App Superblock" #: ../../addon/gallery/Mod_Gallery.php:58 #: ../../addon/planets/Mod_Planets.php:20 ../../addon/redred/Mod_Redred.php:50 #: ../../addon/statusnet/Mod_Statusnet.php:146 -#: ../../addon/rtof/Mod_Rtof.php:36 ../../addon/wppost/Mod_Wppost.php:43 +#: ../../addon/rtof/Mod_Rtof.php:36 ../../addon/wppost/Mod_Wppost.php:41 #: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/ijpost/Mod_Ijpost.php:35 #: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 -#: ../../addon/dwpost/Mod_Dwpost.php:39 +#: ../../addon/dwpost/Mod_Dwpost.php:36 #: ../../addon/startpage/Mod_Startpage.php:50 #: ../../addon/twitter/Mod_Twitter.php:78 ../../addon/pumpio/Mod_Pumpio.php:53 #: ../../addon/sendzid/Mod_Sendzid.php:20 ../../addon/nofed/Mod_Nofed.php:33 #: ../../addon/smileybutton/Mod_Smileybutton.php:35 #: ../../addon/diaspora/Mod_Diaspora.php:58 #: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 #: ../../addon/libertree/Mod_Libertree.php:35 -#: ../../addon/hideaside/Mod_Hideaside.php:23 #: ../../addon/skeleton/Mod_Skeleton.php:32 ../../addon/nsfw/Mod_Nsfw.php:33 -#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/ljpost/Mod_Ljpost.php:38 +#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/ljpost/Mod_Ljpost.php:37 +#: ../../addon/jappixmini/Mod_Jappixmini.php:96 #: ../../addon/authchoose/Mod_Authchoose.php:28 #: ../../addon/pageheader/Mod_Pageheader.php:34 #: ../../addon/xmpp/Mod_Xmpp.php:35 ../../Zotlabs/Module/Tokens.php:99 -#: ../../Zotlabs/Module/Group.php:107 ../../Zotlabs/Module/Oauth.php:100 -#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Poke.php:165 -#: ../../Zotlabs/Module/Cdav.php:872 ../../Zotlabs/Module/Webpages.php:48 -#: ../../Zotlabs/Module/Pubstream.php:20 ../../Zotlabs/Module/Permcats.php:63 -#: ../../Zotlabs/Module/Lang.php:17 ../../Zotlabs/Module/Uexport.php:61 -#: ../../Zotlabs/Module/Mood.php:134 ../../Zotlabs/Module/Cards.php:51 -#: ../../Zotlabs/Module/Articles.php:52 ../../Zotlabs/Module/Bookmarks.php:78 -#: ../../Zotlabs/Module/Probe.php:18 ../../Zotlabs/Module/Invite.php:110 -#: ../../Zotlabs/Module/Notes.php:57 ../../Zotlabs/Module/Affinity.php:52 -#: ../../Zotlabs/Module/Defperms.php:190 ../../Zotlabs/Module/Oauth2.php:106 -#: ../../Zotlabs/Module/Randprof.php:29 ../../Zotlabs/Module/Pdledit.php:43 -#: ../../Zotlabs/Module/Wiki.php:52 ../../Zotlabs/Module/Suggest.php:40 -#: ../../Zotlabs/Module/Sources.php:88 +#: ../../Zotlabs/Module/Group.php:106 ../../Zotlabs/Module/Oauth.php:100 +#: ../../Zotlabs/Module/Chat.php:102 ../../Zotlabs/Module/Poke.php:165 +#: ../../Zotlabs/Module/Cdav.php:899 ../../Zotlabs/Module/Webpages.php:48 +#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Pubstream.php:20 +#: ../../Zotlabs/Module/Permcats.php:62 ../../Zotlabs/Module/Lang.php:17 +#: ../../Zotlabs/Module/Uexport.php:61 ../../Zotlabs/Module/Mood.php:134 +#: ../../Zotlabs/Module/Cards.php:51 ../../Zotlabs/Module/Articles.php:52 +#: ../../Zotlabs/Module/Bookmarks.php:78 ../../Zotlabs/Module/Probe.php:18 +#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Notes.php:56 +#: ../../Zotlabs/Module/Affinity.php:52 ../../Zotlabs/Module/Defperms.php:189 +#: ../../Zotlabs/Module/Oauth2.php:106 ../../Zotlabs/Module/Randprof.php:29 +#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Wiki.php:52 +#: ../../Zotlabs/Module/Suggest.php:40 ../../Zotlabs/Module/Sources.php:88 msgid "Not Installed" msgstr "No instalado/a" @@ -512,9 +500,9 @@ msgstr "No hay canales bloqueados actualmente" #: ../../addon/superblock/Mod_Superblock.php:91 #: ../../Zotlabs/Module/Tagrm.php:137 #: ../../Zotlabs/Module/Admin/Addons.php:459 -#: ../../Zotlabs/Module/Profile_photo.php:501 -#: ../../Zotlabs/Module/Cover_photo.php:424 -#: ../../Zotlabs/Module/Photos.php:995 +#: ../../Zotlabs/Module/Profile_photo.php:499 +#: ../../Zotlabs/Module/Cover_photo.php:430 +#: ../../Zotlabs/Module/Photos.php:993 msgid "Remove" msgstr "Eliminar" @@ -526,7 +514,6 @@ msgstr "App NSA Bait " #: ../../addon/nsabait/Mod_Nsabait.php:24 #: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 #: ../../addon/planets/Mod_Planets.php:23 ../../addon/hsse/Mod_Hsse.php:26 -#: ../../addon/hideaside/Mod_Hideaside.php:27 #: ../../addon/authchoose/Mod_Authchoose.php:33 msgid "Installed" msgstr "Instalado" @@ -576,14 +563,14 @@ msgstr "Regresar después" msgid "Page to load after image selection." msgstr "Página para cargar después de la selección de imágenes." -#: ../../addon/openclipatar/openclipatar.php:57 ../../include/nav.php:112 -#: ../../include/conversation.php:1065 ../../Zotlabs/Module/Connedit.php:609 -#: ../../Zotlabs/Lib/Apps.php:344 +#: ../../addon/openclipatar/openclipatar.php:57 ../../include/nav.php:110 +#: ../../include/conversation.php:1038 ../../Zotlabs/Module/Connedit.php:608 +#: ../../Zotlabs/Lib/Apps.php:343 msgid "View Profile" msgstr "Ver el perfil" -#: ../../addon/openclipatar/openclipatar.php:58 ../../include/nav.php:117 -#: ../../include/channel.php:1527 +#: ../../addon/openclipatar/openclipatar.php:58 ../../include/nav.php:115 +#: ../../include/channel.php:1430 msgid "Edit Profile" msgstr "Editar el perfil" @@ -658,7 +645,7 @@ msgid "Unknown error. Please try again later." msgstr "Error desconocido. Por favor, inténtelo otra vez." #: ../../addon/openclipatar/openclipatar.php:298 -#: ../../Zotlabs/Module/Profile_photo.php:254 +#: ../../Zotlabs/Module/Profile_photo.php:252 msgid "" "Shift-reload the page or clear browser cache if the new photo does not " "display immediately." @@ -669,7 +656,7 @@ msgid "Profile photo updated successfully." msgstr "Se ha actualizado con éxito la foto de perfil." #: ../../addon/bookmarker/bookmarker.php:38 -#: ../../Zotlabs/Lib/ThreadItem.php:472 +#: ../../Zotlabs/Lib/ThreadItem.php:440 msgid "Save Bookmarks" msgstr "Guardar en Marcadores" @@ -691,14 +678,171 @@ msgstr "Haga una pausa antes de comenzar la siguiente tarea: (microsegundos. Mí msgid "Queueworker Settings" msgstr "Configuración del gestor de procesos de trabajo en cola" -#: ../../addon/queueworker/Mod_Queueworker.php:119 ../../include/text.php:1132 -#: ../../include/text.php:1144 ../../Zotlabs/Widget/Notes.php:23 +#: ../../addon/queueworker/Mod_Queueworker.php:119 ../../include/text.php:1106 +#: ../../include/text.php:1118 ../../Zotlabs/Widget/Notes.php:23 #: ../../Zotlabs/Module/Admin/Profs.php:94 #: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Filer.php:53 #: ../../Zotlabs/Module/Rbmark.php:32 ../../Zotlabs/Module/Rbmark.php:104 msgid "Save" msgstr "Guardar" +#: ../../addon/tour/tour.php:76 +msgid "Edit your profile and change settings." +msgstr "Editar su perfil y cambiar los ajustes." + +#: ../../addon/tour/tour.php:77 +msgid "Click here to see activity from your connections." +msgstr "Pulsar aquí para ver la actividad de sus conexiones." + +#: ../../addon/tour/tour.php:78 +msgid "Click here to see your channel home." +msgstr "Pulsar aquí para ver la página de inicio de su canal." + +#: ../../addon/tour/tour.php:79 +msgid "You can access your private messages from here." +msgstr "Puede acceder a sus mensajes privados desde aquí." + +#: ../../addon/tour/tour.php:80 +msgid "Create new events here." +msgstr "Crear nuevos eventos aquí." + +#: ../../addon/tour/tour.php:81 +msgid "" +"You can accept new connections and change permissions for existing ones " +"here. You can also e.g. create groups of contacts." +msgstr "Puede aceptar nuevas conexiones y cambiar permisos para las que ya existen aquí. También puede, por ejemplo, crear grupos de contactos." + +#: ../../addon/tour/tour.php:82 +msgid "System notifications will arrive here" +msgstr "Las notificaciones del sistema llegarán aquí" + +#: ../../addon/tour/tour.php:83 +msgid "Search for content and users" +msgstr "Buscar contenido y usuarios" + +#: ../../addon/tour/tour.php:84 +msgid "Browse for new contacts" +msgstr "Buscar nuevos contactos" + +#: ../../addon/tour/tour.php:85 +msgid "Launch installed apps" +msgstr "Iniciar aplicaciones instaladas" + +#: ../../addon/tour/tour.php:86 +msgid "Looking for help? Click here." +msgstr "¿Busca ayuda? Pulse aquí." + +#: ../../addon/tour/tour.php:87 +msgid "" +"New events have occurred in your network. Click here to see what has " +"happened!" +msgstr "Se han producido nuevos eventos en su red. ¡Haga clic aquí para ver lo que ha sucedido!" + +#: ../../addon/tour/tour.php:88 +msgid "You have received a new private message. Click here to see from who!" +msgstr "Ha recibido un nuevo mensaje privado. Haga clic aquí para ver de quién!" + +#: ../../addon/tour/tour.php:89 +msgid "There are events this week. Click here too see which!" +msgstr "Hay eventos esta semana. Haga clic aquí para ver cuáles!" + +#: ../../addon/tour/tour.php:90 +msgid "You have received a new introduction. Click here to see who!" +msgstr "Ha recibido una nueva solicitud de conexión. ¡Pulse aquí para ver de quién!" + +#: ../../addon/tour/tour.php:91 +msgid "" +"There is a new system notification. Click here to see what has happened!" +msgstr "Hay una nueva notificación del sistema. ¡Haga clic aquí para ver lo que ha sucedido!" + +#: ../../addon/tour/tour.php:94 +msgid "Click here to share text, images, videos and sound." +msgstr "Haga clic aquí para compartir texto, imágenes, vídeos y sonido." + +#: ../../addon/tour/tour.php:95 +msgid "You can write an optional title for your update (good for long posts)." +msgstr "Puede escribir un título opcional para su actualización (bueno para los mensajes largos)." + +#: ../../addon/tour/tour.php:96 +msgid "Entering some categories here makes it easier to find your post later." +msgstr "Al ingresar algunos temas aquí, es más fácil encontrar su publicación más tarde." + +#: ../../addon/tour/tour.php:97 +msgid "Share photos, links, location, etc." +msgstr "Compartir fotos, enlaces, ubicación, etc." + +#: ../../addon/tour/tour.php:98 +msgid "" +"Only want to share content for a while? Make it expire at a certain date." +msgstr "¿Solo quieres compartir contenido durante un tiempo? Haga que expire en una fecha determinada." + +#: ../../addon/tour/tour.php:99 +msgid "You can password protect content." +msgstr "Puede proteger contenido con una contraseña." + +#: ../../addon/tour/tour.php:100 +msgid "Choose who you share with." +msgstr "Elegir con quién compartir." + +#: ../../addon/tour/tour.php:102 +msgid "Click here when you are done." +msgstr "Haga clic aquí cuando haya terminado." + +#: ../../addon/tour/tour.php:105 +msgid "Adjust from which channels posts should be displayed." +msgstr "Ajustar de qué canales se deben mostrar las publicaciones." + +#: ../../addon/tour/tour.php:106 +msgid "Only show posts from channels in the specified privacy group." +msgstr "Mostrar solo las entradas de los canales de un grupo específico de canales." + +#: ../../addon/tour/tour.php:110 +msgid "Easily find posts containing tags (keywords preceded by the \"#\" symbol)." +msgstr "Encuentre fácilmente entradas que contengan etiquetas (palabras clave precedidas del símbolo \"#\")." + +#: ../../addon/tour/tour.php:111 +msgid "Easily find posts in given category." +msgstr "Encuentre fácilmente las publicaciones en una categoría dada." + +#: ../../addon/tour/tour.php:112 +msgid "Easily find posts by date." +msgstr "Encuentre fácilmente entradas por fechas." + +#: ../../addon/tour/tour.php:113 +msgid "" +"Suggested users who have volounteered to be shown as suggestions, and who we" +" think you might find interesting." +msgstr "Se sugiere a los usuarios que se han ofrecido voluntariamente que se muestren como sugerencias, y que creemos que podrían resultar interesantes." + +#: ../../addon/tour/tour.php:114 +msgid "Here you see channels you have connected to." +msgstr "Aquí puede ver los canales a los que está conectado." + +#: ../../addon/tour/tour.php:115 +msgid "Save your search so you can repeat it at a later date." +msgstr "Guarde su búsqueda para poder repetirla en una fecha posterior." + +#: ../../addon/tour/tour.php:118 +msgid "" +"If you see this icon you can be sure that the sender is who it say it is. It" +" is normal that it is not always possible to verify the sender, so the icon " +"will be missing sometimes. There is usually no need to worry about that." +msgstr "Si ve este icono puede estar seguro de que el remitente es quien dice ser. Es normal que no siempre sea posible verificar el remitente, por lo que el icono faltará en ocasiones. Por lo general, no hay necesidad de preocuparse por eso." + +#: ../../addon/tour/tour.php:119 +msgid "" +"Danger! It seems someone tried to forge a message! This message is not " +"necessarily from who it says it is from!" +msgstr "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!" + +#: ../../addon/tour/tour.php:126 +msgid "" +"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can " +"pause it at any time and continue where you left off by reloading the page, " +"or navigting to another page.</p><p>You can also advance by pressing the " +"return key" +msgstr "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno" + #: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 msgid "Add some colour to tag clouds" msgstr "Añadir color a las nubes de etiquetas" @@ -738,15 +882,15 @@ msgstr "En píxeles. Desde 1 hasta 1024, 0 será reemplazado por el predetermina msgid "Photo Cache" msgstr "Photo Cache" -#: ../../addon/gallery/gallery.php:43 ../../addon/gallery/Mod_Gallery.php:136 +#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 msgid "Gallery" msgstr "Galería" -#: ../../addon/gallery/gallery.php:46 +#: ../../addon/gallery/gallery.php:41 msgid "Photo Gallery" msgstr "Galería de fotos" -#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1424 +#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1327 #: ../../Zotlabs/Module/Hcard.php:12 ../../Zotlabs/Module/Editwebpage.php:32 #: ../../Zotlabs/Module/Profile.php:20 ../../Zotlabs/Module/Webpages.php:39 #: ../../Zotlabs/Module/Filestorage.php:53 ../../Zotlabs/Module/Connect.php:17 @@ -775,34 +919,34 @@ msgid "" "Set a random planet from the Star Wars Empire as your location when posting" msgstr "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias como su ubicación cuando publique." -#: ../../addon/openid/Mod_Id.php:53 ../../addon/mail/Mod_Mail.php:25 -#: ../../addon/pumpio/pumpio.php:44 ../../addon/keepout/keepout.php:36 -#: ../../include/photos.php:27 ../../include/items.php:3965 -#: ../../include/attach.php:156 ../../include/attach.php:205 -#: ../../include/attach.php:278 ../../include/attach.php:386 -#: ../../include/attach.php:400 ../../include/attach.php:407 -#: ../../include/attach.php:489 ../../include/attach.php:1055 -#: ../../include/attach.php:1129 ../../include/attach.php:1292 -#: ../../Zotlabs/Module/Article_edit.php:51 +#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:44 +#: ../../addon/keepout/keepout.php:36 +#: ../../addon/flashcards/Mod_Flashcards.php:276 ../../include/photos.php:27 +#: ../../include/items.php:3796 ../../include/attach.php:150 +#: ../../include/attach.php:199 ../../include/attach.php:272 +#: ../../include/attach.php:380 ../../include/attach.php:394 +#: ../../include/attach.php:401 ../../include/attach.php:483 +#: ../../include/attach.php:1043 ../../include/attach.php:1117 +#: ../../include/attach.php:1280 ../../Zotlabs/Module/Article_edit.php:51 #: ../../Zotlabs/Module/Network.php:19 ../../Zotlabs/Module/Register.php:80 #: ../../Zotlabs/Module/Setup.php:206 #: ../../Zotlabs/Module/Viewconnections.php:28 #: ../../Zotlabs/Module/Viewconnections.php:33 -#: ../../Zotlabs/Module/Channel.php:181 ../../Zotlabs/Module/Channel.php:348 -#: ../../Zotlabs/Module/Channel.php:387 ../../Zotlabs/Module/Group.php:15 -#: ../../Zotlabs/Module/Group.php:31 ../../Zotlabs/Module/Card_edit.php:51 +#: ../../Zotlabs/Module/Channel.php:169 ../../Zotlabs/Module/Channel.php:332 +#: ../../Zotlabs/Module/Channel.php:371 ../../Zotlabs/Module/Group.php:14 +#: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Card_edit.php:51 #: ../../Zotlabs/Module/Editwebpage.php:68 #: ../../Zotlabs/Module/Editwebpage.php:89 #: ../../Zotlabs/Module/Editwebpage.php:107 -#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Chat.php:113 -#: ../../Zotlabs/Module/Chat.php:118 -#: ../../Zotlabs/Module/Channel_calendar.php:230 -#: ../../Zotlabs/Module/Like.php:193 ../../Zotlabs/Module/Poke.php:157 -#: ../../Zotlabs/Module/Item.php:383 ../../Zotlabs/Module/Item.php:402 -#: ../../Zotlabs/Module/Item.php:412 ../../Zotlabs/Module/Item.php:1328 +#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Chat.php:115 +#: ../../Zotlabs/Module/Chat.php:120 +#: ../../Zotlabs/Module/Channel_calendar.php:224 +#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Poke.php:157 +#: ../../Zotlabs/Module/Item.php:417 ../../Zotlabs/Module/Item.php:436 +#: ../../Zotlabs/Module/Item.php:446 ../../Zotlabs/Module/Item.php:1315 #: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Profile.php:85 #: ../../Zotlabs/Module/Profile.php:101 -#: ../../Zotlabs/Module/Sharedwithme.php:19 +#: ../../Zotlabs/Module/Sharedwithme.php:16 #: ../../Zotlabs/Module/Webpages.php:133 #: ../../Zotlabs/Module/Filestorage.php:17 #: ../../Zotlabs/Module/Filestorage.php:72 @@ -813,7 +957,7 @@ msgstr "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias #: ../../Zotlabs/Module/Achievements.php:34 #: ../../Zotlabs/Module/Events.php:277 ../../Zotlabs/Module/Manage.php:10 #: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Viewsrc.php:19 -#: ../../Zotlabs/Module/Moderate.php:15 ../../Zotlabs/Module/Display.php:456 +#: ../../Zotlabs/Module/Moderate.php:13 ../../Zotlabs/Module/Display.php:451 #: ../../Zotlabs/Module/Common.php:38 ../../Zotlabs/Module/New_channel.php:105 #: ../../Zotlabs/Module/New_channel.php:130 #: ../../Zotlabs/Module/Service_limits.php:11 @@ -821,41 +965,41 @@ msgstr "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias #: ../../Zotlabs/Module/Cards.php:86 ../../Zotlabs/Module/Api.php:24 #: ../../Zotlabs/Module/Regmod.php:20 ../../Zotlabs/Module/Blocks.php:73 #: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Message.php:18 -#: ../../Zotlabs/Module/Vote.php:19 ../../Zotlabs/Module/Profile_photo.php:338 -#: ../../Zotlabs/Module/Profile_photo.php:351 +#: ../../Zotlabs/Module/Profile_photo.php:336 +#: ../../Zotlabs/Module/Profile_photo.php:349 #: ../../Zotlabs/Module/Editblock.php:67 ../../Zotlabs/Module/Settings.php:59 #: ../../Zotlabs/Module/Editlayout.php:67 #: ../../Zotlabs/Module/Editlayout.php:90 #: ../../Zotlabs/Module/Connections.php:32 -#: ../../Zotlabs/Module/Cover_photo.php:341 -#: ../../Zotlabs/Module/Cover_photo.php:354 ../../Zotlabs/Module/Photos.php:71 +#: ../../Zotlabs/Module/Cover_photo.php:347 +#: ../../Zotlabs/Module/Cover_photo.php:360 ../../Zotlabs/Module/Photos.php:69 #: ../../Zotlabs/Module/Page.php:34 ../../Zotlabs/Module/Page.php:133 -#: ../../Zotlabs/Module/Profiles.php:200 ../../Zotlabs/Module/Profiles.php:637 +#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635 #: ../../Zotlabs/Module/Articles.php:89 ../../Zotlabs/Module/Bookmarks.php:70 #: ../../Zotlabs/Module/Invite.php:21 ../../Zotlabs/Module/Invite.php:102 -#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74 -#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Menu.php:130 -#: ../../Zotlabs/Module/Menu.php:141 ../../Zotlabs/Module/Defperms.php:182 -#: ../../Zotlabs/Module/Thing.php:282 ../../Zotlabs/Module/Thing.php:302 -#: ../../Zotlabs/Module/Thing.php:343 ../../Zotlabs/Module/Pdledit.php:35 -#: ../../Zotlabs/Module/Wiki.php:59 ../../Zotlabs/Module/Wiki.php:285 -#: ../../Zotlabs/Module/Wiki.php:428 ../../Zotlabs/Module/Suggest.php:32 -#: ../../Zotlabs/Module/Connedit.php:400 +#: ../../Zotlabs/Module/Mail.php:150 ../../Zotlabs/Module/Block.php:24 +#: ../../Zotlabs/Module/Block.php:74 ../../Zotlabs/Module/Rate.php:113 +#: ../../Zotlabs/Module/Menu.php:130 ../../Zotlabs/Module/Menu.php:141 +#: ../../Zotlabs/Module/Defperms.php:181 ../../Zotlabs/Module/Thing.php:280 +#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341 +#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Wiki.php:59 +#: ../../Zotlabs/Module/Wiki.php:285 ../../Zotlabs/Module/Wiki.php:428 +#: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Connedit.php:399 #: ../../Zotlabs/Module/Notifications.php:11 #: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 #: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Locs.php:87 -#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Lib/Chatroom.php:135 -#: ../../Zotlabs/Web/WebServer.php:115 +#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Lib/Chatroom.php:133 +#: ../../Zotlabs/Web/WebServer.php:123 msgid "Permission denied." msgstr "Acceso denegado." #: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1707 +#: ../../include/selectors.php:77 ../../include/channel.php:1610 msgid "Male" msgstr "Hombre" #: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1705 +#: ../../include/selectors.php:77 ../../include/channel.php:1608 msgid "Female" msgstr "Mujer" @@ -869,7 +1013,7 @@ msgstr "Error de protocolo OpenID. No se recuperó ninguna ID." msgid "Welcome %s. Remote authentication successful." msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente." -#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:320 +#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 msgid "Login failed." msgstr "El acceso ha fallado." @@ -903,16 +1047,16 @@ msgstr "Nombre completo" #: ../../addon/openid/MysqlProvider.php:56 #: ../../addon/openid/MysqlProvider.php:57 #: ../../addon/redred/Mod_Redred.php:71 ../../addon/rtof/Mod_Rtof.php:57 -#: ../../include/network.php:1736 ../../Zotlabs/Module/Cdav.php:1372 +#: ../../include/network.php:1732 ../../Zotlabs/Module/Cdav.php:1377 #: ../../Zotlabs/Module/Admin/Accounts.php:171 #: ../../Zotlabs/Module/Admin/Accounts.php:183 -#: ../../Zotlabs/Module/Profiles.php:789 ../../Zotlabs/Module/Connedit.php:928 +#: ../../Zotlabs/Module/Profiles.php:787 ../../Zotlabs/Module/Connedit.php:927 msgid "Email" msgstr "Correo electrónico" #: ../../addon/openid/MysqlProvider.php:58 #: ../../addon/openid/MysqlProvider.php:59 -#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:361 +#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:360 msgid "Profile Photo" msgstr "Foto del perfil" @@ -940,16 +1084,16 @@ msgstr "Foto del perfil 80px" msgid "Profile Photo 128px" msgstr "Foto del perfil 128px" -#: ../../addon/openid/MysqlProvider.php:67 ../../include/event.php:123 +#: ../../addon/openid/MysqlProvider.php:67 msgid "Timezone" msgstr "Zona horaria" #: ../../addon/openid/MysqlProvider.php:68 -#: ../../Zotlabs/Module/Profiles.php:769 +#: ../../Zotlabs/Module/Profiles.php:767 msgid "Homepage URL" msgstr "Dirección de la página personal" -#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:359 +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:358 msgid "Language" msgstr "Idioma" @@ -970,7 +1114,7 @@ msgid "Birthdate" msgstr "Fecha de nacimiento" #: ../../addon/openid/MysqlProvider.php:74 -#: ../../Zotlabs/Module/Profiles.php:488 +#: ../../Zotlabs/Module/Profiles.php:486 msgid "Gender" msgstr "Género" @@ -1125,7 +1269,7 @@ msgstr "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refiere msgid "Channel is required." msgstr "Se requiere un canal." -#: ../../addon/redred/Mod_Redred.php:29 ../../Zotlabs/Module/Network.php:326 +#: ../../addon/redred/Mod_Redred.php:29 ../../Zotlabs/Module/Network.php:325 msgid "Invalid channel." msgstr "El canal no es válido." @@ -1163,6 +1307,7 @@ msgid "Hubzilla channel name" msgstr "Nombre del canal de Hubzilla" #: ../../addon/redred/Mod_Redred.php:79 +#: ../../addon/jappixmini/Mod_Jappixmini.php:195 msgid "Hubzilla password" msgstr "Contraseña de Hubzilla" @@ -1179,13 +1324,14 @@ msgid "Photos imported" msgstr "Se han importado las fotos" #: ../../addon/redphotos/redphotos.php:119 -#: ../../addon/redfiles/redfiles.php:109 ../../addon/hzfiles/hzfiles.php:75 -#: ../../include/items.php:439 ../../Zotlabs/Module/Import_items.php:120 -#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Group.php:99 -#: ../../Zotlabs/Module/Like.php:295 ../../Zotlabs/Module/Cloud.php:119 -#: ../../Zotlabs/Module/Share.php:72 ../../Zotlabs/Module/Subthread.php:86 +#: ../../addon/frphotos/frphotos.php:82 ../../addon/redfiles/redfiles.php:109 +#: ../../addon/hzfiles/hzfiles.php:75 ../../include/items.php:435 +#: ../../Zotlabs/Module/Import_items.php:120 +#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Group.php:98 +#: ../../Zotlabs/Module/Like.php:301 ../../Zotlabs/Module/Cloud.php:119 +#: ../../Zotlabs/Module/Share.php:71 ../../Zotlabs/Module/Subthread.php:86 #: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:82 -#: ../../Zotlabs/Web/WebServer.php:114 +#: ../../Zotlabs/Web/WebServer.php:122 msgid "Permission denied" msgstr "Permiso denegado" @@ -1229,10 +1375,10 @@ msgid "0 or blank to import all available" msgstr "0 o en blanco para importar todos los disponibles" #: ../../addon/redphotos/redphotohelper.php:71 -#: ../../addon/pubcrawl/as.php:1810 ../../addon/diaspora/Receiver.php:1597 -#: ../../include/text.php:2233 ../../include/conversation.php:118 -#: ../../Zotlabs/Module/Like.php:386 ../../Zotlabs/Module/Tagger.php:71 -#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Lib/Activity.php:2892 +#: ../../addon/pubcrawl/as.php:1692 ../../addon/diaspora/Receiver.php:1592 +#: ../../include/text.php:2119 ../../include/conversation.php:116 +#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Module/Tagger.php:69 +#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Lib/Activity.php:2444 msgid "photo" msgstr "foto" @@ -1364,7 +1510,7 @@ msgid "Post to GNU social" msgstr "Publicar en GNU social" #: ../../addon/statusnet/statusnet.php:593 -#: ../../Zotlabs/Module/Admin/Site.php:295 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "Site name" msgstr "Nombre del sitio" @@ -1372,13 +1518,13 @@ msgstr "Nombre del sitio" msgid "API URL" msgstr "URL de la API" -#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:506 +#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:501 #: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141 #: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 msgid "Consumer Secret" msgstr "Consumer Secret" -#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:505 +#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:500 #: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140 msgid "Consumer Key" msgstr "Consumer Key" @@ -1387,6 +1533,26 @@ msgstr "Consumer Key" msgid "Application name" msgstr "Nombre de la aplicación" +#: ../../addon/frphotos/frphotos.php:92 +msgid "Friendica Photo Album Import" +msgstr "Importar un álbum de fotos de Friendica" + +#: ../../addon/frphotos/frphotos.php:93 +msgid "This will import all your Friendica photo albums to this Red channel." +msgstr "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla." + +#: ../../addon/frphotos/frphotos.php:94 +msgid "Friendica Server base URL" +msgstr "URL base del servidor de Friendica" + +#: ../../addon/frphotos/frphotos.php:95 +msgid "Friendica Login Username" +msgstr "Nombre de inicio de sesión en Friendica" + +#: ../../addon/frphotos/frphotos.php:96 +msgid "Friendica Login Password" +msgstr "Contraseña de inicio de sesión en Friendica" + #: ../../addon/rtof/Mod_Rtof.php:24 msgid "Friendica Crosspost Connector Settings saved." msgstr "Se han guardado los ajustes del conector de publicación cruzada con Friendica." @@ -1427,66 +1593,51 @@ msgstr "Publicar en Friendica" msgid "Post to WordPress" msgstr "Publicar en WordPress" -#: ../../addon/wppost/wppost.php:173 ../../addon/wppost/Mod_Wppost.php:98 -#: ../../addon/dwpost/Mod_Dwpost.php:69 ../../addon/dwpost/dwpost.php:134 -#: ../../addon/ljpost/ljpost.php:134 ../../Zotlabs/Module/Wiki.php:384 -msgid "Source" -msgstr "Fuente" - -#: ../../addon/wppost/Mod_Wppost.php:30 +#: ../../addon/wppost/Mod_Wppost.php:28 msgid "Wordpress Settings saved." msgstr "Se han guardado los ajustes de WordPress." -#: ../../addon/wppost/Mod_Wppost.php:43 +#: ../../addon/wppost/Mod_Wppost.php:41 msgid "Wordpress Post App" msgstr "App Publicar en Wordpress" -#: ../../addon/wppost/Mod_Wppost.php:44 +#: ../../addon/wppost/Mod_Wppost.php:42 msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API" msgstr "Publicar en WordPress o cualquier otra cosa que utilice la API XMLRPC de wordpress" -#: ../../addon/wppost/Mod_Wppost.php:69 +#: ../../addon/wppost/Mod_Wppost.php:65 msgid "WordPress username" msgstr "Nombre de usuario de WordPress" -#: ../../addon/wppost/Mod_Wppost.php:73 +#: ../../addon/wppost/Mod_Wppost.php:69 msgid "WordPress password" msgstr "Contraseña de WordPress" -#: ../../addon/wppost/Mod_Wppost.php:77 +#: ../../addon/wppost/Mod_Wppost.php:73 msgid "WordPress API URL" msgstr "URL de la API de WordPress" -#: ../../addon/wppost/Mod_Wppost.php:78 +#: ../../addon/wppost/Mod_Wppost.php:74 msgid "Typically https://your-blog.tld/xmlrpc.php" msgstr "Habitualmente https://your-blog.tld/xmlrpc.php" -#: ../../addon/wppost/Mod_Wppost.php:81 +#: ../../addon/wppost/Mod_Wppost.php:77 msgid "WordPress blogid" msgstr "Blog de WordPress" -#: ../../addon/wppost/Mod_Wppost.php:82 +#: ../../addon/wppost/Mod_Wppost.php:78 msgid "For multi-user sites such as wordpress.com, otherwise leave blank" msgstr "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco" -#: ../../addon/wppost/Mod_Wppost.php:86 +#: ../../addon/wppost/Mod_Wppost.php:82 msgid "Post to WordPress by default" msgstr "Publicar en WordPress por defecto" -#: ../../addon/wppost/Mod_Wppost.php:90 +#: ../../addon/wppost/Mod_Wppost.php:86 msgid "Forward comments (requires hubzilla_wp plugin)" msgstr "Reenviar comentarios (requerido por el plugin hubzilla_wp)" -#: ../../addon/wppost/Mod_Wppost.php:94 ../../addon/dwpost/Mod_Dwpost.php:65 -#: ../../addon/ljpost/Mod_Ljpost.php:71 -msgid "Add link to original post" -msgstr "Añadir enlace a la entrada original" - -#: ../../addon/wppost/Mod_Wppost.php:98 ../../addon/dwpost/Mod_Dwpost.php:69 -msgid "Link description (default:" -msgstr "Descripción del enlace (por defecto: " - -#: ../../addon/wppost/Mod_Wppost.php:106 +#: ../../addon/wppost/Mod_Wppost.php:94 msgid "Wordpress Post" msgstr "Publicar en Wordpress" @@ -1511,7 +1662,7 @@ msgid "" msgstr "Este complemento copia el contenido existente y el almacenamiento de ficheros en un canal clonado/copiado. Una vez instalada la aplicación, visite la aplicación recién instalada. Esto le permitirá establecer la ubicación de su canal original y un rango de fechas opcional de ficheros/conversaciones para copiar." #: ../../addon/content_import/Mod_content_import.php:135 -#: ../../Zotlabs/Lib/Apps.php:332 +#: ../../Zotlabs/Lib/Apps.php:331 msgid "Content Import" msgstr "Importación de contenidos" @@ -1552,211 +1703,211 @@ msgstr "Modificado desde la fecha yyyy-mm-dd" msgid "Until modified date yyyy-mm-dd" msgstr "Modificado hasta la fecha yyyy-mm-dd" -#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1313 +#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 msgid "Set your location" msgstr "Establecer su ubicación" -#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1314 +#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 msgid "Clear browser location" msgstr "Eliminar los datos de localización geográfica del navegador" -#: ../../addon/hsse/hsse.php:95 ../../addon/mail/Mod_Mail.php:166 -#: ../../addon/mail/Mod_Mail.php:309 ../../include/conversation.php:1326 +#: ../../addon/hsse/hsse.php:95 ../../include/conversation.php:1298 #: ../../Zotlabs/Module/Article_edit.php:100 #: ../../Zotlabs/Module/Card_edit.php:101 -#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:220 -#: ../../Zotlabs/Module/Editblock.php:116 +#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:222 +#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Mail.php:292 +#: ../../Zotlabs/Module/Mail.php:435 msgid "Insert web link" msgstr "Insertar enlace web" -#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1330 +#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 msgid "Embed (existing) photo from your photo albums" msgstr "Insertar una foto de sus álbumes" -#: ../../addon/hsse/hsse.php:134 ../../addon/mail/Mod_Mail.php:119 -#: ../../addon/mail/Mod_Mail.php:240 ../../include/conversation.php:1365 -#: ../../Zotlabs/Module/Chat.php:218 +#: ../../addon/hsse/hsse.php:134 ../../include/conversation.php:1337 +#: ../../Zotlabs/Module/Chat.php:220 ../../Zotlabs/Module/Mail.php:245 +#: ../../Zotlabs/Module/Mail.php:366 msgid "Please enter a link URL:" msgstr "Por favor, introduzca la dirección del enlace:" -#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1366 +#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 msgid "Tag term:" msgstr "Término de la etiqueta:" -#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1367 +#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 msgid "Where are you right now?" msgstr "¿Donde está ahora?" -#: ../../addon/hsse/hsse.php:139 ../../include/conversation.php:1370 -#: ../../Zotlabs/Module/Profile_photo.php:509 -#: ../../Zotlabs/Module/Cover_photo.php:430 ../../Zotlabs/Module/Wiki.php:403 +#: ../../addon/hsse/hsse.php:139 ../../include/conversation.php:1342 +#: ../../Zotlabs/Module/Profile_photo.php:507 +#: ../../Zotlabs/Module/Cover_photo.php:436 ../../Zotlabs/Module/Wiki.php:403 msgid "Choose images to embed" msgstr "Elegir imágenes para incluir" -#: ../../addon/hsse/hsse.php:140 ../../include/conversation.php:1371 -#: ../../Zotlabs/Module/Profile_photo.php:510 -#: ../../Zotlabs/Module/Cover_photo.php:431 ../../Zotlabs/Module/Wiki.php:404 +#: ../../addon/hsse/hsse.php:140 ../../include/conversation.php:1343 +#: ../../Zotlabs/Module/Profile_photo.php:508 +#: ../../Zotlabs/Module/Cover_photo.php:437 ../../Zotlabs/Module/Wiki.php:404 msgid "Choose an album" msgstr "Elegir un álbum" -#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1372 +#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 msgid "Choose a different album..." msgstr "Elegir un álbum diferente..." -#: ../../addon/hsse/hsse.php:142 ../../include/conversation.php:1373 -#: ../../Zotlabs/Module/Profile_photo.php:512 -#: ../../Zotlabs/Module/Cover_photo.php:433 ../../Zotlabs/Module/Wiki.php:406 +#: ../../addon/hsse/hsse.php:142 ../../include/conversation.php:1345 +#: ../../Zotlabs/Module/Profile_photo.php:510 +#: ../../Zotlabs/Module/Cover_photo.php:439 ../../Zotlabs/Module/Wiki.php:406 msgid "Error getting album list" msgstr "Error al obtener la lista de álbumes" -#: ../../addon/hsse/hsse.php:143 ../../include/conversation.php:1374 -#: ../../Zotlabs/Module/Profile_photo.php:513 -#: ../../Zotlabs/Module/Cover_photo.php:434 ../../Zotlabs/Module/Wiki.php:407 +#: ../../addon/hsse/hsse.php:143 ../../include/conversation.php:1346 +#: ../../Zotlabs/Module/Profile_photo.php:511 +#: ../../Zotlabs/Module/Cover_photo.php:440 ../../Zotlabs/Module/Wiki.php:407 msgid "Error getting photo link" msgstr "Error al obtener el enlace de la foto" -#: ../../addon/hsse/hsse.php:144 ../../include/conversation.php:1375 -#: ../../Zotlabs/Module/Profile_photo.php:514 -#: ../../Zotlabs/Module/Cover_photo.php:435 ../../Zotlabs/Module/Wiki.php:408 +#: ../../addon/hsse/hsse.php:144 ../../include/conversation.php:1347 +#: ../../Zotlabs/Module/Profile_photo.php:512 +#: ../../Zotlabs/Module/Cover_photo.php:441 ../../Zotlabs/Module/Wiki.php:408 msgid "Error getting album" msgstr "Error al obtener el álbum" -#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1376 +#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 msgid "Comments enabled" msgstr "Comentarios habilitados" -#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1377 +#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 msgid "Comments disabled" msgstr "Comentarios deshabilitados" -#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1387 +#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1359 #: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Module/Events.php:486 -#: ../../Zotlabs/Module/Photos.php:1098 ../../Zotlabs/Lib/ThreadItem.php:835 +#: ../../Zotlabs/Module/Photos.php:1097 ../../Zotlabs/Lib/ThreadItem.php:806 msgid "Preview" msgstr "Previsualizar" -#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1420 +#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392 #: ../../Zotlabs/Widget/Cdav.php:136 ../../Zotlabs/Module/Webpages.php:256 -#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1077 +#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1075 #: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194 msgid "Share" msgstr "Compartir" -#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1429 +#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401 msgid "Page link name" msgstr "Nombre del enlace de la página" -#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1432 +#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404 msgid "Post as" msgstr "Publicar como" -#: ../../addon/hsse/hsse.php:200 ../../include/conversation.php:1434 -#: ../../Zotlabs/Lib/ThreadItem.php:826 +#: ../../addon/hsse/hsse.php:200 ../../include/conversation.php:1406 +#: ../../Zotlabs/Lib/ThreadItem.php:797 msgid "Bold" msgstr "Negrita" -#: ../../addon/hsse/hsse.php:201 ../../include/conversation.php:1435 -#: ../../Zotlabs/Lib/ThreadItem.php:827 +#: ../../addon/hsse/hsse.php:201 ../../include/conversation.php:1407 +#: ../../Zotlabs/Lib/ThreadItem.php:798 msgid "Italic" msgstr "Itálico " -#: ../../addon/hsse/hsse.php:202 ../../include/conversation.php:1436 -#: ../../Zotlabs/Lib/ThreadItem.php:828 +#: ../../addon/hsse/hsse.php:202 ../../include/conversation.php:1408 +#: ../../Zotlabs/Lib/ThreadItem.php:799 msgid "Underline" msgstr "Subrayar" -#: ../../addon/hsse/hsse.php:203 ../../include/conversation.php:1437 -#: ../../Zotlabs/Lib/ThreadItem.php:829 +#: ../../addon/hsse/hsse.php:203 ../../include/conversation.php:1409 +#: ../../Zotlabs/Lib/ThreadItem.php:800 msgid "Quote" msgstr "Citar" -#: ../../addon/hsse/hsse.php:204 ../../include/conversation.php:1438 -#: ../../Zotlabs/Lib/ThreadItem.php:830 +#: ../../addon/hsse/hsse.php:204 ../../include/conversation.php:1410 +#: ../../Zotlabs/Lib/ThreadItem.php:801 msgid "Code" msgstr "Código" -#: ../../addon/hsse/hsse.php:205 ../../include/conversation.php:1439 -#: ../../Zotlabs/Lib/ThreadItem.php:832 +#: ../../addon/hsse/hsse.php:205 ../../include/conversation.php:1411 +#: ../../Zotlabs/Lib/ThreadItem.php:803 msgid "Attach/Upload file" msgstr "Adjuntar/cargar fichero" -#: ../../addon/hsse/hsse.php:208 ../../include/conversation.php:1442 +#: ../../addon/hsse/hsse.php:208 ../../include/conversation.php:1414 #: ../../Zotlabs/Module/Wiki.php:400 msgid "Embed an image from your albums" msgstr "Incluir una imagen de sus álbumes" #: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 -#: ../../include/conversation.php:1443 ../../include/conversation.php:1496 +#: ../../include/conversation.php:1415 ../../include/conversation.php:1464 #: ../../Zotlabs/Module/Article_edit.php:130 #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 #: ../../Zotlabs/Module/Card_edit.php:131 ../../Zotlabs/Module/Oauth.php:112 #: ../../Zotlabs/Module/Oauth.php:138 ../../Zotlabs/Module/Editwebpage.php:169 -#: ../../Zotlabs/Module/Cdav.php:1054 ../../Zotlabs/Module/Cdav.php:1386 +#: ../../Zotlabs/Module/Cdav.php:1081 ../../Zotlabs/Module/Cdav.php:1391 #: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 #: ../../Zotlabs/Module/Editpost.php:110 #: ../../Zotlabs/Module/Admin/Addons.php:427 -#: ../../Zotlabs/Module/Profile_photo.php:507 +#: ../../Zotlabs/Module/Profile_photo.php:505 #: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Filer.php:55 #: ../../Zotlabs/Module/Editlayout.php:140 -#: ../../Zotlabs/Module/Cover_photo.php:428 -#: ../../Zotlabs/Module/Profiles.php:803 ../../Zotlabs/Module/Oauth2.php:117 +#: ../../Zotlabs/Module/Cover_photo.php:434 +#: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Oauth2.php:117 #: ../../Zotlabs/Module/Oauth2.php:145 ../../Zotlabs/Module/Wiki.php:368 -#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Connedit.php:942 +#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Connedit.php:941 msgid "Cancel" msgstr "Cancelar" #: ../../addon/hsse/hsse.php:210 ../../addon/hsse/hsse.php:257 -#: ../../include/conversation.php:1444 ../../include/conversation.php:1495 -#: ../../Zotlabs/Module/Profile_photo.php:508 -#: ../../Zotlabs/Module/Cover_photo.php:429 ../../Zotlabs/Module/Wiki.php:402 +#: ../../include/conversation.php:1416 ../../include/conversation.php:1463 +#: ../../Zotlabs/Module/Profile_photo.php:506 +#: ../../Zotlabs/Module/Cover_photo.php:435 ../../Zotlabs/Module/Wiki.php:402 msgid "OK" msgstr "OK" -#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1446 +#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 msgid "Toggle voting" msgstr "Cambiar votación" -#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1453 +#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 msgid "Disable comments" msgstr "Dehabilitar los comentarios" -#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1454 +#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 msgid "Toggle comments" msgstr "Activar o desactivar los comentarios" -#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1459 +#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1427 #: ../../Zotlabs/Module/Article_edit.php:116 #: ../../Zotlabs/Module/Card_edit.php:117 -#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:673 -#: ../../Zotlabs/Module/Photos.php:1043 +#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:671 +#: ../../Zotlabs/Module/Photos.php:1041 msgid "Title (optional)" msgstr "Título (opcional)" -#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1462 +#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 msgid "Categories (optional, comma-separated list)" msgstr "Temas (opcional, lista separada por comas)" -#: ../../addon/hsse/hsse.php:225 ../../include/conversation.php:1463 +#: ../../addon/hsse/hsse.php:225 ../../include/conversation.php:1431 #: ../../Zotlabs/Module/Events.php:487 msgid "Permission settings" msgstr "Configuración de permisos" -#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1485 +#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 msgid "Other networks and post services" msgstr "Otras redes y servicios de publicación" -#: ../../addon/hsse/hsse.php:250 ../../addon/mail/Mod_Mail.php:170 -#: ../../addon/mail/Mod_Mail.php:313 ../../include/conversation.php:1488 +#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456 +#: ../../Zotlabs/Module/Mail.php:296 ../../Zotlabs/Module/Mail.php:439 msgid "Set expiration date" msgstr "Configurar fecha de caducidad" -#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1491 +#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 msgid "Set publish date" msgstr "Establecer la fecha de publicación" -#: ../../addon/hsse/hsse.php:255 ../../addon/mail/Mod_Mail.php:172 -#: ../../addon/mail/Mod_Mail.php:315 ../../include/conversation.php:1493 -#: ../../Zotlabs/Module/Chat.php:219 ../../Zotlabs/Lib/ThreadItem.php:839 +#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1461 +#: ../../Zotlabs/Module/Chat.php:221 ../../Zotlabs/Module/Mail.php:298 +#: ../../Zotlabs/Module/Mail.php:441 ../../Zotlabs/Lib/ThreadItem.php:810 msgid "Encrypt text" msgstr "Cifrar texto" @@ -1772,54 +1923,53 @@ msgstr "App WYSIWYG Status" msgid "WYSIWYG Status" msgstr "Estado de WYSIWYG" -#: ../../addon/openstreetmap/openstreetmap.php:133 +#: ../../addon/openstreetmap/openstreetmap.php:131 msgid "View Larger" msgstr "Ver más grande" -#: ../../addon/openstreetmap/openstreetmap.php:156 +#: ../../addon/openstreetmap/openstreetmap.php:154 msgid "Tile Server URL" msgstr "URL del servidor de mosaicos de imágenes " -#: ../../addon/openstreetmap/openstreetmap.php:156 +#: ../../addon/openstreetmap/openstreetmap.php:154 msgid "" "A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" " "target=\"_blank\">public tile servers</a>" msgstr "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">servidores públicos de mosaicos de imágenes</a>" -#: ../../addon/openstreetmap/openstreetmap.php:157 +#: ../../addon/openstreetmap/openstreetmap.php:155 msgid "Nominatim (reverse geocoding) Server URL" msgstr "URL del servidor nominatim (geocodificación inversa)" -#: ../../addon/openstreetmap/openstreetmap.php:157 +#: ../../addon/openstreetmap/openstreetmap.php:155 msgid "" "A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" " "target=\"_blank\">Nominatim servers</a>" msgstr "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">servidores nominatim</a>" -#: ../../addon/openstreetmap/openstreetmap.php:158 +#: ../../addon/openstreetmap/openstreetmap.php:156 msgid "Default zoom" msgstr "Zoom predeterminado" -#: ../../addon/openstreetmap/openstreetmap.php:158 +#: ../../addon/openstreetmap/openstreetmap.php:156 msgid "" "The default zoom level. (1:world, 18:highest, also depends on tile server)" msgstr "El nivel de zoom predeterminado. (1: mundo, 18: el más alto, también depende del servidor del mosaico de imágenes)" -#: ../../addon/openstreetmap/openstreetmap.php:159 +#: ../../addon/openstreetmap/openstreetmap.php:157 msgid "Include marker on map" msgstr "Incluir un marcador en el mapa" -#: ../../addon/openstreetmap/openstreetmap.php:159 +#: ../../addon/openstreetmap/openstreetmap.php:157 msgid "Include a marker on the map." msgstr "Incluir un marcador en el mapa." -#: ../../addon/openstreetmap/openstreetmap.php:171 +#: ../../addon/openstreetmap/openstreetmap.php:169 #: ../../addon/rendezvous/rendezvous.php:82 -#: ../../addon/twitter/twitter.php:494 ../../addon/msgfooter/msgfooter.php:54 -#: ../../addon/diaspora/diaspora.php:93 ../../addon/piwik/piwik.php:116 -#: ../../addon/logrot/logrot.php:54 ../../addon/xmpp/xmpp.php:54 -#: ../../Zotlabs/Module/Settings/Channel.php:267 -#: ../../Zotlabs/Module/Defperms.php:112 +#: ../../addon/twitter/twitter.php:489 ../../addon/msgfooter/msgfooter.php:54 +#: ../../addon/piwik/piwik.php:116 ../../addon/logrot/logrot.php:54 +#: ../../addon/xmpp/xmpp.php:54 ../../Zotlabs/Module/Settings/Channel.php:266 +#: ../../Zotlabs/Module/Defperms.php:111 msgid "Settings updated." msgstr "Ajustes actualizados." @@ -1871,39 +2021,38 @@ msgstr "Generador QR" msgid "Enter some text" msgstr "Escribir algún texto" -#: ../../addon/pubcrawl/as.php:1134 ../../include/cdav.php:158 -#: ../../include/cdav.php:159 ../../include/cdav.php:167 -#: ../../include/conversation.php:1196 ../../Zotlabs/Widget/Album.php:84 -#: ../../Zotlabs/Widget/Pinned.php:270 ../../Zotlabs/Widget/Portfolio.php:95 -#: ../../Zotlabs/Module/Embedphotos.php:176 -#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1254 -#: ../../Zotlabs/Lib/Activity.php:1458 ../../Zotlabs/Lib/Apps.php:1112 -#: ../../Zotlabs/Lib/Apps.php:1196 ../../Zotlabs/Storage/Browser.php:164 +#: ../../addon/pubcrawl/as.php:1080 ../../include/conversation.php:1166 +#: ../../Zotlabs/Widget/Album.php:84 ../../Zotlabs/Widget/Portfolio.php:95 +#: ../../Zotlabs/Module/Embedphotos.php:174 ../../Zotlabs/Module/Cdav.php:871 +#: ../../Zotlabs/Module/Cdav.php:872 ../../Zotlabs/Module/Cdav.php:879 +#: ../../Zotlabs/Module/Photos.php:790 ../../Zotlabs/Module/Photos.php:1254 +#: ../../Zotlabs/Lib/Activity.php:1192 ../../Zotlabs/Lib/Apps.php:1114 +#: ../../Zotlabs/Lib/Apps.php:1198 ../../Zotlabs/Storage/Browser.php:164 msgid "Unknown" msgstr "Desconocido" -#: ../../addon/pubcrawl/as.php:1428 ../../addon/pubcrawl/as.php:1662 -#: ../../addon/pubcrawl/as.php:1856 ../../include/network.php:1735 -#: ../../Zotlabs/Lib/Activity.php:2742 ../../Zotlabs/Lib/Activity.php:2936 +#: ../../addon/pubcrawl/as.php:1348 ../../addon/pubcrawl/as.php:1544 +#: ../../addon/pubcrawl/as.php:1738 ../../include/network.php:1731 +#: ../../Zotlabs/Lib/Activity.php:2294 ../../Zotlabs/Lib/Activity.php:2488 msgid "ActivityPub" msgstr "ActivityPub" -#: ../../addon/pubcrawl/as.php:1810 ../../addon/diaspora/Receiver.php:1597 -#: ../../include/text.php:2239 ../../include/conversation.php:146 -#: ../../Zotlabs/Module/Like.php:386 ../../Zotlabs/Module/Subthread.php:112 -#: ../../Zotlabs/Lib/Activity.php:2892 +#: ../../addon/pubcrawl/as.php:1692 ../../addon/diaspora/Receiver.php:1592 +#: ../../include/text.php:2125 ../../include/conversation.php:144 +#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Module/Subthread.php:112 +#: ../../Zotlabs/Lib/Activity.php:2444 msgid "status" msgstr "el mensaje de estado " -#: ../../addon/pubcrawl/as.php:1847 ../../addon/diaspora/Receiver.php:1537 -#: ../../include/conversation.php:162 ../../Zotlabs/Module/Like.php:422 -#: ../../Zotlabs/Lib/Activity.php:2927 +#: ../../addon/pubcrawl/as.php:1729 ../../addon/diaspora/Receiver.php:1532 +#: ../../include/conversation.php:160 ../../Zotlabs/Module/Like.php:447 +#: ../../Zotlabs/Lib/Activity.php:2479 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "A %1$s le gusta %3$s de %2$s" -#: ../../addon/pubcrawl/as.php:1849 ../../include/conversation.php:165 -#: ../../Zotlabs/Module/Like.php:424 ../../Zotlabs/Lib/Activity.php:2929 +#: ../../addon/pubcrawl/as.php:1731 ../../include/conversation.php:163 +#: ../../Zotlabs/Module/Like.php:449 ../../Zotlabs/Lib/Activity.php:2481 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "A %1$s no le gusta %3$s de %2$s" @@ -1953,35 +2102,35 @@ msgstr "Se ha creado una cuenta para usted." msgid "Authentication successful but rejected: account creation is disabled." msgstr "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada." -#: ../../addon/dwpost/Mod_Dwpost.php:26 +#: ../../addon/dwpost/Mod_Dwpost.php:24 msgid "Dreamwidth Crosspost Connector Settings saved." msgstr "Se han guardado los ajustes del conector de publicación cruzada Dreamwidth." -#: ../../addon/dwpost/Mod_Dwpost.php:39 +#: ../../addon/dwpost/Mod_Dwpost.php:36 msgid "Dreamwidth Crosspost Connector App" msgstr "App Dreamwidth Crosspost Connector" -#: ../../addon/dwpost/Mod_Dwpost.php:40 -msgid "Relay public posts to Dreamwidth" -msgstr "Reenviar las entradas públicas a Dreamwidth" +#: ../../addon/dwpost/Mod_Dwpost.php:37 +msgid "Relay public postings to Dreamwidth" +msgstr "Retransmisión de entradas públicas a Dreamwidth" -#: ../../addon/dwpost/Mod_Dwpost.php:53 +#: ../../addon/dwpost/Mod_Dwpost.php:52 msgid "Dreamwidth username" msgstr "Nombre de usuario en Dreamwidth" -#: ../../addon/dwpost/Mod_Dwpost.php:57 +#: ../../addon/dwpost/Mod_Dwpost.php:56 msgid "Dreamwidth password" msgstr "Contraseña en Dreamwidth" -#: ../../addon/dwpost/Mod_Dwpost.php:61 +#: ../../addon/dwpost/Mod_Dwpost.php:60 msgid "Post to Dreamwidth by default" msgstr "Publicar en Dreamwidth de forma predeterminada" -#: ../../addon/dwpost/Mod_Dwpost.php:77 +#: ../../addon/dwpost/Mod_Dwpost.php:68 msgid "Dreamwidth Crosspost Connector" msgstr "Dreamwidth Crosspost Connector" -#: ../../addon/dwpost/dwpost.php:49 +#: ../../addon/dwpost/dwpost.php:47 msgid "Post to Dreamwidth" msgstr "Publicar en Dreamwidth" @@ -2142,7 +2291,7 @@ msgid "Errors encountered deleting database table " msgstr "Errores encontrados al eliminar la tabla de la base de datos" #: ../../addon/rendezvous/rendezvous.php:95 -#: ../../addon/twitter/twitter.php:503 +#: ../../addon/twitter/twitter.php:498 msgid "Submit Settings" msgstr "Enviar los ajustes" @@ -2194,22 +2343,22 @@ msgstr "Reunámonos aquí" #: ../../addon/rendezvous/rendezvous.php:172 #: ../../Zotlabs/Widget/Wiki_page_history.php:22 -#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Oauth.php:113 -#: ../../Zotlabs/Module/Oauth.php:139 ../../Zotlabs/Module/Chat.php:257 -#: ../../Zotlabs/Module/Cdav.php:1368 -#: ../../Zotlabs/Module/Sharedwithme.php:106 +#: ../../Zotlabs/Module/Group.php:154 ../../Zotlabs/Module/Oauth.php:113 +#: ../../Zotlabs/Module/Oauth.php:139 ../../Zotlabs/Module/Chat.php:259 +#: ../../Zotlabs/Module/Cdav.php:1373 +#: ../../Zotlabs/Module/Sharedwithme.php:104 #: ../../Zotlabs/Module/Admin/Channels.php:159 #: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 -#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:924 -#: ../../Zotlabs/Lib/NativeWikiPage.php:564 +#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:923 +#: ../../Zotlabs/Lib/NativeWikiPage.php:561 #: ../../Zotlabs/Storage/Browser.php:291 msgid "Name" msgstr "Nombre" #: ../../addon/rendezvous/rendezvous.php:173 -#: ../../addon/cart/submodules/hzservices.php:655 -#: ../../addon/cart/submodules/manualcat.php:264 -#: ../../Zotlabs/Module/Cdav.php:1010 ../../Zotlabs/Module/Events.php:481 +#: ../../addon/cart/submodules/hzservices.php:654 +#: ../../addon/cart/submodules/manualcat.php:262 +#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:481 #: ../../Zotlabs/Module/Appman.php:145 ../../Zotlabs/Module/Rbmark.php:101 msgid "Description" msgstr "Descripción" @@ -2317,105 +2466,6 @@ msgstr "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo msgid "Startpage" msgstr "Startpage" -#: ../../addon/mail/Mod_Mail.php:39 -msgid "Messages" -msgstr "Mensajes" - -#: ../../addon/mail/Mod_Mail.php:52 -msgid "message" -msgstr "mensaje" - -#: ../../addon/mail/Mod_Mail.php:92 -msgid "Message recalled." -msgstr "Mensaje revocado." - -#: ../../addon/mail/Mod_Mail.php:105 -msgid "Conversation removed." -msgstr "Conversación eliminada." - -#: ../../addon/mail/Mod_Mail.php:120 ../../addon/mail/Mod_Mail.php:241 -msgid "Expires YYYY-MM-DD HH:MM" -msgstr "Caduca YYYY-MM-DD HH:MM" - -#: ../../addon/mail/Mod_Mail.php:148 -msgid "Requested channel is not in this network" -msgstr "El canal solicitado no existe en esta red" - -#: ../../addon/mail/Mod_Mail.php:156 -msgid "Send Private Message" -msgstr "Enviar un mensaje privado" - -#: ../../addon/mail/Mod_Mail.php:157 ../../addon/mail/Mod_Mail.php:300 -msgid "To:" -msgstr "Para:" - -#: ../../addon/mail/Mod_Mail.php:160 ../../addon/mail/Mod_Mail.php:302 -msgid "Subject:" -msgstr "Asunto:" - -#: ../../addon/mail/Mod_Mail.php:163 ../../Zotlabs/Module/Invite.php:157 -msgid "Your message:" -msgstr "Su mensaje:" - -#: ../../addon/mail/Mod_Mail.php:165 ../../addon/mail/Mod_Mail.php:308 -msgid "Attach file" -msgstr "Adjuntar fichero" - -#: ../../addon/mail/Mod_Mail.php:167 -msgid "Send" -msgstr "Enviar" - -#: ../../addon/mail/Mod_Mail.php:271 -msgid "Delete message" -msgstr "Borrar mensaje" - -#: ../../addon/mail/Mod_Mail.php:272 -msgid "Delivery report" -msgstr "Informe de transmisión" - -#: ../../addon/mail/Mod_Mail.php:273 -msgid "Recall message" -msgstr "Revocar el mensaje" - -#: ../../addon/mail/Mod_Mail.php:275 -msgid "Message has been recalled." -msgstr "El mensaje ha sido revocado." - -#: ../../addon/mail/Mod_Mail.php:293 -msgid "Delete Conversation" -msgstr "Eliminar conversación" - -#: ../../addon/mail/Mod_Mail.php:295 -msgid "" -"No secure communications available. You <strong>may</strong> be able to " -"respond from the sender's profile page." -msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente." - -#: ../../addon/mail/Mod_Mail.php:299 -msgid "Send Reply" -msgstr "Responder" - -#: ../../addon/mail/Mod_Mail.php:304 -#, php-format -msgid "Your message for %s (%s):" -msgstr "Su mensaje para %s (%s):" - -#: ../../addon/mail/Mod_Mail.php:384 -msgid "Unable to lookup recipient." -msgstr "No se puede asociar a un destinatario." - -#: ../../addon/mail/Mod_Mail.php:391 -msgid "Unable to communicate with requested channel." -msgstr "No se puede establecer la comunicación con el canal solicitado." - -#: ../../addon/mail/Mod_Mail.php:398 -msgid "Cannot verify requested channel." -msgstr "No se puede verificar el canal solicitado." - -#: ../../addon/mail/Mod_Mail.php:416 -msgid "Selected channel has private message restrictions. Send failed." -msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló." - #: ../../addon/adultphotoflag/adultphotoflag.php:24 msgid "Flag Adult Photos" msgstr "Indicador (\"flag\") de fotos de adultos" @@ -2664,8 +2714,8 @@ msgid "Send ZID" msgstr "Enviar ZID" #: ../../addon/cart/widgets/catalogitem.php:57 -#: ../../addon/cart/submodules/hzservices.php:658 -#: ../../addon/cart/submodules/manualcat.php:267 +#: ../../addon/cart/submodules/hzservices.php:657 +#: ../../addon/cart/submodules/manualcat.php:265 msgid "Price" msgstr "Precio" @@ -2679,8 +2729,7 @@ msgstr "Los pagos manuales no están habilitados." #: ../../addon/cart/manual_payments.php:68 #: ../../addon/cart/submodules/paypalbutton.php:392 -#: ../../addon/cart/submodules/paypalbuttonV2.php:409 -#: ../../addon/cart/cart.php:1463 +#: ../../addon/cart/cart.php:1460 msgid "Order not found." msgstr "El pedido no se ha encontrado." @@ -2690,8 +2739,7 @@ msgstr "Terminado" #: ../../addon/cart/manual_payments.php:93 #: ../../addon/cart/submodules/paypalbutton.php:456 -#: ../../addon/cart/submodules/paypalbuttonV2.php:478 -#: ../../addon/cart/myshop.php:37 ../../addon/cart/cart.php:1441 +#: ../../addon/cart/myshop.php:37 ../../addon/cart/cart.php:1438 #: ../../Zotlabs/Module/Wiki.php:77 msgid "Invalid channel" msgstr "Canal no válido" @@ -2741,149 +2789,109 @@ msgstr "Cuantía" msgid "Term" msgstr "Condición" -#: ../../addon/cart/submodules/hzservices.php:63 +#: ../../addon/cart/submodules/hzservices.php:62 msgid "Enable Hubzilla Services Module" msgstr "Habilitar el Módulo de Servicios de Hubzilla" -#: ../../addon/cart/submodules/hzservices.php:162 -#: ../../addon/cart/submodules/manualcat.php:176 +#: ../../addon/cart/submodules/hzservices.php:161 +#: ../../addon/cart/submodules/manualcat.php:174 msgid "New Sku" msgstr "Nuevo SKU (número de referencia)" -#: ../../addon/cart/submodules/hzservices.php:197 -#: ../../addon/cart/submodules/manualcat.php:212 +#: ../../addon/cart/submodules/hzservices.php:196 +#: ../../addon/cart/submodules/manualcat.php:210 msgid "Cannot save edits to locked item." msgstr "No se pueden guardar las ediciones en el elemento bloqueado." -#: ../../addon/cart/submodules/hzservices.php:246 -#: ../../addon/cart/submodules/hzservices.php:333 +#: ../../addon/cart/submodules/hzservices.php:245 +#: ../../addon/cart/submodules/hzservices.php:332 msgid "SKU not found." msgstr "No se ha encontrado el SKU" -#: ../../addon/cart/submodules/hzservices.php:299 -#: ../../addon/cart/submodules/hzservices.php:303 +#: ../../addon/cart/submodules/hzservices.php:298 +#: ../../addon/cart/submodules/hzservices.php:302 msgid "Invalid Activation Directive." msgstr "Directiva de activación no válida." -#: ../../addon/cart/submodules/hzservices.php:374 -#: ../../addon/cart/submodules/hzservices.php:378 +#: ../../addon/cart/submodules/hzservices.php:373 +#: ../../addon/cart/submodules/hzservices.php:377 msgid "Invalid Deactivation Directive." msgstr "Directiva de desactivación no válida" -#: ../../addon/cart/submodules/hzservices.php:564 +#: ../../addon/cart/submodules/hzservices.php:563 msgid "Add to this privacy group" msgstr "Añadir a este grupo de canales" -#: ../../addon/cart/submodules/hzservices.php:580 +#: ../../addon/cart/submodules/hzservices.php:579 msgid "Set user service class" msgstr "Configurar la clase de servicio al usuario" -#: ../../addon/cart/submodules/hzservices.php:607 +#: ../../addon/cart/submodules/hzservices.php:606 msgid "You must be using a local account to purchase this service." msgstr "Usted debe estar usando una cuenta local para comprar este servicio." -#: ../../addon/cart/submodules/hzservices.php:647 -#: ../../addon/cart/submodules/manualcat.php:256 +#: ../../addon/cart/submodules/hzservices.php:646 +#: ../../addon/cart/submodules/manualcat.php:254 msgid "Changes Locked" msgstr "Cambios bloqueados" -#: ../../addon/cart/submodules/hzservices.php:651 -#: ../../addon/cart/submodules/manualcat.php:260 +#: ../../addon/cart/submodules/hzservices.php:650 +#: ../../addon/cart/submodules/manualcat.php:258 msgid "Item available for purchase." msgstr "Artículo disponible para la compra." -#: ../../addon/cart/submodules/hzservices.php:661 -#: ../../addon/cart/submodules/manualcat.php:270 +#: ../../addon/cart/submodules/hzservices.php:660 +#: ../../addon/cart/submodules/manualcat.php:268 msgid "Photo URL" msgstr "URL de la foto" -#: ../../addon/cart/submodules/hzservices.php:665 +#: ../../addon/cart/submodules/hzservices.php:664 msgid "Add buyer to privacy group" msgstr "Agregar comprador al grupo de canales" -#: ../../addon/cart/submodules/hzservices.php:670 +#: ../../addon/cart/submodules/hzservices.php:669 msgid "Add buyer as connection" msgstr "Añadir comprador como conexión" -#: ../../addon/cart/submodules/hzservices.php:678 -#: ../../addon/cart/submodules/hzservices.php:720 +#: ../../addon/cart/submodules/hzservices.php:677 +#: ../../addon/cart/submodules/hzservices.php:719 msgid "Set Service Class" msgstr "Establecer clase de servicio" -#: ../../addon/cart/submodules/orderoptions.php:70 -msgid "Enable Order/Item Options" -msgstr "Habilitar las opciones de pedido/artículo" - -#: ../../addon/cart/submodules/orderoptions.php:333 -#: ../../addon/cart/submodules/orderoptions.php:357 -#: ../../addon/cart/submodules/orderoptions.php:433 -#: ../../addon/cart/submodules/orderoptions.php:457 -msgid "Label" -msgstr "Etiqueta" - -#: ../../addon/cart/submodules/orderoptions.php:334 -#: ../../addon/cart/submodules/orderoptions.php:358 -#: ../../addon/cart/submodules/orderoptions.php:434 -#: ../../addon/cart/submodules/orderoptions.php:458 -#: ../../include/datetime.php:211 ../../Zotlabs/Module/Events.php:468 -#: ../../Zotlabs/Module/Events.php:473 ../../Zotlabs/Module/Appman.php:143 -#: ../../Zotlabs/Module/Appman.php:144 ../../Zotlabs/Module/Profiles.php:747 -#: ../../Zotlabs/Module/Profiles.php:751 -msgid "Required" -msgstr "Obligatorio" - -#: ../../addon/cart/submodules/orderoptions.php:336 -#: ../../addon/cart/submodules/orderoptions.php:360 -#: ../../addon/cart/submodules/orderoptions.php:436 -#: ../../addon/cart/submodules/orderoptions.php:460 -msgid "Instructions" -msgstr "Instrucciones" - #: ../../addon/cart/submodules/paypalbutton.php:85 msgid "Enable Paypal Button Module" msgstr "Habilitar el módulo del botón de Paypal" #: ../../addon/cart/submodules/paypalbutton.php:93 -#: ../../addon/cart/submodules/paypalbuttonV2.php:94 msgid "Use Production Key" msgstr "Utilizar clave en entorno de producción" #: ../../addon/cart/submodules/paypalbutton.php:100 -#: ../../addon/cart/submodules/paypalbuttonV2.php:101 msgid "Paypal Sandbox Client Key" msgstr "Clave de cliente en el entorno de pruebas de Paypal" #: ../../addon/cart/submodules/paypalbutton.php:107 -#: ../../addon/cart/submodules/paypalbuttonV2.php:108 msgid "Paypal Sandbox Secret Key" msgstr "Clave secreta en el entorno de pruebas de Paypal" #: ../../addon/cart/submodules/paypalbutton.php:113 -#: ../../addon/cart/submodules/paypalbuttonV2.php:114 msgid "Paypal Production Client Key" msgstr "Clave de cliente en el entorno de producción de Paypal" #: ../../addon/cart/submodules/paypalbutton.php:120 -#: ../../addon/cart/submodules/paypalbuttonV2.php:121 msgid "Paypal Production Secret Key" msgstr "Clave secreta en el entorno de producción de Paypal" #: ../../addon/cart/submodules/paypalbutton.php:252 -#: ../../addon/cart/submodules/paypalbuttonV2.php:264 msgid "Paypal button payments are not enabled." msgstr "Los pagos con el botón de Paypal no están habilitados." #: ../../addon/cart/submodules/paypalbutton.php:270 -#: ../../addon/cart/submodules/paypalbuttonV2.php:282 msgid "" "Paypal button payments are not properly configured. Please choose another " "payment option." msgstr "Los pagos con el botón de Paypal no están configurados correctamente. Por favor, elija otra opción de pago." -#: ../../addon/cart/submodules/paypalbuttonV2.php:86 -msgid "Enable Paypal Button Module (API-v2)" -msgstr "Habilitar el módulo de botones de Paypal (API-v2)" - #: ../../addon/cart/submodules/manualcat.php:61 msgid "Enable Manual Cart Module" msgstr "Habilitar el módulo de carro manual" @@ -2892,7 +2900,7 @@ msgstr "Habilitar el módulo de carro manual" msgid "Access Denied." msgstr "Acceso denegado" -#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1331 +#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1328 msgid "Order Not Found" msgstr "No se ha encontrado el pedido" @@ -2901,80 +2909,72 @@ msgstr "No se ha encontrado el pedido" msgid "Invalid Item" msgstr "Elemento no válido" -#: ../../addon/cart/Settings/Cart.php:58 +#: ../../addon/cart/Settings/Cart.php:56 msgid "Enable Test Catalog" msgstr "Habilitar el catálogo de pruebas" -#: ../../addon/cart/Settings/Cart.php:70 +#: ../../addon/cart/Settings/Cart.php:68 msgid "Enable Manual Payments" msgstr "Permitir pagos manuales" -#: ../../addon/cart/Settings/Cart.php:90 +#: ../../addon/cart/Settings/Cart.php:88 msgid "Base Merchant Currency" msgstr "Divida base del vendedor" -#: ../../addon/cart/Settings/Cart.php:129 ../../addon/cart/cart.php:1260 +#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1257 msgid "Cart Settings" msgstr "Configuración del carro de la compra" -#: ../../addon/cart/cart.php:153 +#: ../../addon/cart/cart.php:150 msgid "DB Cleanup Failure" msgstr "Fallo de limpieza de la base de datos" -#: ../../addon/cart/cart.php:559 +#: ../../addon/cart/cart.php:556 msgid "[cart] Item Added" msgstr "[cesta] Artículo añadido" -#: ../../addon/cart/cart.php:948 +#: ../../addon/cart/cart.php:945 msgid "Order already checked out." msgstr "El pedido ya ha sido revisado" -#: ../../addon/cart/cart.php:1253 +#: ../../addon/cart/cart.php:1250 msgid "Drop database tables when uninstalling." msgstr "Eliminar tablas de la base de datos al desinstalar." -#: ../../addon/cart/cart.php:1272 ../../addon/cart/cart.php:1275 +#: ../../addon/cart/cart.php:1269 ../../addon/cart/cart.php:1272 msgid "Shop" msgstr "Comprar" -#: ../../addon/cart/cart.php:1295 ../../addon/flashcards/Mod_Flashcards.php:51 +#: ../../addon/cart/cart.php:1292 ../../addon/flashcards/Mod_Flashcards.php:37 #: ../../Zotlabs/Module/Wiki.php:35 msgid "Profile Unavailable." msgstr "Perfil no disponible" -#: ../../addon/cart/cart.php:1392 +#: ../../addon/cart/cart.php:1389 msgid "Cart utilities for orders and payments" msgstr "Utilidades del carro para pedidos y pagos" -#: ../../addon/cart/cart.php:1430 +#: ../../addon/cart/cart.php:1427 msgid "You must be logged into the Grid to shop." msgstr "Debe iniciar sesión en la red para comprar." -#: ../../addon/cart/cart.php:1471 +#: ../../addon/cart/cart.php:1468 msgid "Access denied." msgstr "Acceso denegado" -#: ../../addon/cart/cart.php:1523 ../../addon/cart/cart.php:1666 +#: ../../addon/cart/cart.php:1520 ../../addon/cart/cart.php:1663 msgid "No Order Found" msgstr "No se ha encontrado ningún pedido" -#: ../../addon/cart/cart.php:1532 +#: ../../addon/cart/cart.php:1529 msgid "An unknown error has occurred Please start again." msgstr "Se ha producido un error desconocido Vuelva a empezar." -#: ../../addon/cart/cart.php:1675 -msgid "Requirements not met." -msgstr "No se cumplen los requisitos." - -#: ../../addon/cart/cart.php:1675 -msgid "Review your order and complete any needed requirements." -msgstr "Revise su pedido y complete los requisitos necesarios." - -#: ../../addon/cart/cart.php:1701 +#: ../../addon/cart/cart.php:1696 msgid "Invalid Payment Type. Please start again." msgstr "Tipo de pago no válido. Por favor, empiece de nuevo." -#: ../../addon/cart/cart.php:1708 +#: ../../addon/cart/cart.php:1703 msgid "Order not found" msgstr "El pedido no se ha encontrado" @@ -3020,7 +3020,7 @@ msgstr "Ocultar el botón y mostrar los smilies directamente." msgid "Smileybutton Settings" msgstr "Ajustes de Smileybutton" -#: ../../addon/redfiles/redfilehelper.php:64 ../../include/attach.php:2035 +#: ../../addon/redfiles/redfilehelper.php:64 msgid "file" msgstr "fichero" @@ -3032,38 +3032,21 @@ msgstr "Importar repositorio de ficheros de Redmatrix" msgid "This will import all your Redmatrix cloud files to this channel." msgstr "Esto importará todos sus ficheros de la nube de Redmatrix a este canal." -#: ../../addon/diaspora/diaspora.php:66 -msgid "" -"Please install the statistics addon to be able to configure a diaspora relay" -msgstr "Por favor, instale el complemento de estadísticas para poder configurar el reenvío de diaspora" - -#: ../../addon/diaspora/diaspora.php:76 -msgid "Diaspora Relay Handle" -msgstr "Gestionar el reenvío de Diaspora" - -#: ../../addon/diaspora/diaspora.php:76 -msgid "Address of a diaspora relay. Example: relay@diasporarelay.tld" -msgstr "La dirección de una transmisión de diaspora. Ejemplo: relay@diasporarelay.tld" - -#: ../../addon/diaspora/diaspora.php:96 -msgid "Diaspora relay could not be imported" -msgstr "El reenvío de Diaspora no ha podido ser importado" - #: ../../addon/diaspora/p.php:48 ../../addon/diaspora/util.php:336 #: ../../addon/diaspora/util.php:349 ../../Zotlabs/Lib/Enotify.php:61 msgid "$projectname" msgstr "$projectname" -#: ../../addon/diaspora/import_diaspora.php:19 +#: ../../addon/diaspora/import_diaspora.php:18 msgid "No username found in import file." msgstr "No se ha encontrado el nombre de usuario en el fichero de importación." -#: ../../addon/diaspora/import_diaspora.php:44 ../../include/import.php:76 +#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:75 msgid "Unable to create a unique channel address. Import failed." msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación." -#: ../../addon/diaspora/import_diaspora.php:142 -#: ../../Zotlabs/Module/Import.php:597 +#: ../../addon/diaspora/import_diaspora.php:141 +#: ../../Zotlabs/Module/Import.php:594 msgid "Import completed." msgstr "Importación completada." @@ -3082,43 +3065,43 @@ msgstr "El protocolo de Diaspora no admite la independencia de la ubicación. La msgid "Diaspora Protocol App" msgstr "App Protocolo Diaspora" -#: ../../addon/diaspora/Mod_Diaspora.php:75 +#: ../../addon/diaspora/Mod_Diaspora.php:77 msgid "Allow any Diaspora member to comment on your public posts" msgstr "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas" -#: ../../addon/diaspora/Mod_Diaspora.php:79 +#: ../../addon/diaspora/Mod_Diaspora.php:81 msgid "Prevent your hashtags from being redirected to other sites" msgstr "Impedir que sus \"hashtags\" sean redirigidos a otros sitios " -#: ../../addon/diaspora/Mod_Diaspora.php:83 +#: ../../addon/diaspora/Mod_Diaspora.php:85 msgid "" "Sign and forward posts and comments with no existing Diaspora signature" msgstr "Firmar y enviar entradas y comentarios sin firma de Diaspora" -#: ../../addon/diaspora/Mod_Diaspora.php:88 +#: ../../addon/diaspora/Mod_Diaspora.php:90 msgid "Followed hashtags (comma separated, do not include the #)" msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)" -#: ../../addon/diaspora/Mod_Diaspora.php:97 +#: ../../addon/diaspora/Mod_Diaspora.php:99 msgid "Diaspora Protocol" msgstr "Protocolo Diaspora" -#: ../../addon/diaspora/Receiver.php:1541 +#: ../../addon/diaspora/Receiver.php:1536 #, php-format msgid "%1$s dislikes %2$s's %3$s" msgstr "a %1$s no le gusta el %3$s de %2$s" -#: ../../addon/diaspora/Receiver.php:2184 ../../Zotlabs/Module/Like.php:432 +#: ../../addon/diaspora/Receiver.php:2178 ../../Zotlabs/Module/Like.php:457 #, php-format msgid "%1$s is attending %2$s's %3$s" msgstr "%3$s de %2$s: %1$s participa" -#: ../../addon/diaspora/Receiver.php:2186 ../../Zotlabs/Module/Like.php:434 +#: ../../addon/diaspora/Receiver.php:2180 ../../Zotlabs/Module/Like.php:459 #, php-format msgid "%1$s is not attending %2$s's %3$s" msgstr "%3$s de %2$s: %1$s no participa" -#: ../../addon/diaspora/Receiver.php:2188 ../../Zotlabs/Module/Like.php:436 +#: ../../addon/diaspora/Receiver.php:2182 ../../Zotlabs/Module/Like.php:461 #, php-format msgid "%1$s may attend %2$s's %3$s" msgstr "%3$s de %2$s: %1$s quizá participe" @@ -3167,67 +3150,63 @@ msgstr "Habilitar la interfaz JavaScript de seguimiento de errores" msgid "This feature requires Piwik >= 2.2.0" msgstr "Esta funcionalidad requiere Piwik >= 2.2.0" -#: ../../addon/workflow/workflow.php:222 +#: ../../addon/workflow/workflow.php:212 msgid "Workflow user." msgstr "Usuario de Workflow." -#: ../../addon/workflow/workflow.php:272 +#: ../../addon/workflow/workflow.php:259 msgid "This channel" msgstr "Este canal" -#: ../../addon/workflow/workflow.php:285 ../../Zotlabs/Module/Locs.php:119 +#: ../../addon/workflow/workflow.php:272 ../../Zotlabs/Module/Locs.php:119 msgid "Primary" msgstr "Primario" -#: ../../addon/workflow/workflow.php:541 -#: ../../addon/workflow/workflow.php:1437 -#: ../../addon/workflow/workflow.php:1456 +#: ../../addon/workflow/workflow.php:480 +#: ../../addon/workflow/workflow.php:1233 +#: ../../addon/workflow/workflow.php:1251 msgid "Workflow" msgstr "Workflow" -#: ../../addon/workflow/workflow.php:1425 -msgid "No Workflows Available" -msgstr "No hay flujos de trabajo disponibles" - -#: ../../addon/workflow/workflow.php:1455 +#: ../../addon/workflow/workflow.php:1250 msgid "Add item to which workflow" msgstr "A qué Workflow añadir un elemento" -#: ../../addon/workflow/workflow.php:1515 -#: ../../addon/workflow/workflow.php:1634 +#: ../../addon/workflow/workflow.php:1297 +#: ../../addon/workflow/workflow.php:1394 msgid "Create Workflow Item" msgstr "Crear elemento de Workflow" -#: ../../addon/workflow/workflow.php:2596 +#: ../../addon/workflow/workflow.php:2270 msgid "Link" msgstr "Enlazar" -#: ../../addon/workflow/workflow.php:2598 +#: ../../addon/workflow/workflow.php:2272 msgid "Web link." msgstr "Enlace Web." -#: ../../addon/workflow/workflow.php:2617 -#: ../../addon/workflow/workflow.php:2678 ../../Zotlabs/Module/Cdav.php:1370 -#: ../../Zotlabs/Module/Connedit.php:926 +#: ../../addon/workflow/workflow.php:2291 +#: ../../addon/workflow/workflow.php:2344 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Connedit.php:925 msgid "Title" msgstr "Título" -#: ../../addon/workflow/workflow.php:2619 -#: ../../addon/workflow/workflow.php:2680 +#: ../../addon/workflow/workflow.php:2293 +#: ../../addon/workflow/workflow.php:2346 msgid "Brief description or title" msgstr "Breve descripción o título" -#: ../../addon/workflow/workflow.php:2625 ../../Zotlabs/Widget/Notes.php:21 -#: ../../Zotlabs/Lib/Apps.php:370 +#: ../../addon/workflow/workflow.php:2299 ../../Zotlabs/Widget/Notes.php:21 +#: ../../Zotlabs/Lib/Apps.php:369 msgid "Notes" msgstr "Notas" -#: ../../addon/workflow/workflow.php:2627 -#: ../../addon/workflow/workflow.php:2688 +#: ../../addon/workflow/workflow.php:2301 +#: ../../addon/workflow/workflow.php:2354 msgid "Notes and Info" msgstr "Notas e información" -#: ../../addon/workflow/workflow.php:2686 +#: ../../addon/workflow/workflow.php:2352 msgid "Body" msgstr "Cuerpo" @@ -3329,6 +3308,52 @@ msgstr "Múestrenos su agrado en Hubzilla" msgid "Embed:" msgstr "Incorporado: " +#: ../../addon/chords/chords.php:33 +msgid "Quick Reference" +msgstr "Referencia rápida" + +#: ../../addon/chords/Mod_Chords.php:44 +msgid "" +"This is a fairly comprehensive and complete guitar chord dictionary which " +"will list most of the available ways to play a certain chord, starting from " +"the base of the fingerboard up to a few frets beyond the twelfth fret " +"(beyond which everything repeats). A couple of non-standard tunings are " +"provided for the benefit of slide players, etc." +msgstr "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc." + +#: ../../addon/chords/Mod_Chords.php:46 +msgid "" +"Chord names start with a root note (A-G) and may include sharps (#) and " +"flats (b). This software will parse most of the standard naming conventions " +"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements." +msgstr "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales." + +#: ../../addon/chords/Mod_Chords.php:48 +msgid "" +"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " +"E7b13b11 ..." +msgstr "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..." + +#: ../../addon/chords/Mod_Chords.php:51 +msgid "Guitar Chords" +msgstr "Acordes de guitarra" + +#: ../../addon/chords/Mod_Chords.php:52 +msgid "The complete online chord dictionary" +msgstr "El diccionario completo de acordes en línea" + +#: ../../addon/chords/Mod_Chords.php:57 +msgid "Tuning" +msgstr "Afinación" + +#: ../../addon/chords/Mod_Chords.php:58 +msgid "Chord name: example: Em7" +msgstr "Nombre del acorde, por ejemplo: Em7" + +#: ../../addon/chords/Mod_Chords.php:59 +msgid "Show for left handed stringing" +msgstr "Mostrar para tocadores zurdos" + #: ../../addon/opensearch/opensearch.php:26 #, php-format msgctxt "opensearch" @@ -3374,6 +3399,70 @@ msgstr "Offset máximo en metros" msgid "Fuzzy Location" msgstr "Fuzzy Location" +#: ../../addon/flattrwidget/flattrwidget.php:50 +msgid "Flattr this!" +msgstr "¡Apoyar esto en Flattr!" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 +msgid "Flattr widget settings updated." +msgstr "Los ajustes del widget Flattr han sido actualizados." + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 +msgid "Flattr Widget App" +msgstr "App Flattr Widget" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54 +msgid "Add a Flattr button to your channel page" +msgstr "Proporcionar un botón Flattr a la página de su canal" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 +msgid "Flattr user" +msgstr "Usuario en Flattr" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "URL of the Thing to flattr" +msgstr "URL de la Cosa para apoyar en flattr" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "If empty channel URL is used" +msgstr "Si está vacío, se usa la URL del canal" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "Title of the Thing to flattr" +msgstr "Título de la Cosa para apoyar en flattr" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "If empty \"channel name on The Hubzilla\" will be used" +msgstr "Si está vacío, se usará \"nombre del canal en Hubzilla\"" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "Static or dynamic flattr button" +msgstr "Botón de flattr estático o dinámico" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "static" +msgstr "estático" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "dynamic" +msgstr "dinámico" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "Alignment of the widget" +msgstr "Alineamiento del widget" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "left" +msgstr "izquierda" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "right" +msgstr "derecha" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 +msgid "Flattr Widget" +msgstr "Flattr Widget" + #: ../../addon/hubwall/hubwall.php:19 msgid "Send email to all members" msgstr "Enviar un correo electrónico a todos los miembros" @@ -3423,32 +3512,32 @@ msgstr "%s : Falló el envío del mensaje." msgid "Message sent to %s. New account registration: %s" msgstr "Mensaje enviado a %s. Registro de una nueva cuenta: %s" -#: ../../addon/flashcards/Mod_Flashcards.php:218 +#: ../../addon/flashcards/Mod_Flashcards.php:169 msgid "Not allowed." msgstr "No permitido/a." -#: ../../addon/flashcards/Mod_Flashcards.php:254 -#: ../../include/acl_selectors.php:123 ../../Zotlabs/Module/Chat.php:241 +#: ../../addon/flashcards/Mod_Flashcards.php:205 +#: ../../include/acl_selectors.php:123 ../../Zotlabs/Module/Chat.php:243 #: ../../Zotlabs/Module/Filestorage.php:190 -#: ../../Zotlabs/Module/Photos.php:677 ../../Zotlabs/Module/Photos.php:1046 -#: ../../Zotlabs/Module/Thing.php:321 ../../Zotlabs/Module/Thing.php:374 -#: ../../Zotlabs/Module/Connedit.php:691 +#: ../../Zotlabs/Module/Photos.php:675 ../../Zotlabs/Module/Photos.php:1044 +#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:372 +#: ../../Zotlabs/Module/Connedit.php:690 msgid "Permissions" msgstr "Permisos" -#: ../../addon/flashcards/Mod_Flashcards.php:261 +#: ../../addon/flashcards/Mod_Flashcards.php:212 #: ../../Zotlabs/Module/Filestorage.php:197 msgid "Set/edit permissions" msgstr "Establecer/editar los permisos" -#: ../../addon/flashcards/Mod_Flashcards.php:284 -#: ../../addon/flashcards/Mod_Flashcards.php:285 ../../include/items.php:3888 +#: ../../addon/flashcards/Mod_Flashcards.php:235 +#: ../../addon/flashcards/Mod_Flashcards.php:236 ../../include/items.php:3719 #: ../../Zotlabs/Module/Filestorage.php:26 #: ../../Zotlabs/Module/Admin/Themes.php:72 #: ../../Zotlabs/Module/Admin/Addons.php:260 #: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45 -#: ../../Zotlabs/Module/Display.php:460 ../../Zotlabs/Module/Admin.php:62 -#: ../../Zotlabs/Module/Thing.php:96 +#: ../../Zotlabs/Module/Display.php:455 ../../Zotlabs/Module/Admin.php:62 +#: ../../Zotlabs/Module/Thing.php:94 msgid "Item not found." msgstr "Elemento no encontrado." @@ -3500,7 +3589,7 @@ msgstr "No lo menciones." msgid "<blush>" msgstr "<sonrojo>" -#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:328 +#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:327 msgid "Report Bug" msgstr "Informe de errores" @@ -3611,16 +3700,6 @@ msgstr "Su cuenta en %s caducará en unos pocos días." msgid "Your $Productname test account is about to expire." msgstr "Su cuenta de prueba de $Productname está a punto de caducar." -#: ../../addon/hideaside/Mod_Hideaside.php:23 -#: ../../addon/hideaside/Mod_Hideaside.php:27 -msgid "Hide Aside App" -msgstr "App de ocultamiento del panel lateral" - -#: ../../addon/hideaside/Mod_Hideaside.php:24 -#: ../../addon/hideaside/Mod_Hideaside.php:28 -msgid "Fade out aside areas after a while when using endless scroll" -msgstr "Se desvanecen las áreas laterales cuando se usa un scroll sin fin" - #: ../../addon/skeleton/Mod_Skeleton.php:32 msgid "Skeleton App" msgstr "App Skeleton" @@ -3641,86 +3720,6 @@ msgstr "Un ajuste" msgid "Skeleton Settings" msgstr "Ajustes de Skeleton" -#: ../../addon/socialauth/Mod_SocialAuth.php:104 -#: ../../addon/socialauth/Mod_SocialAuth.php:176 -msgid "Network error" -msgstr "Error de red" - -#: ../../addon/socialauth/Mod_SocialAuth.php:108 -#: ../../addon/socialauth/Mod_SocialAuth.php:180 -msgid "API error" -msgstr "Error de API" - -#: ../../addon/socialauth/Mod_SocialAuth.php:112 -#: ../../addon/socialauth/Mod_SocialAuth.php:184 -msgid "Unknown issue" -msgstr "Problema desconocido" - -#: ../../addon/socialauth/Mod_SocialAuth.php:168 -msgid "Unable to login using email address " -msgstr "Imposible iniciar sesión usando la dirección de correo electrónico" - -#: ../../addon/socialauth/Mod_SocialAuth.php:202 -msgid "Sign in to Hubzilla using a social account" -msgstr "Iniciar sesión en Hubzilla usando una cuenta social" - -#: ../../addon/socialauth/Mod_SocialAuth.php:207 -msgid "Social Authentication using your social media account" -msgstr "Autenticación usando su cuenta de medios sociales" - -#: ../../addon/socialauth/Mod_SocialAuth.php:211 -msgid "" -"This app enables one or more social provider sign-in buttons on the login " -"page." -msgstr "Esta aplicación habilita uno o más botones de inicio de sesión de proveedores sociales en la página de inicio de sesión." - -#: ../../addon/socialauth/Mod_SocialAuth.php:229 -msgid "Add an identity provider" -msgstr "Añadir un proveedor de identidad" - -#: ../../addon/socialauth/Mod_SocialAuth.php:256 -msgid "Enable " -msgstr "Habilitar" - -#: ../../addon/socialauth/Mod_SocialAuth.php:263 -msgid "Key" -msgstr "Clave" - -#: ../../addon/socialauth/Mod_SocialAuth.php:263 -#: ../../addon/socialauth/Mod_SocialAuth.php:268 -#: ../../addon/socialauth/Mod_SocialAuth.php:284 -#: ../../addon/socialauth/Mod_SocialAuth.php:297 -msgid "Word" -msgstr "Palabra" - -#: ../../addon/socialauth/Mod_SocialAuth.php:268 -msgid "Secret" -msgstr "Secret" - -#: ../../addon/socialauth/Mod_SocialAuth.php:297 -msgid "Add a custom provider" -msgstr "Añadir un proveedor personalizado" - -#: ../../addon/socialauth/Mod_SocialAuth.php:317 -msgid "Remove an identity provider" -msgstr "Eliminar un proveedor de identidad" - -#: ../../addon/socialauth/Mod_SocialAuth.php:327 -msgid "Social authentication" -msgstr "Autenticación social" - -#: ../../addon/socialauth/Mod_SocialAuth.php:366 -msgid "Error while saving provider settings" -msgstr "Se ha producido un error mientras se guardaban los ajustes" - -#: ../../addon/socialauth/Mod_SocialAuth.php:382 -msgid "Custom provider already exists" -msgstr "Ya existe un proveedor personalizado" - -#: ../../addon/socialauth/Mod_SocialAuth.php:399 -msgid "Social authentication settings saved." -msgstr "Se han guardado los ajustes de la autenticación social." - #: ../../addon/nsfw/nsfw.php:152 msgid "Possible adult content" msgstr "Posible contenido para adultos" @@ -3874,31 +3873,31 @@ msgstr "No se pudo enviar el correo." msgid "Mail Test" msgstr "Prueba de correo" -#: ../../addon/ljpost/Mod_Ljpost.php:38 +#: ../../addon/ljpost/Mod_Ljpost.php:37 msgid "Livejournal Crosspost Connector App" msgstr "App Livejournal Crosspost Connector" -#: ../../addon/ljpost/Mod_Ljpost.php:39 +#: ../../addon/ljpost/Mod_Ljpost.php:38 msgid "Relay public posts to Livejournal" msgstr "Retransmisión de entradas públicas a Livejournal" -#: ../../addon/ljpost/Mod_Ljpost.php:55 +#: ../../addon/ljpost/Mod_Ljpost.php:54 msgid "Livejournal username" msgstr "Nombre de usuario en Livejournal" -#: ../../addon/ljpost/Mod_Ljpost.php:59 +#: ../../addon/ljpost/Mod_Ljpost.php:58 msgid "Livejournal password" msgstr "Contraseña en Livejournal" -#: ../../addon/ljpost/Mod_Ljpost.php:63 +#: ../../addon/ljpost/Mod_Ljpost.php:62 msgid "Post to Livejournal by default" msgstr "Publicar en Livejournal por defecto" -#: ../../addon/ljpost/Mod_Ljpost.php:67 +#: ../../addon/ljpost/Mod_Ljpost.php:66 msgid "Send wall-to-wall posts to Livejournal" msgstr "Enviar entradas de Muro-Muro a Livejournal" -#: ../../addon/ljpost/Mod_Ljpost.php:79 +#: ../../addon/ljpost/Mod_Ljpost.php:75 msgid "Livejournal Crosspost Connector" msgstr "Livejournal Crosspost Connector" @@ -3906,11 +3905,64 @@ msgstr "Livejournal Crosspost Connector" msgid "Post to Livejournal" msgstr "Publicar en Livejournal" -#: ../../addon/ljpost/ljpost.php:127 +#: ../../addon/ljpost/ljpost.php:125 msgid "Posted by" msgstr "Publicado por " -#: ../../addon/mdpost/mdpost.php:41 ../../include/text.php:2097 +#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 +msgid "Invalid game." +msgstr "Juego no válido." + +#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417 +msgid "You are not a player in this game." +msgstr "Usted no participa en este juego." + +#: ../../addon/chess/Mod_Chess.php:242 +msgid "You must be a local channel to create a game." +msgstr "Debe ser un canal local para crear un juego" + +#: ../../addon/chess/Mod_Chess.php:260 +msgid "You must select one opponent that is not yourself." +msgstr "Debe seleccionar un oponente que no sea usted mismo." + +#: ../../addon/chess/Mod_Chess.php:271 +msgid "Random color chosen." +msgstr "Elegido un color aleatorio." + +#: ../../addon/chess/Mod_Chess.php:279 +msgid "Error creating new game." +msgstr "Error al crear un nuevo juego." + +#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 +msgid "Requested channel is not available." +msgstr "El canal solicitado no está disponible." + +#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 +msgid "Chess not installed." +msgstr "Chess no está instalado." + +#: ../../addon/chess/Mod_Chess.php:326 +msgid "You must select a local channel /chess/channelname" +msgstr "Debe seleccionar un canal local /chess/nombredelcanal" + +#: ../../addon/chess/Mod_Chess.php:343 ../../Zotlabs/Module/Ochannel.php:32 +#: ../../Zotlabs/Module/Channel.php:42 ../../Zotlabs/Module/Chat.php:31 +msgid "You must be logged in to see this page." +msgstr "Debe haber iniciado sesión para poder ver esta página." + +#: ../../addon/chess/Mod_Chess.php:447 ../../include/help.php:132 +#: ../../Zotlabs/Module/Display.php:140 ../../Zotlabs/Module/Display.php:157 +#: ../../Zotlabs/Module/Display.php:174 ../../Zotlabs/Module/Display.php:180 +#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77 +#: ../../Zotlabs/Lib/NativeWikiPage.php:521 ../../Zotlabs/Web/Router.php:185 +msgid "Page not found." +msgstr "Página no encontrada." + +#: ../../addon/chess/chess.php:645 +msgid "Enable notifications" +msgstr "Habilitar notificaciones" + +#: ../../addon/mdpost/mdpost.php:41 ../../include/text.php:1983 #: ../../Zotlabs/Widget/Wiki_pages.php:38 #: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 #: ../../Zotlabs/Module/Wiki.php:371 @@ -3933,6 +3985,74 @@ msgstr "Esto importará todos sus ficheros en la nube desde otro servidor." msgid "Hubzilla Server base URL" msgstr "URL base del servidor Hubzilla" +#: ../../addon/jappixmini/Mod_Jappixmini.php:96 +msgid "Jappixmini App" +msgstr "App Jappixmini" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:97 +msgid "Provides a Facebook-like chat using Jappix Mini" +msgstr "Proporciona un chat similar al de Facebook utilizando Jappix Mini" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:157 +#: ../../include/channel.php:1526 ../../include/channel.php:1697 +msgid "Status:" +msgstr "Estado:" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +msgid "Hide Jappixmini Chat-Widget from the webinterface" +msgstr "Ocultar el widget de chat Jappixmini en la interfaz web" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:166 +msgid "Jabber username" +msgstr "Nombre de usuario en Jabber" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:172 +msgid "Jabber server" +msgstr "Servidor de Jabber" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:178 +msgid "Jabber BOSH host URL" +msgstr "URL del host BOSH de Jabber" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:185 +msgid "Jabber password" +msgstr "Contraseña en Jabber" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +msgid "Encrypt Jabber password with Hubzilla password" +msgstr "Cifrar la contraseña de Jabber con la contraseña de Hubzilla" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../Zotlabs/Module/Settings/Channel.php:567 +#: ../../Zotlabs/Module/Settings/Channel.php:572 +#: ../../Zotlabs/Module/Settings/Channel.php:573 +#: ../../Zotlabs/Module/Settings/Channel.php:574 +msgid "Recommended" +msgstr "Recomendado" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +msgid "Approve subscription requests from Hubzilla contacts automatically" +msgstr "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 +msgid "Purge internal list of jabber addresses of contacts" +msgstr "Purgar la lista interna de las direcciones de contactos de jabber" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:212 +msgid "Configuration Help" +msgstr "Ayuda para los ajustes" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:216 +#: ../../Zotlabs/Module/Cdav.php:1386 ../../Zotlabs/Module/Profiles.php:796 +#: ../../Zotlabs/Module/Connedit.php:936 +msgid "Add Contact" +msgstr "Añadir un contacto" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:258 +msgid "Jappixmini Settings" +msgstr "Ajustes de Jappixmini" + #: ../../addon/authchoose/Mod_Authchoose.php:22 msgid "" "Allow magic authentication only to websites of your immediate connections" @@ -4030,20 +4150,20 @@ msgstr "Servidor BOSH de Jabber" msgid "XMPP Settings" msgstr "Ajustes de XMPP" -#: ../../include/zot.php:773 +#: ../../include/zot.php:774 msgid "Invalid data packet" msgstr "Paquete de datos no válido" -#: ../../include/zot.php:800 ../../Zotlabs/Lib/Libzot.php:652 +#: ../../include/zot.php:801 ../../Zotlabs/Lib/Libzot.php:652 msgid "Unable to verify channel signature" msgstr "No ha sido posible de verificar la firma del canal" -#: ../../include/zot.php:2627 ../../Zotlabs/Lib/Libsync.php:740 +#: ../../include/zot.php:2628 ../../Zotlabs/Lib/Libsync.php:733 #, php-format msgid "Unable to verify site signature for %s" msgstr "No ha sido posible de verificar la firma del sitio para %s" -#: ../../include/zot.php:4342 +#: ../../include/zot.php:4325 msgid "invalid target signature" msgstr "La firma recibida no es válida" @@ -4071,578 +4191,536 @@ msgstr "más antiguas" msgid "newer" msgstr "más recientes" -#: ../../include/text.php:1005 +#: ../../include/text.php:1000 msgid "No connections" msgstr "Sin conexiones" -#: ../../include/text.php:1017 ../../include/features.php:133 -#: ../../Zotlabs/Module/Connections.php:374 ../../Zotlabs/Lib/Apps.php:333 +#: ../../include/text.php:1012 ../../include/features.php:133 +#: ../../Zotlabs/Module/Connections.php:351 ../../Zotlabs/Lib/Apps.php:332 msgid "Connections" msgstr "Conexiones" -#: ../../include/text.php:1025 ../../Zotlabs/Module/Viewconnections.php:80 -#: ../../Zotlabs/Module/Connections.php:288 -msgid "Accepts" -msgstr "Se acepta" - -#: ../../include/text.php:1028 ../../Zotlabs/Module/Viewconnections.php:83 -#: ../../Zotlabs/Module/Connections.php:291 -msgid "Comments" -msgstr "Comentarios" - -#: ../../include/text.php:1033 ../../Zotlabs/Module/Viewconnections.php:88 -#: ../../Zotlabs/Module/Connections.php:296 -msgid "Stream items" -msgstr "Elementos del stream" - -#: ../../include/text.php:1038 ../../Zotlabs/Module/Viewconnections.php:93 -#: ../../Zotlabs/Module/Connections.php:301 -msgid "Wall posts" -msgstr "Entradas del Muro" - -#: ../../include/text.php:1042 ../../Zotlabs/Module/Viewconnections.php:97 -#: ../../Zotlabs/Module/Connections.php:305 -msgid "Nothing" -msgstr "Nada" - -#: ../../include/text.php:1057 +#: ../../include/text.php:1032 #, php-format msgid "View all %s connections" msgstr "Ver todas las %s conexiones" -#: ../../include/text.php:1120 +#: ../../include/text.php:1094 #, php-format msgid "Network: %s" msgstr "Red %s" -#: ../../include/text.php:1131 ../../include/text.php:1143 -#: ../../include/nav.php:188 ../../include/acl_selectors.php:118 +#: ../../include/text.php:1105 ../../include/text.php:1117 +#: ../../include/nav.php:186 ../../include/acl_selectors.php:118 #: ../../Zotlabs/Widget/Sitesearch.php:31 -#: ../../Zotlabs/Widget/Activity_filter.php:193 -#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:378 -#: ../../Zotlabs/Lib/Apps.php:353 +#: ../../Zotlabs/Widget/Activity_filter.php:151 +#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:355 +#: ../../Zotlabs/Lib/Apps.php:352 msgid "Search" msgstr "Buscar" -#: ../../include/text.php:1223 ../../include/text.php:1227 +#: ../../include/text.php:1197 ../../include/text.php:1201 msgid "poke" msgstr "un toque" -#: ../../include/text.php:1223 ../../include/text.php:1227 -#: ../../include/conversation.php:255 +#: ../../include/text.php:1197 ../../include/text.php:1201 +#: ../../include/conversation.php:251 msgid "poked" msgstr "ha dado un toque a" -#: ../../include/text.php:1228 +#: ../../include/text.php:1202 msgid "ping" msgstr "un \"ping\"" -#: ../../include/text.php:1228 +#: ../../include/text.php:1202 msgid "pinged" msgstr "ha enviado un \"ping\" a" -#: ../../include/text.php:1229 +#: ../../include/text.php:1203 msgid "prod" msgstr "una incitación " -#: ../../include/text.php:1229 +#: ../../include/text.php:1203 msgid "prodded" msgstr "ha incitado a " -#: ../../include/text.php:1230 +#: ../../include/text.php:1204 msgid "slap" msgstr "una bofetada " -#: ../../include/text.php:1230 +#: ../../include/text.php:1204 msgid "slapped" msgstr "ha abofeteado a " -#: ../../include/text.php:1231 +#: ../../include/text.php:1205 msgid "finger" msgstr "un \"finger\" " -#: ../../include/text.php:1231 +#: ../../include/text.php:1205 msgid "fingered" msgstr "envió un \"finger\" a" -#: ../../include/text.php:1232 +#: ../../include/text.php:1206 msgid "rebuff" msgstr "un reproche" -#: ../../include/text.php:1232 +#: ../../include/text.php:1206 msgid "rebuffed" msgstr "ha hecho un reproche a " -#: ../../include/text.php:1255 +#: ../../include/text.php:1229 msgid "happy" msgstr "feliz " -#: ../../include/text.php:1256 +#: ../../include/text.php:1230 msgid "sad" msgstr "triste " -#: ../../include/text.php:1257 +#: ../../include/text.php:1231 msgid "mellow" msgstr "tranquilo/a" -#: ../../include/text.php:1258 +#: ../../include/text.php:1232 msgid "tired" msgstr "cansado/a " -#: ../../include/text.php:1259 +#: ../../include/text.php:1233 msgid "perky" msgstr "vivaz" -#: ../../include/text.php:1260 +#: ../../include/text.php:1234 msgid "angry" msgstr "enfadado/a" -#: ../../include/text.php:1261 +#: ../../include/text.php:1235 msgid "stupefied" msgstr "asombrado/a" -#: ../../include/text.php:1262 +#: ../../include/text.php:1236 msgid "puzzled" msgstr "perplejo/a" -#: ../../include/text.php:1263 +#: ../../include/text.php:1237 msgid "interested" msgstr "interesado/a" -#: ../../include/text.php:1264 +#: ../../include/text.php:1238 msgid "bitter" msgstr "amargado/a" -#: ../../include/text.php:1265 +#: ../../include/text.php:1239 msgid "cheerful" msgstr "alegre" -#: ../../include/text.php:1266 +#: ../../include/text.php:1240 msgid "alive" msgstr "animado/a" -#: ../../include/text.php:1267 +#: ../../include/text.php:1241 msgid "annoyed" msgstr "molesto/a" -#: ../../include/text.php:1268 +#: ../../include/text.php:1242 msgid "anxious" msgstr "ansioso/a" -#: ../../include/text.php:1269 +#: ../../include/text.php:1243 msgid "cranky" msgstr "de mal humor" -#: ../../include/text.php:1270 +#: ../../include/text.php:1244 msgid "disturbed" msgstr "perturbado/a" -#: ../../include/text.php:1271 +#: ../../include/text.php:1245 msgid "frustrated" msgstr "frustrado/a" -#: ../../include/text.php:1272 +#: ../../include/text.php:1246 msgid "depressed" msgstr "deprimido/a" -#: ../../include/text.php:1273 +#: ../../include/text.php:1247 msgid "motivated" msgstr "motivado/a" -#: ../../include/text.php:1274 +#: ../../include/text.php:1248 msgid "relaxed" msgstr "relajado/a" -#: ../../include/text.php:1275 +#: ../../include/text.php:1249 msgid "surprised" msgstr "sorprendido/a" -#: ../../include/text.php:1463 ../../include/js_strings.php:99 +#: ../../include/text.php:1437 ../../include/js_strings.php:96 msgid "Monday" msgstr "lunes" -#: ../../include/text.php:1463 ../../include/js_strings.php:100 +#: ../../include/text.php:1437 ../../include/js_strings.php:97 msgid "Tuesday" msgstr "martes" -#: ../../include/text.php:1463 ../../include/js_strings.php:101 +#: ../../include/text.php:1437 ../../include/js_strings.php:98 msgid "Wednesday" msgstr "miércoles" -#: ../../include/text.php:1463 ../../include/js_strings.php:102 +#: ../../include/text.php:1437 ../../include/js_strings.php:99 msgid "Thursday" msgstr "jueves" -#: ../../include/text.php:1463 ../../include/js_strings.php:103 +#: ../../include/text.php:1437 ../../include/js_strings.php:100 msgid "Friday" msgstr "viernes" -#: ../../include/text.php:1463 ../../include/js_strings.php:104 +#: ../../include/text.php:1437 ../../include/js_strings.php:101 msgid "Saturday" msgstr "sábado" -#: ../../include/text.php:1463 ../../include/js_strings.php:98 +#: ../../include/text.php:1437 ../../include/js_strings.php:95 msgid "Sunday" msgstr "domingo" -#: ../../include/text.php:1467 ../../include/js_strings.php:74 +#: ../../include/text.php:1441 ../../include/js_strings.php:71 msgid "January" msgstr "enero" -#: ../../include/text.php:1467 ../../include/js_strings.php:75 +#: ../../include/text.php:1441 ../../include/js_strings.php:72 msgid "February" msgstr "febrero" -#: ../../include/text.php:1467 ../../include/js_strings.php:76 +#: ../../include/text.php:1441 ../../include/js_strings.php:73 msgid "March" msgstr "marzo" -#: ../../include/text.php:1467 ../../include/js_strings.php:77 +#: ../../include/text.php:1441 ../../include/js_strings.php:74 msgid "April" msgstr "abril" -#: ../../include/text.php:1467 +#: ../../include/text.php:1441 msgid "May" msgstr "mayo" -#: ../../include/text.php:1467 ../../include/js_strings.php:79 +#: ../../include/text.php:1441 ../../include/js_strings.php:76 msgid "June" msgstr "junio" -#: ../../include/text.php:1467 ../../include/js_strings.php:80 +#: ../../include/text.php:1441 ../../include/js_strings.php:77 msgid "July" msgstr "julio" -#: ../../include/text.php:1467 ../../include/js_strings.php:81 +#: ../../include/text.php:1441 ../../include/js_strings.php:78 msgid "August" msgstr "agosto" -#: ../../include/text.php:1467 ../../include/js_strings.php:82 +#: ../../include/text.php:1441 ../../include/js_strings.php:79 msgid "September" msgstr "septiembre" -#: ../../include/text.php:1467 ../../include/js_strings.php:83 +#: ../../include/text.php:1441 ../../include/js_strings.php:80 msgid "October" msgstr "octubre" -#: ../../include/text.php:1467 ../../include/js_strings.php:84 +#: ../../include/text.php:1441 ../../include/js_strings.php:81 msgid "November" msgstr "noviembre" -#: ../../include/text.php:1467 ../../include/js_strings.php:85 +#: ../../include/text.php:1441 ../../include/js_strings.php:82 msgid "December" msgstr "diciembre" -#: ../../include/text.php:1541 +#: ../../include/text.php:1515 msgid "Unknown Attachment" msgstr "Adjunto no reconocido" -#: ../../include/text.php:1543 ../../Zotlabs/Module/Sharedwithme.php:108 +#: ../../include/text.php:1517 ../../Zotlabs/Module/Sharedwithme.php:106 #: ../../Zotlabs/Storage/Browser.php:293 msgid "Size" msgstr "Tamaño" -#: ../../include/text.php:1543 ../../include/feedutils.php:871 +#: ../../include/text.php:1517 ../../include/feedutils.php:870 msgid "unknown" msgstr "desconocido" -#: ../../include/text.php:1579 +#: ../../include/text.php:1553 msgid "remove category" msgstr "eliminar el tema" -#: ../../include/text.php:1655 +#: ../../include/text.php:1629 msgid "remove from file" msgstr "eliminar del fichero" -#: ../../include/text.php:1824 ../../include/message.php:13 +#: ../../include/text.php:1793 ../../include/message.php:13 msgid "Download binary/encrypted content" msgstr "Descargar contenido binario o cifrado" -#: ../../include/text.php:1895 -msgid "Poll has ended." -msgstr "La encuesta ha terminado" - -#: ../../include/text.php:1898 -#, php-format -msgid "Poll ends: %s" -msgstr "Finales de la encuesta: %s" - -#: ../../include/text.php:1903 ../../Zotlabs/Lib/ThreadItem.php:444 -msgid "Vote" -msgstr "Votar" - -#: ../../include/text.php:2055 ../../Zotlabs/Module/Events.php:669 +#: ../../include/text.php:1941 ../../Zotlabs/Module/Events.php:669 msgid "Link to Source" msgstr "Enlazar con la entrada en su ubicación original" -#: ../../include/text.php:2077 ../../include/language.php:424 +#: ../../include/text.php:1963 ../../include/language.php:423 msgid "default" msgstr "por defecto" -#: ../../include/text.php:2085 +#: ../../include/text.php:1971 msgid "Page layout" msgstr "Plantilla de la página" -#: ../../include/text.php:2085 +#: ../../include/text.php:1971 msgid "You can create your own with the layouts tool" msgstr "Puede crear su propia disposición gráfica con la herramienta de plantillas" -#: ../../include/text.php:2095 ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../include/text.php:1981 ../../Zotlabs/Widget/Wiki_pages.php:38 #: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 #: ../../Zotlabs/Module/Wiki.php:371 msgid "BBcode" msgstr "BBcode" -#: ../../include/text.php:2096 +#: ../../include/text.php:1982 msgid "HTML" msgstr "HTML" -#: ../../include/text.php:2098 ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../include/text.php:1984 ../../Zotlabs/Widget/Wiki_pages.php:38 #: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 msgid "Text" msgstr "Texto" -#: ../../include/text.php:2099 +#: ../../include/text.php:1985 msgid "Comanche Layout" msgstr "Plantilla de Comanche" -#: ../../include/text.php:2104 +#: ../../include/text.php:1990 msgid "PHP" msgstr "PHP" -#: ../../include/text.php:2113 +#: ../../include/text.php:1999 msgid "Page content type" msgstr "Tipo de contenido de la página" -#: ../../include/text.php:2236 ../../include/event.php:1259 -#: ../../include/conversation.php:121 -#: ../../Zotlabs/Module/Channel_calendar.php:219 -#: ../../Zotlabs/Module/Like.php:388 ../../Zotlabs/Module/Tagger.php:75 +#: ../../include/text.php:2122 ../../include/event.php:1213 +#: ../../include/conversation.php:119 +#: ../../Zotlabs/Module/Channel_calendar.php:213 +#: ../../Zotlabs/Module/Like.php:394 ../../Zotlabs/Module/Tagger.php:73 #: ../../Zotlabs/Module/Events.php:266 msgid "event" msgstr "el/su evento" -#: ../../include/text.php:2241 ../../include/conversation.php:148 -#: ../../Zotlabs/Module/Tagger.php:81 +#: ../../include/text.php:2127 ../../include/conversation.php:146 +#: ../../Zotlabs/Module/Tagger.php:79 msgid "comment" msgstr "el comentario" -#: ../../include/text.php:2246 +#: ../../include/text.php:2132 msgid "activity" msgstr "la/su actividad" -#: ../../include/text.php:2249 -msgid "poll" -msgstr "encuesta" - -#: ../../include/text.php:2350 +#: ../../include/text.php:2233 msgid "a-z, 0-9, -, and _ only" msgstr "a-z, 0-9, -, and _ only" -#: ../../include/text.php:2676 +#: ../../include/text.php:2559 msgid "Design Tools" msgstr "Herramientas de diseño web" -#: ../../include/text.php:2679 ../../Zotlabs/Module/Blocks.php:154 +#: ../../include/text.php:2562 ../../Zotlabs/Module/Blocks.php:154 msgid "Blocks" msgstr "Bloques" -#: ../../include/text.php:2680 ../../Zotlabs/Module/Menu.php:171 +#: ../../include/text.php:2563 ../../Zotlabs/Module/Menu.php:171 msgid "Menus" msgstr "Menús" -#: ../../include/text.php:2681 ../../Zotlabs/Module/Layouts.php:184 +#: ../../include/text.php:2564 ../../Zotlabs/Module/Layouts.php:184 msgid "Layouts" msgstr "Plantillas" -#: ../../include/text.php:2682 +#: ../../include/text.php:2565 msgid "Pages" msgstr "Páginas" -#: ../../include/text.php:2694 +#: ../../include/text.php:2577 msgid "Import" msgstr "Importar" -#: ../../include/text.php:2695 +#: ../../include/text.php:2578 msgid "Import website..." msgstr "Importar un sitio web..." -#: ../../include/text.php:2696 +#: ../../include/text.php:2579 msgid "Select folder to import" msgstr "Seleccionar la carpeta que se va a importar" -#: ../../include/text.php:2697 +#: ../../include/text.php:2580 msgid "Import from a zipped folder:" msgstr "Importar desde una carpeta comprimida: " -#: ../../include/text.php:2698 +#: ../../include/text.php:2581 msgid "Import from cloud files:" msgstr "Importar desde los ficheros en la nube: " -#: ../../include/text.php:2699 +#: ../../include/text.php:2582 msgid "/cloud/channel/path/to/folder" msgstr "/cloud/canal/ruta/a la/carpeta" -#: ../../include/text.php:2700 +#: ../../include/text.php:2583 msgid "Enter path to website files" msgstr "Ruta a los ficheros del sitio web" -#: ../../include/text.php:2701 +#: ../../include/text.php:2584 msgid "Select folder" msgstr "Seleccionar la carpeta" -#: ../../include/text.php:2702 +#: ../../include/text.php:2585 msgid "Export website..." msgstr "Exportar un sitio web..." -#: ../../include/text.php:2703 +#: ../../include/text.php:2586 msgid "Export to a zip file" msgstr "Exportar a un fichero comprimido .zip" -#: ../../include/text.php:2704 +#: ../../include/text.php:2587 msgid "website.zip" msgstr "sitio_web.zip" -#: ../../include/text.php:2705 +#: ../../include/text.php:2588 msgid "Enter a name for the zip file." msgstr "Escriba un nombre para el fichero zip." -#: ../../include/text.php:2706 +#: ../../include/text.php:2589 msgid "Export to cloud files" msgstr "Exportar a la nube de ficheros" -#: ../../include/text.php:2707 +#: ../../include/text.php:2590 msgid "/path/to/export/folder" msgstr "/ruta/para/exportar/carpeta" -#: ../../include/text.php:2708 +#: ../../include/text.php:2591 msgid "Enter a path to a cloud files destination." msgstr "Escriba una ruta de destino a la nube de ficheros." -#: ../../include/text.php:2709 +#: ../../include/text.php:2592 msgid "Specify folder" msgstr "Especificar una carpeta" -#: ../../include/text.php:3082 ../../Zotlabs/Storage/Browser.php:131 +#: ../../include/text.php:2954 ../../Zotlabs/Storage/Browser.php:131 msgid "Collection" msgstr "Colección" -#: ../../include/opengraph.php:56 +#: ../../include/opengraph.php:58 #, php-format msgid "This is the home page of %s." msgstr "Esta es la página personal de %s." -#: ../../include/event.php:33 ../../include/event.php:110 +#: ../../include/event.php:32 ../../include/event.php:95 msgid "l F d, Y \\@ g:i A" msgstr "l d de F, Y \\@ G:i" -#: ../../include/event.php:41 +#: ../../include/event.php:40 msgid "Starts:" msgstr "Comienza:" -#: ../../include/event.php:51 +#: ../../include/event.php:50 msgid "Finishes:" msgstr "Finaliza:" -#: ../../include/event.php:63 ../../include/event.php:134 -#: ../../include/channel.php:1618 ../../Zotlabs/Module/Directory.php:352 +#: ../../include/event.php:62 ../../include/event.php:112 +#: ../../include/channel.php:1521 ../../Zotlabs/Module/Directory.php:339 msgid "Location:" msgstr "Ubicación:" -#: ../../include/event.php:110 +#: ../../include/event.php:95 msgid "l F d, Y" msgstr "l F d, Y" -#: ../../include/event.php:114 +#: ../../include/event.php:99 msgid "Start:" msgstr "Iniciar: " -#: ../../include/event.php:118 +#: ../../include/event.php:103 msgid "End:" msgstr "Finalizar: " -#: ../../include/event.php:1106 +#: ../../include/event.php:1064 msgid "This event has been added to your calendar." msgstr "Este evento ha sido añadido a su calendario." -#: ../../include/event.php:1337 +#: ../../include/event.php:1290 msgid "Not specified" msgstr "Sin especificar" -#: ../../include/event.php:1338 +#: ../../include/event.php:1291 msgid "Needs Action" msgstr "Necesita de una intervención" -#: ../../include/event.php:1339 +#: ../../include/event.php:1292 msgid "Completed" msgstr "Completado/a" -#: ../../include/event.php:1340 +#: ../../include/event.php:1293 msgid "In Process" msgstr "En proceso" -#: ../../include/event.php:1341 +#: ../../include/event.php:1294 msgid "Cancelled" msgstr "Cancelado/a" -#: ../../include/event.php:1422 ../../include/connections.php:728 -#: ../../Zotlabs/Module/Cdav.php:1377 ../../Zotlabs/Module/Profiles.php:794 -#: ../../Zotlabs/Module/Connedit.php:933 +#: ../../include/event.php:1375 ../../include/connections.php:728 +#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Profiles.php:792 +#: ../../Zotlabs/Module/Connedit.php:932 msgid "Mobile" msgstr "Móvil" -#: ../../include/event.php:1423 ../../include/connections.php:729 -#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:795 -#: ../../Zotlabs/Module/Connedit.php:934 +#: ../../include/event.php:1376 ../../include/connections.php:729 +#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Profiles.php:793 +#: ../../Zotlabs/Module/Connedit.php:933 msgid "Home" msgstr "Inicio" -#: ../../include/event.php:1424 ../../include/connections.php:730 +#: ../../include/event.php:1377 ../../include/connections.php:730 msgid "Home, Voice" msgstr "Llamadas particulares" -#: ../../include/event.php:1425 ../../include/connections.php:731 +#: ../../include/event.php:1378 ../../include/connections.php:731 msgid "Home, Fax" msgstr "Fax particular" -#: ../../include/event.php:1426 ../../include/connections.php:732 -#: ../../Zotlabs/Module/Cdav.php:1379 ../../Zotlabs/Module/Profiles.php:796 -#: ../../Zotlabs/Module/Connedit.php:935 +#: ../../include/event.php:1379 ../../include/connections.php:732 +#: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Profiles.php:794 +#: ../../Zotlabs/Module/Connedit.php:934 msgid "Work" msgstr "Trabajo" -#: ../../include/event.php:1427 ../../include/connections.php:733 +#: ../../include/event.php:1380 ../../include/connections.php:733 msgid "Work, Voice" msgstr "Llamadas de trabajo" -#: ../../include/event.php:1428 ../../include/connections.php:734 +#: ../../include/event.php:1381 ../../include/connections.php:734 msgid "Work, Fax" msgstr "Fax de trabajo" -#: ../../include/event.php:1429 ../../include/event.php:1436 +#: ../../include/event.php:1382 ../../include/event.php:1389 #: ../../include/selectors.php:60 ../../include/selectors.php:77 #: ../../include/selectors.php:115 ../../include/selectors.php:151 #: ../../include/connections.php:735 ../../include/connections.php:742 -#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Profiles.php:797 -#: ../../Zotlabs/Module/Connedit.php:936 -#: ../../Zotlabs/Access/PermissionRoles.php:310 +#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Profiles.php:795 +#: ../../Zotlabs/Module/Connedit.php:935 +#: ../../Zotlabs/Access/PermissionRoles.php:306 msgid "Other" msgstr "Otro" #: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 -#: ../../Zotlabs/Module/Settings/Features.php:38 +#: ../../Zotlabs/Module/Settings/Features.php:36 msgid "Off" msgstr "Desactivado" #: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 -#: ../../Zotlabs/Module/Settings/Features.php:38 +#: ../../Zotlabs/Module/Settings/Features.php:36 msgid "On" msgstr "Activado" -#: ../../include/features.php:82 ../../include/nav.php:463 -#: ../../include/nav.php:466 ../../Zotlabs/Lib/Apps.php:346 +#: ../../include/features.php:82 ../../include/nav.php:465 +#: ../../include/nav.php:468 ../../Zotlabs/Lib/Apps.php:345 #: ../../Zotlabs/Storage/Browser.php:140 msgid "Calendar" msgstr "Calendario" @@ -4663,7 +4741,7 @@ msgstr "Selección del huso horario del evento" msgid "Allow event creation in timezones other than your own." msgstr "Permitir la creación de eventos en husos horarios distintos del suyo." -#: ../../include/features.php:104 ../../Zotlabs/Lib/Apps.php:343 +#: ../../include/features.php:104 ../../Zotlabs/Lib/Apps.php:342 msgid "Channel Home" msgstr "Mi canal" @@ -4683,11 +4761,11 @@ msgstr "Nube de etiquetas" msgid "Provide a personal tag cloud on your channel page" msgstr "Proveer nube de etiquetas personal en su página de canal" -#: ../../include/features.php:124 ../../include/features.php:359 +#: ../../include/features.php:124 ../../include/features.php:351 msgid "Use blog/list mode" msgstr "Usar el modo blog/lista" -#: ../../include/features.php:125 ../../include/features.php:360 +#: ../../include/features.php:125 ../../include/features.php:352 msgid "Comments will be displayed separately" msgstr "Los comentarios se mostrarán por separado" @@ -4703,6 +4781,14 @@ msgstr "Filtrar publicaciones entrantes de conexiones por palabras clave o conte msgid "Conversation" msgstr "Conversación" +#: ../../include/features.php:150 +msgid "Community Tagging" +msgstr "Etiquetas de la comunidad" + +#: ../../include/features.php:151 +msgid "Ability to tag existing posts" +msgstr "Capacidad de etiquetar entradas" + #: ../../include/features.php:158 msgid "Emoji Reactions" msgstr "Emoticonos \"emoji\"" @@ -4735,7 +4821,7 @@ msgstr "Responder a los comentarios" msgid "Ability to reply on selected comment" msgstr "Posibilidad de responder a los comentarios seleccionados" -#: ../../include/features.php:192 ../../Zotlabs/Lib/Apps.php:347 +#: ../../include/features.php:192 ../../Zotlabs/Lib/Apps.php:346 msgid "Directory" msgstr "Directorio" @@ -4779,175 +4865,167 @@ msgid "" msgstr "Permitir cifrado adicional de contenido \"punto-a-punto\" con una clave secreta compartida." #: ../../include/features.php:235 +msgid "Enable Voting Tools" +msgstr "Permitir entradas con votación" + +#: ../../include/features.php:236 +msgid "Provide a class of post which others can vote on" +msgstr "Proveer una clase de publicación en la que otros puedan votar" + +#: ../../include/features.php:243 msgid "Disable Comments" msgstr "Deshabilitar comentarios" -#: ../../include/features.php:236 +#: ../../include/features.php:244 msgid "Provide the option to disable comments for a post" msgstr "Proporcionar la opción de desactivar los comentarios para una entrada" -#: ../../include/features.php:243 +#: ../../include/features.php:251 msgid "Delayed Posting" msgstr "Publicación aplazada" -#: ../../include/features.php:244 +#: ../../include/features.php:252 msgid "Allow posts to be published at a later date" msgstr "Permitir mensajes que se publicarán en una fecha posterior" -#: ../../include/features.php:251 +#: ../../include/features.php:259 msgid "Content Expiration" msgstr "Caducidad del contenido" -#: ../../include/features.php:252 +#: ../../include/features.php:260 msgid "Remove posts/comments and/or private messages at a future time" msgstr "Eliminar publicaciones/comentarios y/o mensajes privados más adelante" -#: ../../include/features.php:259 +#: ../../include/features.php:267 msgid "Suppress Duplicate Posts/Comments" msgstr "Prevenir entradas o comentarios duplicados" -#: ../../include/features.php:260 +#: ../../include/features.php:268 msgid "" "Prevent posts with identical content to be published with less than two " "minutes in between submissions." msgstr "Prevenir que entradas con contenido idéntico se publiquen con menos de dos minutos de intervalo." -#: ../../include/features.php:267 +#: ../../include/features.php:275 msgid "Auto-save drafts of posts and comments" msgstr "Guardar automáticamente borradores de entradas y comentarios" -#: ../../include/features.php:268 +#: ../../include/features.php:276 msgid "" "Automatically saves post and comment drafts in local browser storage to help" " prevent accidental loss of compositions" msgstr "Guarda automáticamente los borradores de comentarios y publicaciones en el almacenamiento del navegador local para ayudar a evitar la pérdida accidental de composiciones." -#: ../../include/features.php:277 +#: ../../include/features.php:285 msgid "Manage" msgstr "Gestionar" -#: ../../include/features.php:281 +#: ../../include/features.php:289 msgid "Navigation Channel Select" msgstr "Navegación por el selector de canales" -#: ../../include/features.php:282 +#: ../../include/features.php:290 msgid "Change channels directly from within the navigation dropdown menu" msgstr "Cambiar de canales directamente desde el menú de navegación desplegable" -#: ../../include/features.php:291 ../../Zotlabs/Module/Connections.php:332 +#: ../../include/features.php:299 ../../Zotlabs/Module/Connections.php:310 msgid "Network" msgstr "Red" -#: ../../include/features.php:295 -msgid "Events Filter" -msgstr "Filtro de eventos" - -#: ../../include/features.php:296 -msgid "Ability to display only events" -msgstr "Capacidad para mostrar solo eventos" - -#: ../../include/features.php:303 -msgid "Polls Filter" -msgstr "Filtro de encuestas" - -#: ../../include/features.php:304 -msgid "Ability to display only polls" -msgstr "Capacidad para mostrar solo encuestas" - -#: ../../include/features.php:311 ../../Zotlabs/Widget/Savedsearch.php:83 +#: ../../include/features.php:303 ../../Zotlabs/Widget/Savedsearch.php:83 msgid "Saved Searches" msgstr "Búsquedas guardadas" -#: ../../include/features.php:312 +#: ../../include/features.php:304 msgid "Save search terms for re-use" msgstr "Guardar términos de búsqueda para su reutilización" -#: ../../include/features.php:319 ../../include/contact_widgets.php:53 -#: ../../Zotlabs/Widget/Activity_filter.php:179 +#: ../../include/features.php:311 ../../include/contact_widgets.php:53 +#: ../../Zotlabs/Widget/Activity_filter.php:137 #: ../../Zotlabs/Widget/Filer.php:28 msgid "Saved Folders" msgstr "Carpetas guardadas" -#: ../../include/features.php:320 +#: ../../include/features.php:312 msgid "Ability to file posts under folders" msgstr "Capacidad de archivar entradas en carpetas" -#: ../../include/features.php:327 +#: ../../include/features.php:319 msgid "Alternate Stream Order" msgstr "Orden de stream alternativo" -#: ../../include/features.php:328 +#: ../../include/features.php:320 msgid "" "Ability to order the stream by last post date, last comment date or " "unthreaded activities" msgstr "Posibilidad de ordenar el stream por última fecha de publicación, última fecha de comentario o actividades sin hilo" -#: ../../include/features.php:335 +#: ../../include/features.php:327 msgid "Contact Filter" msgstr "Filtro de contactos" -#: ../../include/features.php:336 +#: ../../include/features.php:328 msgid "Ability to display only posts of a selected contact" msgstr "Posibilidad de mostrar sólo los mensajes de un contacto seleccionado" -#: ../../include/features.php:343 +#: ../../include/features.php:335 msgid "Forum Filter" msgstr "Filtro de foro" -#: ../../include/features.php:344 +#: ../../include/features.php:336 msgid "Ability to display only posts of a specific forum" msgstr "Posibilidad de mostrar sólo los mensajes de un foro específico" -#: ../../include/features.php:351 +#: ../../include/features.php:343 msgid "Personal Posts Filter" msgstr "Filtro de entradas personales" -#: ../../include/features.php:352 +#: ../../include/features.php:344 msgid "Ability to display only posts that you've interacted on" msgstr "Posibilidad de mostrar sólo los mensajes en los que usted haya interactuado" -#: ../../include/features.php:369 ../../include/nav.php:444 -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:345 +#: ../../include/features.php:361 ../../include/nav.php:446 +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 msgid "Photos" msgstr "Fotos" -#: ../../include/features.php:373 +#: ../../include/features.php:365 msgid "Photo Location" msgstr "Ubicación de las fotos" -#: ../../include/features.php:374 +#: ../../include/features.php:366 msgid "If location data is available on uploaded photos, link this to a map." msgstr "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa." -#: ../../include/features.php:383 ../../Zotlabs/Lib/Apps.php:363 +#: ../../include/features.php:375 ../../Zotlabs/Lib/Apps.php:362 msgid "Profiles" msgstr "Perfiles" -#: ../../include/features.php:387 +#: ../../include/features.php:379 msgid "Advanced Profiles" msgstr "Perfiles avanzados" -#: ../../include/features.php:388 +#: ../../include/features.php:380 msgid "Additional profile sections and selections" msgstr "Secciones y selecciones de perfil adicionales" -#: ../../include/features.php:395 +#: ../../include/features.php:387 msgid "Profile Import/Export" msgstr "Importar/Exportar perfil" -#: ../../include/features.php:396 +#: ../../include/features.php:388 msgid "Save and load profile details across sites/channels" msgstr "Guardar y cargar detalles del perfil a través de sitios/canales" -#: ../../include/features.php:403 +#: ../../include/features.php:395 msgid "Multiple Profiles" msgstr "Múltiples perfiles" -#: ../../include/features.php:404 +#: ../../include/features.php:396 msgid "Ability to create multiple profiles" msgstr "Capacidad de crear múltiples perfiles" -#: ../../include/security.php:609 +#: ../../include/security.php:607 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." @@ -4957,12 +5035,12 @@ msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrid msgid "Delete this item?" msgstr "¿Borrar este elemento?" -#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1096 -#: ../../Zotlabs/Module/Photos.php:1214 ../../Zotlabs/Lib/ThreadItem.php:824 +#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1095 +#: ../../Zotlabs/Module/Photos.php:1214 ../../Zotlabs/Lib/ThreadItem.php:795 msgid "Comment" msgstr "Comentar" -#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:533 +#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:502 #, php-format msgid "%s show all" msgstr "%s mostrar todo" @@ -5019,7 +5097,7 @@ msgid "Rate This Channel (this is public)" msgstr "Valorar este canal (esto es público)" #: ../../include/js_strings.php:20 ../../Zotlabs/Module/Rate.php:155 -#: ../../Zotlabs/Module/Connedit.php:888 +#: ../../Zotlabs/Module/Connedit.php:887 msgid "Rating" msgstr "Valoración" @@ -5036,8 +5114,8 @@ msgid "Unsaved changes. Are you sure you wish to leave this page?" msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?" #: ../../include/js_strings.php:25 ../../Zotlabs/Module/Pubsites.php:52 -#: ../../Zotlabs/Module/Cdav.php:1011 ../../Zotlabs/Module/Events.php:483 -#: ../../Zotlabs/Module/Profiles.php:511 ../../Zotlabs/Module/Profiles.php:736 +#: ../../Zotlabs/Module/Cdav.php:1038 ../../Zotlabs/Module/Events.php:483 +#: ../../Zotlabs/Module/Profiles.php:509 ../../Zotlabs/Module/Profiles.php:734 #: ../../Zotlabs/Module/Locs.php:117 msgid "Location" msgstr "Ubicación" @@ -5088,205 +5166,192 @@ msgstr "nombre de canal" msgid "Back to reply" msgstr "Volver a la respuesta" -#: ../../include/js_strings.php:37 -msgid "Pinned" -msgstr "Anclado/a" - -#: ../../include/js_strings.php:38 ../../Zotlabs/Lib/ThreadItem.php:471 -msgid "Pin to the top" -msgstr "Anclar en la parte superior" - -#: ../../include/js_strings.php:39 ../../Zotlabs/Widget/Pinned.php:157 -#: ../../Zotlabs/Lib/ThreadItem.php:471 -msgid "Unpin from the top" -msgstr "Desanclar de la parte superior" - -#: ../../include/js_strings.php:45 +#: ../../include/js_strings.php:42 #, php-format msgid "%d minutes" msgid_plural "%d minutes" msgstr[0] "%d minutos" msgstr[1] "%d minutos" -#: ../../include/js_strings.php:46 +#: ../../include/js_strings.php:43 #, php-format msgid "about %d hours" msgid_plural "about %d hours" msgstr[0] "alrededor de %d horas" msgstr[1] "alrededor de %d horas" -#: ../../include/js_strings.php:47 +#: ../../include/js_strings.php:44 #, php-format msgid "%d days" msgid_plural "%d days" msgstr[0] "%d días" msgstr[1] "%d días" -#: ../../include/js_strings.php:48 +#: ../../include/js_strings.php:45 #, php-format msgid "%d months" msgid_plural "%d months" msgstr[0] "%d meses" msgstr[1] "%d meses" -#: ../../include/js_strings.php:49 +#: ../../include/js_strings.php:46 #, php-format msgid "%d years" msgid_plural "%d years" msgstr[0] "%d años" msgstr[1] "%d años" -#: ../../include/js_strings.php:54 +#: ../../include/js_strings.php:51 msgid "timeago.prefixAgo" msgstr "hace " -#: ../../include/js_strings.php:55 +#: ../../include/js_strings.php:52 msgid "timeago.prefixFromNow" msgstr "en " -#: ../../include/js_strings.php:56 +#: ../../include/js_strings.php:53 msgid "timeago.suffixAgo" msgstr "NONE" -#: ../../include/js_strings.php:57 +#: ../../include/js_strings.php:54 msgid "timeago.suffixFromNow" msgstr "NONE" -#: ../../include/js_strings.php:60 +#: ../../include/js_strings.php:57 msgid "less than a minute" msgstr "menos de un minuto" -#: ../../include/js_strings.php:61 +#: ../../include/js_strings.php:58 msgid "about a minute" msgstr "alrededor de un minuto" -#: ../../include/js_strings.php:63 +#: ../../include/js_strings.php:60 msgid "about an hour" msgstr "alrededor de una hora" -#: ../../include/js_strings.php:65 +#: ../../include/js_strings.php:62 msgid "a day" msgstr "un día" -#: ../../include/js_strings.php:67 +#: ../../include/js_strings.php:64 msgid "about a month" msgstr "alrededor de un mes" -#: ../../include/js_strings.php:69 +#: ../../include/js_strings.php:66 msgid "about a year" msgstr "alrededor de un año" -#: ../../include/js_strings.php:71 +#: ../../include/js_strings.php:68 msgid " " msgstr " " -#: ../../include/js_strings.php:72 +#: ../../include/js_strings.php:69 msgid "timeago.numbers" msgstr "timeago.numbers" -#: ../../include/js_strings.php:78 +#: ../../include/js_strings.php:75 msgctxt "long" msgid "May" msgstr "mayo" -#: ../../include/js_strings.php:86 +#: ../../include/js_strings.php:83 msgid "Jan" msgstr "ene" -#: ../../include/js_strings.php:87 +#: ../../include/js_strings.php:84 msgid "Feb" msgstr "feb" -#: ../../include/js_strings.php:88 +#: ../../include/js_strings.php:85 msgid "Mar" msgstr "mar" -#: ../../include/js_strings.php:89 +#: ../../include/js_strings.php:86 msgid "Apr" msgstr "abr" -#: ../../include/js_strings.php:90 +#: ../../include/js_strings.php:87 msgctxt "short" msgid "May" msgstr "may" -#: ../../include/js_strings.php:91 +#: ../../include/js_strings.php:88 msgid "Jun" msgstr "jun" -#: ../../include/js_strings.php:92 +#: ../../include/js_strings.php:89 msgid "Jul" msgstr "jul" -#: ../../include/js_strings.php:93 +#: ../../include/js_strings.php:90 msgid "Aug" msgstr "ago" -#: ../../include/js_strings.php:94 +#: ../../include/js_strings.php:91 msgid "Sep" msgstr "sep" -#: ../../include/js_strings.php:95 +#: ../../include/js_strings.php:92 msgid "Oct" msgstr "oct" -#: ../../include/js_strings.php:96 +#: ../../include/js_strings.php:93 msgid "Nov" msgstr "nov" -#: ../../include/js_strings.php:97 +#: ../../include/js_strings.php:94 msgid "Dec" msgstr "dic" -#: ../../include/js_strings.php:105 +#: ../../include/js_strings.php:102 msgid "Sun" msgstr "dom" -#: ../../include/js_strings.php:106 +#: ../../include/js_strings.php:103 msgid "Mon" msgstr "lun" -#: ../../include/js_strings.php:107 +#: ../../include/js_strings.php:104 msgid "Tue" msgstr "mar" -#: ../../include/js_strings.php:108 +#: ../../include/js_strings.php:105 msgid "Wed" msgstr "mié" -#: ../../include/js_strings.php:109 +#: ../../include/js_strings.php:106 msgid "Thu" msgstr "jue" -#: ../../include/js_strings.php:110 +#: ../../include/js_strings.php:107 msgid "Fri" msgstr "vie" -#: ../../include/js_strings.php:111 +#: ../../include/js_strings.php:108 msgid "Sat" msgstr "sáb" -#: ../../include/js_strings.php:112 +#: ../../include/js_strings.php:109 msgctxt "calendar" msgid "today" msgstr "hoy" -#: ../../include/js_strings.php:113 +#: ../../include/js_strings.php:110 msgctxt "calendar" msgid "month" msgstr "mes" -#: ../../include/js_strings.php:114 +#: ../../include/js_strings.php:111 msgctxt "calendar" msgid "week" msgstr "semana" -#: ../../include/js_strings.php:115 +#: ../../include/js_strings.php:112 msgctxt "calendar" msgid "day" msgstr "día" -#: ../../include/js_strings.php:116 +#: ../../include/js_strings.php:113 msgctxt "calendar" msgid "All day" msgstr "Todos los días" @@ -5296,8 +5361,8 @@ msgid "Help:" msgstr "Ayuda:" #: ../../include/help.php:117 ../../include/help.php:125 -#: ../../include/nav.php:174 ../../include/nav.php:320 -#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:348 +#: ../../include/nav.php:172 ../../include/nav.php:322 +#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:347 msgid "Help" msgstr "Ayuda" @@ -5305,14 +5370,6 @@ msgstr "Ayuda" msgid "Not Found" msgstr "No encontrado" -#: ../../include/help.php:132 ../../Zotlabs/Module/Display.php:140 -#: ../../Zotlabs/Module/Display.php:157 ../../Zotlabs/Module/Display.php:177 -#: ../../Zotlabs/Module/Display.php:183 ../../Zotlabs/Module/Page.php:136 -#: ../../Zotlabs/Module/Block.php:77 ../../Zotlabs/Lib/NativeWikiPage.php:521 -#: ../../Zotlabs/Web/Router.php:185 -msgid "Page not found." -msgstr "Página no encontrada." - #: ../../include/photos.php:151 #, php-format msgid "Image exceeds website size limit of %lu bytes" @@ -5322,8 +5379,8 @@ msgstr "La imagen excede el límite de %lu bytes del sitio" msgid "Image file is empty." msgstr "El fichero de imagen está vacío. " -#: ../../include/photos.php:196 ../../Zotlabs/Module/Profile_photo.php:261 -#: ../../Zotlabs/Module/Cover_photo.php:241 +#: ../../include/photos.php:196 ../../Zotlabs/Module/Profile_photo.php:259 +#: ../../Zotlabs/Module/Cover_photo.php:239 msgid "Unable to process image" msgstr "No ha sido posible procesar la imagen" @@ -5341,7 +5398,7 @@ msgctxt "photo_upload" msgid "%1$s posted %2$s to %3$s" msgstr "%1$s ha publicado %2$s en %3$s" -#: ../../include/photos.php:666 ../../include/nav.php:447 +#: ../../include/photos.php:666 ../../include/nav.php:449 msgid "Photo Albums" msgstr "Álbumes de fotos" @@ -5354,43 +5411,43 @@ msgstr "Fotos recientes" msgid "Upload New Photos" msgstr "Subir nuevas fotos" -#: ../../include/network.php:1730 ../../include/network.php:1731 +#: ../../include/network.php:1726 ../../include/network.php:1727 msgid "Friendica" msgstr "Friendica" -#: ../../include/network.php:1732 +#: ../../include/network.php:1728 msgid "OStatus" msgstr "OStatus" -#: ../../include/network.php:1733 +#: ../../include/network.php:1729 msgid "GNU-Social" msgstr "GNU Social" -#: ../../include/network.php:1734 +#: ../../include/network.php:1730 msgid "RSS/Atom" msgstr "RSS/Atom" -#: ../../include/network.php:1737 +#: ../../include/network.php:1733 msgid "Diaspora" msgstr "Diaspora" -#: ../../include/network.php:1738 +#: ../../include/network.php:1734 msgid "Facebook" msgstr "Facebook" -#: ../../include/network.php:1739 +#: ../../include/network.php:1735 msgid "Zot" msgstr "Zot" -#: ../../include/network.php:1740 +#: ../../include/network.php:1736 msgid "LinkedIn" msgstr "LinkedIn" -#: ../../include/network.php:1741 +#: ../../include/network.php:1737 msgid "XMPP/IM" msgstr "XMPP/IM" -#: ../../include/network.php:1742 +#: ../../include/network.php:1738 msgid "MySpace" msgstr "MySpace" @@ -5425,7 +5482,7 @@ msgstr[0] "%d invitación pendiente" msgstr[1] "%d invitaciones disponibles" #: ../../include/contact_widgets.php:16 -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "Advanced" msgstr "Avanzado" @@ -5445,13 +5502,13 @@ msgstr "Conectar/Seguir" msgid "Examples: Robert Morgenstein, Fishing" msgstr "Ejemplos: José Fernández, Pesca" -#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:431 -#: ../../Zotlabs/Module/Directory.php:436 -#: ../../Zotlabs/Module/Connections.php:381 +#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:416 +#: ../../Zotlabs/Module/Directory.php:421 +#: ../../Zotlabs/Module/Connections.php:358 msgid "Find" msgstr "Encontrar" -#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Directory.php:435 +#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Directory.php:420 #: ../../Zotlabs/Module/Suggest.php:79 msgid "Channel Suggestions" msgstr "Sugerencias de canales" @@ -5478,7 +5535,7 @@ msgstr "Todo" #: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409 #: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511 #: ../../include/taxonomy.php:532 ../../Zotlabs/Widget/Appcategories.php:43 -#: ../../Zotlabs/Module/Cdav.php:1066 +#: ../../Zotlabs/Module/Cdav.php:1093 msgid "Categories" msgstr "Temas" @@ -5491,249 +5548,249 @@ msgstr "Conexiones comunes" msgid "View all %d common connections" msgstr "Ver todas las %d conexiones comunes" -#: ../../include/language.php:437 +#: ../../include/language.php:436 msgid "Select an alternate language" msgstr "Seleccionar un idioma alternativo" -#: ../../include/import.php:29 +#: ../../include/import.php:28 msgid "Unable to import a removed channel." msgstr "No se puede importar un canal eliminado." -#: ../../include/import.php:55 +#: ../../include/import.php:54 msgid "" "Cannot create a duplicate channel identifier on this system. Import failed." msgstr "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado." -#: ../../include/import.php:121 +#: ../../include/import.php:120 msgid "Cloned channel not found. Import failed." msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado." -#: ../../include/nav.php:92 +#: ../../include/nav.php:90 msgid "Remote authentication" msgstr "Acceder desde su servidor" -#: ../../include/nav.php:92 +#: ../../include/nav.php:90 msgid "Click to authenticate to your home hub" msgstr "Pulsar para identificarse en su servidor de inicio" -#: ../../include/nav.php:98 ../../Zotlabs/Module/Manage.php:170 -#: ../../Zotlabs/Lib/Apps.php:337 +#: ../../include/nav.php:96 ../../Zotlabs/Module/Manage.php:170 +#: ../../Zotlabs/Lib/Apps.php:336 msgid "Channel Manager" msgstr "Administración de canales" -#: ../../include/nav.php:98 +#: ../../include/nav.php:96 msgid "Manage your channels" msgstr "Gestionar sus canales" -#: ../../include/nav.php:101 ../../include/group.php:321 -#: ../../Zotlabs/Widget/Activity_filter.php:82 -#: ../../Zotlabs/Module/Group.php:142 ../../Zotlabs/Module/Group.php:154 -#: ../../Zotlabs/Lib/Group.php:324 ../../Zotlabs/Lib/Apps.php:364 +#: ../../include/nav.php:99 ../../include/group.php:320 +#: ../../Zotlabs/Widget/Activity_filter.php:41 +#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153 +#: ../../Zotlabs/Lib/Group.php:324 ../../Zotlabs/Lib/Apps.php:363 msgid "Privacy Groups" msgstr "Grupos de canales" -#: ../../include/nav.php:101 +#: ../../include/nav.php:99 msgid "Manage your privacy groups" msgstr "Gestionar sus grupos de canales" -#: ../../include/nav.php:103 ../../Zotlabs/Widget/Settings_menu.php:61 +#: ../../include/nav.php:101 ../../Zotlabs/Widget/Settings_menu.php:61 #: ../../Zotlabs/Widget/Newmember.php:53 #: ../../Zotlabs/Module/Admin/Themes.php:125 -#: ../../Zotlabs/Module/Admin/Addons.php:345 ../../Zotlabs/Lib/Apps.php:339 +#: ../../Zotlabs/Module/Admin/Addons.php:345 ../../Zotlabs/Lib/Apps.php:338 msgid "Settings" msgstr "Ajustes" -#: ../../include/nav.php:103 +#: ../../include/nav.php:101 msgid "Account/Channel Settings" msgstr "Ajustes de cuenta/canales" -#: ../../include/nav.php:109 ../../include/nav.php:138 -#: ../../include/nav.php:157 ../../boot.php:1697 +#: ../../include/nav.php:107 ../../include/nav.php:136 +#: ../../include/nav.php:155 ../../boot.php:1673 msgid "Logout" msgstr "Finalizar sesión" -#: ../../include/nav.php:109 ../../include/nav.php:138 +#: ../../include/nav.php:107 ../../include/nav.php:136 msgid "End this session" msgstr "Finalizar esta sesión" -#: ../../include/nav.php:112 +#: ../../include/nav.php:110 msgid "Your profile page" msgstr "Su página del perfil" -#: ../../include/nav.php:115 ../../include/channel.php:1523 -#: ../../Zotlabs/Module/Profiles.php:832 +#: ../../include/nav.php:113 ../../include/channel.php:1426 +#: ../../Zotlabs/Module/Profiles.php:830 msgid "Edit Profiles" msgstr "Editar perfiles" -#: ../../include/nav.php:115 +#: ../../include/nav.php:113 msgid "Manage/Edit profiles" msgstr "Administrar/editar perfiles" -#: ../../include/nav.php:117 ../../Zotlabs/Widget/Newmember.php:35 +#: ../../include/nav.php:115 ../../Zotlabs/Widget/Newmember.php:35 msgid "Edit your profile" msgstr "Editar su perfil" -#: ../../include/nav.php:124 ../../include/nav.php:128 -#: ../../Zotlabs/Lib/Apps.php:336 ../../boot.php:1698 +#: ../../include/nav.php:122 ../../include/nav.php:126 +#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1674 msgid "Login" msgstr "Iniciar sesión" -#: ../../include/nav.php:124 ../../include/nav.php:128 +#: ../../include/nav.php:122 ../../include/nav.php:126 msgid "Sign in" msgstr "Acceder" -#: ../../include/nav.php:155 +#: ../../include/nav.php:153 msgid "Take me home" msgstr "Volver a la página principal" -#: ../../include/nav.php:157 +#: ../../include/nav.php:155 msgid "Log me out of this site" msgstr "Salir de este sitio" -#: ../../include/nav.php:162 ../../Zotlabs/Module/Register.php:293 -#: ../../boot.php:1678 +#: ../../include/nav.php:160 ../../Zotlabs/Module/Register.php:293 +#: ../../boot.php:1654 msgid "Register" msgstr "Registrarse" -#: ../../include/nav.php:162 +#: ../../include/nav.php:160 msgid "Create an account" msgstr "Crear una cuenta" -#: ../../include/nav.php:174 +#: ../../include/nav.php:172 msgid "Help and documentation" msgstr "Ayuda y documentación" -#: ../../include/nav.php:188 +#: ../../include/nav.php:186 msgid "Search site @name, !forum, #tag, ?docs, content" msgstr "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido" -#: ../../include/nav.php:194 ../../Zotlabs/Widget/Admin.php:55 +#: ../../include/nav.php:192 ../../Zotlabs/Widget/Admin.php:55 msgid "Admin" msgstr "Administrador" -#: ../../include/nav.php:194 +#: ../../include/nav.php:192 msgid "Site Setup and Configuration" msgstr "Ajustes y configuración del sitio" -#: ../../include/nav.php:324 ../../Zotlabs/Widget/Notifications.php:182 +#: ../../include/nav.php:326 ../../Zotlabs/Widget/Notifications.php:162 #: ../../Zotlabs/Module/New_channel.php:157 #: ../../Zotlabs/Module/New_channel.php:164 -#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:870 +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 msgid "Loading" msgstr "Cargando" -#: ../../include/nav.php:330 +#: ../../include/nav.php:332 msgid "@name, !forum, #tag, ?doc, content" msgstr "@nombre, !foro, #tag, ?docs, contenido" -#: ../../include/nav.php:331 +#: ../../include/nav.php:333 msgid "Please wait..." msgstr "Espere por favor…" -#: ../../include/nav.php:337 +#: ../../include/nav.php:339 msgid "Add Apps" msgstr "Añadir aplicaciones" -#: ../../include/nav.php:338 +#: ../../include/nav.php:340 msgid "Arrange Apps" msgstr "Organizar aplicaciones" -#: ../../include/nav.php:339 +#: ../../include/nav.php:341 msgid "Toggle System Apps" msgstr "Alternar aplicaciones de sistema" -#: ../../include/nav.php:421 ../../Zotlabs/Module/Admin/Channels.php:154 +#: ../../include/nav.php:423 ../../Zotlabs/Module/Admin/Channels.php:154 msgid "Channel" msgstr "Canal" -#: ../../include/nav.php:424 +#: ../../include/nav.php:426 msgid "Status Messages and Posts" msgstr "Mensajes de estado y publicaciones" -#: ../../include/nav.php:434 ../../Zotlabs/Module/Help.php:83 +#: ../../include/nav.php:436 ../../Zotlabs/Module/Help.php:80 msgid "About" msgstr "Mi perfil" -#: ../../include/nav.php:437 +#: ../../include/nav.php:439 msgid "Profile Details" msgstr "Detalles del perfil" -#: ../../include/nav.php:452 ../../Zotlabs/Module/Fbrowser.php:85 -#: ../../Zotlabs/Lib/Apps.php:340 ../../Zotlabs/Storage/Browser.php:278 +#: ../../include/nav.php:454 ../../Zotlabs/Module/Fbrowser.php:85 +#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Storage/Browser.php:278 msgid "Files" msgstr "Ficheros" -#: ../../include/nav.php:455 +#: ../../include/nav.php:457 msgid "Files and Storage" msgstr "Ficheros y repositorio" -#: ../../include/nav.php:477 ../../include/nav.php:480 -#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:330 +#: ../../include/nav.php:479 ../../include/nav.php:482 +#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:329 msgid "Chatrooms" msgstr "Salas de chat" -#: ../../include/nav.php:490 ../../Zotlabs/Lib/Apps.php:329 +#: ../../include/nav.php:492 ../../Zotlabs/Lib/Apps.php:328 msgid "Bookmarks" msgstr "Marcadores" -#: ../../include/nav.php:493 +#: ../../include/nav.php:495 msgid "Saved Bookmarks" msgstr "Marcadores guardados" -#: ../../include/nav.php:501 ../../Zotlabs/Module/Cards.php:207 -#: ../../Zotlabs/Lib/Apps.php:326 +#: ../../include/nav.php:503 ../../Zotlabs/Module/Cards.php:207 +#: ../../Zotlabs/Lib/Apps.php:325 msgid "Cards" msgstr "Fichas" -#: ../../include/nav.php:504 +#: ../../include/nav.php:506 msgid "View Cards" msgstr "Ver las fichas" -#: ../../include/nav.php:512 ../../Zotlabs/Module/Articles.php:226 -#: ../../Zotlabs/Lib/Apps.php:325 +#: ../../include/nav.php:514 ../../Zotlabs/Module/Articles.php:226 +#: ../../Zotlabs/Lib/Apps.php:324 msgid "Articles" msgstr "Artículos" -#: ../../include/nav.php:515 +#: ../../include/nav.php:517 msgid "View Articles" msgstr "Ver los artículos" -#: ../../include/nav.php:524 ../../Zotlabs/Module/Webpages.php:252 -#: ../../Zotlabs/Lib/Apps.php:341 +#: ../../include/nav.php:526 ../../Zotlabs/Module/Webpages.php:252 +#: ../../Zotlabs/Lib/Apps.php:340 msgid "Webpages" msgstr "Páginas web" -#: ../../include/nav.php:527 +#: ../../include/nav.php:529 msgid "View Webpages" msgstr "Ver páginas web" -#: ../../include/nav.php:536 ../../Zotlabs/Widget/Wiki_list.php:15 +#: ../../include/nav.php:538 ../../Zotlabs/Widget/Wiki_list.php:15 #: ../../Zotlabs/Module/Wiki.php:206 msgid "Wikis" msgstr "Wikis" -#: ../../include/nav.php:539 ../../Zotlabs/Lib/Apps.php:342 +#: ../../include/nav.php:541 ../../Zotlabs/Lib/Apps.php:341 msgid "Wiki" msgstr "Wiki" -#: ../../include/auth.php:194 +#: ../../include/auth.php:192 msgid "Delegation session ended." msgstr "Finalizó la sesión de la delegación." -#: ../../include/auth.php:198 +#: ../../include/auth.php:196 msgid "Logged out." msgstr "Desconectado/a." -#: ../../include/auth.php:294 +#: ../../include/auth.php:291 msgid "Email validation is incomplete. Please check your email." msgstr "La validación del correo electrónico está incompleta. Por favor, compruebe su correo electrónico." -#: ../../include/auth.php:310 +#: ../../include/auth.php:307 msgid "Failed authentication" msgstr "Autenticación fallida." #: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:51 -#: ../../Zotlabs/Module/Profiles.php:738 +#: ../../Zotlabs/Module/Profiles.php:736 msgid "Miscellaneous" msgstr "Varios" @@ -5749,7 +5806,14 @@ msgstr "Edad:" msgid "YYYY-MM-DD or MM-DD" msgstr "AAAA-MM-DD o MM-DD" -#: ../../include/datetime.php:238 ../../boot.php:2702 +#: ../../include/datetime.php:211 ../../Zotlabs/Module/Events.php:468 +#: ../../Zotlabs/Module/Events.php:473 ../../Zotlabs/Module/Appman.php:143 +#: ../../Zotlabs/Module/Appman.php:144 ../../Zotlabs/Module/Profiles.php:745 +#: ../../Zotlabs/Module/Profiles.php:749 +msgid "Required" +msgstr "Obligatorio" + +#: ../../include/datetime.php:238 ../../boot.php:2605 msgid "never" msgstr "nunca" @@ -5822,36 +5886,11 @@ msgstr "Cumpleaños de %1$s" msgid "Happy Birthday %1$s" msgstr "Feliz cumpleaños %1$s" -#: ../../include/cdav.php:157 -msgid "INVALID EVENT DISMISSED!" -msgstr "¡EVENTO NO VÁLIDO RECHAZADO!" - -#: ../../include/cdav.php:158 -msgid "Summary: " -msgstr "Resumen: " - -#: ../../include/cdav.php:159 -msgid "Date: " -msgstr "Fecha: " - -#: ../../include/cdav.php:160 ../../include/cdav.php:168 -msgid "Reason: " -msgstr "Razón: " - -#: ../../include/cdav.php:166 -msgid "INVALID CARD DISMISSED!" -msgstr "¡TARJETA NO VÁLIDA RECHAZADA!" - -#: ../../include/cdav.php:167 -msgid "Name: " -msgstr "Nombre: " - -#: ../../include/follow.php:37 ../../Zotlabs/Lib/Connect.php:46 -#: ../../Zotlabs/Lib/Connect.php:143 +#: ../../include/follow.php:37 msgid "Channel is blocked on this site." msgstr "El canal está bloqueado en este sitio." -#: ../../include/follow.php:42 ../../Zotlabs/Lib/Connect.php:51 +#: ../../include/follow.php:42 msgid "Channel location missing." msgstr "Falta la dirección del canal." @@ -5867,373 +5906,334 @@ msgstr "Canal Premium - por favor visite:" msgid "Channel was deleted and no longer exists." msgstr "El canal ha sido eliminado y ya no existe." -#: ../../include/follow.php:166 ../../Zotlabs/Lib/Connect.php:103 +#: ../../include/follow.php:166 msgid "Remote channel or protocol unavailable." msgstr "Canal remoto o protocolo no disponible." -#: ../../include/follow.php:190 ../../Zotlabs/Lib/Connect.php:137 +#: ../../include/follow.php:190 msgid "Channel discovery failed." msgstr "El intento de acceder al canal ha fallado." -#: ../../include/follow.php:202 ../../Zotlabs/Lib/Connect.php:155 +#: ../../include/follow.php:202 msgid "Protocol disabled." msgstr "Protocolo deshabilitado." -#: ../../include/follow.php:213 ../../Zotlabs/Lib/Connect.php:167 +#: ../../include/follow.php:213 msgid "Cannot connect to yourself." msgstr "No puede conectarse consigo mismo." -#: ../../include/conversation.php:124 ../../Zotlabs/Module/Like.php:129 +#: ../../include/conversation.php:122 ../../Zotlabs/Module/Like.php:123 msgid "channel" msgstr "el canal" -#: ../../include/conversation.php:171 +#: ../../include/conversation.php:169 #, php-format msgid "likes %1$s's %2$s" msgstr "gusta de %2$s de %1$s" -#: ../../include/conversation.php:174 +#: ../../include/conversation.php:172 #, php-format msgid "doesn't like %1$s's %2$s" msgstr "no gusta de %2$s de %1$s" -#: ../../include/conversation.php:214 ../../include/conversation.php:216 +#: ../../include/conversation.php:212 #, php-format msgid "%1$s is now connected with %2$s" msgstr "%1$s ahora está conectado/a con %2$s" -#: ../../include/conversation.php:251 +#: ../../include/conversation.php:247 #, php-format msgid "%1$s poked %2$s" msgstr "%1$s ha dado un toque a %2$s" -#: ../../include/conversation.php:274 ../../Zotlabs/Module/Mood.php:76 +#: ../../include/conversation.php:268 ../../Zotlabs/Module/Mood.php:76 #, php-format msgctxt "mood" msgid "%1$s is %2$s" msgstr "%1$s está %2$s" -#: ../../include/conversation.php:503 ../../Zotlabs/Lib/ThreadItem.php:500 +#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:468 msgid "This is an unsaved preview" msgstr "Esta es una previsualización sin guardar" -#: ../../include/conversation.php:639 ../../Zotlabs/Module/Photos.php:1112 +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 msgctxt "title" msgid "Likes" msgstr "Me gusta" -#: ../../include/conversation.php:640 ../../Zotlabs/Module/Photos.php:1112 +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 msgctxt "title" msgid "Dislikes" msgstr "No me gusta" -#: ../../include/conversation.php:641 ../../Zotlabs/Widget/Pinned.php:77 -#: ../../Zotlabs/Module/Photos.php:1113 +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 msgctxt "title" msgid "Agree" msgstr "De acuerdo" -#: ../../include/conversation.php:642 ../../Zotlabs/Widget/Pinned.php:78 -#: ../../Zotlabs/Module/Photos.php:1113 +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 msgctxt "title" msgid "Disagree" msgstr "En desacuerdo" -#: ../../include/conversation.php:643 ../../Zotlabs/Widget/Pinned.php:79 -#: ../../Zotlabs/Module/Photos.php:1113 +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 msgctxt "title" msgid "Abstain" msgstr "Abstención" -#: ../../include/conversation.php:644 ../../Zotlabs/Widget/Pinned.php:66 -#: ../../Zotlabs/Module/Photos.php:1114 +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 msgctxt "title" msgid "Attending" msgstr "Participaré" -#: ../../include/conversation.php:645 ../../Zotlabs/Widget/Pinned.php:67 -#: ../../Zotlabs/Module/Photos.php:1114 +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 msgctxt "title" msgid "Not attending" msgstr "No participaré" -#: ../../include/conversation.php:646 ../../Zotlabs/Widget/Pinned.php:68 -#: ../../Zotlabs/Module/Photos.php:1114 +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 msgctxt "title" msgid "Might attend" msgstr "Quizá participe" -#: ../../include/conversation.php:716 ../../Zotlabs/Lib/ThreadItem.php:180 +#: ../../include/conversation.php:690 ../../Zotlabs/Lib/ThreadItem.php:178 msgid "Select" msgstr "Seleccionar" -#: ../../include/conversation.php:717 ../../include/conversation.php:762 +#: ../../include/conversation.php:691 ../../include/conversation.php:736 #: ../../Zotlabs/Module/Article_edit.php:128 #: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Module/Oauth.php:174 -#: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Cdav.php:1052 -#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Webpages.php:257 +#: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Cdav.php:1079 +#: ../../Zotlabs/Module/Cdav.php:1390 ../../Zotlabs/Module/Webpages.php:257 #: ../../Zotlabs/Module/Admin/Accounts.php:175 #: ../../Zotlabs/Module/Admin/Channels.php:149 #: ../../Zotlabs/Module/Admin/Profs.php:176 #: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editblock.php:139 #: ../../Zotlabs/Module/Editlayout.php:138 -#: ../../Zotlabs/Module/Connections.php:328 -#: ../../Zotlabs/Module/Photos.php:1178 ../../Zotlabs/Module/Profiles.php:802 -#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Thing.php:269 -#: ../../Zotlabs/Module/Connedit.php:669 ../../Zotlabs/Module/Connedit.php:941 -#: ../../Zotlabs/Lib/Apps.php:558 ../../Zotlabs/Lib/ThreadItem.php:170 +#: ../../Zotlabs/Module/Connections.php:306 +#: ../../Zotlabs/Module/Photos.php:1178 ../../Zotlabs/Module/Profiles.php:800 +#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Thing.php:267 +#: ../../Zotlabs/Module/Connedit.php:668 ../../Zotlabs/Module/Connedit.php:940 +#: ../../Zotlabs/Lib/Apps.php:558 ../../Zotlabs/Lib/ThreadItem.php:168 #: ../../Zotlabs/Storage/Browser.php:297 msgid "Delete" msgstr "Eliminar" -#: ../../include/conversation.php:721 ../../Zotlabs/Lib/ThreadItem.php:273 +#: ../../include/conversation.php:695 ../../Zotlabs/Lib/ThreadItem.php:267 msgid "Toggle Star Status" msgstr "Activar o desactivar el estado de entrada preferida" -#: ../../include/conversation.php:726 ../../Zotlabs/Lib/ThreadItem.php:103 +#: ../../include/conversation.php:700 ../../Zotlabs/Lib/ThreadItem.php:103 msgid "Private Message" msgstr "Mensaje Privado" -#: ../../include/conversation.php:733 ../../Zotlabs/Widget/Pinned.php:88 -#: ../../Zotlabs/Lib/ThreadItem.php:284 +#: ../../include/conversation.php:707 ../../Zotlabs/Lib/ThreadItem.php:278 msgid "Message signature validated" msgstr "Firma de mensaje validada" -#: ../../include/conversation.php:734 ../../Zotlabs/Widget/Pinned.php:89 -#: ../../Zotlabs/Lib/ThreadItem.php:285 +#: ../../include/conversation.php:708 ../../Zotlabs/Lib/ThreadItem.php:279 msgid "Message signature incorrect" msgstr "Firma de mensaje incorrecta" -#: ../../include/conversation.php:761 +#: ../../include/conversation.php:735 #: ../../Zotlabs/Module/Admin/Accounts.php:173 -#: ../../Zotlabs/Module/Connections.php:342 +#: ../../Zotlabs/Module/Connections.php:320 msgid "Approve" msgstr "Aprobar" -#: ../../include/conversation.php:766 +#: ../../include/conversation.php:739 #, php-format msgid "View %s's profile @ %s" msgstr "Ver el perfil @ %s de %s" -#: ../../include/conversation.php:786 +#: ../../include/conversation.php:759 msgid "Categories:" msgstr "Temas:" -#: ../../include/conversation.php:787 +#: ../../include/conversation.php:760 msgid "Filed under:" msgstr "Archivado bajo:" -#: ../../include/conversation.php:793 ../../Zotlabs/Widget/Pinned.php:133 -#: ../../Zotlabs/Lib/ThreadItem.php:429 +#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:401 #, php-format msgid "from %s" msgstr "desde %s" -#: ../../include/conversation.php:796 ../../Zotlabs/Widget/Pinned.php:136 -#: ../../Zotlabs/Lib/ThreadItem.php:432 +#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:404 #, php-format msgid "last edited: %s" msgstr "último cambio: %s" -#: ../../include/conversation.php:797 ../../Zotlabs/Widget/Pinned.php:137 -#: ../../Zotlabs/Lib/ThreadItem.php:433 +#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:405 #, php-format msgid "Expires: %s" msgstr "Caduca: %s" -#: ../../include/conversation.php:812 +#: ../../include/conversation.php:785 msgid "View in context" msgstr "Mostrar en su contexto" -#: ../../include/conversation.php:814 ../../Zotlabs/Module/Photos.php:1078 -#: ../../Zotlabs/Lib/ThreadItem.php:501 +#: ../../include/conversation.php:787 ../../Zotlabs/Module/Photos.php:1076 +#: ../../Zotlabs/Lib/ThreadItem.php:469 msgid "Please wait" msgstr "Espere por favor" -#: ../../include/conversation.php:913 +#: ../../include/conversation.php:886 msgid "remove" msgstr "eliminar" -#: ../../include/conversation.php:917 +#: ../../include/conversation.php:890 msgid "Loading..." msgstr "Cargando..." -#: ../../include/conversation.php:918 ../../Zotlabs/Lib/ThreadItem.php:301 +#: ../../include/conversation.php:891 ../../Zotlabs/Lib/ThreadItem.php:291 msgid "Conversation Tools" msgstr "Herramientas de conversación" -#: ../../include/conversation.php:919 +#: ../../include/conversation.php:892 msgid "Delete Selected Items" msgstr "Eliminar elementos seleccionados" -#: ../../include/conversation.php:962 +#: ../../include/conversation.php:935 msgid "View Source" msgstr "Ver el código fuente de la entrada" -#: ../../include/conversation.php:972 +#: ../../include/conversation.php:945 msgid "Follow Thread" msgstr "Seguir este hilo" -#: ../../include/conversation.php:981 +#: ../../include/conversation.php:954 msgid "Unfollow Thread" msgstr "Dejar de seguir este hilo" -#: ../../include/conversation.php:1075 ../../Zotlabs/Module/Connedit.php:630 +#: ../../include/conversation.php:1048 ../../Zotlabs/Module/Connedit.php:629 msgid "Recent Activity" msgstr "Actividad reciente" -#: ../../include/conversation.php:1085 ../../include/connections.php:110 -#: ../../include/channel.php:1603 ../../Zotlabs/Widget/Suggestions.php:46 -#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Module/Directory.php:368 -#: ../../Zotlabs/Module/Connections.php:349 +#: ../../include/conversation.php:1058 ../../include/connections.php:110 +#: ../../include/channel.php:1506 ../../Zotlabs/Widget/Suggestions.php:46 +#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Module/Directory.php:353 +#: ../../Zotlabs/Module/Connections.php:326 #: ../../Zotlabs/Module/Suggest.php:71 msgid "Connect" msgstr "Conectar" -#: ../../include/conversation.php:1095 +#: ../../include/conversation.php:1068 msgid "Edit Connection" msgstr "Editar conexión" -#: ../../include/conversation.php:1105 +#: ../../include/conversation.php:1078 msgid "Message" msgstr "Mensaje" -#: ../../include/conversation.php:1115 ../../Zotlabs/Module/Pubsites.php:35 +#: ../../include/conversation.php:1088 ../../Zotlabs/Module/Pubsites.php:35 #: ../../Zotlabs/Module/Ratings.php:97 msgid "Ratings" msgstr "Valoraciones" -#: ../../include/conversation.php:1125 ../../Zotlabs/Module/Poke.php:199 -#: ../../Zotlabs/Lib/Apps.php:351 +#: ../../include/conversation.php:1098 ../../Zotlabs/Module/Poke.php:199 +#: ../../Zotlabs/Lib/Apps.php:350 msgid "Poke" msgstr "Toques y otras cosas" -#: ../../include/conversation.php:1247 +#: ../../include/conversation.php:1212 #, php-format msgid "%s likes this." msgstr "A %s le gusta esto." -#: ../../include/conversation.php:1247 +#: ../../include/conversation.php:1212 #, php-format msgid "%s doesn't like this." msgstr "A %s no le gusta esto." -#: ../../include/conversation.php:1251 +#: ../../include/conversation.php:1216 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgid_plural "<span %1$s>%2$d people</span> like this." msgstr[0] "a <span %1$s>%2$d personas</span> le gusta esto." msgstr[1] "A <span %1$s>%2$d personas</span> les gusta esto." -#: ../../include/conversation.php:1253 +#: ../../include/conversation.php:1218 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgid_plural "<span %1$s>%2$d people</span> don't like this." msgstr[0] "a <span %1$s>%2$d personas</span> no les gusta esto." msgstr[1] "A <span %1$s>%2$d personas</span> no les gusta esto." -#: ../../include/conversation.php:1259 +#: ../../include/conversation.php:1224 msgid "and" msgstr "y" -#: ../../include/conversation.php:1262 +#: ../../include/conversation.php:1227 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" msgstr[0] ", y %d persona más" msgstr[1] ", y %d personas más" -#: ../../include/conversation.php:1263 +#: ../../include/conversation.php:1228 #, php-format msgid "%s like this." msgstr "A %s le gusta esto." -#: ../../include/conversation.php:1263 +#: ../../include/conversation.php:1228 #, php-format msgid "%s don't like this." msgstr "A %s no le gusta esto." -#: ../../include/conversation.php:1447 -msgid "Toggle poll" -msgstr "Activar o desactivar encuestas" - -#: ../../include/conversation.php:1448 -msgid "Option" -msgstr "Opción" - -#: ../../include/conversation.php:1449 -msgid "Add option" -msgstr "Añadir una opción" - -#: ../../include/conversation.php:1450 -msgid "Minutes" -msgstr "Minutos " - -#: ../../include/conversation.php:1450 -msgid "Hours" -msgstr "Horas " - -#: ../../include/conversation.php:1450 -msgid "Days" -msgstr "Días " - -#: ../../include/conversation.php:1451 -msgid "Allow multiple answers" -msgstr "Permitir respuestas múltiples" - -#: ../../include/conversation.php:1734 ../../include/taxonomy.php:659 -#: ../../include/channel.php:1766 ../../Zotlabs/Module/Photos.php:1135 -#: ../../Zotlabs/Lib/ThreadItem.php:242 +#: ../../include/conversation.php:1702 ../../include/taxonomy.php:659 +#: ../../include/channel.php:1669 ../../Zotlabs/Module/Photos.php:1135 +#: ../../Zotlabs/Lib/ThreadItem.php:236 msgctxt "noun" msgid "Like" msgid_plural "Likes" msgstr[0] "Me gusta" msgstr[1] "Me gusta" -#: ../../include/conversation.php:1737 ../../Zotlabs/Module/Photos.php:1140 -#: ../../Zotlabs/Lib/ThreadItem.php:247 +#: ../../include/conversation.php:1705 ../../Zotlabs/Module/Photos.php:1140 +#: ../../Zotlabs/Lib/ThreadItem.php:241 msgctxt "noun" msgid "Dislike" msgid_plural "Dislikes" msgstr[0] "No me gusta" msgstr[1] "No me gusta" -#: ../../include/conversation.php:1740 +#: ../../include/conversation.php:1708 msgctxt "noun" msgid "Attending" msgid_plural "Attending" msgstr[0] "Participaré" msgstr[1] "Participaré" -#: ../../include/conversation.php:1743 +#: ../../include/conversation.php:1711 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "No participaré" msgstr[1] "No participaré" -#: ../../include/conversation.php:1746 +#: ../../include/conversation.php:1714 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr[0] "Indeciso/a" msgstr[1] "Indecisos/as" -#: ../../include/conversation.php:1749 +#: ../../include/conversation.php:1717 msgctxt "noun" msgid "Agree" msgid_plural "Agrees" msgstr[0] "De acuerdo" msgstr[1] "De acuerdo" -#: ../../include/conversation.php:1752 +#: ../../include/conversation.php:1720 msgctxt "noun" msgid "Disagree" msgid_plural "Disagrees" msgstr[0] "En desacuerdo" msgstr[1] "En desacuerdo" -#: ../../include/conversation.php:1755 +#: ../../include/conversation.php:1723 msgctxt "noun" msgid "Abstain" msgid_plural "Abstains" @@ -6300,11 +6300,11 @@ msgstr "Transexual" msgid "Hermaphrodite" msgstr "Hermafrodita" -#: ../../include/selectors.php:60 ../../include/channel.php:1711 +#: ../../include/selectors.php:60 ../../include/channel.php:1614 msgid "Neuter" msgstr "Neutral" -#: ../../include/selectors.php:60 ../../include/channel.php:1713 +#: ../../include/selectors.php:60 ../../include/channel.php:1616 msgid "Non-specific" msgstr "No especificado" @@ -6400,15 +6400,15 @@ msgstr "Infiel" msgid "Sex Addict" msgstr "Con adicción al sexo" -#: ../../include/selectors.php:134 ../../include/channel.php:504 -#: ../../include/channel.php:505 ../../include/channel.php:512 +#: ../../include/selectors.php:134 ../../include/channel.php:493 +#: ../../include/channel.php:494 ../../include/channel.php:501 #: ../../Zotlabs/Widget/Affinity.php:32 -#: ../../Zotlabs/Module/Settings/Channel.php:71 +#: ../../Zotlabs/Module/Settings/Channel.php:70 +#: ../../Zotlabs/Module/Settings/Channel.php:74 #: ../../Zotlabs/Module/Settings/Channel.php:75 -#: ../../Zotlabs/Module/Settings/Channel.php:76 -#: ../../Zotlabs/Module/Settings/Channel.php:79 -#: ../../Zotlabs/Module/Settings/Channel.php:90 -#: ../../Zotlabs/Module/Connedit.php:726 +#: ../../Zotlabs/Module/Settings/Channel.php:78 +#: ../../Zotlabs/Module/Settings/Channel.php:89 +#: ../../Zotlabs/Module/Connedit.php:725 msgid "Friends" msgstr "Amigos/as" @@ -6504,36 +6504,35 @@ msgstr "Nueva ventana" msgid "Open the selected location in a different window or browser tab" msgstr "Abrir la dirección seleccionada en una ventana o pestaña aparte" -#: ../../include/group.php:23 ../../Zotlabs/Lib/Group.php:28 +#: ../../include/group.php:22 ../../Zotlabs/Lib/Group.php:28 msgid "" "A deleted group with this name was revived. Existing item permissions " "<strong>may</strong> apply to this group and any future members. If this is " "not what you intended, please create another group with a different name." msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos que ya existen sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente." -#: ../../include/group.php:265 ../../Zotlabs/Lib/Group.php:270 +#: ../../include/group.php:264 ../../Zotlabs/Lib/Group.php:270 msgid "Add new connections to this privacy group" msgstr "Añadir conexiones nuevas a este grupo de canales" -#: ../../include/group.php:299 ../../Zotlabs/Lib/AccessList.php:311 -#: ../../Zotlabs/Lib/Group.php:302 +#: ../../include/group.php:298 ../../Zotlabs/Lib/Group.php:302 msgid "edit" msgstr "editar" -#: ../../include/group.php:322 ../../Zotlabs/Lib/Group.php:325 +#: ../../include/group.php:321 ../../Zotlabs/Lib/Group.php:325 msgid "Edit group" msgstr "Editar grupo" -#: ../../include/group.php:323 ../../Zotlabs/Lib/Group.php:326 +#: ../../include/group.php:322 ../../Zotlabs/Lib/Group.php:326 msgid "Add privacy group" msgstr "Añadir un grupo de canales" -#: ../../include/group.php:324 ../../Zotlabs/Lib/Group.php:327 +#: ../../include/group.php:323 ../../Zotlabs/Lib/Group.php:327 msgid "Channels not in any privacy group" msgstr "Sin canales en ningún grupo" -#: ../../include/group.php:326 ../../Zotlabs/Widget/Savedsearch.php:84 -#: ../../Zotlabs/Lib/AccessList.php:336 ../../Zotlabs/Lib/Group.php:329 +#: ../../include/group.php:325 ../../Zotlabs/Widget/Savedsearch.php:84 +#: ../../Zotlabs/Lib/Group.php:329 msgid "add" msgstr "añadir" @@ -6566,7 +6565,7 @@ msgstr "quiero" msgid "wants" msgstr "quiere" -#: ../../include/taxonomy.php:573 ../../Zotlabs/Lib/ThreadItem.php:317 +#: ../../include/taxonomy.php:573 ../../Zotlabs/Lib/ThreadItem.php:307 msgid "like" msgstr "me gusta" @@ -6574,7 +6573,7 @@ msgstr "me gusta" msgid "likes" msgstr "gusta de" -#: ../../include/taxonomy.php:574 ../../Zotlabs/Lib/ThreadItem.php:318 +#: ../../include/taxonomy.php:574 ../../Zotlabs/Lib/ThreadItem.php:308 msgid "dislike" msgstr "no me gusta" @@ -6582,104 +6581,104 @@ msgstr "no me gusta" msgid "dislikes" msgstr "no gusta de" -#: ../../include/items.php:999 ../../include/items.php:1059 +#: ../../include/items.php:984 ../../include/items.php:1044 msgid "(Unknown)" msgstr "(Desconocido)" -#: ../../include/items.php:1247 +#: ../../include/items.php:1232 msgid "Visible to anybody on the internet." msgstr "Visible para cualquiera en internet." -#: ../../include/items.php:1249 +#: ../../include/items.php:1234 msgid "Visible to you only." msgstr "Visible sólo para usted." -#: ../../include/items.php:1251 +#: ../../include/items.php:1236 msgid "Visible to anybody in this network." msgstr "Visible para cualquiera en esta red." -#: ../../include/items.php:1253 +#: ../../include/items.php:1238 msgid "Visible to anybody authenticated." msgstr "Visible para cualquiera que esté autenticado." -#: ../../include/items.php:1255 +#: ../../include/items.php:1240 #, php-format msgid "Visible to anybody on %s." msgstr "Visible para cualquiera en %s." -#: ../../include/items.php:1257 +#: ../../include/items.php:1242 msgid "Visible to all connections." msgstr "Visible para todas las conexiones." -#: ../../include/items.php:1259 +#: ../../include/items.php:1244 msgid "Visible to approved connections." msgstr "Visible para las conexiones permitidas." -#: ../../include/items.php:1261 +#: ../../include/items.php:1246 msgid "Visible to specific connections." msgstr "Visible para conexiones específicas." -#: ../../include/items.php:4465 ../../Zotlabs/Module/Group.php:62 -#: ../../Zotlabs/Module/Group.php:214 +#: ../../include/items.php:4296 ../../Zotlabs/Module/Group.php:61 +#: ../../Zotlabs/Module/Group.php:213 msgid "Privacy group not found." msgstr "Grupo de canales no encontrado." -#: ../../include/items.php:4481 +#: ../../include/items.php:4312 msgid "Privacy group is empty." msgstr "El grupo de canales está vacío." -#: ../../include/items.php:4488 +#: ../../include/items.php:4319 #, php-format msgid "Privacy group: %s" msgstr "Grupo de canales: %s" -#: ../../include/items.php:4498 ../../Zotlabs/Module/Connedit.php:868 +#: ../../include/items.php:4329 ../../Zotlabs/Module/Connedit.php:867 #, php-format msgid "Connection: %s" msgstr "Conexión: %s" -#: ../../include/items.php:4500 +#: ../../include/items.php:4331 msgid "Connection not found." msgstr "Conexión no encontrada" -#: ../../include/items.php:4834 ../../Zotlabs/Module/Cover_photo.php:297 +#: ../../include/items.php:4673 ../../Zotlabs/Module/Cover_photo.php:303 msgid "female" msgstr "mujer" -#: ../../include/items.php:4835 ../../Zotlabs/Module/Cover_photo.php:298 +#: ../../include/items.php:4674 ../../Zotlabs/Module/Cover_photo.php:304 #, php-format msgid "%1$s updated her %2$s" msgstr "%1$s ha actualizado su %2$s" -#: ../../include/items.php:4836 ../../Zotlabs/Module/Cover_photo.php:299 +#: ../../include/items.php:4675 ../../Zotlabs/Module/Cover_photo.php:305 msgid "male" msgstr "hombre" -#: ../../include/items.php:4837 ../../Zotlabs/Module/Cover_photo.php:300 +#: ../../include/items.php:4676 ../../Zotlabs/Module/Cover_photo.php:306 #, php-format msgid "%1$s updated his %2$s" msgstr "%1$s ha actualizado su %2$s" -#: ../../include/items.php:4839 ../../Zotlabs/Module/Cover_photo.php:302 +#: ../../include/items.php:4678 ../../Zotlabs/Module/Cover_photo.php:308 #, php-format msgid "%1$s updated their %2$s" msgstr "%1$s ha actualizado su %2$s" -#: ../../include/items.php:4841 +#: ../../include/items.php:4680 msgid "profile photo" msgstr "foto del perfil" -#: ../../include/items.php:5033 +#: ../../include/items.php:4872 #, php-format msgid "[Edited %s]" msgstr "[se ha editado %s]" -#: ../../include/items.php:5033 +#: ../../include/items.php:4872 msgctxt "edit_activity" msgid "Post" msgstr "Publicar" -#: ../../include/items.php:5033 +#: ../../include/items.php:4872 msgctxt "edit_activity" msgid "Comment" msgstr "Comentar" @@ -6752,412 +6751,404 @@ msgstr "Esta acción supera los límites establecidos por su plan de suscripció msgid "This action is not available under your subscription plan." msgstr "Esta acción no está disponible en su plan de suscripción." -#: ../../include/photo/photo_driver.php:413 -#: ../../Zotlabs/Module/Profile_photo.php:147 -#: ../../Zotlabs/Module/Profile_photo.php:284 +#: ../../include/photo/photo_driver.php:367 +#: ../../Zotlabs/Module/Profile_photo.php:145 +#: ../../Zotlabs/Module/Profile_photo.php:282 msgid "Profile Photos" msgstr "Fotos del perfil" -#: ../../include/attach.php:273 ../../include/attach.php:381 +#: ../../include/attach.php:267 ../../include/attach.php:375 msgid "Item was not found." msgstr "Elemento no encontrado." -#: ../../include/attach.php:290 +#: ../../include/attach.php:284 msgid "Unknown error." msgstr "Error desconocido" -#: ../../include/attach.php:574 +#: ../../include/attach.php:568 msgid "No source file." msgstr "Ningún fichero de origen" -#: ../../include/attach.php:596 +#: ../../include/attach.php:590 msgid "Cannot locate file to replace" msgstr "No se puede localizar el fichero que va a ser sustituido." -#: ../../include/attach.php:615 +#: ../../include/attach.php:609 msgid "Cannot locate file to revise/update" msgstr "No se puede localizar el fichero para revisar/actualizar" -#: ../../include/attach.php:759 +#: ../../include/attach.php:751 #, php-format msgid "File exceeds size limit of %d" msgstr "El fichero supera el limite de tamaño de %d" -#: ../../include/attach.php:780 +#: ../../include/attach.php:772 #, php-format msgid "You have reached your limit of %1$.0f Mbytes attachment storage." msgstr "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos." -#: ../../include/attach.php:968 +#: ../../include/attach.php:954 msgid "File upload failed. Possible system limit or action terminated." msgstr "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado." -#: ../../include/attach.php:997 +#: ../../include/attach.php:983 msgid "Stored file could not be verified. Upload failed." msgstr "El fichero almacenado no ha podido ser verificado. El envío ha fallado." -#: ../../include/attach.php:1069 ../../include/attach.php:1085 +#: ../../include/attach.php:1057 ../../include/attach.php:1073 msgid "Path not available." msgstr "Ruta no disponible." -#: ../../include/attach.php:1134 ../../include/attach.php:1297 +#: ../../include/attach.php:1122 ../../include/attach.php:1285 msgid "Empty pathname" msgstr "Ruta vacía" -#: ../../include/attach.php:1160 +#: ../../include/attach.php:1148 msgid "duplicate filename or path" msgstr "Nombre duplicado de ruta o fichero" -#: ../../include/attach.php:1185 +#: ../../include/attach.php:1173 msgid "Path not found." msgstr "Ruta no encontrada" -#: ../../include/attach.php:1253 +#: ../../include/attach.php:1241 msgid "mkdir failed." msgstr "mkdir ha fallado." -#: ../../include/attach.php:1257 +#: ../../include/attach.php:1245 msgid "database storage failed." msgstr "el almacenamiento en la base de datos ha fallado." -#: ../../include/attach.php:1303 +#: ../../include/attach.php:1291 msgid "Empty path" msgstr "Ruta vacía" -#: ../../include/attach.php:2035 -#, php-format -msgid "%s shared a %s with you" -msgstr "%sha compartido un/una %scon usted" - #: ../../include/bookmarks.php:34 #, php-format msgid "%1$s's bookmarks" msgstr "Marcadores de %1$s" -#: ../../include/menu.php:120 ../../include/channel.php:1523 -#: ../../include/channel.php:1527 ../../Zotlabs/Widget/Cdav.php:138 +#: ../../include/menu.php:118 ../../include/channel.php:1426 +#: ../../include/channel.php:1430 ../../Zotlabs/Widget/Cdav.php:138 #: ../../Zotlabs/Widget/Cdav.php:175 ../../Zotlabs/Module/Article_edit.php:98 -#: ../../Zotlabs/Module/Group.php:253 ../../Zotlabs/Module/Card_edit.php:99 +#: ../../Zotlabs/Module/Group.php:252 ../../Zotlabs/Module/Card_edit.php:99 #: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Module/Editwebpage.php:142 #: ../../Zotlabs/Module/Webpages.php:255 #: ../../Zotlabs/Module/Admin/Profs.php:175 #: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editblock.php:114 #: ../../Zotlabs/Module/Editlayout.php:114 -#: ../../Zotlabs/Module/Connections.php:320 -#: ../../Zotlabs/Module/Connections.php:362 -#: ../../Zotlabs/Module/Connections.php:382 ../../Zotlabs/Module/Menu.php:176 -#: ../../Zotlabs/Module/Oauth2.php:194 ../../Zotlabs/Module/Thing.php:268 +#: ../../Zotlabs/Module/Connections.php:298 +#: ../../Zotlabs/Module/Connections.php:339 +#: ../../Zotlabs/Module/Connections.php:359 ../../Zotlabs/Module/Menu.php:176 +#: ../../Zotlabs/Module/Oauth2.php:194 ../../Zotlabs/Module/Thing.php:266 #: ../../Zotlabs/Module/Wiki.php:211 ../../Zotlabs/Module/Wiki.php:384 #: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Lib/Apps.php:557 #: ../../Zotlabs/Lib/ThreadItem.php:148 ../../Zotlabs/Storage/Browser.php:296 msgid "Edit" msgstr "Editar" -#: ../../include/bbcode.php:221 ../../include/bbcode.php:896 -#: ../../include/bbcode.php:1486 ../../include/bbcode.php:1494 +#: ../../include/bbcode.php:221 ../../include/bbcode.php:1232 +#: ../../include/bbcode.php:1235 ../../include/bbcode.php:1240 +#: ../../include/bbcode.php:1243 ../../include/bbcode.php:1246 +#: ../../include/bbcode.php:1249 ../../include/bbcode.php:1254 +#: ../../include/bbcode.php:1257 ../../include/bbcode.php:1262 +#: ../../include/bbcode.php:1265 ../../include/bbcode.php:1268 +#: ../../include/bbcode.php:1271 msgid "Image/photo" msgstr "Imagen/foto" -#: ../../include/bbcode.php:268 ../../include/bbcode.php:1511 +#: ../../include/bbcode.php:260 ../../include/bbcode.php:1282 msgid "Encrypted content" msgstr "Contenido cifrado" -#: ../../include/bbcode.php:302 +#: ../../include/bbcode.php:292 #, php-format msgid "Install %1$s element %2$s" msgstr "Instalar el elemento de%1$s%2$s" -#: ../../include/bbcode.php:306 +#: ../../include/bbcode.php:296 #, php-format msgid "" "This post contains an installable %s element, however you lack permissions " "to install it on this site." msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio." -#: ../../include/bbcode.php:316 ../../Zotlabs/Module/Impel.php:43 +#: ../../include/bbcode.php:306 ../../Zotlabs/Module/Impel.php:43 msgid "webpage" msgstr "página web" -#: ../../include/bbcode.php:319 ../../Zotlabs/Module/Impel.php:53 +#: ../../include/bbcode.php:309 ../../Zotlabs/Module/Impel.php:53 msgid "layout" msgstr "plantilla" -#: ../../include/bbcode.php:322 ../../Zotlabs/Module/Impel.php:48 +#: ../../include/bbcode.php:312 ../../Zotlabs/Module/Impel.php:48 msgid "block" msgstr "bloque" -#: ../../include/bbcode.php:325 ../../Zotlabs/Module/Impel.php:60 +#: ../../include/bbcode.php:315 ../../Zotlabs/Module/Impel.php:60 msgid "menu" msgstr "menú" -#: ../../include/bbcode.php:519 +#: ../../include/bbcode.php:376 msgid "card" msgstr "ficha" -#: ../../include/bbcode.php:521 +#: ../../include/bbcode.php:378 msgid "article" msgstr "el artículo" -#: ../../include/bbcode.php:523 ../../include/markdown.php:204 -#: ../../Zotlabs/Module/Tagger.php:79 +#: ../../include/bbcode.php:380 ../../include/markdown.php:204 +#: ../../Zotlabs/Module/Tagger.php:77 msgid "post" msgstr "la entrada" -#: ../../include/bbcode.php:527 ../../include/markdown.php:202 +#: ../../include/bbcode.php:384 ../../include/markdown.php:202 #, php-format msgid "%1$s wrote the following %2$s %3$s" msgstr "%1$s escribió %2$s siguiente %3$s" -#: ../../include/bbcode.php:604 ../../include/bbcode.php:612 +#: ../../include/bbcode.php:461 ../../include/bbcode.php:469 msgid "Click to open/close" msgstr "Pulsar para abrir/cerrar" -#: ../../include/bbcode.php:612 ../../include/markdown.php:251 +#: ../../include/bbcode.php:469 ../../include/markdown.php:251 msgid "spoiler" msgstr "spoiler" -#: ../../include/bbcode.php:625 +#: ../../include/bbcode.php:482 msgid "View article" msgstr "Ver el artículo" -#: ../../include/bbcode.php:625 +#: ../../include/bbcode.php:482 msgid "View summary" msgstr "Ver sumario" -#: ../../include/bbcode.php:1018 ../../include/bbcode.php:1190 -#: ../../Zotlabs/Lib/NativeWikiPage.php:606 +#: ../../include/bbcode.php:772 ../../include/bbcode.php:942 +#: ../../Zotlabs/Lib/NativeWikiPage.php:603 msgid "Different viewers will see this text differently" msgstr "Visitantes diferentes verán este texto de forma distinta" -#: ../../include/bbcode.php:1474 +#: ../../include/bbcode.php:1220 msgid "$1 wrote:" msgstr "$1 escribió:" -#: ../../include/channel.php:46 +#: ../../include/channel.php:43 msgid "Unable to obtain identity information from database" msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos" -#: ../../include/channel.php:79 +#: ../../include/channel.php:76 msgid "Empty name" msgstr "Nombre vacío" -#: ../../include/channel.php:82 +#: ../../include/channel.php:79 msgid "Name too long" msgstr "Nombre demasiado largo" -#: ../../include/channel.php:199 +#: ../../include/channel.php:196 msgid "No account identifier" msgstr "Ningún identificador de la cuenta" -#: ../../include/channel.php:211 +#: ../../include/channel.php:208 msgid "Nickname is required." msgstr "Se requiere un sobrenombre (alias)." -#: ../../include/channel.php:225 ../../include/channel.php:705 +#: ../../include/channel.php:222 ../../include/channel.php:655 #: ../../Zotlabs/Module/Changeaddr.php:46 msgid "Reserved nickname. Please choose another." msgstr "Sobrenombre en uso. Por favor, elija otro." -#: ../../include/channel.php:230 ../../include/channel.php:710 +#: ../../include/channel.php:227 ../../include/channel.php:660 #: ../../Zotlabs/Module/Changeaddr.php:51 msgid "" "Nickname has unsupported characters or is already being used on this site." msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio." -#: ../../include/channel.php:294 +#: ../../include/channel.php:287 msgid "Unable to retrieve created identity" msgstr "No ha sido posible recuperar la identidad creada" -#: ../../include/channel.php:440 +#: ../../include/channel.php:429 msgid "Default Profile" msgstr "Perfil principal" -#: ../../include/channel.php:638 ../../include/channel.php:727 +#: ../../include/channel.php:588 ../../include/channel.php:677 msgid "Unable to retrieve modified identity" msgstr "No se puede recuperar la identidad modficada" -#: ../../include/channel.php:1370 -msgid "Requested channel is not available." -msgstr "El canal solicitado no está disponible." - -#: ../../include/channel.php:1516 ../../Zotlabs/Module/Profiles.php:730 +#: ../../include/channel.php:1419 ../../Zotlabs/Module/Profiles.php:728 msgid "Change profile photo" msgstr "Cambiar la foto del perfil" -#: ../../include/channel.php:1524 +#: ../../include/channel.php:1427 msgid "Create New Profile" msgstr "Crear un nuevo perfil" -#: ../../include/channel.php:1542 ../../Zotlabs/Module/Profiles.php:822 +#: ../../include/channel.php:1445 ../../Zotlabs/Module/Profiles.php:820 msgid "Profile Image" msgstr "Imagen del perfil" -#: ../../include/channel.php:1545 +#: ../../include/channel.php:1448 msgid "Visible to everybody" msgstr "Visible para todos" -#: ../../include/channel.php:1546 ../../Zotlabs/Module/Profiles.php:727 -#: ../../Zotlabs/Module/Profiles.php:826 +#: ../../include/channel.php:1449 ../../Zotlabs/Module/Profiles.php:725 +#: ../../Zotlabs/Module/Profiles.php:824 msgid "Edit visibility" msgstr "Editar visibilidad" -#: ../../include/channel.php:1622 ../../include/channel.php:1750 +#: ../../include/channel.php:1525 ../../include/channel.php:1653 msgid "Gender:" msgstr "Género:" -#: ../../include/channel.php:1623 ../../include/channel.php:1794 -msgid "Status:" -msgstr "Estado:" - -#: ../../include/channel.php:1624 ../../include/channel.php:1818 +#: ../../include/channel.php:1527 ../../include/channel.php:1721 msgid "Homepage:" msgstr "Página personal:" -#: ../../include/channel.php:1625 +#: ../../include/channel.php:1528 msgid "Online Now" msgstr "Ahora en línea" -#: ../../include/channel.php:1678 +#: ../../include/channel.php:1581 msgid "Change your profile photo" msgstr "Cambiar su foto del perfil" -#: ../../include/channel.php:1709 +#: ../../include/channel.php:1612 msgid "Trans" msgstr "Trans" -#: ../../include/channel.php:1748 -#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../include/channel.php:1651 +#: ../../Zotlabs/Module/Settings/Channel.php:499 msgid "Full Name:" msgstr "Nombre completo:" -#: ../../include/channel.php:1755 +#: ../../include/channel.php:1658 msgid "Like this channel" msgstr "Me gusta este canal" -#: ../../include/channel.php:1779 +#: ../../include/channel.php:1682 msgid "j F, Y" msgstr "j F Y" -#: ../../include/channel.php:1780 +#: ../../include/channel.php:1683 msgid "j F" msgstr "j F" -#: ../../include/channel.php:1787 +#: ../../include/channel.php:1690 msgid "Birthday:" msgstr "Cumpleaños:" -#: ../../include/channel.php:1791 ../../Zotlabs/Module/Directory.php:347 +#: ../../include/channel.php:1694 ../../Zotlabs/Module/Directory.php:334 msgid "Age:" msgstr "Edad:" -#: ../../include/channel.php:1800 +#: ../../include/channel.php:1703 #, php-format msgid "for %1$d %2$s" msgstr "por %1$d %2$s" -#: ../../include/channel.php:1812 +#: ../../include/channel.php:1715 msgid "Tags:" msgstr "Etiquetas:" -#: ../../include/channel.php:1816 +#: ../../include/channel.php:1719 msgid "Sexual Preference:" msgstr "Orientación sexual:" -#: ../../include/channel.php:1820 ../../Zotlabs/Module/Directory.php:365 +#: ../../include/channel.php:1723 ../../Zotlabs/Module/Directory.php:350 msgid "Hometown:" msgstr "Lugar de nacimiento:" -#: ../../include/channel.php:1822 +#: ../../include/channel.php:1725 msgid "Political Views:" msgstr "Posición política:" -#: ../../include/channel.php:1824 +#: ../../include/channel.php:1727 msgid "Religion:" msgstr "Religión:" -#: ../../include/channel.php:1826 ../../Zotlabs/Module/Directory.php:367 +#: ../../include/channel.php:1729 ../../Zotlabs/Module/Directory.php:352 msgid "About:" msgstr "Sobre mí:" -#: ../../include/channel.php:1828 +#: ../../include/channel.php:1731 msgid "Hobbies/Interests:" msgstr "Aficciones o intereses:" -#: ../../include/channel.php:1830 +#: ../../include/channel.php:1733 msgid "Likes:" msgstr "Me gusta:" -#: ../../include/channel.php:1832 +#: ../../include/channel.php:1735 msgid "Dislikes:" msgstr "No me gusta:" -#: ../../include/channel.php:1834 +#: ../../include/channel.php:1737 msgid "Contact information and Social Networks:" msgstr "Información de contacto y redes sociales:" -#: ../../include/channel.php:1836 +#: ../../include/channel.php:1739 msgid "My other channels:" msgstr "Mis otros canales:" -#: ../../include/channel.php:1838 +#: ../../include/channel.php:1741 msgid "Musical interests:" msgstr "Preferencias musicales:" -#: ../../include/channel.php:1840 +#: ../../include/channel.php:1743 msgid "Books, literature:" msgstr "Libros, literatura:" -#: ../../include/channel.php:1842 +#: ../../include/channel.php:1745 msgid "Television:" msgstr "Televisión:" -#: ../../include/channel.php:1844 +#: ../../include/channel.php:1747 msgid "Film/dance/culture/entertainment:" msgstr "Cine, danza, cultura, entretenimiento:" -#: ../../include/channel.php:1846 +#: ../../include/channel.php:1749 msgid "Love/Romance:" msgstr "Vida sentimental o amorosa:" -#: ../../include/channel.php:1848 +#: ../../include/channel.php:1751 msgid "Work/employment:" msgstr "Trabajo:" -#: ../../include/channel.php:1850 +#: ../../include/channel.php:1753 msgid "School/education:" msgstr "Estudios:" -#: ../../include/channel.php:1871 ../../Zotlabs/Module/Profperm.php:113 -#: ../../Zotlabs/Lib/Apps.php:362 +#: ../../include/channel.php:1774 ../../Zotlabs/Module/Profperm.php:113 +#: ../../Zotlabs/Lib/Apps.php:361 msgid "Profile" msgstr "Perfil" -#: ../../include/channel.php:1873 +#: ../../include/channel.php:1776 msgid "Like this thing" msgstr "Me gusta esto" -#: ../../include/channel.php:1874 ../../Zotlabs/Module/Events.php:699 +#: ../../include/channel.php:1777 ../../Zotlabs/Module/Events.php:699 msgid "Export" msgstr "Exportar" -#: ../../include/channel.php:2312 ../../Zotlabs/Module/Cover_photo.php:304 +#: ../../include/channel.php:2215 ../../Zotlabs/Module/Cover_photo.php:310 msgid "cover photo" msgstr "Imagen de portada del perfil" -#: ../../include/channel.php:2601 ../../Zotlabs/Module/Rmagic.php:93 -#: ../../boot.php:1699 +#: ../../include/channel.php:2483 ../../Zotlabs/Module/Rmagic.php:93 +#: ../../boot.php:1675 msgid "Remote Authentication" msgstr "Acceso desde su servidor" -#: ../../include/channel.php:2602 ../../Zotlabs/Module/Rmagic.php:94 +#: ../../include/channel.php:2484 ../../Zotlabs/Module/Rmagic.php:94 msgid "Enter your channel address (e.g. channel@example.com)" msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)" -#: ../../include/channel.php:2603 ../../Zotlabs/Module/Rmagic.php:95 +#: ../../include/channel.php:2485 ../../Zotlabs/Module/Rmagic.php:95 msgid "Authenticate" msgstr "Acceder" -#: ../../include/channel.php:2758 ../../Zotlabs/Module/Admin/Accounts.php:91 +#: ../../include/channel.php:2640 ../../Zotlabs/Module/Admin/Accounts.php:91 #, php-format msgid "Account '%s' deleted" msgstr "La cuenta '%s' ha sido eliminada" @@ -7196,7 +7187,7 @@ msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No msgid "Show" msgstr "Mostrar" -#: ../../include/acl_selectors.php:117 ../../Zotlabs/Widget/Pinned.php:158 +#: ../../include/acl_selectors.php:117 msgid "Don't show" msgstr "No mostrar" @@ -7243,7 +7234,7 @@ msgstr "Solo foros públicos" msgid "This Website Only" msgstr "Solo este sitio web" -#: ../../include/zid.php:370 +#: ../../include/zid.php:368 #, php-format msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s" @@ -7315,23 +7306,23 @@ msgid "Page name" msgstr "Nombre de la página" #: ../../Zotlabs/Widget/Album.php:78 ../../Zotlabs/Widget/Portfolio.php:87 -#: ../../Zotlabs/Module/Embedphotos.php:170 -#: ../../Zotlabs/Module/Photos.php:786 ../../Zotlabs/Module/Photos.php:1332 +#: ../../Zotlabs/Module/Embedphotos.php:168 +#: ../../Zotlabs/Module/Photos.php:784 ../../Zotlabs/Module/Photos.php:1332 msgid "View Photo" msgstr "Ver foto" #: ../../Zotlabs/Widget/Album.php:95 ../../Zotlabs/Widget/Portfolio.php:108 -#: ../../Zotlabs/Module/Embedphotos.php:186 -#: ../../Zotlabs/Module/Photos.php:817 +#: ../../Zotlabs/Module/Embedphotos.php:184 +#: ../../Zotlabs/Module/Photos.php:815 msgid "Edit Album" msgstr "Editar álbum" #: ../../Zotlabs/Widget/Album.php:97 ../../Zotlabs/Widget/Cdav.php:146 #: ../../Zotlabs/Widget/Cdav.php:182 ../../Zotlabs/Widget/Portfolio.php:110 -#: ../../Zotlabs/Module/Embedphotos.php:188 -#: ../../Zotlabs/Module/Profile_photo.php:500 -#: ../../Zotlabs/Module/Cover_photo.php:423 -#: ../../Zotlabs/Module/Photos.php:687 ../../Zotlabs/Storage/Browser.php:398 +#: ../../Zotlabs/Module/Embedphotos.php:186 +#: ../../Zotlabs/Module/Profile_photo.php:498 +#: ../../Zotlabs/Module/Cover_photo.php:429 +#: ../../Zotlabs/Module/Photos.php:685 ../../Zotlabs/Storage/Browser.php:398 msgid "Upload" msgstr "Subir" @@ -7367,59 +7358,6 @@ msgstr "Eliminar conversación" msgid "Chat Members" msgstr "Miembros del chat" -#: ../../Zotlabs/Widget/Pinned.php:70 ../../Zotlabs/Lib/ThreadItem.php:205 -msgid "I will attend" -msgstr "Participaré" - -#: ../../Zotlabs/Widget/Pinned.php:70 ../../Zotlabs/Lib/ThreadItem.php:205 -msgid "I will not attend" -msgstr "No participaré" - -#: ../../Zotlabs/Widget/Pinned.php:70 ../../Zotlabs/Lib/ThreadItem.php:205 -msgid "I might attend" -msgstr "Quizá participe" - -#: ../../Zotlabs/Widget/Pinned.php:81 ../../Zotlabs/Lib/ThreadItem.php:219 -msgid "I agree" -msgstr "Estoy de acuerdo" - -#: ../../Zotlabs/Widget/Pinned.php:81 ../../Zotlabs/Lib/ThreadItem.php:219 -msgid "I disagree" -msgstr "No estoy de acuerdo" - -#: ../../Zotlabs/Widget/Pinned.php:81 ../../Zotlabs/Lib/ThreadItem.php:219 -msgid "I abstain" -msgstr "Me abstengo" - -#: ../../Zotlabs/Widget/Pinned.php:99 ../../Zotlabs/Lib/ThreadItem.php:329 -msgid "Share This" -msgstr "Compartir esto" - -#: ../../Zotlabs/Widget/Pinned.php:99 ../../Zotlabs/Lib/ThreadItem.php:329 -msgid "share" -msgstr "compartir" - -#: ../../Zotlabs/Widget/Pinned.php:123 ../../Zotlabs/Widget/Pinned.php:124 -#, php-format -msgid "View %s's profile - %s" -msgstr "Ver el perfil de %s - %s" - -#: ../../Zotlabs/Widget/Pinned.php:128 ../../Zotlabs/Lib/ThreadItem.php:413 -msgid "via" -msgstr "mediante" - -#: ../../Zotlabs/Widget/Pinned.php:143 ../../Zotlabs/Lib/ThreadItem.php:443 -msgid "Attendance Options" -msgstr "Opciones de participación o asistencia" - -#: ../../Zotlabs/Widget/Pinned.php:144 ../../Zotlabs/Lib/ThreadItem.php:445 -msgid "Voting Options" -msgstr "Opciones de votación" - -#: ../../Zotlabs/Widget/Pinned.php:156 ../../Zotlabs/Lib/ThreadItem.php:469 -msgid "Pinned post" -msgstr "Entradas ancladas" - #: ../../Zotlabs/Widget/Activity.php:50 msgctxt "widget" msgid "Activity" @@ -7442,7 +7380,7 @@ msgid "Channel Calendar" msgstr "Calendario del canal" #: ../../Zotlabs/Widget/Cdav.php:129 ../../Zotlabs/Widget/Cdav.php:143 -#: ../../Zotlabs/Module/Cdav.php:1051 +#: ../../Zotlabs/Module/Cdav.php:1078 msgid "CalDAV Calendars" msgstr "Calendarios CalDAV" @@ -7463,12 +7401,12 @@ msgid "Create new CalDAV calendar" msgstr "Crear un nuevo calendario CalDAV" #: ../../Zotlabs/Widget/Cdav.php:140 ../../Zotlabs/Widget/Cdav.php:178 -#: ../../Zotlabs/Module/Cdav.php:1055 ../../Zotlabs/Module/Cdav.php:1383 +#: ../../Zotlabs/Module/Cdav.php:1082 ../../Zotlabs/Module/Cdav.php:1388 #: ../../Zotlabs/Module/Webpages.php:254 #: ../../Zotlabs/Module/New_channel.php:189 ../../Zotlabs/Module/Cards.php:113 -#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Profiles.php:800 +#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Profiles.php:798 #: ../../Zotlabs/Module/Articles.php:117 ../../Zotlabs/Module/Menu.php:182 -#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Layouts.php:185 +#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Layouts.php:185 #: ../../Zotlabs/Storage/Browser.php:282 ../../Zotlabs/Storage/Browser.php:396 msgid "Create" msgstr "Crear" @@ -7481,7 +7419,7 @@ msgstr "Nombre del calendario" msgid "Calendar Tools" msgstr "Gestión de calendarios" -#: ../../Zotlabs/Widget/Cdav.php:143 ../../Zotlabs/Module/Cdav.php:1051 +#: ../../Zotlabs/Widget/Cdav.php:143 ../../Zotlabs/Module/Cdav.php:1078 msgid "Channel Calendars" msgstr "Calendarios del canal" @@ -7562,9 +7500,9 @@ msgid "See more..." msgstr "Ver más..." #: ../../Zotlabs/Widget/Forums.php:100 -#: ../../Zotlabs/Widget/Activity_filter.php:115 -#: ../../Zotlabs/Widget/Notifications.php:139 -#: ../../Zotlabs/Widget/Notifications.php:140 +#: ../../Zotlabs/Widget/Activity_filter.php:73 +#: ../../Zotlabs/Widget/Notifications.php:119 +#: ../../Zotlabs/Widget/Notifications.php:120 msgid "Forums" msgstr "Foros" @@ -7573,23 +7511,23 @@ msgid "Bookmarked Chatrooms" msgstr "Salas de chat preferidas" #: ../../Zotlabs/Widget/Wiki_page_history.php:23 -#: ../../Zotlabs/Lib/NativeWikiPage.php:565 +#: ../../Zotlabs/Lib/NativeWikiPage.php:562 msgctxt "wiki_history" msgid "Message" msgstr "Mensaje" #: ../../Zotlabs/Widget/Wiki_page_history.php:24 -#: ../../Zotlabs/Lib/NativeWikiPage.php:566 +#: ../../Zotlabs/Lib/NativeWikiPage.php:563 msgid "Date" msgstr "Fecha" #: ../../Zotlabs/Widget/Wiki_page_history.php:25 -#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:567 +#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 msgid "Revert" msgstr "Revertir" #: ../../Zotlabs/Widget/Wiki_page_history.php:26 -#: ../../Zotlabs/Lib/NativeWikiPage.php:568 +#: ../../Zotlabs/Lib/NativeWikiPage.php:565 msgid "Compare" msgstr "Comparar" @@ -7625,7 +7563,7 @@ msgstr "Nuevo mensaje" msgid "photo/image" msgstr "foto/imagen" -#: ../../Zotlabs/Widget/Admin.php:22 ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Widget/Admin.php:22 ../../Zotlabs/Module/Admin/Site.php:288 msgid "Site" msgstr "Sitio" @@ -7647,11 +7585,11 @@ msgid "Channels" msgstr "Canales" #: ../../Zotlabs/Widget/Admin.php:25 -#: ../../Zotlabs/Module/Admin/Security.php:99 +#: ../../Zotlabs/Module/Admin/Security.php:93 msgid "Security" msgstr "Seguridad" -#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:358 +#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:357 msgid "Features" msgstr "Funcionalidades" @@ -7686,85 +7624,61 @@ msgstr "Informes" msgid "Addon Features" msgstr "Características del addon" -#: ../../Zotlabs/Widget/Activity_filter.php:33 -msgid "Direct Messages" -msgstr "Mensajes directos" - -#: ../../Zotlabs/Widget/Activity_filter.php:37 -msgid "Show direct (private) messages" -msgstr "Mostrar mensajes (privados) directos" - -#: ../../Zotlabs/Widget/Activity_filter.php:42 -msgid "Events" -msgstr "Eventos" - -#: ../../Zotlabs/Widget/Activity_filter.php:46 -msgid "Show posts that include events" -msgstr "Mostrar entradas que incluyan eventos" - -#: ../../Zotlabs/Widget/Activity_filter.php:52 -msgid "Polls" -msgstr "Encuestas" - -#: ../../Zotlabs/Widget/Activity_filter.php:56 -msgid "Show posts that include polls" -msgstr "Mostrar entradas que incluyan encuestas" - -#: ../../Zotlabs/Widget/Activity_filter.php:77 +#: ../../Zotlabs/Widget/Activity_filter.php:36 #, php-format msgid "Show posts related to the %s privacy group" msgstr "Mostrar entradas relacionadas con el grupo %s" -#: ../../Zotlabs/Widget/Activity_filter.php:86 +#: ../../Zotlabs/Widget/Activity_filter.php:45 msgid "Show my privacy groups" msgstr "Mostrar mis grupos de canales" -#: ../../Zotlabs/Widget/Activity_filter.php:108 +#: ../../Zotlabs/Widget/Activity_filter.php:66 msgid "Show posts to this forum" msgstr "Mostrar las entradas en este foro" -#: ../../Zotlabs/Widget/Activity_filter.php:119 +#: ../../Zotlabs/Widget/Activity_filter.php:77 msgid "Show forums" msgstr "Mostrar los foros" -#: ../../Zotlabs/Widget/Activity_filter.php:133 +#: ../../Zotlabs/Widget/Activity_filter.php:91 msgid "Starred Posts" msgstr "Entradas preferidas" -#: ../../Zotlabs/Widget/Activity_filter.php:137 +#: ../../Zotlabs/Widget/Activity_filter.php:95 msgid "Show posts that I have starred" msgstr "Mostrar entradas que he señalado como preferidas" -#: ../../Zotlabs/Widget/Activity_filter.php:148 +#: ../../Zotlabs/Widget/Activity_filter.php:106 msgid "Personal Posts" msgstr "Entradas personales" -#: ../../Zotlabs/Widget/Activity_filter.php:152 +#: ../../Zotlabs/Widget/Activity_filter.php:110 msgid "Show posts that mention or involve me" msgstr "Mostrar entradas que me mencionen o involucren" -#: ../../Zotlabs/Widget/Activity_filter.php:173 +#: ../../Zotlabs/Widget/Activity_filter.php:131 #, php-format msgid "Show posts that I have filed to %s" msgstr "Mostrar las entradas que he enviado a %s" -#: ../../Zotlabs/Widget/Activity_filter.php:183 +#: ../../Zotlabs/Widget/Activity_filter.php:141 msgid "Show filed post categories" msgstr "Mostrar los temas de las entradas archivadas" -#: ../../Zotlabs/Widget/Activity_filter.php:197 +#: ../../Zotlabs/Widget/Activity_filter.php:155 msgid "Panel search" msgstr "Panel de búsqueda" -#: ../../Zotlabs/Widget/Activity_filter.php:207 +#: ../../Zotlabs/Widget/Activity_filter.php:165 msgid "Filter by name" msgstr "Filtrar por nombre" -#: ../../Zotlabs/Widget/Activity_filter.php:222 +#: ../../Zotlabs/Widget/Activity_filter.php:180 msgid "Remove active filter" msgstr "Eliminar el filtro activo" -#: ../../Zotlabs/Widget/Activity_filter.php:238 +#: ../../Zotlabs/Widget/Activity_filter.php:196 msgid "Stream Filters" msgstr "Filtros del stream" @@ -7886,26 +7800,26 @@ msgid "View public stream" msgstr "Ver el \"stream\" público" #: ../../Zotlabs/Widget/Newmember.php:75 -#: ../../Zotlabs/Module/Settings/Display.php:206 +#: ../../Zotlabs/Module/Settings/Display.php:205 msgid "New Member Links" msgstr "Enlaces para nuevos miembros" -#: ../../Zotlabs/Widget/Affinity.php:30 ../../Zotlabs/Module/Connedit.php:724 +#: ../../Zotlabs/Widget/Affinity.php:30 ../../Zotlabs/Module/Connedit.php:723 msgid "Me" msgstr "Yo" -#: ../../Zotlabs/Widget/Affinity.php:31 ../../Zotlabs/Module/Connedit.php:725 +#: ../../Zotlabs/Widget/Affinity.php:31 ../../Zotlabs/Module/Connedit.php:724 msgid "Family" msgstr "Familia" -#: ../../Zotlabs/Widget/Affinity.php:33 ../../Zotlabs/Module/Connedit.php:727 +#: ../../Zotlabs/Widget/Affinity.php:33 ../../Zotlabs/Module/Connedit.php:726 msgid "Acquaintances" msgstr "Conocidos/as" #: ../../Zotlabs/Widget/Affinity.php:34 #: ../../Zotlabs/Module/Connections.php:97 #: ../../Zotlabs/Module/Connections.php:111 -#: ../../Zotlabs/Module/Connedit.php:728 +#: ../../Zotlabs/Module/Connedit.php:727 msgid "All" msgstr "Todos/as" @@ -7926,142 +7840,127 @@ msgid "View your network activity" msgstr "Ver la actividad de su red" #: ../../Zotlabs/Widget/Notifications.php:23 -#: ../../Zotlabs/Widget/Notifications.php:62 msgid "Mark all notifications read" msgstr "Marcar todas las notificaciones como leídas" #: ../../Zotlabs/Widget/Notifications.php:26 -#: ../../Zotlabs/Widget/Notifications.php:46 -#: ../../Zotlabs/Widget/Notifications.php:65 -#: ../../Zotlabs/Widget/Notifications.php:172 +#: ../../Zotlabs/Widget/Notifications.php:45 +#: ../../Zotlabs/Widget/Notifications.php:152 msgid "Show new posts only" msgstr "Mostrar solo las entradas nuevas" #: ../../Zotlabs/Widget/Notifications.php:27 -#: ../../Zotlabs/Widget/Notifications.php:47 -#: ../../Zotlabs/Widget/Notifications.php:66 -#: ../../Zotlabs/Widget/Notifications.php:142 -#: ../../Zotlabs/Widget/Notifications.php:173 +#: ../../Zotlabs/Widget/Notifications.php:46 +#: ../../Zotlabs/Widget/Notifications.php:122 +#: ../../Zotlabs/Widget/Notifications.php:153 msgid "Filter by name or address" msgstr "Filtrar por nombre o dirección" -#: ../../Zotlabs/Widget/Notifications.php:36 +#: ../../Zotlabs/Widget/Notifications.php:35 msgid "New Home Activity" msgstr "Nueva actividad en su página principal" -#: ../../Zotlabs/Widget/Notifications.php:37 +#: ../../Zotlabs/Widget/Notifications.php:36 msgid "New Home Activity Notifications" msgstr "Avisos de nueva actividad en su página principal" -#: ../../Zotlabs/Widget/Notifications.php:40 +#: ../../Zotlabs/Widget/Notifications.php:39 msgid "View your home activity" msgstr "Ver la actividad de su página principal" -#: ../../Zotlabs/Widget/Notifications.php:43 -#: ../../Zotlabs/Widget/Notifications.php:169 +#: ../../Zotlabs/Widget/Notifications.php:42 +#: ../../Zotlabs/Widget/Notifications.php:149 msgid "Mark all notifications seen" msgstr "Marcar todas las notificaciones como vistas" -#: ../../Zotlabs/Widget/Notifications.php:55 -msgid "New Direct Messages" -msgstr "Nuevos mensajes directos" - -#: ../../Zotlabs/Widget/Notifications.php:56 -msgid "New Direct Messages Notifications" -msgstr "Nuevas notificaciones de mensajes directos" - -#: ../../Zotlabs/Widget/Notifications.php:59 -msgid "View your direct messages" -msgstr "Ver sus mensajes directos" - -#: ../../Zotlabs/Widget/Notifications.php:74 +#: ../../Zotlabs/Widget/Notifications.php:54 msgid "New Mails" msgstr "Nuevos mensajes de correo" -#: ../../Zotlabs/Widget/Notifications.php:75 +#: ../../Zotlabs/Widget/Notifications.php:55 msgid "New Mails Notifications" msgstr "Avisos de nuevos mensajes de correo" -#: ../../Zotlabs/Widget/Notifications.php:78 +#: ../../Zotlabs/Widget/Notifications.php:58 msgid "View your private mails" msgstr "Ver sus correos privados" -#: ../../Zotlabs/Widget/Notifications.php:81 +#: ../../Zotlabs/Widget/Notifications.php:61 msgid "Mark all messages seen" msgstr "Marcar todos los mensajes como vistos" -#: ../../Zotlabs/Widget/Notifications.php:89 +#: ../../Zotlabs/Widget/Notifications.php:69 msgid "New Events" msgstr "Eventos nuevos" -#: ../../Zotlabs/Widget/Notifications.php:90 +#: ../../Zotlabs/Widget/Notifications.php:70 msgid "New Events Notifications" msgstr "Avisos de nuevos eventos" -#: ../../Zotlabs/Widget/Notifications.php:93 +#: ../../Zotlabs/Widget/Notifications.php:73 msgid "View events" msgstr "Ver los eventos" -#: ../../Zotlabs/Widget/Notifications.php:96 +#: ../../Zotlabs/Widget/Notifications.php:76 msgid "Mark all events seen" msgstr "Marcar todos los eventos como leidos" -#: ../../Zotlabs/Widget/Notifications.php:104 +#: ../../Zotlabs/Widget/Notifications.php:84 #: ../../Zotlabs/Module/Connections.php:164 msgid "New Connections" msgstr "Nuevas conexiones" -#: ../../Zotlabs/Widget/Notifications.php:105 +#: ../../Zotlabs/Widget/Notifications.php:85 msgid "New Connections Notifications" msgstr "Avisos de nuevas conexiones" -#: ../../Zotlabs/Widget/Notifications.php:108 +#: ../../Zotlabs/Widget/Notifications.php:88 msgid "View all connections" msgstr "Ver todas las conexiones" -#: ../../Zotlabs/Widget/Notifications.php:116 +#: ../../Zotlabs/Widget/Notifications.php:96 msgid "New Files" msgstr "Ficheros nuevos" -#: ../../Zotlabs/Widget/Notifications.php:117 +#: ../../Zotlabs/Widget/Notifications.php:97 msgid "New Files Notifications" msgstr "Avisos de nuevos ficheros" -#: ../../Zotlabs/Widget/Notifications.php:124 -#: ../../Zotlabs/Widget/Notifications.php:125 +#: ../../Zotlabs/Widget/Notifications.php:104 +#: ../../Zotlabs/Widget/Notifications.php:105 msgid "Notices" msgstr "Avisos" -#: ../../Zotlabs/Widget/Notifications.php:128 +#: ../../Zotlabs/Widget/Notifications.php:108 msgid "View all notices" msgstr "Ver todos los avisos" -#: ../../Zotlabs/Widget/Notifications.php:131 +#: ../../Zotlabs/Widget/Notifications.php:111 msgid "Mark all notices seen" msgstr "Marcar como leídos todos los avisos" -#: ../../Zotlabs/Widget/Notifications.php:152 +#: ../../Zotlabs/Widget/Notifications.php:132 msgid "New Registrations" msgstr "Registros nuevos" -#: ../../Zotlabs/Widget/Notifications.php:153 +#: ../../Zotlabs/Widget/Notifications.php:133 msgid "New Registrations Notifications" msgstr "Notificaciones de nuevos registros" -#: ../../Zotlabs/Widget/Notifications.php:162 -#: ../../Zotlabs/Module/Pubstream.php:114 ../../Zotlabs/Lib/Apps.php:375 +#: ../../Zotlabs/Widget/Notifications.php:142 +#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 msgid "Public Stream" msgstr "\"Stream\" público" -#: ../../Zotlabs/Widget/Notifications.php:163 +#: ../../Zotlabs/Widget/Notifications.php:143 msgid "Public Stream Notifications" msgstr "Avisos del \"stream\" público" -#: ../../Zotlabs/Widget/Notifications.php:166 +#: ../../Zotlabs/Widget/Notifications.php:146 msgid "View the public stream" msgstr "Ver el \"stream\" público" -#: ../../Zotlabs/Widget/Notifications.php:181 +#: ../../Zotlabs/Widget/Notifications.php:161 msgid "Sorry, you have got no notifications at the moment" msgstr "Lo sentimos, por el momento no ha recibido ninguna notificación" @@ -8116,27 +8015,27 @@ msgstr "Contraseña de inicio de sesión" msgid "Expires (yyyy-mm-dd)" msgstr "Expira (aaaa-mm-dd)" -#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:908 +#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 msgid "Their Settings" msgstr "Sus ajustes" -#: ../../Zotlabs/Module/Tokens.php:181 ../../Zotlabs/Module/Permcats.php:122 -#: ../../Zotlabs/Module/Defperms.php:267 ../../Zotlabs/Module/Connedit.php:909 +#: ../../Zotlabs/Module/Tokens.php:181 ../../Zotlabs/Module/Permcats.php:121 +#: ../../Zotlabs/Module/Defperms.php:266 ../../Zotlabs/Module/Connedit.php:908 msgid "My Settings" msgstr "Mis ajustes" -#: ../../Zotlabs/Module/Tokens.php:183 ../../Zotlabs/Module/Permcats.php:124 -#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Connedit.php:904 +#: ../../Zotlabs/Module/Tokens.php:183 ../../Zotlabs/Module/Permcats.php:123 +#: ../../Zotlabs/Module/Defperms.php:264 ../../Zotlabs/Module/Connedit.php:903 msgid "inherited" msgstr "heredado" -#: ../../Zotlabs/Module/Tokens.php:186 ../../Zotlabs/Module/Permcats.php:127 -#: ../../Zotlabs/Module/Defperms.php:270 ../../Zotlabs/Module/Connedit.php:911 +#: ../../Zotlabs/Module/Tokens.php:186 ../../Zotlabs/Module/Permcats.php:126 +#: ../../Zotlabs/Module/Defperms.php:269 ../../Zotlabs/Module/Connedit.php:910 msgid "Individual Permissions" msgstr "Permisos individuales" -#: ../../Zotlabs/Module/Tokens.php:187 ../../Zotlabs/Module/Permcats.php:128 -#: ../../Zotlabs/Module/Connedit.php:912 +#: ../../Zotlabs/Module/Tokens.php:187 ../../Zotlabs/Module/Permcats.php:127 +#: ../../Zotlabs/Module/Connedit.php:911 msgid "" "Some permissions may be inherited from your channel's <a " "href=\"settings\"><strong>privacy settings</strong></a>, which have higher " @@ -8156,7 +8055,7 @@ msgstr "Elemento no encontrado" #: ../../Zotlabs/Module/Article_edit.php:44 #: ../../Zotlabs/Module/Wall_upload.php:31 -#: ../../Zotlabs/Module/Card_edit.php:44 ../../Zotlabs/Module/Chanview.php:89 +#: ../../Zotlabs/Module/Card_edit.php:44 ../../Zotlabs/Module/Chanview.php:96 #: ../../Zotlabs/Module/Cal.php:31 ../../Zotlabs/Module/Page.php:75 #: ../../Zotlabs/Module/Block.php:41 msgid "Channel not found." @@ -8166,29 +8065,29 @@ msgstr "Canal no encontrado." msgid "Edit Article" msgstr "Editar el artículo" -#: ../../Zotlabs/Module/Network.php:110 +#: ../../Zotlabs/Module/Network.php:109 msgid "No such group" msgstr "No se encuentra el grupo" -#: ../../Zotlabs/Module/Network.php:159 +#: ../../Zotlabs/Module/Network.php:158 msgid "No such channel" msgstr "No se encuentra el canal" -#: ../../Zotlabs/Module/Network.php:174 ../../Zotlabs/Module/Channel.php:195 +#: ../../Zotlabs/Module/Network.php:173 ../../Zotlabs/Module/Channel.php:183 msgid "Search Results For:" msgstr "Buscar resultados para:" -#: ../../Zotlabs/Module/Network.php:204 ../../Zotlabs/Module/Channel.php:230 -#: ../../Zotlabs/Module/Hq.php:134 ../../Zotlabs/Module/Pubstream.php:99 +#: ../../Zotlabs/Module/Network.php:203 ../../Zotlabs/Module/Channel.php:218 +#: ../../Zotlabs/Module/Hq.php:134 ../../Zotlabs/Module/Pubstream.php:94 #: ../../Zotlabs/Module/Display.php:80 msgid "Reset form" msgstr "Reiniciar el formulario" -#: ../../Zotlabs/Module/Network.php:243 +#: ../../Zotlabs/Module/Network.php:242 msgid "Privacy group is empty" msgstr "El grupo de canales está vacío" -#: ../../Zotlabs/Module/Network.php:253 +#: ../../Zotlabs/Module/Network.php:252 msgid "Privacy group: " msgstr "Grupo de canales: " @@ -8225,55 +8124,55 @@ msgid "" msgstr "Utilice este formulario para importar entradas y contenido desde un archivo de exportación." #: ../../Zotlabs/Module/Import_items.php:127 -#: ../../Zotlabs/Module/Import.php:632 +#: ../../Zotlabs/Module/Import.php:629 msgid "File to Upload" msgstr "Fichero para subir" -#: ../../Zotlabs/Module/Import.php:162 +#: ../../Zotlabs/Module/Import.php:157 #, php-format msgid "Your service plan only allows %d channels." msgstr "Su paquete de servicios solo permite %d canales." -#: ../../Zotlabs/Module/Import.php:189 +#: ../../Zotlabs/Module/Import.php:184 msgid "No channel. Import failed." msgstr "No hay canal. La importación ha fallado" -#: ../../Zotlabs/Module/Import.php:625 +#: ../../Zotlabs/Module/Import.php:622 msgid "You must be logged in to use this feature." msgstr "Debe estar registrado para poder usar esta funcionalidad." -#: ../../Zotlabs/Module/Import.php:630 +#: ../../Zotlabs/Module/Import.php:627 msgid "Import Channel" msgstr "Importar canal" -#: ../../Zotlabs/Module/Import.php:631 +#: ../../Zotlabs/Module/Import.php:628 msgid "" "Use this form to import an existing channel from a different server/hub. You" " may retrieve the channel identity from the old server/hub via the network " "or provide an export file." msgstr "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación." -#: ../../Zotlabs/Module/Import.php:633 +#: ../../Zotlabs/Module/Import.php:630 msgid "Or provide the old server/hub details" msgstr "O proporcione los detalles de su antiguo servidor/hub" -#: ../../Zotlabs/Module/Import.php:635 +#: ../../Zotlabs/Module/Import.php:632 msgid "Your old identity address (xyz@example.com)" msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)" -#: ../../Zotlabs/Module/Import.php:636 +#: ../../Zotlabs/Module/Import.php:633 msgid "Your old login email address" msgstr "Su antigua dirección de correo electrónico" -#: ../../Zotlabs/Module/Import.php:637 +#: ../../Zotlabs/Module/Import.php:634 msgid "Your old login password" msgstr "Su antigua contraseña" -#: ../../Zotlabs/Module/Import.php:638 +#: ../../Zotlabs/Module/Import.php:635 msgid "Import a few months of posts if possible (limited by available memory" msgstr "Importar unos meses de mensajes si es posible (limitado por la memoria disponible" -#: ../../Zotlabs/Module/Import.php:640 +#: ../../Zotlabs/Module/Import.php:637 msgid "" "For either option, please choose whether to make this hub your new primary " "address, or whether your old location should continue this role. You will be" @@ -8281,49 +8180,31 @@ msgid "" "primary location for files, photos, and media." msgstr "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos." -#: ../../Zotlabs/Module/Import.php:642 +#: ../../Zotlabs/Module/Import.php:639 msgid "Make this hub my primary location" msgstr "Convertir este servidor en mi ubicación primaria" -#: ../../Zotlabs/Module/Import.php:643 +#: ../../Zotlabs/Module/Import.php:640 msgid "Move this channel (disable all previous locations)" msgstr "Mover este canal (desactivar todas las ubicaciones anteriores)" -#: ../../Zotlabs/Module/Import.php:644 +#: ../../Zotlabs/Module/Import.php:641 msgid "Use this channel nickname instead of the one provided" msgstr "Usa este alias de canal en lugar del que se proporciona" -#: ../../Zotlabs/Module/Import.php:644 +#: ../../Zotlabs/Module/Import.php:641 msgid "" "Leave blank to keep your existing channel nickname. You will be randomly " "assigned a similar nickname if either name is already allocated on this " "site." msgstr "Dejar en blanco para mantener su alias de canal . Se le asignará aleatoriamente uno similar si cualquiera de los dos nombres ya está asignado en este sitio." -#: ../../Zotlabs/Module/Import.php:646 +#: ../../Zotlabs/Module/Import.php:643 msgid "" "This process may take several minutes to complete. Please submit the form " "only once and leave this page open until finished." msgstr "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine." -#: ../../Zotlabs/Module/Ochannel.php:32 ../../Zotlabs/Module/Channel.php:42 -#: ../../Zotlabs/Module/Chat.php:29 -msgid "You must be logged in to see this page." -msgstr "Debe haber iniciado sesión para poder ver esta página." - -#: ../../Zotlabs/Module/Z6trans.php:80 -msgid "Update to Hubzilla 5.0 setp 2" -msgstr "Actualizar a Hubzilla 5.0. Paso 2" - -#: ../../Zotlabs/Module/Z6trans.php:82 -msgid "To complete the update please run" -msgstr "Para completar la actualización, ejecutar " - -#: ../../Zotlabs/Module/Z6trans.php:88 -msgid "" -"INFO: this command can take a very long time depending on your DB size." -msgstr "INFO; este comando puede tardar en ejecutarse mucho tiempo dependiendo del tamaño de su base de datos." - #: ../../Zotlabs/Module/Register.php:52 msgid "Maximum daily site registrations exceeded. Please try again tomorrow." msgstr "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana." @@ -8429,7 +8310,7 @@ msgstr "Su alias se usará para crear una dirección de canal fácil de recordar #: ../../Zotlabs/Module/Register.php:264 #: ../../Zotlabs/Module/New_channel.php:178 -#: ../../Zotlabs/Module/Settings/Channel.php:536 +#: ../../Zotlabs/Module/Settings/Channel.php:535 msgid "Channel role and privacy" msgstr "Clase de canal y privacidad" @@ -8453,7 +8334,7 @@ msgid "yes" msgstr "sí" #: ../../Zotlabs/Module/Register.php:277 -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:290 msgid "Registration" msgstr "Registro" @@ -8466,17 +8347,17 @@ msgstr "Este sitio requiere verificación por correo electrónico. Después de c #: ../../Zotlabs/Module/Search.php:17 #: ../../Zotlabs/Module/Viewconnections.php:23 #: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Display.php:29 -#: ../../Zotlabs/Module/Directory.php:71 ../../Zotlabs/Module/Directory.php:76 -#: ../../Zotlabs/Module/Photos.php:518 +#: ../../Zotlabs/Module/Directory.php:67 ../../Zotlabs/Module/Directory.php:72 +#: ../../Zotlabs/Module/Photos.php:516 msgid "Public access denied." msgstr "Acceso público denegado." -#: ../../Zotlabs/Module/Search.php:231 +#: ../../Zotlabs/Module/Search.php:230 #, php-format msgid "Items tagged with: %s" msgstr "elementos etiquetados con: %s" -#: ../../Zotlabs/Module/Search.php:233 +#: ../../Zotlabs/Module/Search.php:232 #, php-format msgid "Search results for: %s" msgstr "Resultados de la búsqueda para: %s" @@ -8518,9 +8399,9 @@ msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"." msgid "System check" msgstr "Verificación del sistema" -#: ../../Zotlabs/Module/Setup.php:260 ../../Zotlabs/Module/Cdav.php:1032 +#: ../../Zotlabs/Module/Setup.php:260 ../../Zotlabs/Module/Cdav.php:1059 #: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Events.php:707 -#: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Photos.php:955 +#: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Photos.php:953 msgid "Next" msgstr "Siguiente" @@ -8932,12 +8813,12 @@ msgstr "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poll msgid "No connections." msgstr "Sin conexiones." -#: ../../Zotlabs/Module/Viewconnections.php:105 +#: ../../Zotlabs/Module/Viewconnections.php:83 #, php-format msgid "Visit %s's profile [%s]" msgstr "Visitar el perfil de %s [%s]" -#: ../../Zotlabs/Module/Viewconnections.php:135 +#: ../../Zotlabs/Module/Viewconnections.php:113 msgid "View Connections" msgstr "Ver conexiones" @@ -8991,11 +8872,11 @@ msgstr "Publicaciones y comentarios" msgid "Only posts" msgstr "Solo publicaciones" -#: ../../Zotlabs/Module/Channel.php:178 +#: ../../Zotlabs/Module/Channel.php:166 msgid "Insufficient permissions. Request redirected to profile page." msgstr "Permisos insuficientes. Petición redirigida a la página del perfil." -#: ../../Zotlabs/Module/Channel.php:497 ../../Zotlabs/Module/Display.php:383 +#: ../../Zotlabs/Module/Channel.php:476 ../../Zotlabs/Module/Display.php:378 msgid "" "You must enable javascript for your browser to be able to view this content." msgstr "Debe habilitar javascript para poder ver este contenido en su navegador." @@ -9021,72 +8902,72 @@ msgstr "Visible para" msgid "All Connections" msgstr "Todas las conexiones" -#: ../../Zotlabs/Module/Group.php:46 +#: ../../Zotlabs/Module/Group.php:45 msgid "Privacy group created." msgstr "El grupo de canales ha sido creado." -#: ../../Zotlabs/Module/Group.php:49 +#: ../../Zotlabs/Module/Group.php:48 msgid "Could not create privacy group." msgstr "No se puede crear el grupo de canales" -#: ../../Zotlabs/Module/Group.php:81 +#: ../../Zotlabs/Module/Group.php:80 msgid "Privacy group updated." msgstr "Grupo de canales actualizado." -#: ../../Zotlabs/Module/Group.php:107 +#: ../../Zotlabs/Module/Group.php:106 msgid "Privacy Groups App" msgstr "App Grupos de canales" -#: ../../Zotlabs/Module/Group.php:108 +#: ../../Zotlabs/Module/Group.php:107 msgid "Management of privacy groups" msgstr "Gestión de grupos de canales" -#: ../../Zotlabs/Module/Group.php:143 +#: ../../Zotlabs/Module/Group.php:142 msgid "Add Group" msgstr "Agregar un grupo" -#: ../../Zotlabs/Module/Group.php:147 +#: ../../Zotlabs/Module/Group.php:146 msgid "Privacy group name" msgstr "Nombre del grupo" -#: ../../Zotlabs/Module/Group.php:148 ../../Zotlabs/Module/Group.php:257 +#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256 msgid "Members are visible to other channels" msgstr "Los miembros son visibles para otros canales" -#: ../../Zotlabs/Module/Group.php:156 ../../Zotlabs/Module/Help.php:84 +#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 msgid "Members" msgstr "Miembros" -#: ../../Zotlabs/Module/Group.php:183 +#: ../../Zotlabs/Module/Group.php:182 msgid "Privacy group removed." msgstr "Grupo de canales eliminado." -#: ../../Zotlabs/Module/Group.php:186 +#: ../../Zotlabs/Module/Group.php:185 msgid "Unable to remove privacy group." msgstr "No se puede eliminar el grupo de canales." -#: ../../Zotlabs/Module/Group.php:252 +#: ../../Zotlabs/Module/Group.php:251 #, php-format msgid "Privacy Group: %s" msgstr "Grupo privado %s" -#: ../../Zotlabs/Module/Group.php:254 +#: ../../Zotlabs/Module/Group.php:253 msgid "Privacy group name: " msgstr "Nombre del grupo de canales:" -#: ../../Zotlabs/Module/Group.php:259 +#: ../../Zotlabs/Module/Group.php:258 msgid "Delete Group" msgstr "Eliminar grupo" -#: ../../Zotlabs/Module/Group.php:270 +#: ../../Zotlabs/Module/Group.php:269 msgid "Group members" msgstr "Miembros del grupo" -#: ../../Zotlabs/Module/Group.php:272 +#: ../../Zotlabs/Module/Group.php:271 msgid "Not in this group" msgstr "No en este grupo" -#: ../../Zotlabs/Module/Group.php:304 +#: ../../Zotlabs/Module/Group.php:303 msgid "Click a channel to toggle membership" msgstr "Haga clic en un canal para cambiar los miembros" @@ -9162,10 +9043,10 @@ msgid "Key and Secret are required" msgstr "\"Key\" y \"Secret\" son obligatorios" #: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137 -#: ../../Zotlabs/Module/Cdav.php:1049 ../../Zotlabs/Module/Cdav.php:1384 +#: ../../Zotlabs/Module/Cdav.php:1076 ../../Zotlabs/Module/Cdav.php:1389 #: ../../Zotlabs/Module/Admin/Addons.php:457 -#: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Oauth2.php:58 -#: ../../Zotlabs/Module/Oauth2.php:144 ../../Zotlabs/Module/Connedit.php:940 +#: ../../Zotlabs/Module/Profiles.php:799 ../../Zotlabs/Module/Oauth2.php:58 +#: ../../Zotlabs/Module/Oauth2.php:144 ../../Zotlabs/Module/Connedit.php:939 #: ../../Zotlabs/Lib/Apps.php:536 msgid "Update" msgstr "Actualizar" @@ -9243,11 +9124,11 @@ msgstr "Enlace de la página" msgid "Edit Webpage" msgstr "Editar la página web" -#: ../../Zotlabs/Module/Dirsearch.php:28 ../../Zotlabs/Module/Regdir.php:49 +#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49 msgid "This site is not a directory server" msgstr "Este sitio no es un servidor de directorio" -#: ../../Zotlabs/Module/Dirsearch.php:37 +#: ../../Zotlabs/Module/Dirsearch.php:33 msgid "This directory server requires an access token" msgstr "El servidor de este directorio necesita un \"token\" de acceso" @@ -9259,176 +9140,172 @@ msgstr "¡Bienvenido a Hubzilla!" msgid "You have got no unseen posts..." msgstr "No tiene ningún mensaje sin leer..." -#: ../../Zotlabs/Module/Pin.php:35 ../../Zotlabs/Module/Item.php:348 -msgid "Unable to locate original post." -msgstr "No ha sido posible encontrar la entrada original." - -#: ../../Zotlabs/Module/Chat.php:100 +#: ../../Zotlabs/Module/Chat.php:102 msgid "Chatrooms App" msgstr "App Salas de chat" -#: ../../Zotlabs/Module/Chat.php:101 +#: ../../Zotlabs/Module/Chat.php:103 msgid "Access Controlled Chatrooms" msgstr "Salas de chat moderadas" -#: ../../Zotlabs/Module/Chat.php:194 +#: ../../Zotlabs/Module/Chat.php:196 msgid "Room not found" msgstr "Sala no encontrada" -#: ../../Zotlabs/Module/Chat.php:210 +#: ../../Zotlabs/Module/Chat.php:212 msgid "Leave Room" msgstr "Abandonar la sala" -#: ../../Zotlabs/Module/Chat.php:211 +#: ../../Zotlabs/Module/Chat.php:213 msgid "Delete Room" msgstr "Eliminar esta sala" -#: ../../Zotlabs/Module/Chat.php:212 +#: ../../Zotlabs/Module/Chat.php:214 msgid "I am away right now" msgstr "Estoy ausente momentáneamente" -#: ../../Zotlabs/Module/Chat.php:213 +#: ../../Zotlabs/Module/Chat.php:215 msgid "I am online" msgstr "Estoy conectado/a" -#: ../../Zotlabs/Module/Chat.php:215 +#: ../../Zotlabs/Module/Chat.php:217 msgid "Bookmark this room" msgstr "Añadir esta sala a Marcadores" -#: ../../Zotlabs/Module/Chat.php:238 +#: ../../Zotlabs/Module/Chat.php:240 msgid "New Chatroom" msgstr "Nueva sala de chat" -#: ../../Zotlabs/Module/Chat.php:239 +#: ../../Zotlabs/Module/Chat.php:241 msgid "Chatroom name" msgstr "Nombre de la sala de chat" -#: ../../Zotlabs/Module/Chat.php:240 +#: ../../Zotlabs/Module/Chat.php:242 msgid "Expiration of chats (minutes)" msgstr "Caducidad de los mensajes en los chats (en minutos)" -#: ../../Zotlabs/Module/Chat.php:256 +#: ../../Zotlabs/Module/Chat.php:258 #, php-format msgid "%1$s's Chatrooms" msgstr "Salas de chat de %1$s" -#: ../../Zotlabs/Module/Chat.php:261 +#: ../../Zotlabs/Module/Chat.php:263 msgid "No chatrooms available" msgstr "No hay salas de chat disponibles" -#: ../../Zotlabs/Module/Chat.php:262 ../../Zotlabs/Module/Manage.php:145 -#: ../../Zotlabs/Module/Profiles.php:833 ../../Zotlabs/Module/Wiki.php:214 +#: ../../Zotlabs/Module/Chat.php:264 ../../Zotlabs/Module/Manage.php:145 +#: ../../Zotlabs/Module/Profiles.php:831 ../../Zotlabs/Module/Wiki.php:214 msgid "Create New" msgstr "Crear" -#: ../../Zotlabs/Module/Chat.php:265 +#: ../../Zotlabs/Module/Chat.php:267 msgid "Expiration" msgstr "Caducidad" -#: ../../Zotlabs/Module/Chat.php:266 +#: ../../Zotlabs/Module/Chat.php:268 msgid "min" msgstr "min" -#: ../../Zotlabs/Module/Channel_calendar.php:57 +#: ../../Zotlabs/Module/Channel_calendar.php:51 #: ../../Zotlabs/Module/Events.php:113 msgid "Event can not end before it has started." msgstr "Un evento no puede terminar antes de que haya comenzado." -#: ../../Zotlabs/Module/Channel_calendar.php:59 -#: ../../Zotlabs/Module/Channel_calendar.php:67 -#: ../../Zotlabs/Module/Channel_calendar.php:84 +#: ../../Zotlabs/Module/Channel_calendar.php:53 +#: ../../Zotlabs/Module/Channel_calendar.php:61 +#: ../../Zotlabs/Module/Channel_calendar.php:78 #: ../../Zotlabs/Module/Events.php:115 ../../Zotlabs/Module/Events.php:124 #: ../../Zotlabs/Module/Events.php:146 msgid "Unable to generate preview." msgstr "No se puede crear la vista previa." -#: ../../Zotlabs/Module/Channel_calendar.php:65 +#: ../../Zotlabs/Module/Channel_calendar.php:59 #: ../../Zotlabs/Module/Events.php:122 msgid "Event title and start time are required." msgstr "Se requieren el título del evento y su hora de inicio." -#: ../../Zotlabs/Module/Channel_calendar.php:82 -#: ../../Zotlabs/Module/Channel_calendar.php:224 +#: ../../Zotlabs/Module/Channel_calendar.php:76 +#: ../../Zotlabs/Module/Channel_calendar.php:218 #: ../../Zotlabs/Module/Events.php:144 ../../Zotlabs/Module/Events.php:271 msgid "Event not found." msgstr "Evento no encontrado." -#: ../../Zotlabs/Module/Channel_calendar.php:371 +#: ../../Zotlabs/Module/Channel_calendar.php:370 #: ../../Zotlabs/Module/Events.php:641 msgid "Edit event" msgstr "Editar evento" -#: ../../Zotlabs/Module/Channel_calendar.php:373 +#: ../../Zotlabs/Module/Channel_calendar.php:372 #: ../../Zotlabs/Module/Events.php:643 msgid "Delete event" msgstr "Borrar evento" -#: ../../Zotlabs/Module/Channel_calendar.php:393 -#: ../../Zotlabs/Module/Cdav.php:939 ../../Zotlabs/Module/Cal.php:167 +#: ../../Zotlabs/Module/Channel_calendar.php:387 +#: ../../Zotlabs/Module/Cdav.php:966 ../../Zotlabs/Module/Cal.php:167 msgid "Link to source" msgstr "Enlace a la fuente" -#: ../../Zotlabs/Module/Channel_calendar.php:407 +#: ../../Zotlabs/Module/Channel_calendar.php:401 #: ../../Zotlabs/Module/Events.php:677 msgid "calendar" msgstr "calendario" -#: ../../Zotlabs/Module/Channel_calendar.php:494 +#: ../../Zotlabs/Module/Channel_calendar.php:488 #: ../../Zotlabs/Module/Events.php:742 msgid "Failed to remove event" msgstr "Error al eliminar el evento" -#: ../../Zotlabs/Module/Like.php:57 +#: ../../Zotlabs/Module/Like.php:56 msgid "Like/Dislike" msgstr "Me gusta/No me gusta" -#: ../../Zotlabs/Module/Like.php:62 +#: ../../Zotlabs/Module/Like.php:61 msgid "This action is restricted to members." msgstr "Esta acción está restringida solo para miembros." -#: ../../Zotlabs/Module/Like.php:63 +#: ../../Zotlabs/Module/Like.php:62 msgid "" "Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a " "href=\"register\">register as a new $Projectname member</a> to continue." msgstr "Por favor, <a href=\"rmagic\">identifíquese con su $Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo $Projectname member</a> para continuar." -#: ../../Zotlabs/Module/Like.php:117 ../../Zotlabs/Module/Like.php:143 -#: ../../Zotlabs/Module/Like.php:181 +#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 +#: ../../Zotlabs/Module/Like.php:175 msgid "Invalid request." msgstr "Solicitud incorrecta." -#: ../../Zotlabs/Module/Like.php:158 +#: ../../Zotlabs/Module/Like.php:152 msgid "thing" msgstr "elemento" -#: ../../Zotlabs/Module/Like.php:204 +#: ../../Zotlabs/Module/Like.php:198 msgid "Channel unavailable." msgstr "Canal no disponible." -#: ../../Zotlabs/Module/Like.php:240 +#: ../../Zotlabs/Module/Like.php:246 msgid "Previous action reversed." msgstr "Acción anterior revocada." -#: ../../Zotlabs/Module/Like.php:426 +#: ../../Zotlabs/Module/Like.php:451 #, php-format msgid "%1$s agrees with %2$s's %3$s" msgstr "%3$s de %2$s: %1$s está de acuerdo" -#: ../../Zotlabs/Module/Like.php:428 +#: ../../Zotlabs/Module/Like.php:453 #, php-format msgid "%1$s doesn't agree with %2$s's %3$s" msgstr "%3$s de %2$s: %1$s no está de acuerdo" -#: ../../Zotlabs/Module/Like.php:430 +#: ../../Zotlabs/Module/Like.php:455 #, php-format msgid "%1$s abstains from a decision on %2$s's %3$s" msgstr "%3$s de %2$s: %1$s se abstiene" -#: ../../Zotlabs/Module/Like.php:547 +#: ../../Zotlabs/Module/Like.php:572 msgid "Action completed." msgstr "Acción completada." -#: ../../Zotlabs/Module/Like.php:548 +#: ../../Zotlabs/Module/Like.php:573 msgid "Thank you." msgstr "Gracias." @@ -9464,168 +9341,187 @@ msgstr "Elegir qué desea enviar al destinatario" msgid "Make this post private" msgstr "Convertir en privado este envío" -#: ../../Zotlabs/Module/Cdav.php:814 ../../Zotlabs/Module/Events.php:28 +#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 msgid "Calendar entries imported." msgstr "Entradas de calendario importadas." -#: ../../Zotlabs/Module/Cdav.php:816 ../../Zotlabs/Module/Events.php:30 +#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 msgid "No calendar entries found." msgstr "No se han encontrado entradas de calendario." +#: ../../Zotlabs/Module/Cdav.php:870 +msgid "INVALID EVENT DISMISSED!" +msgstr "¡EVENTO NO VÁLIDO RECHAZADO!" + +#: ../../Zotlabs/Module/Cdav.php:871 +msgid "Summary: " +msgstr "Resumen: " + #: ../../Zotlabs/Module/Cdav.php:872 +msgid "Date: " +msgstr "Fecha: " + +#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 +msgid "Reason: " +msgstr "Razón: " + +#: ../../Zotlabs/Module/Cdav.php:878 +msgid "INVALID CARD DISMISSED!" +msgstr "¡TARJETA NO VÁLIDA RECHAZADA!" + +#: ../../Zotlabs/Module/Cdav.php:879 +msgid "Name: " +msgstr "Nombre: " + +#: ../../Zotlabs/Module/Cdav.php:899 msgid "CardDAV App" msgstr "App CarDav" -#: ../../Zotlabs/Module/Cdav.php:873 +#: ../../Zotlabs/Module/Cdav.php:900 msgid "CalDAV capable addressbook" msgstr "Libreta de direcciones compatible con CalDav" -#: ../../Zotlabs/Module/Cdav.php:1005 ../../Zotlabs/Module/Events.php:468 +#: ../../Zotlabs/Module/Cdav.php:1032 ../../Zotlabs/Module/Events.php:468 msgid "Event title" msgstr "Título del evento" -#: ../../Zotlabs/Module/Cdav.php:1006 ../../Zotlabs/Module/Events.php:474 +#: ../../Zotlabs/Module/Cdav.php:1033 ../../Zotlabs/Module/Events.php:474 msgid "Start date and time" msgstr "Fecha y hora de comienzo" -#: ../../Zotlabs/Module/Cdav.php:1007 +#: ../../Zotlabs/Module/Cdav.php:1034 msgid "End date and time" msgstr "Fecha y hora de finalización" -#: ../../Zotlabs/Module/Cdav.php:1008 ../../Zotlabs/Module/Events.php:497 +#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:497 msgid "Timezone:" msgstr "Zona horaria: " -#: ../../Zotlabs/Module/Cdav.php:1031 ../../Zotlabs/Module/Events.php:697 +#: ../../Zotlabs/Module/Cdav.php:1058 ../../Zotlabs/Module/Events.php:697 #: ../../Zotlabs/Module/Events.php:706 ../../Zotlabs/Module/Cal.php:205 -#: ../../Zotlabs/Module/Photos.php:946 +#: ../../Zotlabs/Module/Photos.php:944 msgid "Previous" msgstr "Anterior" -#: ../../Zotlabs/Module/Cdav.php:1033 ../../Zotlabs/Module/Events.php:708 +#: ../../Zotlabs/Module/Cdav.php:1060 ../../Zotlabs/Module/Events.php:708 #: ../../Zotlabs/Module/Cal.php:207 msgid "Today" msgstr "Hoy" -#: ../../Zotlabs/Module/Cdav.php:1034 ../../Zotlabs/Module/Events.php:703 +#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Events.php:703 msgid "Month" msgstr "Mes" -#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:704 +#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:704 msgid "Week" msgstr "Semana" -#: ../../Zotlabs/Module/Cdav.php:1036 ../../Zotlabs/Module/Events.php:705 +#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:705 msgid "Day" msgstr "Día" -#: ../../Zotlabs/Module/Cdav.php:1037 +#: ../../Zotlabs/Module/Cdav.php:1064 msgid "List month" msgstr "Lista mensual" -#: ../../Zotlabs/Module/Cdav.php:1038 +#: ../../Zotlabs/Module/Cdav.php:1065 msgid "List week" msgstr "Lista semanal" -#: ../../Zotlabs/Module/Cdav.php:1039 +#: ../../Zotlabs/Module/Cdav.php:1066 msgid "List day" msgstr "Lista diaria" -#: ../../Zotlabs/Module/Cdav.php:1047 +#: ../../Zotlabs/Module/Cdav.php:1074 msgid "More" msgstr "Más" -#: ../../Zotlabs/Module/Cdav.php:1048 +#: ../../Zotlabs/Module/Cdav.php:1075 msgid "Less" msgstr "Menos" -#: ../../Zotlabs/Module/Cdav.php:1050 +#: ../../Zotlabs/Module/Cdav.php:1077 msgid "Select calendar" msgstr "Seleccionar un calendario" -#: ../../Zotlabs/Module/Cdav.php:1053 +#: ../../Zotlabs/Module/Cdav.php:1080 msgid "Delete all" msgstr "Eliminar todos" -#: ../../Zotlabs/Module/Cdav.php:1056 +#: ../../Zotlabs/Module/Cdav.php:1083 msgid "Sorry! Editing of recurrent events is not yet implemented." msgstr "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado." -#: ../../Zotlabs/Module/Cdav.php:1369 ../../Zotlabs/Module/Connedit.php:925 +#: ../../Zotlabs/Module/Cdav.php:1374 ../../Zotlabs/Module/Connedit.php:924 msgid "Organisation" msgstr "Organización" -#: ../../Zotlabs/Module/Cdav.php:1371 ../../Zotlabs/Module/Profiles.php:788 -#: ../../Zotlabs/Module/Connedit.php:927 +#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Connedit.php:926 msgid "Phone" msgstr "Teléfono" -#: ../../Zotlabs/Module/Cdav.php:1373 ../../Zotlabs/Module/Profiles.php:790 -#: ../../Zotlabs/Module/Connedit.php:929 +#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Connedit.php:928 msgid "Instant messenger" msgstr "Mensajería instantánea" -#: ../../Zotlabs/Module/Cdav.php:1374 ../../Zotlabs/Module/Profiles.php:791 -#: ../../Zotlabs/Module/Connedit.php:930 +#: ../../Zotlabs/Module/Cdav.php:1379 ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Connedit.php:929 msgid "Website" msgstr "Sitio web" -#: ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Cdav.php:1380 #: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Profiles.php:504 ../../Zotlabs/Module/Profiles.php:792 -#: ../../Zotlabs/Module/Connedit.php:931 ../../Zotlabs/Module/Locs.php:118 +#: ../../Zotlabs/Module/Profiles.php:502 ../../Zotlabs/Module/Profiles.php:790 +#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Locs.php:118 msgid "Address" msgstr "Dirección" -#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Profiles.php:793 -#: ../../Zotlabs/Module/Connedit.php:932 +#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Connedit.php:931 msgid "Note" msgstr "Nota" -#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:798 +#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Profiles.php:797 #: ../../Zotlabs/Module/Connedit.php:937 -msgid "Add Contact" -msgstr "Añadir un contacto" - -#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Profiles.php:799 -#: ../../Zotlabs/Module/Connedit.php:938 msgid "Add Field" msgstr "Añadir un campo" -#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Connedit.php:943 +#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:942 msgid "P.O. Box" msgstr "Buzón de correos" -#: ../../Zotlabs/Module/Cdav.php:1388 ../../Zotlabs/Module/Connedit.php:944 +#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Connedit.php:943 msgid "Additional" msgstr "Adicional" -#: ../../Zotlabs/Module/Cdav.php:1389 ../../Zotlabs/Module/Connedit.php:945 +#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:944 msgid "Street" msgstr "Calle" -#: ../../Zotlabs/Module/Cdav.php:1390 ../../Zotlabs/Module/Connedit.php:946 +#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:945 msgid "Locality" msgstr "Localidad" -#: ../../Zotlabs/Module/Cdav.php:1391 ../../Zotlabs/Module/Connedit.php:947 +#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:946 msgid "Region" msgstr "Provincia, región o estado" -#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:948 +#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:947 msgid "ZIP Code" msgstr "Código postal" -#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Profiles.php:759 -#: ../../Zotlabs/Module/Connedit.php:949 +#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Connedit.php:948 msgid "Country" msgstr "País" -#: ../../Zotlabs/Module/Cdav.php:1452 +#: ../../Zotlabs/Module/Cdav.php:1445 msgid "Default Calendar" msgstr "Calendario por defecto" -#: ../../Zotlabs/Module/Cdav.php:1463 +#: ../../Zotlabs/Module/Cdav.php:1456 msgid "Default Addressbook" msgstr "Agenda de direcciones por defecto" @@ -9637,32 +9533,36 @@ msgstr "La información privada remota no está disponible." msgid "Visible to:" msgstr "Visible para:" -#: ../../Zotlabs/Module/Item.php:634 +#: ../../Zotlabs/Module/Item.php:382 +msgid "Unable to locate original post." +msgstr "No ha sido posible encontrar la entrada original." + +#: ../../Zotlabs/Module/Item.php:668 msgid "Empty post discarded." msgstr "La entrada vacía ha sido desechada." -#: ../../Zotlabs/Module/Item.php:1086 +#: ../../Zotlabs/Module/Item.php:1077 msgid "Duplicate post suppressed." msgstr "Se ha suprimido la entrada duplicada." -#: ../../Zotlabs/Module/Item.php:1231 +#: ../../Zotlabs/Module/Item.php:1222 msgid "System error. Post not saved." msgstr "Error del sistema. La entrada no se ha podido salvar." -#: ../../Zotlabs/Module/Item.php:1265 +#: ../../Zotlabs/Module/Item.php:1252 msgid "Your comment is awaiting approval." msgstr "Su comentario está pendiente de aprobación." -#: ../../Zotlabs/Module/Item.php:1382 +#: ../../Zotlabs/Module/Item.php:1369 msgid "Unable to obtain post information from database." msgstr "No ha sido posible obtener información de la entrada en la base de datos." -#: ../../Zotlabs/Module/Item.php:1389 +#: ../../Zotlabs/Module/Item.php:1376 #, php-format msgid "You have reached your limit of %1$.0f top level posts." msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal." -#: ../../Zotlabs/Module/Item.php:1396 +#: ../../Zotlabs/Module/Item.php:1383 #, php-format msgid "You have reached your limit of %1$.0f webpages." msgstr "Ha alcanzado su límite de %1$.0f páginas web." @@ -9693,7 +9593,7 @@ msgid "Menu Item Permissions" msgstr "Permisos del elemento del menú" #: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247 -#: ../../Zotlabs/Module/Settings/Channel.php:527 +#: ../../Zotlabs/Module/Settings/Channel.php:526 msgid "(click to open/close)" msgstr "(pulsar para abrir o cerrar)" @@ -9797,24 +9697,24 @@ msgstr "Texto del enlace" msgid "vcard" msgstr "vcard" -#: ../../Zotlabs/Module/Sharedwithme.php:105 +#: ../../Zotlabs/Module/Sharedwithme.php:103 msgid "Files: shared with me" msgstr "Ficheros: compartidos conmigo" -#: ../../Zotlabs/Module/Sharedwithme.php:107 +#: ../../Zotlabs/Module/Sharedwithme.php:105 msgid "NEW" msgstr "NUEVO" -#: ../../Zotlabs/Module/Sharedwithme.php:109 +#: ../../Zotlabs/Module/Sharedwithme.php:107 #: ../../Zotlabs/Storage/Browser.php:294 msgid "Last Modified" msgstr "Última modificación" -#: ../../Zotlabs/Module/Sharedwithme.php:110 +#: ../../Zotlabs/Module/Sharedwithme.php:108 msgid "Remove all files" msgstr "Eliminar todos los ficheros" -#: ../../Zotlabs/Module/Sharedwithme.php:111 +#: ../../Zotlabs/Module/Sharedwithme.php:109 msgid "Remove this file" msgstr "Eliminar este fichero" @@ -9822,23 +9722,23 @@ msgstr "Eliminar este fichero" msgid "Documentation Search" msgstr "Búsqueda de Documentación" -#: ../../Zotlabs/Module/Help.php:85 +#: ../../Zotlabs/Module/Help.php:82 msgid "Administrators" msgstr "Administradores" -#: ../../Zotlabs/Module/Help.php:86 +#: ../../Zotlabs/Module/Help.php:83 msgid "Developers" msgstr "Desarrolladores" -#: ../../Zotlabs/Module/Help.php:87 +#: ../../Zotlabs/Module/Help.php:84 msgid "Tutorials" msgstr "Tutoriales" -#: ../../Zotlabs/Module/Help.php:98 +#: ../../Zotlabs/Module/Help.php:95 msgid "$Projectname Documentation" msgstr "Documentación de $Projectname" -#: ../../Zotlabs/Module/Help.php:99 +#: ../../Zotlabs/Module/Help.php:96 msgid "Contents" msgstr "Contenidos" @@ -9961,46 +9861,56 @@ msgstr "Eliminar etiqueta del elemento." msgid "Select a tag to remove: " msgstr "Seleccionar una etiqueta para eliminar:" -#: ../../Zotlabs/Module/Connect.php:65 ../../Zotlabs/Module/Connect.php:118 +#: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135 msgid "Continue" msgstr "Continuar" -#: ../../Zotlabs/Module/Connect.php:99 +#: ../../Zotlabs/Module/Connect.php:104 +msgid "Premium Channel App" +msgstr "App Canal premium" + +#: ../../Zotlabs/Module/Connect.php:105 +msgid "" +"Allows you to set restrictions and terms on those that connect with your " +"channel" +msgstr "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal" + +#: ../../Zotlabs/Module/Connect.php:116 msgid "Premium Channel Setup" msgstr "Configuración del canal premium" -#: ../../Zotlabs/Module/Connect.php:101 +#: ../../Zotlabs/Module/Connect.php:118 msgid "Enable premium channel connection restrictions" msgstr "Habilitar restricciones de conexión del canal premium" -#: ../../Zotlabs/Module/Connect.php:102 +#: ../../Zotlabs/Module/Connect.php:119 msgid "" "Please enter your restrictions or conditions, such as paypal receipt, usage " "guidelines, etc." msgstr "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc." -#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Connect.php:124 +#: ../../Zotlabs/Module/Connect.php:121 ../../Zotlabs/Module/Connect.php:141 msgid "" "This channel may require additional steps or acknowledgement of the " "following conditions prior to connecting:" msgstr "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:" -#: ../../Zotlabs/Module/Connect.php:105 +#: ../../Zotlabs/Module/Connect.php:122 msgid "" "Potential connections will then see the following text before proceeding:" msgstr "Las posibles conexiones verán, por tanto, el siguiente texto antes de proceder:" -#: ../../Zotlabs/Module/Connect.php:106 ../../Zotlabs/Module/Connect.php:127 +#: ../../Zotlabs/Module/Connect.php:123 ../../Zotlabs/Module/Connect.php:144 msgid "" "By continuing, I certify that I have complied with any instructions provided" " on this page." msgstr "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página." -#: ../../Zotlabs/Module/Connect.php:115 +#: ../../Zotlabs/Module/Connect.php:132 msgid "(No specific instructions have been provided by the channel owner.)" msgstr "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)" -#: ../../Zotlabs/Module/Connect.php:123 +#: ../../Zotlabs/Module/Connect.php:140 msgid "Restricted or Premium Channel" msgstr "Canal premium o restringido" @@ -10016,16 +9926,16 @@ msgstr "Por favor, recargue la página" msgid "Unknown error" msgstr "Error desconocido" -#: ../../Zotlabs/Module/Share.php:104 ../../Zotlabs/Lib/Activity.php:2068 +#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1671 #, php-format msgid "🔁 Repeated %1$s's %2$s" msgstr "🔁 Repetidos %2$sde %1$s" -#: ../../Zotlabs/Module/Share.php:120 +#: ../../Zotlabs/Module/Share.php:119 msgid "Post repeated" msgstr "Entrada repetida" -#: ../../Zotlabs/Module/Acl.php:361 +#: ../../Zotlabs/Module/Acl.php:360 msgid "network" msgstr "red" @@ -10037,11 +9947,11 @@ msgstr "El elemento no es editable" msgid "Edit post" msgstr "Editar la entrada" -#: ../../Zotlabs/Module/Tagger.php:50 +#: ../../Zotlabs/Module/Tagger.php:48 msgid "Post not found." msgstr "Mensaje no encontrado." -#: ../../Zotlabs/Module/Tagger.php:121 +#: ../../Zotlabs/Module/Tagger.php:119 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "%1$s ha etiquetado %3$s de %2$s con %4$s" @@ -10120,9 +10030,9 @@ msgstr "Instantánea de pantalla" #: ../../Zotlabs/Module/Admin/Themes.php:122 #: ../../Zotlabs/Module/Admin/Themes.php:156 -#: ../../Zotlabs/Module/Admin/Security.php:98 +#: ../../Zotlabs/Module/Admin/Security.php:92 #: ../../Zotlabs/Module/Admin/Accounts.php:166 -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:287 #: ../../Zotlabs/Module/Admin/Logs.php:82 #: ../../Zotlabs/Module/Admin/Channels.php:145 #: ../../Zotlabs/Module/Admin/Addons.php:342 @@ -10163,139 +10073,127 @@ msgstr "Bloquear la funcionalidad %s" msgid "Manage Additional Features" msgstr "Gestionar las funcionalidades" -#: ../../Zotlabs/Module/Admin/Security.php:89 +#: ../../Zotlabs/Module/Admin/Security.php:83 msgid "" "By default, unfiltered HTML is allowed in embedded media. This is inherently" " insecure." msgstr "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro." -#: ../../Zotlabs/Module/Admin/Security.php:92 +#: ../../Zotlabs/Module/Admin/Security.php:86 msgid "" "The recommended setting is to only allow unfiltered HTML from the following " "sites:" msgstr "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: " -#: ../../Zotlabs/Module/Admin/Security.php:93 +#: ../../Zotlabs/Module/Admin/Security.php:87 msgid "" "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br" " />https://vimeo.com/<br />https://soundcloud.com/<br />" msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />" -#: ../../Zotlabs/Module/Admin/Security.php:94 +#: ../../Zotlabs/Module/Admin/Security.php:88 msgid "" "All other embedded content will be filtered, <strong>unless</strong> " "embedded content from that site is explicitly blocked." msgstr "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita." -#: ../../Zotlabs/Module/Admin/Security.php:101 +#: ../../Zotlabs/Module/Admin/Security.php:95 msgid "Block public" msgstr "Bloquear páginas públicas" -#: ../../Zotlabs/Module/Admin/Security.php:101 +#: ../../Zotlabs/Module/Admin/Security.php:95 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently authenticated." msgstr "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado." -#: ../../Zotlabs/Module/Admin/Security.php:102 +#: ../../Zotlabs/Module/Admin/Security.php:96 msgid "Provide a cloud root directory" msgstr "Proporcionar un directorio raíz de la nube" -#: ../../Zotlabs/Module/Admin/Security.php:102 +#: ../../Zotlabs/Module/Admin/Security.php:96 msgid "" "The cloud root directory lists all channel names which provide public files" msgstr "El directorio raíz de la nube lista todos los nombres de canales que proporcionan archivos públicos" -#: ../../Zotlabs/Module/Admin/Security.php:103 +#: ../../Zotlabs/Module/Admin/Security.php:97 msgid "Show total disk space available to cloud uploads" msgstr "Mostrar el espacio total disponible en el disco para las cargas en la nube" -#: ../../Zotlabs/Module/Admin/Security.php:104 +#: ../../Zotlabs/Module/Admin/Security.php:98 msgid "Set \"Transport Security\" HTTP header" msgstr "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP" -#: ../../Zotlabs/Module/Admin/Security.php:105 +#: ../../Zotlabs/Module/Admin/Security.php:99 msgid "Set \"Content Security Policy\" HTTP header" msgstr "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP" -#: ../../Zotlabs/Module/Admin/Security.php:106 +#: ../../Zotlabs/Module/Admin/Security.php:100 msgid "Allowed email domains" msgstr "Se aceptan dominios de correo electrónico" -#: ../../Zotlabs/Module/Admin/Security.php:106 +#: ../../Zotlabs/Module/Admin/Security.php:100 msgid "" "Comma separated list of domains which are allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains" msgstr "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. " -#: ../../Zotlabs/Module/Admin/Security.php:107 +#: ../../Zotlabs/Module/Admin/Security.php:101 msgid "Not allowed email domains" msgstr "No se permiten dominios de correo electrónico" -#: ../../Zotlabs/Module/Admin/Security.php:107 +#: ../../Zotlabs/Module/Admin/Security.php:101 msgid "" "Comma separated list of domains which are not allowed in email addresses for" " registrations to this site. Wildcards are accepted. Empty to allow any " "domains, unless allowed domains have been defined." msgstr "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado." -#: ../../Zotlabs/Module/Admin/Security.php:108 +#: ../../Zotlabs/Module/Admin/Security.php:102 msgid "Allow communications only from these sites" msgstr "Permitir la comunicación solo desde estos sitios" -#: ../../Zotlabs/Module/Admin/Security.php:108 +#: ../../Zotlabs/Module/Admin/Security.php:102 msgid "" "One site per line. Leave empty to allow communication from anywhere by " "default" msgstr "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" -#: ../../Zotlabs/Module/Admin/Security.php:109 +#: ../../Zotlabs/Module/Admin/Security.php:103 msgid "Block communications from these sites" msgstr "Bloquear la comunicación desde estos sitios" -#: ../../Zotlabs/Module/Admin/Security.php:110 +#: ../../Zotlabs/Module/Admin/Security.php:104 msgid "Allow communications only from these channels" msgstr "Permitir la comunicación solo desde estos canales" -#: ../../Zotlabs/Module/Admin/Security.php:110 +#: ../../Zotlabs/Module/Admin/Security.php:104 msgid "" "One channel (hash) per line. Leave empty to allow from any channel by " "default" msgstr "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" -#: ../../Zotlabs/Module/Admin/Security.php:111 +#: ../../Zotlabs/Module/Admin/Security.php:105 msgid "Block communications from these channels" msgstr "Bloquear la comunicación desde estos canales" -#: ../../Zotlabs/Module/Admin/Security.php:112 +#: ../../Zotlabs/Module/Admin/Security.php:106 msgid "Only allow embeds from secure (SSL) websites and links." msgstr "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)." -#: ../../Zotlabs/Module/Admin/Security.php:113 +#: ../../Zotlabs/Module/Admin/Security.php:107 msgid "Allow unfiltered embedded HTML content only from these domains" msgstr "Permitir contenido HTML sin filtrar sólo desde estos dominios " -#: ../../Zotlabs/Module/Admin/Security.php:113 +#: ../../Zotlabs/Module/Admin/Security.php:107 msgid "One site per line. By default embedded content is filtered." msgstr "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada." -#: ../../Zotlabs/Module/Admin/Security.php:114 +#: ../../Zotlabs/Module/Admin/Security.php:108 msgid "Block embedded HTML from these domains" msgstr "Bloquear contenido con HTML incorporado desde estos dominios" -#: ../../Zotlabs/Module/Admin/Security.php:115 -msgid "Allow SVG thumbnails in file browser" -msgstr "Permitir miniaturas SVG en el navegador de archivos" - -#: ../../Zotlabs/Module/Admin/Security.php:115 -msgid "WARNING: SVG images may contain malicious code." -msgstr "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso." - -#: ../../Zotlabs/Module/Admin/Security.php:116 -msgid "Allow embedded (inline) PDF files" -msgstr "Permitir ficheros PDF incrustados (en línea)" - #: ../../Zotlabs/Module/Admin/Accounts.php:37 #, php-format msgid "%s account blocked/unblocked" @@ -10342,12 +10240,12 @@ msgid "No registrations." msgstr "Sin registros." #: ../../Zotlabs/Module/Admin/Accounts.php:176 -#: ../../Zotlabs/Module/Connedit.php:637 +#: ../../Zotlabs/Module/Connedit.php:636 msgid "Block" msgstr "Bloquear" #: ../../Zotlabs/Module/Admin/Accounts.php:177 -#: ../../Zotlabs/Module/Connedit.php:637 +#: ../../Zotlabs/Module/Connedit.php:636 msgid "Unblock" msgstr "Desbloquear" @@ -10387,422 +10285,430 @@ msgid "" "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?" -#: ../../Zotlabs/Module/Admin/Site.php:159 +#: ../../Zotlabs/Module/Admin/Site.php:161 msgid "Site settings updated." msgstr "Ajustes del sitio actualizados." -#: ../../Zotlabs/Module/Admin/Site.php:196 -#: ../../Zotlabs/Module/Settings/Display.php:120 +#: ../../Zotlabs/Module/Admin/Site.php:198 +#: ../../Zotlabs/Module/Settings/Display.php:119 #, php-format msgid "%s - (Incompatible)" msgstr "%s - (Incompatible)" -#: ../../Zotlabs/Module/Admin/Site.php:203 +#: ../../Zotlabs/Module/Admin/Site.php:205 msgid "mobile" msgstr "móvil" -#: ../../Zotlabs/Module/Admin/Site.php:205 +#: ../../Zotlabs/Module/Admin/Site.php:207 msgid "experimental" msgstr "experimental" -#: ../../Zotlabs/Module/Admin/Site.php:207 +#: ../../Zotlabs/Module/Admin/Site.php:209 msgid "unsupported" msgstr "no soportado" -#: ../../Zotlabs/Module/Admin/Site.php:254 +#: ../../Zotlabs/Module/Admin/Site.php:256 msgid "Yes - with approval" msgstr "Sí - con aprobación" -#: ../../Zotlabs/Module/Admin/Site.php:260 +#: ../../Zotlabs/Module/Admin/Site.php:262 msgid "My site is not a public server" msgstr "Mi sitio no es un servidor público" -#: ../../Zotlabs/Module/Admin/Site.php:261 +#: ../../Zotlabs/Module/Admin/Site.php:263 msgid "My site has paid access only" msgstr "Mi sitio es un servicio de pago" -#: ../../Zotlabs/Module/Admin/Site.php:262 +#: ../../Zotlabs/Module/Admin/Site.php:264 msgid "My site has free access only" msgstr "Mi sitio es un servicio gratuito" -#: ../../Zotlabs/Module/Admin/Site.php:263 +#: ../../Zotlabs/Module/Admin/Site.php:265 msgid "My site offers free accounts with optional paid upgrades" msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago" -#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:279 msgid "Default permission role for new accounts" msgstr "Permisos de rol por defecto para las nuevas cuentas" -#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:279 msgid "" "This role will be used for the first channel created after registration." msgstr "Este rol se utilizará para el primer canal creado después del registro." -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "File upload" msgstr "Subir fichero" -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:292 msgid "Policies" msgstr "Políticas" -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Banner/Logo" msgstr "Banner/Logo" -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Unfiltered HTML/CSS/JS is allowed" msgstr "Se permite HTML/CSS/JS sin filtrar" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:300 msgid "Administrator Information" msgstr "Información del Administrador" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:300 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:301 #: ../../Zotlabs/Module/Siteinfo.php:24 msgid "Site Information" msgstr "Información sobre el sitio" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:301 msgid "" "Publicly visible description of this site. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:302 msgid "System language" msgstr "Idioma del sistema" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "System theme" msgstr "Tema gráfico del sistema" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "Allow Feeds as Connections" msgstr "Permitir contenidos RSS como conexiones" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "(Heavy system resource usage)" msgstr "(Uso intenso de los recursos del sistema)" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Maximum image size" msgstr "Tamaño máximo de la imagen" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites." -#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "Does this site allow new member registration?" msgstr "¿Debe este sitio permitir el registro de nuevos miembros?" -#: ../../Zotlabs/Module/Admin/Site.php:307 +#: ../../Zotlabs/Module/Admin/Site.php:309 msgid "Invitation only" msgstr "Solo con una invitación" -#: ../../Zotlabs/Module/Admin/Site.php:307 +#: ../../Zotlabs/Module/Admin/Site.php:309 msgid "" "Only allow new member registrations with an invitation code. Above register " "policy must be set to Yes." msgstr "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"." -#: ../../Zotlabs/Module/Admin/Site.php:308 +#: ../../Zotlabs/Module/Admin/Site.php:310 msgid "Minimum age" msgstr "Edad mínima" -#: ../../Zotlabs/Module/Admin/Site.php:308 +#: ../../Zotlabs/Module/Admin/Site.php:310 msgid "Minimum age (in years) for who may register on this site." msgstr "Edad mínima (en años) para poder registrarse en este sitio." -#: ../../Zotlabs/Module/Admin/Site.php:309 +#: ../../Zotlabs/Module/Admin/Site.php:311 msgid "Which best describes the types of account offered by this hub?" msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?" -#: ../../Zotlabs/Module/Admin/Site.php:309 +#: ../../Zotlabs/Module/Admin/Site.php:311 msgid "This is displayed on the public server site list." msgstr "Esto se muestra en la lista de sitios de servidores públicos." -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:312 msgid "Register text" msgstr "Texto del registro" -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:312 msgid "Will be displayed prominently on the registration page." msgstr "Se mostrará de forma destacada en la página de registro." -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "Site homepage to show visitors (default: login box)" msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)" -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "" "example: 'pubstream' to show public stream, 'page/sys/home' to show a system" " webpage called 'home' or 'include:home.html' to include a file." msgstr "ejemplo: 'pubstream' para mostrar el stream público, 'page/sys/home' para mostrar una página web del sistema llamada 'home' o 'include:home.html' para incluir un archivo." -#: ../../Zotlabs/Module/Admin/Site.php:313 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "Preserve site homepage URL" msgstr "Preservar la dirección de la página personal" -#: ../../Zotlabs/Module/Admin/Site.php:313 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla." -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "Accounts abandoned after x days" msgstr "Cuentas abandonadas después de x días" -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo." -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:317 msgid "Allowed friend domains" msgstr "Dominios amigos permitidos" -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:317 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio." -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:318 msgid "Verify Email Addresses" msgstr "Verificar las direcciones de correo electrónico" -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:318 msgid "" "Check to verify email addresses used in account registration (recommended)." msgstr "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)." -#: ../../Zotlabs/Module/Admin/Site.php:317 +#: ../../Zotlabs/Module/Admin/Site.php:319 msgid "Force publish" msgstr "Forzar la publicación" -#: ../../Zotlabs/Module/Admin/Site.php:317 +#: ../../Zotlabs/Module/Admin/Site.php:319 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio." -#: ../../Zotlabs/Module/Admin/Site.php:318 +#: ../../Zotlabs/Module/Admin/Site.php:320 msgid "Import Public Streams" msgstr "Importar contenido público" -#: ../../Zotlabs/Module/Admin/Site.php:318 +#: ../../Zotlabs/Module/Admin/Site.php:320 msgid "" "Import and allow access to public content pulled from other sites. Warning: " "this content is unmoderated." msgstr "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas." -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../Zotlabs/Module/Admin/Site.php:321 msgid "Site only Public Streams" msgstr "Solo contenido público en este sitio" -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../Zotlabs/Module/Admin/Site.php:321 msgid "" "Allow access to public content originating only from this site if Imported " "Public Streams are disabled." msgstr "Permitir el acceso al contenido público originado sólo desde este sitio si los \"streams\" públicos Importados están deshabilitados." -#: ../../Zotlabs/Module/Admin/Site.php:320 +#: ../../Zotlabs/Module/Admin/Site.php:322 msgid "Allow anybody on the internet to access the Public streams" msgstr "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos" -#: ../../Zotlabs/Module/Admin/Site.php:320 +#: ../../Zotlabs/Module/Admin/Site.php:322 msgid "" "Disable to require authentication before viewing. Warning: this content is " "unmoderated." msgstr "Desactivar para requerir autenticación antes de la visualización. Advertencia: este contenido no está moderado." -#: ../../Zotlabs/Module/Admin/Site.php:321 +#: ../../Zotlabs/Module/Admin/Site.php:323 msgid "Only import Public stream posts with this text" msgstr "Importar solo entradas del stream púlbico con este texto " -#: ../../Zotlabs/Module/Admin/Site.php:321 -#: ../../Zotlabs/Module/Admin/Site.php:322 -#: ../../Zotlabs/Module/Connedit.php:893 ../../Zotlabs/Module/Connedit.php:894 +#: ../../Zotlabs/Module/Admin/Site.php:323 +#: ../../Zotlabs/Module/Admin/Site.php:324 +#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893 msgid "" "words one per line or #tags or /patterns/ or lang=xx, leave blank to import " "all posts" msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo" -#: ../../Zotlabs/Module/Admin/Site.php:322 +#: ../../Zotlabs/Module/Admin/Site.php:324 msgid "Do not import Public stream posts with this text" msgstr "No importar entradas del stream público con este texto " -#: ../../Zotlabs/Module/Admin/Site.php:325 +#: ../../Zotlabs/Module/Admin/Site.php:327 msgid "Login on Homepage" msgstr "Iniciar sesión en la página personal" -#: ../../Zotlabs/Module/Admin/Site.php:325 +#: ../../Zotlabs/Module/Admin/Site.php:327 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido." -#: ../../Zotlabs/Module/Admin/Site.php:326 +#: ../../Zotlabs/Module/Admin/Site.php:328 msgid "Enable context help" msgstr "Habilitar la ayuda contextual" -#: ../../Zotlabs/Module/Admin/Site.php:326 +#: ../../Zotlabs/Module/Admin/Site.php:328 msgid "" "Display contextual help for the current page when the help button is " "pressed." msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda." -#: ../../Zotlabs/Module/Admin/Site.php:328 +#: ../../Zotlabs/Module/Admin/Site.php:330 msgid "Reply-to email address for system generated email." msgstr "Dirección de respuesta para el correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:329 +#: ../../Zotlabs/Module/Admin/Site.php:331 msgid "Sender (From) email address for system generated email." msgstr "Dirección del remitente (From) para el correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:330 +#: ../../Zotlabs/Module/Admin/Site.php:332 msgid "Name of email sender for system generated email." msgstr "Nombre del remitente del correo electrónico generado por el sistema." -#: ../../Zotlabs/Module/Admin/Site.php:332 +#: ../../Zotlabs/Module/Admin/Site.php:334 msgid "Directory Server URL" msgstr "URL del servidor de directorio" -#: ../../Zotlabs/Module/Admin/Site.php:332 +#: ../../Zotlabs/Module/Admin/Site.php:334 msgid "Default directory server" msgstr "Servidor de directorio predeterminado" -#: ../../Zotlabs/Module/Admin/Site.php:334 +#: ../../Zotlabs/Module/Admin/Site.php:336 msgid "Proxy user" msgstr "Usuario del proxy" -#: ../../Zotlabs/Module/Admin/Site.php:335 +#: ../../Zotlabs/Module/Admin/Site.php:337 msgid "Proxy URL" msgstr "Dirección del proxy" -#: ../../Zotlabs/Module/Admin/Site.php:336 +#: ../../Zotlabs/Module/Admin/Site.php:338 msgid "Network timeout" msgstr "Tiempo de espera de la red" -#: ../../Zotlabs/Module/Admin/Site.php:336 +#: ../../Zotlabs/Module/Admin/Site.php:338 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)" -#: ../../Zotlabs/Module/Admin/Site.php:337 +#: ../../Zotlabs/Module/Admin/Site.php:339 msgid "Delivery interval" msgstr "Intervalo de entrega" -#: ../../Zotlabs/Module/Admin/Site.php:337 +#: ../../Zotlabs/Module/Admin/Site.php:339 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados." -#: ../../Zotlabs/Module/Admin/Site.php:338 +#: ../../Zotlabs/Module/Admin/Site.php:340 msgid "Deliveries per process" msgstr "Intentos de envío por proceso" -#: ../../Zotlabs/Module/Admin/Site.php:338 +#: ../../Zotlabs/Module/Admin/Site.php:340 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust" " if necessary to tune system performance. Recommend: 1-5." msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5." -#: ../../Zotlabs/Module/Admin/Site.php:339 +#: ../../Zotlabs/Module/Admin/Site.php:341 msgid "Queue Threshold" msgstr "Umbral de la cola de espera" -#: ../../Zotlabs/Module/Admin/Site.php:339 +#: ../../Zotlabs/Module/Admin/Site.php:341 msgid "" "Always defer immediate delivery if queue contains more than this number of " "entries." msgstr "Aplazar siempre la entrega inmediata si la cola contiene más de este número de entradas." -#: ../../Zotlabs/Module/Admin/Site.php:340 +#: ../../Zotlabs/Module/Admin/Site.php:342 msgid "Poll interval" msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos" -#: ../../Zotlabs/Module/Admin/Site.php:340 +#: ../../Zotlabs/Module/Admin/Site.php:342 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega." -#: ../../Zotlabs/Module/Admin/Site.php:341 +#: ../../Zotlabs/Module/Admin/Site.php:343 msgid "Path to ImageMagick convert program" msgstr "Ruta al programa de conversión de ImageMagick" -#: ../../Zotlabs/Module/Admin/Site.php:341 +#: ../../Zotlabs/Module/Admin/Site.php:343 msgid "" "If set, use this program to generate photo thumbnails for huge images ( > " "4000 pixels in either dimension), otherwise memory exhaustion may occur. " "Example: /usr/bin/convert" msgstr "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert" -#: ../../Zotlabs/Module/Admin/Site.php:342 +#: ../../Zotlabs/Module/Admin/Site.php:344 +msgid "Allow SVG thumbnails in file browser" +msgstr "Permitir miniaturas SVG en el navegador de archivos" + +#: ../../Zotlabs/Module/Admin/Site.php:344 +msgid "WARNING: SVG images may contain malicious code." +msgstr "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso." + +#: ../../Zotlabs/Module/Admin/Site.php:345 msgid "Maximum Load Average" msgstr "Carga media máxima" -#: ../../Zotlabs/Module/Admin/Site.php:342 +#: ../../Zotlabs/Module/Admin/Site.php:345 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50." -#: ../../Zotlabs/Module/Admin/Site.php:343 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "Expiration period in days for imported (grid/network) content" msgstr "Caducidad del contenido importado de otros sitios (en días)" -#: ../../Zotlabs/Module/Admin/Site.php:343 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "0 for no expiration of imported content" msgstr "0 para que no caduque el contenido importado" -#: ../../Zotlabs/Module/Admin/Site.php:344 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "" "Do not expire any posts which have comments less than this many days ago" msgstr "No caduque ningún mensaje que tenga menos comentarios que este hace muchos días" -#: ../../Zotlabs/Module/Admin/Site.php:346 +#: ../../Zotlabs/Module/Admin/Site.php:349 msgid "" "Public servers: Optional landing (marketing) webpage for new registrants" msgstr "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros" -#: ../../Zotlabs/Module/Admin/Site.php:346 +#: ../../Zotlabs/Module/Admin/Site.php:349 #, php-format msgid "Create this page first. Default is %s/register" msgstr "Crear esta página primero. Por defecto es %s/register" -#: ../../Zotlabs/Module/Admin/Site.php:347 +#: ../../Zotlabs/Module/Admin/Site.php:350 msgid "Page to display after creating a new channel" msgstr "Página a mostrar después de la creación de un nuevo canal" -#: ../../Zotlabs/Module/Admin/Site.php:347 +#: ../../Zotlabs/Module/Admin/Site.php:350 msgid "Default: profiles" msgstr "Perfiles predeterminados" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:352 msgid "Optional: site location" msgstr "Opcional: ubicación del sitio" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:352 msgid "Region or country" msgstr "Región o país" @@ -10883,12 +10789,10 @@ msgid "Channel '%s' code disallowed" msgstr "Código no permitido al canal '%s'" #: ../../Zotlabs/Module/Admin/Channels.php:150 -#: ../../Zotlabs/Module/Directory.php:360 msgid "Censor" msgstr "Censurar" #: ../../Zotlabs/Module/Admin/Channels.php:151 -#: ../../Zotlabs/Module/Directory.php:360 msgid "Uncensor" msgstr "No censurar" @@ -11221,7 +11125,7 @@ msgid "" msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red" #: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:595 +#: ../../Zotlabs/Module/Settings/Channel.php:594 msgid "Remove Channel" msgstr "Eliminar el canal" @@ -11335,7 +11239,7 @@ msgstr "%d nuevas solicitudes de conexión" msgid "Delegated Channel" msgstr "Canal delegado" -#: ../../Zotlabs/Module/Chanview.php:128 +#: ../../Zotlabs/Module/Chanview.php:139 msgid "toggle full screen mode" msgstr "cambiar al modo de pantalla completa" @@ -11355,33 +11259,33 @@ msgstr "Ausente" msgid "Online" msgstr "Conectado/a" -#: ../../Zotlabs/Module/Permcats.php:29 +#: ../../Zotlabs/Module/Permcats.php:28 msgid "Permission category name is required." msgstr "El nombre de la categoría de permiso es obligatorio." -#: ../../Zotlabs/Module/Permcats.php:48 +#: ../../Zotlabs/Module/Permcats.php:47 msgid "Permission category saved." msgstr "Se ha guardado la categoría del permiso." -#: ../../Zotlabs/Module/Permcats.php:63 +#: ../../Zotlabs/Module/Permcats.php:62 msgid "Permission Categories App" msgstr "App Categorías de permisos" -#: ../../Zotlabs/Module/Permcats.php:64 +#: ../../Zotlabs/Module/Permcats.php:63 msgid "Create custom connection permission limits" msgstr "Crear límites de permisos de conexión personalizados" -#: ../../Zotlabs/Module/Permcats.php:80 +#: ../../Zotlabs/Module/Permcats.php:79 msgid "" "Use this form to create permission rules for various classes of people or " "connections." msgstr "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones." -#: ../../Zotlabs/Module/Permcats.php:113 ../../Zotlabs/Lib/Apps.php:374 +#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 msgid "Permission Categories" msgstr "Tipos de permisos" -#: ../../Zotlabs/Module/Permcats.php:121 +#: ../../Zotlabs/Module/Permcats.php:120 msgid "Permission category name" msgstr "Nombre de categoría de permiso" @@ -11448,11 +11352,11 @@ msgstr "No se puede encontrar su servidor." msgid "Post successful." msgstr "Enviado con éxito." -#: ../../Zotlabs/Module/Moderate.php:67 +#: ../../Zotlabs/Module/Moderate.php:65 msgid "Comment approved" msgstr "El comentario ha sido aprobado" -#: ../../Zotlabs/Module/Moderate.php:71 +#: ../../Zotlabs/Module/Moderate.php:69 msgid "Comment deleted" msgstr "Se ha eliminado el comentario" @@ -11563,11 +11467,11 @@ msgid "" " please import or restore these in date order (oldest first)." msgstr "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1$s\">%2$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)." -#: ../../Zotlabs/Module/Display.php:401 +#: ../../Zotlabs/Module/Display.php:396 msgid "Article" msgstr "Artículo" -#: ../../Zotlabs/Module/Display.php:453 +#: ../../Zotlabs/Module/Display.php:448 msgid "Item has been removed." msgstr "Se ha eliminado el elemento." @@ -11645,51 +11549,42 @@ msgstr "Validar" msgid "Hub not found." msgstr "Servidor no encontrado" -#: ../../Zotlabs/Module/Ping.php:337 ../../Zotlabs/Lib/Enotify.php:948 +#: ../../Zotlabs/Module/Ping.php:337 msgid "sent you a private message" msgstr "le ha enviado un mensaje privado" -#: ../../Zotlabs/Module/Ping.php:393 ../../Zotlabs/Lib/Enotify.php:914 +#: ../../Zotlabs/Module/Ping.php:393 msgid "added your channel" msgstr "añadió este canal a sus conexiones" -#: ../../Zotlabs/Module/Ping.php:418 ../../Zotlabs/Lib/Enotify.php:986 +#: ../../Zotlabs/Module/Ping.php:418 msgid "requires approval" msgstr "requiere aprobación" -#: ../../Zotlabs/Module/Ping.php:428 ../../Zotlabs/Lib/Enotify.php:957 +#: ../../Zotlabs/Module/Ping.php:428 msgid "g A l F d" msgstr "g A l d F" -#: ../../Zotlabs/Module/Ping.php:446 ../../Zotlabs/Lib/Enotify.php:960 +#: ../../Zotlabs/Module/Ping.php:446 msgid "[today]" msgstr "[hoy]" -#: ../../Zotlabs/Module/Ping.php:456 ../../Zotlabs/Lib/Enotify.php:970 +#: ../../Zotlabs/Module/Ping.php:456 msgid "posted an event" msgstr "publicó un evento" -#: ../../Zotlabs/Module/Ping.php:490 ../../Zotlabs/Lib/Enotify.php:829 -#: ../../Zotlabs/Lib/Enotify.php:931 +#: ../../Zotlabs/Module/Ping.php:490 msgid "shared a file with you" msgstr "compartió un archivo con usted" -#: ../../Zotlabs/Module/Ping.php:672 ../../Zotlabs/Module/Sse_bs.php:510 +#: ../../Zotlabs/Module/Ping.php:672 msgid "Private forum" msgstr "Foro privado" -#: ../../Zotlabs/Module/Ping.php:672 ../../Zotlabs/Module/Sse_bs.php:510 +#: ../../Zotlabs/Module/Ping.php:672 msgid "Public forum" msgstr "Foro público" -#: ../../Zotlabs/Module/Dircensor.php:42 -msgid "Entry censored" -msgstr "Entrada censurada" - -#: ../../Zotlabs/Module/Dircensor.php:45 -msgid "Entry uncensored" -msgstr "Entrada sin censurar" - #: ../../Zotlabs/Module/Service_limits.php:23 msgid "No service class restrictions found." msgstr "No se han encontrado restricciones sobre esta clase de servicio." @@ -11702,7 +11597,7 @@ msgstr "App Estados de ánimo" msgid "Set your current mood and tell your friends" msgstr "Describir su estado de ánimo para comunicárselo a sus amigos" -#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:350 +#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 msgid "Mood" msgstr "Estado de ánimo" @@ -11864,90 +11759,90 @@ msgstr "Crear fichas de planificación personal" msgid "Add Card" msgstr "Añadir una ficha" -#: ../../Zotlabs/Module/Directory.php:120 +#: ../../Zotlabs/Module/Directory.php:116 msgid "No default suggestions were found." msgstr "No se encontraron sugerencias por defecto." -#: ../../Zotlabs/Module/Directory.php:280 +#: ../../Zotlabs/Module/Directory.php:270 #, php-format msgid "%d rating" msgid_plural "%d ratings" msgstr[0] "%d valoración" msgstr[1] "%d valoraciones" -#: ../../Zotlabs/Module/Directory.php:291 +#: ../../Zotlabs/Module/Directory.php:281 msgid "Gender: " msgstr "Género:" -#: ../../Zotlabs/Module/Directory.php:293 +#: ../../Zotlabs/Module/Directory.php:283 msgid "Status: " msgstr "Estado:" -#: ../../Zotlabs/Module/Directory.php:295 +#: ../../Zotlabs/Module/Directory.php:285 msgid "Homepage: " msgstr "Página personal:" -#: ../../Zotlabs/Module/Directory.php:358 +#: ../../Zotlabs/Module/Directory.php:345 msgid "Description:" msgstr "Descripción:" -#: ../../Zotlabs/Module/Directory.php:369 +#: ../../Zotlabs/Module/Directory.php:354 msgid "Public Forum:" msgstr "Foro público:" -#: ../../Zotlabs/Module/Directory.php:372 +#: ../../Zotlabs/Module/Directory.php:357 msgid "Keywords: " msgstr "Palabras clave:" -#: ../../Zotlabs/Module/Directory.php:375 +#: ../../Zotlabs/Module/Directory.php:360 msgid "Don't suggest" msgstr "No sugerir:" -#: ../../Zotlabs/Module/Directory.php:377 +#: ../../Zotlabs/Module/Directory.php:362 msgid "Common connections (estimated):" msgstr "Conexiones comunes (estimadas): " -#: ../../Zotlabs/Module/Directory.php:426 +#: ../../Zotlabs/Module/Directory.php:411 msgid "Global Directory" msgstr "Directorio global:" -#: ../../Zotlabs/Module/Directory.php:426 +#: ../../Zotlabs/Module/Directory.php:411 msgid "Local Directory" msgstr "Directorio local:" -#: ../../Zotlabs/Module/Directory.php:432 +#: ../../Zotlabs/Module/Directory.php:417 msgid "Finding:" msgstr "Encontrar:" -#: ../../Zotlabs/Module/Directory.php:437 +#: ../../Zotlabs/Module/Directory.php:422 msgid "next page" msgstr "siguiente página" -#: ../../Zotlabs/Module/Directory.php:437 +#: ../../Zotlabs/Module/Directory.php:422 msgid "previous page" msgstr "página anterior" -#: ../../Zotlabs/Module/Directory.php:438 +#: ../../Zotlabs/Module/Directory.php:423 msgid "Sort options" msgstr "Ordenar opciones" -#: ../../Zotlabs/Module/Directory.php:439 +#: ../../Zotlabs/Module/Directory.php:424 msgid "Alphabetic" msgstr "Alfabético" -#: ../../Zotlabs/Module/Directory.php:440 +#: ../../Zotlabs/Module/Directory.php:425 msgid "Reverse Alphabetic" msgstr "Alfabético inverso" -#: ../../Zotlabs/Module/Directory.php:441 +#: ../../Zotlabs/Module/Directory.php:426 msgid "Newest to Oldest" msgstr "De más nuevo a más antiguo" -#: ../../Zotlabs/Module/Directory.php:442 +#: ../../Zotlabs/Module/Directory.php:427 msgid "Oldest to Newest" msgstr "De más antiguo a más nuevo" -#: ../../Zotlabs/Module/Directory.php:459 +#: ../../Zotlabs/Module/Directory.php:444 msgid "No entries (some entries may be hidden)." msgstr "Sin entradas (algunas entradas pueden estar ocultas)." @@ -12006,108 +11901,96 @@ msgstr "Token de validación" msgid "Item not available." msgstr "Elemento no disponible" -#: ../../Zotlabs/Module/Vote.php:40 -msgid "Poll not found." -msgstr "Encuesta no encontrada." - -#: ../../Zotlabs/Module/Vote.php:71 -msgid "Invalid response." -msgstr "respuesta no válida." - -#: ../../Zotlabs/Module/Vote.php:132 -msgid "Response submitted. Updates may not appear instantly." -msgstr "Respuesta enviada. Las actualizaciones pueden no aparecer al instante." - -#: ../../Zotlabs/Module/Profile_photo.php:93 -#: ../../Zotlabs/Module/Cover_photo.php:85 +#: ../../Zotlabs/Module/Profile_photo.php:91 +#: ../../Zotlabs/Module/Cover_photo.php:83 msgid "Image uploaded but image cropping failed." msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. " -#: ../../Zotlabs/Module/Profile_photo.php:166 -#: ../../Zotlabs/Module/Cover_photo.php:212 +#: ../../Zotlabs/Module/Profile_photo.php:164 +#: ../../Zotlabs/Module/Cover_photo.php:210 msgid "Image resize failed." msgstr "El ajuste del tamaño de la imagen ha fallado." -#: ../../Zotlabs/Module/Profile_photo.php:296 -#: ../../Zotlabs/Module/Cover_photo.php:265 +#: ../../Zotlabs/Module/Profile_photo.php:294 +#: ../../Zotlabs/Module/Cover_photo.php:263 msgid "Image upload failed." msgstr "La carga de la imagen ha fallado." -#: ../../Zotlabs/Module/Profile_photo.php:315 -#: ../../Zotlabs/Module/Cover_photo.php:282 +#: ../../Zotlabs/Module/Profile_photo.php:313 +#: ../../Zotlabs/Module/Cover_photo.php:280 msgid "Unable to process image." msgstr "No ha sido posible procesar la imagen." -#: ../../Zotlabs/Module/Profile_photo.php:379 -#: ../../Zotlabs/Module/Profile_photo.php:431 -#: ../../Zotlabs/Module/Cover_photo.php:367 -#: ../../Zotlabs/Module/Cover_photo.php:382 +#: ../../Zotlabs/Module/Profile_photo.php:377 +#: ../../Zotlabs/Module/Profile_photo.php:429 +#: ../../Zotlabs/Module/Cover_photo.php:373 +#: ../../Zotlabs/Module/Cover_photo.php:388 msgid "Photo not available." msgstr "Foto no disponible." -#: ../../Zotlabs/Module/Profile_photo.php:495 +#: ../../Zotlabs/Module/Profile_photo.php:493 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 "Su foto de perfil predeterminada es visible para cualquiera en Internet. Las fotos de perfil para perfiles alternativos heredarán los permisos del predeterminado." -#: ../../Zotlabs/Module/Profile_photo.php:495 +#: ../../Zotlabs/Module/Profile_photo.php:493 msgid "" "Your profile photo is visible to anybody on the internet and may be " "distributed to other websites." msgstr "La foto de su perfil es visible para cualquiera en Internet y puede ser distribuida en otros sitios web." -#: ../../Zotlabs/Module/Profile_photo.php:497 -#: ../../Zotlabs/Module/Cover_photo.php:420 +#: ../../Zotlabs/Module/Profile_photo.php:495 +#: ../../Zotlabs/Module/Cover_photo.php:426 msgid "Upload File:" msgstr "Subir fichero:" -#: ../../Zotlabs/Module/Profile_photo.php:498 -#: ../../Zotlabs/Module/Cover_photo.php:421 +#: ../../Zotlabs/Module/Profile_photo.php:496 +#: ../../Zotlabs/Module/Cover_photo.php:427 msgid "Select a profile:" msgstr "Seleccionar un perfil:" -#: ../../Zotlabs/Module/Profile_photo.php:499 +#: ../../Zotlabs/Module/Profile_photo.php:497 msgid "Use Photo for Profile" msgstr "Usar la fotografía para el perfil" -#: ../../Zotlabs/Module/Profile_photo.php:499 +#: ../../Zotlabs/Module/Profile_photo.php:497 msgid "Change Profile Photo" msgstr "Cambiar la foto del perfil" -#: ../../Zotlabs/Module/Profile_photo.php:500 +#: ../../Zotlabs/Module/Profile_photo.php:498 msgid "Use" msgstr "Usar" -#: ../../Zotlabs/Module/Profile_photo.php:505 -#: ../../Zotlabs/Module/Profile_photo.php:506 -#: ../../Zotlabs/Module/Cover_photo.php:426 -#: ../../Zotlabs/Module/Cover_photo.php:427 +#: ../../Zotlabs/Module/Profile_photo.php:503 +#: ../../Zotlabs/Module/Profile_photo.php:504 +#: ../../Zotlabs/Module/Cover_photo.php:432 +#: ../../Zotlabs/Module/Cover_photo.php:433 msgid "Use a photo from your albums" msgstr "Usar una foto de sus álbumes" -#: ../../Zotlabs/Module/Profile_photo.php:511 -#: ../../Zotlabs/Module/Cover_photo.php:432 ../../Zotlabs/Module/Wiki.php:405 +#: ../../Zotlabs/Module/Profile_photo.php:509 +#: ../../Zotlabs/Module/Cover_photo.php:438 ../../Zotlabs/Module/Wiki.php:405 msgid "Choose a different album" msgstr "Elegir un álbum diferente..." -#: ../../Zotlabs/Module/Profile_photo.php:516 -#: ../../Zotlabs/Module/Cover_photo.php:438 +#: ../../Zotlabs/Module/Profile_photo.php:514 +#: ../../Zotlabs/Module/Cover_photo.php:444 msgid "Select existing photo" msgstr "Seleccionar una foto" -#: ../../Zotlabs/Module/Profile_photo.php:535 -#: ../../Zotlabs/Module/Cover_photo.php:455 +#: ../../Zotlabs/Module/Profile_photo.php:533 +#: ../../Zotlabs/Module/Cover_photo.php:461 msgid "Crop Image" msgstr "Recortar imagen" -#: ../../Zotlabs/Module/Profile_photo.php:536 -#: ../../Zotlabs/Module/Cover_photo.php:456 +#: ../../Zotlabs/Module/Profile_photo.php:534 +#: ../../Zotlabs/Module/Cover_photo.php:462 msgid "Please adjust the image cropping for optimum viewing." msgstr "Por favor ajuste el recorte de la imagen para una visión óptima." -#: ../../Zotlabs/Module/Profile_photo.php:538 -#: ../../Zotlabs/Module/Cover_photo.php:458 +#: ../../Zotlabs/Module/Profile_photo.php:536 +#: ../../Zotlabs/Module/Cover_photo.php:464 msgid "Done Editing" msgstr "Edición completada" @@ -12123,7 +12006,7 @@ msgstr "Escriba un nombre de carpeta" msgid "or select an existing folder (doubleclick)" msgstr "o seleccione una (con un doble click)" -#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:184 +#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 msgid "Save to Folder" msgstr "Guardar en carpeta" @@ -12220,218 +12103,218 @@ msgstr "Archivadas" msgid "Not connected at this location" msgstr "No está conectado/a en esta ubicación" -#: ../../Zotlabs/Module/Connections.php:318 +#: ../../Zotlabs/Module/Connections.php:296 #, php-format msgid "%1$s [%2$s]" msgstr "%1$s [%2$s]" -#: ../../Zotlabs/Module/Connections.php:319 +#: ../../Zotlabs/Module/Connections.php:297 msgid "Edit connection" msgstr "Editar conexión" -#: ../../Zotlabs/Module/Connections.php:321 +#: ../../Zotlabs/Module/Connections.php:299 msgid "Delete connection" msgstr "Eliminar conexión" -#: ../../Zotlabs/Module/Connections.php:330 +#: ../../Zotlabs/Module/Connections.php:308 msgid "Channel address" msgstr "Dirección del canal" -#: ../../Zotlabs/Module/Connections.php:335 +#: ../../Zotlabs/Module/Connections.php:313 msgid "Call" msgstr "Llamar" -#: ../../Zotlabs/Module/Connections.php:337 +#: ../../Zotlabs/Module/Connections.php:315 msgid "Status" msgstr "Estado" -#: ../../Zotlabs/Module/Connections.php:339 +#: ../../Zotlabs/Module/Connections.php:317 msgid "Connected" msgstr "Conectado/a" -#: ../../Zotlabs/Module/Connections.php:341 +#: ../../Zotlabs/Module/Connections.php:319 msgid "Approve connection" msgstr "Aprobar esta conexión" -#: ../../Zotlabs/Module/Connections.php:343 +#: ../../Zotlabs/Module/Connections.php:321 msgid "Ignore connection" msgstr "Ignorar esta conexión" -#: ../../Zotlabs/Module/Connections.php:344 -#: ../../Zotlabs/Module/Connedit.php:645 +#: ../../Zotlabs/Module/Connections.php:322 +#: ../../Zotlabs/Module/Connedit.php:644 msgid "Ignore" msgstr "Ignorar" -#: ../../Zotlabs/Module/Connections.php:345 +#: ../../Zotlabs/Module/Connections.php:323 msgid "Recent activity" msgstr "Actividad reciente" -#: ../../Zotlabs/Module/Connections.php:351 +#: ../../Zotlabs/Module/Connections.php:328 msgid "Connect at this location" msgstr "Conectar en esta ubicación " -#: ../../Zotlabs/Module/Connections.php:379 +#: ../../Zotlabs/Module/Connections.php:356 msgid "Search your connections" msgstr "Buscar sus conexiones" -#: ../../Zotlabs/Module/Connections.php:380 +#: ../../Zotlabs/Module/Connections.php:357 msgid "Connections search" msgstr "Buscar conexiones" -#: ../../Zotlabs/Module/Cover_photo.php:196 -#: ../../Zotlabs/Module/Cover_photo.php:254 +#: ../../Zotlabs/Module/Cover_photo.php:194 +#: ../../Zotlabs/Module/Cover_photo.php:252 msgid "Cover Photos" msgstr "Imágenes de portada del perfil" -#: ../../Zotlabs/Module/Cover_photo.php:418 +#: ../../Zotlabs/Module/Cover_photo.php:424 msgid "Your cover photo may be visible to anybody on the internet" msgstr "La foto de la portada puede ser visible para cualquiera en Internet" -#: ../../Zotlabs/Module/Cover_photo.php:422 +#: ../../Zotlabs/Module/Cover_photo.php:428 msgid "Change Cover Photo" msgstr "Cambiar la foto de portada del perfil" -#: ../../Zotlabs/Module/Photos.php:80 +#: ../../Zotlabs/Module/Photos.php:78 msgid "Page owner information could not be retrieved." msgstr "La información del propietario de la página no pudo ser recuperada." -#: ../../Zotlabs/Module/Photos.php:96 ../../Zotlabs/Module/Photos.php:115 +#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 msgid "Album not found." msgstr "Álbum no encontrado." -#: ../../Zotlabs/Module/Photos.php:105 +#: ../../Zotlabs/Module/Photos.php:103 msgid "Delete Album" msgstr "Borrar álbum" -#: ../../Zotlabs/Module/Photos.php:176 ../../Zotlabs/Module/Photos.php:1058 +#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 msgid "Delete Photo" msgstr "Borrar foto" -#: ../../Zotlabs/Module/Photos.php:529 +#: ../../Zotlabs/Module/Photos.php:527 msgid "No photos selected" msgstr "No hay fotos seleccionadas" -#: ../../Zotlabs/Module/Photos.php:578 +#: ../../Zotlabs/Module/Photos.php:576 msgid "Access to this item is restricted." msgstr "El acceso a este elemento está restringido." -#: ../../Zotlabs/Module/Photos.php:621 +#: ../../Zotlabs/Module/Photos.php:619 #, php-format msgid "%1$.2f MB of %2$.2f MB photo storage used." msgstr "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado." -#: ../../Zotlabs/Module/Photos.php:624 +#: ../../Zotlabs/Module/Photos.php:622 #, php-format msgid "%1$.2f MB photo storage used." msgstr "%1$.2f MB de almacenamiento de fotos utilizado." -#: ../../Zotlabs/Module/Photos.php:666 +#: ../../Zotlabs/Module/Photos.php:664 msgid "Upload Photos" msgstr "Subir fotos" -#: ../../Zotlabs/Module/Photos.php:670 +#: ../../Zotlabs/Module/Photos.php:668 msgid "Enter an album name" msgstr "Introducir un nombre de álbum" -#: ../../Zotlabs/Module/Photos.php:671 +#: ../../Zotlabs/Module/Photos.php:669 msgid "or select an existing album (doubleclick)" msgstr "o seleccionar un álbum (con un doble click)" -#: ../../Zotlabs/Module/Photos.php:672 +#: ../../Zotlabs/Module/Photos.php:670 msgid "Create a status post for this upload" msgstr "Crear un mensaje de estado para esta subida" -#: ../../Zotlabs/Module/Photos.php:674 +#: ../../Zotlabs/Module/Photos.php:672 msgid "Description (optional)" msgstr "Descripción (opcional)" -#: ../../Zotlabs/Module/Photos.php:760 +#: ../../Zotlabs/Module/Photos.php:758 msgid "Show Newest First" msgstr "Mostrar lo más reciente primero" -#: ../../Zotlabs/Module/Photos.php:762 +#: ../../Zotlabs/Module/Photos.php:760 msgid "Show Oldest First" msgstr "Mostrar lo más antiguo primero" -#: ../../Zotlabs/Module/Photos.php:819 ../../Zotlabs/Module/Photos.php:1363 +#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 msgid "Add Photos" msgstr "Añadir fotos" -#: ../../Zotlabs/Module/Photos.php:867 +#: ../../Zotlabs/Module/Photos.php:865 msgid "Permission denied. Access to this item may be restricted." msgstr "Permiso denegado. El acceso a este elemento puede estar restringido." -#: ../../Zotlabs/Module/Photos.php:869 +#: ../../Zotlabs/Module/Photos.php:867 msgid "Photo not available" msgstr "Foto no disponible" -#: ../../Zotlabs/Module/Photos.php:927 +#: ../../Zotlabs/Module/Photos.php:925 msgid "Use as profile photo" msgstr "Usar como foto del perfil" -#: ../../Zotlabs/Module/Photos.php:928 +#: ../../Zotlabs/Module/Photos.php:926 msgid "Use as cover photo" msgstr "Usar como imagen de portada del perfil" -#: ../../Zotlabs/Module/Photos.php:935 +#: ../../Zotlabs/Module/Photos.php:933 msgid "Private Photo" msgstr "Foto privada" -#: ../../Zotlabs/Module/Photos.php:950 +#: ../../Zotlabs/Module/Photos.php:948 msgid "View Full Size" msgstr "Ver tamaño completo" -#: ../../Zotlabs/Module/Photos.php:1032 +#: ../../Zotlabs/Module/Photos.php:1030 msgid "Edit photo" msgstr "Editar foto" -#: ../../Zotlabs/Module/Photos.php:1034 +#: ../../Zotlabs/Module/Photos.php:1032 msgid "Rotate CW (right)" msgstr "Girar CW (a la derecha)" -#: ../../Zotlabs/Module/Photos.php:1035 +#: ../../Zotlabs/Module/Photos.php:1033 msgid "Rotate CCW (left)" msgstr "Girar CCW (a la izquierda)" -#: ../../Zotlabs/Module/Photos.php:1038 +#: ../../Zotlabs/Module/Photos.php:1036 msgid "Move photo to album" msgstr "Mover la foto a un álbum" -#: ../../Zotlabs/Module/Photos.php:1039 +#: ../../Zotlabs/Module/Photos.php:1037 msgid "Enter a new album name" msgstr "Introducir un nuevo nombre de álbum" -#: ../../Zotlabs/Module/Photos.php:1040 +#: ../../Zotlabs/Module/Photos.php:1038 msgid "or select an existing one (doubleclick)" msgstr "o seleccionar un álbum (con un doble click)" -#: ../../Zotlabs/Module/Photos.php:1045 +#: ../../Zotlabs/Module/Photos.php:1043 msgid "Add a Tag" msgstr "Añadir una etiqueta" -#: ../../Zotlabs/Module/Photos.php:1053 +#: ../../Zotlabs/Module/Photos.php:1051 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com" -#: ../../Zotlabs/Module/Photos.php:1056 +#: ../../Zotlabs/Module/Photos.php:1054 msgid "Flag as adult in album view" msgstr "Marcar como \"solo para adultos\" en el álbum" -#: ../../Zotlabs/Module/Photos.php:1075 ../../Zotlabs/Lib/ThreadItem.php:317 +#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 msgid "I like this (toggle)" msgstr "Me gusta (cambiar)" -#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:318 +#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 msgid "I don't like this (toggle)" msgstr "No me gusta esto (cambiar)" -#: ../../Zotlabs/Module/Photos.php:1094 ../../Zotlabs/Module/Photos.php:1212 -#: ../../Zotlabs/Lib/ThreadItem.php:822 +#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 +#: ../../Zotlabs/Lib/ThreadItem.php:793 msgid "This is you" msgstr "Este es usted" #: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Module/Photos.php:1143 -#: ../../Zotlabs/Lib/ThreadItem.php:238 ../../Zotlabs/Lib/ThreadItem.php:250 +#: ../../Zotlabs/Lib/ThreadItem.php:232 ../../Zotlabs/Lib/ThreadItem.php:244 msgid "View all" msgstr "Ver todo" @@ -12447,12 +12330,12 @@ msgstr "En esta foto:" msgid "Map" msgstr "Mapa" -#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:489 +#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 msgctxt "noun" msgid "Likes" msgstr "Me gusta" -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:490 +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 msgctxt "noun" msgid "Dislikes" msgstr "No me gusta" @@ -12481,7 +12364,7 @@ msgid "" "Password reset failed." msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado." -#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1707 +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1683 msgid "Password Reset" msgstr "Restablecer la contraseña" @@ -12526,11 +12409,11 @@ msgstr "Introduzca y envíe su dirección de correo electrónico para el restabl msgid "Email Address" msgstr "Dirección de correo electrónico" -#: ../../Zotlabs/Module/Lostpass.php:133 ../../Zotlabs/Module/Pdledit.php:78 +#: ../../Zotlabs/Module/Lostpass.php:133 ../../Zotlabs/Module/Pdledit.php:77 msgid "Reset" msgstr "Reiniciar" -#: ../../Zotlabs/Module/Follow.php:93 +#: ../../Zotlabs/Module/Follow.php:36 msgid "Connection added." msgstr "Se ha incorporado una conexión." @@ -12548,248 +12431,248 @@ msgid "" "non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." -#: ../../Zotlabs/Module/Profiles.php:26 ../../Zotlabs/Module/Profiles.php:186 -#: ../../Zotlabs/Module/Profiles.php:243 ../../Zotlabs/Module/Profiles.php:661 +#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184 +#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659 msgid "Profile not found." msgstr "Perfil no encontrado." -#: ../../Zotlabs/Module/Profiles.php:46 +#: ../../Zotlabs/Module/Profiles.php:44 msgid "Profile deleted." msgstr "Perfil eliminado." -#: ../../Zotlabs/Module/Profiles.php:70 ../../Zotlabs/Module/Profiles.php:107 +#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 msgid "Profile-" msgstr "Perfil-" -#: ../../Zotlabs/Module/Profiles.php:92 ../../Zotlabs/Module/Profiles.php:129 +#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 msgid "New profile created." msgstr "El nuevo perfil ha sido creado." -#: ../../Zotlabs/Module/Profiles.php:113 +#: ../../Zotlabs/Module/Profiles.php:111 msgid "Profile unavailable to clone." msgstr "Perfil no disponible para clonar." -#: ../../Zotlabs/Module/Profiles.php:148 +#: ../../Zotlabs/Module/Profiles.php:146 msgid "Profile unavailable to export." msgstr "Perfil no disponible para exportar." -#: ../../Zotlabs/Module/Profiles.php:254 +#: ../../Zotlabs/Module/Profiles.php:252 msgid "Profile Name is required." msgstr "Se necesita el nombre del perfil." -#: ../../Zotlabs/Module/Profiles.php:461 +#: ../../Zotlabs/Module/Profiles.php:459 msgid "Marital Status" msgstr "Estado civil" -#: ../../Zotlabs/Module/Profiles.php:465 +#: ../../Zotlabs/Module/Profiles.php:463 msgid "Romantic Partner" msgstr "Pareja sentimental" -#: ../../Zotlabs/Module/Profiles.php:469 ../../Zotlabs/Module/Profiles.php:774 +#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 msgid "Likes" msgstr "Me gusta" -#: ../../Zotlabs/Module/Profiles.php:473 ../../Zotlabs/Module/Profiles.php:775 +#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 msgid "Dislikes" msgstr "No me gusta" -#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:782 +#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 msgid "Work/Employment" msgstr "Trabajo:" -#: ../../Zotlabs/Module/Profiles.php:480 +#: ../../Zotlabs/Module/Profiles.php:478 msgid "Religion" msgstr "Religión" -#: ../../Zotlabs/Module/Profiles.php:484 +#: ../../Zotlabs/Module/Profiles.php:482 msgid "Political Views" msgstr "Ideas políticas" -#: ../../Zotlabs/Module/Profiles.php:492 +#: ../../Zotlabs/Module/Profiles.php:490 msgid "Sexual Preference" msgstr "Preferencia sexual" -#: ../../Zotlabs/Module/Profiles.php:496 +#: ../../Zotlabs/Module/Profiles.php:494 msgid "Homepage" msgstr "Página personal" -#: ../../Zotlabs/Module/Profiles.php:500 +#: ../../Zotlabs/Module/Profiles.php:498 msgid "Interests" msgstr "Intereses" -#: ../../Zotlabs/Module/Profiles.php:596 +#: ../../Zotlabs/Module/Profiles.php:594 msgid "Profile updated." msgstr "Perfil actualizado." -#: ../../Zotlabs/Module/Profiles.php:680 +#: ../../Zotlabs/Module/Profiles.php:678 msgid "Hide your connections list from viewers of this profile" msgstr "Ocultar la lista de conexiones a los visitantes del perfil" -#: ../../Zotlabs/Module/Profiles.php:724 +#: ../../Zotlabs/Module/Profiles.php:722 msgid "Edit Profile Details" msgstr "Modificar los detalles de este perfil" -#: ../../Zotlabs/Module/Profiles.php:726 +#: ../../Zotlabs/Module/Profiles.php:724 msgid "View this profile" msgstr "Ver este perfil" -#: ../../Zotlabs/Module/Profiles.php:728 +#: ../../Zotlabs/Module/Profiles.php:726 msgid "Profile Tools" msgstr "Gestión del perfil" -#: ../../Zotlabs/Module/Profiles.php:729 +#: ../../Zotlabs/Module/Profiles.php:727 msgid "Change cover photo" msgstr "Cambiar la imagen de portada del perfil" -#: ../../Zotlabs/Module/Profiles.php:731 +#: ../../Zotlabs/Module/Profiles.php:729 msgid "Create a new profile using these settings" msgstr "Crear un nuevo perfil usando estos ajustes" -#: ../../Zotlabs/Module/Profiles.php:732 +#: ../../Zotlabs/Module/Profiles.php:730 msgid "Clone this profile" msgstr "Clonar este perfil" -#: ../../Zotlabs/Module/Profiles.php:733 +#: ../../Zotlabs/Module/Profiles.php:731 msgid "Delete this profile" msgstr "Eliminar este perfil" -#: ../../Zotlabs/Module/Profiles.php:734 +#: ../../Zotlabs/Module/Profiles.php:732 msgid "Add profile things" msgstr "Añadir cosas al perfil" -#: ../../Zotlabs/Module/Profiles.php:735 +#: ../../Zotlabs/Module/Profiles.php:733 msgid "Personal" msgstr "Personales" -#: ../../Zotlabs/Module/Profiles.php:737 +#: ../../Zotlabs/Module/Profiles.php:735 msgid "Relationship" msgstr "Relación" -#: ../../Zotlabs/Module/Profiles.php:740 +#: ../../Zotlabs/Module/Profiles.php:738 msgid "Import profile from file" msgstr "Importar perfil desde un fichero" -#: ../../Zotlabs/Module/Profiles.php:741 +#: ../../Zotlabs/Module/Profiles.php:739 msgid "Export profile to file" msgstr "Exportar perfil a un fichero" -#: ../../Zotlabs/Module/Profiles.php:742 +#: ../../Zotlabs/Module/Profiles.php:740 msgid "Your gender" msgstr "Género" -#: ../../Zotlabs/Module/Profiles.php:743 +#: ../../Zotlabs/Module/Profiles.php:741 msgid "Marital status" msgstr "Estado civil" -#: ../../Zotlabs/Module/Profiles.php:744 +#: ../../Zotlabs/Module/Profiles.php:742 msgid "Sexual preference" msgstr "Preferencia sexual" -#: ../../Zotlabs/Module/Profiles.php:747 +#: ../../Zotlabs/Module/Profiles.php:745 msgid "Profile name" msgstr "Nombre del perfil" -#: ../../Zotlabs/Module/Profiles.php:749 +#: ../../Zotlabs/Module/Profiles.php:747 msgid "This is your default profile." msgstr "Este es su perfil principal." -#: ../../Zotlabs/Module/Profiles.php:751 +#: ../../Zotlabs/Module/Profiles.php:749 msgid "Your full name" msgstr "Nombre completo" -#: ../../Zotlabs/Module/Profiles.php:752 +#: ../../Zotlabs/Module/Profiles.php:750 msgid "Title/Description" msgstr "Título o descripción" -#: ../../Zotlabs/Module/Profiles.php:755 +#: ../../Zotlabs/Module/Profiles.php:753 msgid "Street address" msgstr "Dirección" -#: ../../Zotlabs/Module/Profiles.php:756 +#: ../../Zotlabs/Module/Profiles.php:754 msgid "Locality/City" msgstr "Ciudad" -#: ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Profiles.php:755 msgid "Region/State" msgstr "Región o Estado" -#: ../../Zotlabs/Module/Profiles.php:758 +#: ../../Zotlabs/Module/Profiles.php:756 msgid "Postal/Zip code" msgstr "Código postal" -#: ../../Zotlabs/Module/Profiles.php:764 +#: ../../Zotlabs/Module/Profiles.php:762 msgid "Who (if applicable)" msgstr "Quién (si es pertinente)" -#: ../../Zotlabs/Module/Profiles.php:764 +#: ../../Zotlabs/Module/Profiles.php:762 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com" -#: ../../Zotlabs/Module/Profiles.php:765 +#: ../../Zotlabs/Module/Profiles.php:763 msgid "Since (date)" msgstr "Desde (fecha)" -#: ../../Zotlabs/Module/Profiles.php:768 +#: ../../Zotlabs/Module/Profiles.php:766 msgid "Tell us about yourself" msgstr "Háblenos de usted" -#: ../../Zotlabs/Module/Profiles.php:770 +#: ../../Zotlabs/Module/Profiles.php:768 msgid "Hometown" msgstr "Lugar de nacimiento" -#: ../../Zotlabs/Module/Profiles.php:771 +#: ../../Zotlabs/Module/Profiles.php:769 msgid "Political views" msgstr "Ideas políticas" -#: ../../Zotlabs/Module/Profiles.php:772 +#: ../../Zotlabs/Module/Profiles.php:770 msgid "Religious views" msgstr "Creencias religiosas" -#: ../../Zotlabs/Module/Profiles.php:773 +#: ../../Zotlabs/Module/Profiles.php:771 msgid "Keywords used in directory listings" msgstr "Palabras clave utilizadas en los listados de directorios" -#: ../../Zotlabs/Module/Profiles.php:773 +#: ../../Zotlabs/Module/Profiles.php:771 msgid "Example: fishing photography software" msgstr "Por ejemplo: software de fotografía submarina" -#: ../../Zotlabs/Module/Profiles.php:776 +#: ../../Zotlabs/Module/Profiles.php:774 msgid "Musical interests" msgstr "Preferencias musicales" -#: ../../Zotlabs/Module/Profiles.php:777 +#: ../../Zotlabs/Module/Profiles.php:775 msgid "Books, literature" msgstr "Libros, literatura" -#: ../../Zotlabs/Module/Profiles.php:778 +#: ../../Zotlabs/Module/Profiles.php:776 msgid "Television" msgstr "Televisión" -#: ../../Zotlabs/Module/Profiles.php:779 +#: ../../Zotlabs/Module/Profiles.php:777 msgid "Film/Dance/Culture/Entertainment" msgstr "Cine, danza, cultura, entretenimiento" -#: ../../Zotlabs/Module/Profiles.php:780 +#: ../../Zotlabs/Module/Profiles.php:778 msgid "Hobbies/Interests" msgstr "Aficiones o intereses" -#: ../../Zotlabs/Module/Profiles.php:781 +#: ../../Zotlabs/Module/Profiles.php:779 msgid "Love/Romance" msgstr "Vida sentimental o amorosa" -#: ../../Zotlabs/Module/Profiles.php:783 +#: ../../Zotlabs/Module/Profiles.php:781 msgid "School/Education" msgstr "Estudios" -#: ../../Zotlabs/Module/Profiles.php:784 +#: ../../Zotlabs/Module/Profiles.php:782 msgid "Contact information and social networks" msgstr "Información de contacto y redes sociales" -#: ../../Zotlabs/Module/Profiles.php:785 +#: ../../Zotlabs/Module/Profiles.php:783 msgid "My other channels" msgstr "Mis otros canales" -#: ../../Zotlabs/Module/Profiles.php:787 +#: ../../Zotlabs/Module/Profiles.php:785 msgid "Communications" msgstr "Comunicaciones" @@ -12909,6 +12792,10 @@ msgstr "Enviar invitaciones" msgid "Enter email addresses, one per line:" msgstr "Introduzca las direcciones de correo electrónico, una por línea:" +#: ../../Zotlabs/Module/Invite.php:157 ../../Zotlabs/Module/Mail.php:289 +msgid "Your message:" +msgstr "Su mensaje:" + #: ../../Zotlabs/Module/Invite.php:158 msgid "Please join my community on $Projectname." msgstr "Por favor, únase a mi comunidad en $Projectname." @@ -12934,11 +12821,11 @@ msgstr "o visitar" msgid "3. Click [Connect]" msgstr "3. Pulse [conectar]" -#: ../../Zotlabs/Module/Notes.php:57 +#: ../../Zotlabs/Module/Notes.php:56 msgid "Notes App" msgstr "App Notas" -#: ../../Zotlabs/Module/Notes.php:58 +#: ../../Zotlabs/Module/Notes.php:57 msgid "A simple notes app with a widget (note: notes are not encrypted)" msgstr "Una simple aplicación de notas con un widget (aviso: las notas no están encriptadas)" @@ -12950,6 +12837,101 @@ msgstr "Búsqueda de canales" msgid "Lookup xchan beginning with (or webbie): " msgstr "Buscar un canal (o un \"webbie\") que comience por:" +#: ../../Zotlabs/Module/Mail.php:77 +msgid "Unable to lookup recipient." +msgstr "No se puede asociar a un destinatario." + +#: ../../Zotlabs/Module/Mail.php:84 +msgid "Unable to communicate with requested channel." +msgstr "No se puede establecer la comunicación con el canal solicitado." + +#: ../../Zotlabs/Module/Mail.php:91 +msgid "Cannot verify requested channel." +msgstr "No se puede verificar el canal solicitado." + +#: ../../Zotlabs/Module/Mail.php:109 +msgid "Selected channel has private message restrictions. Send failed." +msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló." + +#: ../../Zotlabs/Module/Mail.php:164 +msgid "Messages" +msgstr "Mensajes" + +#: ../../Zotlabs/Module/Mail.php:177 +msgid "message" +msgstr "mensaje" + +#: ../../Zotlabs/Module/Mail.php:218 +msgid "Message recalled." +msgstr "Mensaje revocado." + +#: ../../Zotlabs/Module/Mail.php:231 +msgid "Conversation removed." +msgstr "Conversación eliminada." + +#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:367 +msgid "Expires YYYY-MM-DD HH:MM" +msgstr "Caduca YYYY-MM-DD HH:MM" + +#: ../../Zotlabs/Module/Mail.php:274 +msgid "Requested channel is not in this network" +msgstr "El canal solicitado no existe en esta red" + +#: ../../Zotlabs/Module/Mail.php:282 +msgid "Send Private Message" +msgstr "Enviar un mensaje privado" + +#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 +msgid "To:" +msgstr "Para:" + +#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 +msgid "Subject:" +msgstr "Asunto:" + +#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:434 +msgid "Attach file" +msgstr "Adjuntar fichero" + +#: ../../Zotlabs/Module/Mail.php:293 +msgid "Send" +msgstr "Enviar" + +#: ../../Zotlabs/Module/Mail.php:397 +msgid "Delete message" +msgstr "Borrar mensaje" + +#: ../../Zotlabs/Module/Mail.php:398 +msgid "Delivery report" +msgstr "Informe de transmisión" + +#: ../../Zotlabs/Module/Mail.php:399 +msgid "Recall message" +msgstr "Revocar el mensaje" + +#: ../../Zotlabs/Module/Mail.php:401 +msgid "Message has been recalled." +msgstr "El mensaje ha sido revocado." + +#: ../../Zotlabs/Module/Mail.php:419 +msgid "Delete Conversation" +msgstr "Eliminar conversación" + +#: ../../Zotlabs/Module/Mail.php:421 +msgid "" +"No secure communications available. You <strong>may</strong> be able to " +"respond from the sender's profile page." +msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente." + +#: ../../Zotlabs/Module/Mail.php:425 +msgid "Send Reply" +msgstr "Responder" + +#: ../../Zotlabs/Module/Mail.php:430 +#, php-format +msgid "Your message for %s (%s):" +msgstr "Su mensaje para %s (%s):" + #: ../../Zotlabs/Module/Affinity.php:35 msgid "Affinity Tool settings updated." msgstr "Actualización de los ajustes de Affinity Tool." @@ -13019,411 +13001,404 @@ msgstr "Valoración (esta información es pública)" msgid "Optionally explain your rating (this information is public)" msgstr "Opcionalmente puede explicar su valoración (esta información es pública)" -#: ../../Zotlabs/Module/Settings/Network.php:42 -#: ../../Zotlabs/Module/Settings/Channel_home.php:46 +#: ../../Zotlabs/Module/Settings/Network.php:41 +#: ../../Zotlabs/Module/Settings/Channel_home.php:44 msgid "Max height of content (in pixels)" msgstr "Altura máxima del contenido (en píxeles)" -#: ../../Zotlabs/Module/Settings/Network.php:44 -#: ../../Zotlabs/Module/Settings/Channel_home.php:48 +#: ../../Zotlabs/Module/Settings/Network.php:43 +#: ../../Zotlabs/Module/Settings/Channel_home.php:46 msgid "Click to expand content exceeding this height" msgstr "Haga clic para expandir el contenido que exceda esta altura" -#: ../../Zotlabs/Module/Settings/Network.php:59 +#: ../../Zotlabs/Module/Settings/Network.php:58 msgid "Stream Settings" msgstr "Ajustes del stream" -#: ../../Zotlabs/Module/Settings/Features.php:45 +#: ../../Zotlabs/Module/Settings/Features.php:43 msgid "Additional Features" msgstr "Funcionalidades" -#: ../../Zotlabs/Module/Settings/Channel.php:328 +#: ../../Zotlabs/Module/Settings/Channel.php:327 msgid "Nobody except yourself" msgstr "Nadie excepto usted" -#: ../../Zotlabs/Module/Settings/Channel.php:329 +#: ../../Zotlabs/Module/Settings/Channel.php:328 msgid "Only those you specifically allow" msgstr "Solo aquellos a los que usted permita explícitamente" -#: ../../Zotlabs/Module/Settings/Channel.php:330 +#: ../../Zotlabs/Module/Settings/Channel.php:329 msgid "Approved connections" msgstr "Conexiones aprobadas" -#: ../../Zotlabs/Module/Settings/Channel.php:331 +#: ../../Zotlabs/Module/Settings/Channel.php:330 msgid "Any connections" msgstr "Cualquier conexión" -#: ../../Zotlabs/Module/Settings/Channel.php:332 +#: ../../Zotlabs/Module/Settings/Channel.php:331 msgid "Anybody on this website" msgstr "Cualquiera en este sitio web" -#: ../../Zotlabs/Module/Settings/Channel.php:333 +#: ../../Zotlabs/Module/Settings/Channel.php:332 msgid "Anybody in this network" msgstr "Cualquiera en esta red" -#: ../../Zotlabs/Module/Settings/Channel.php:334 +#: ../../Zotlabs/Module/Settings/Channel.php:333 msgid "Anybody authenticated" msgstr "Cualquiera que esté autenticado" -#: ../../Zotlabs/Module/Settings/Channel.php:335 +#: ../../Zotlabs/Module/Settings/Channel.php:334 msgid "Anybody on the internet" msgstr "Cualquiera en internet" -#: ../../Zotlabs/Module/Settings/Channel.php:410 +#: ../../Zotlabs/Module/Settings/Channel.php:409 msgid "Publish your default profile in the network directory" msgstr "Publicar su perfil principal en el directorio de la red" -#: ../../Zotlabs/Module/Settings/Channel.php:415 +#: ../../Zotlabs/Module/Settings/Channel.php:414 msgid "Allow us to suggest you as a potential friend to new members?" msgstr "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?" -#: ../../Zotlabs/Module/Settings/Channel.php:419 +#: ../../Zotlabs/Module/Settings/Channel.php:418 msgid "or" msgstr "o" -#: ../../Zotlabs/Module/Settings/Channel.php:428 +#: ../../Zotlabs/Module/Settings/Channel.php:427 msgid "Your channel address is" msgstr "Su dirección de canal es" -#: ../../Zotlabs/Module/Settings/Channel.php:431 +#: ../../Zotlabs/Module/Settings/Channel.php:430 msgid "Your files/photos are accessible via WebDAV at" msgstr "Sus archivos y fotos son accesibles a través de WebDAV en " -#: ../../Zotlabs/Module/Settings/Channel.php:471 +#: ../../Zotlabs/Module/Settings/Channel.php:470 msgid "Automatic membership approval" msgstr "Aprobación automática de nuevos miembros" -#: ../../Zotlabs/Module/Settings/Channel.php:471 -#: ../../Zotlabs/Module/Defperms.php:256 +#: ../../Zotlabs/Module/Settings/Channel.php:470 +#: ../../Zotlabs/Module/Defperms.php:255 msgid "" "If enabled, connection requests will be approved without your interaction" msgstr "Si está habilitado, las solicitudes de conexión serán aprobadas sin su intervención." -#: ../../Zotlabs/Module/Settings/Channel.php:492 +#: ../../Zotlabs/Module/Settings/Channel.php:491 msgid "Channel Settings" msgstr "Ajustes del canal" -#: ../../Zotlabs/Module/Settings/Channel.php:499 +#: ../../Zotlabs/Module/Settings/Channel.php:498 msgid "Basic Settings" msgstr "Configuración básica" -#: ../../Zotlabs/Module/Settings/Channel.php:501 +#: ../../Zotlabs/Module/Settings/Channel.php:500 #: ../../Zotlabs/Module/Settings/Account.php:104 msgid "Email Address:" msgstr "Dirección de correo electrónico:" -#: ../../Zotlabs/Module/Settings/Channel.php:502 +#: ../../Zotlabs/Module/Settings/Channel.php:501 msgid "Your Timezone:" msgstr "Su huso horario:" -#: ../../Zotlabs/Module/Settings/Channel.php:503 +#: ../../Zotlabs/Module/Settings/Channel.php:502 msgid "Default Post Location:" msgstr "Localización geográfica predeterminada para sus publicaciones:" -#: ../../Zotlabs/Module/Settings/Channel.php:503 +#: ../../Zotlabs/Module/Settings/Channel.php:502 msgid "Geographical location to display on your posts" msgstr "Localización geográfica que debe mostrarse en sus publicaciones" -#: ../../Zotlabs/Module/Settings/Channel.php:504 +#: ../../Zotlabs/Module/Settings/Channel.php:503 msgid "Use Browser Location:" msgstr "Usar la localización geográfica del navegador:" -#: ../../Zotlabs/Module/Settings/Channel.php:506 +#: ../../Zotlabs/Module/Settings/Channel.php:505 msgid "Adult Content" msgstr "Contenido solo para adultos" -#: ../../Zotlabs/Module/Settings/Channel.php:506 +#: ../../Zotlabs/Module/Settings/Channel.php:505 msgid "" "This channel frequently or regularly publishes adult content. (Please tag " "any adult material and/or nudity with #NSFW)" msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)" -#: ../../Zotlabs/Module/Settings/Channel.php:508 +#: ../../Zotlabs/Module/Settings/Channel.php:507 msgid "Security and Privacy Settings" msgstr "Configuración de seguridad y privacidad" -#: ../../Zotlabs/Module/Settings/Channel.php:510 +#: ../../Zotlabs/Module/Settings/Channel.php:509 msgid "Your permissions are already configured. Click to view/adjust" msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar" -#: ../../Zotlabs/Module/Settings/Channel.php:512 +#: ../../Zotlabs/Module/Settings/Channel.php:511 msgid "Hide my online presence" msgstr "Ocultar mi presencia en línea" -#: ../../Zotlabs/Module/Settings/Channel.php:512 +#: ../../Zotlabs/Module/Settings/Channel.php:511 msgid "Prevents displaying in your profile that you are online" msgstr "Evitar mostrar en su perfil que está en línea" -#: ../../Zotlabs/Module/Settings/Channel.php:514 +#: ../../Zotlabs/Module/Settings/Channel.php:513 msgid "Simple Privacy Settings:" msgstr "Configuración de privacidad sencilla:" -#: ../../Zotlabs/Module/Settings/Channel.php:515 +#: ../../Zotlabs/Module/Settings/Channel.php:514 msgid "" "Very Public - <em>extremely permissive (should be used with caution)</em>" msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:516 +#: ../../Zotlabs/Module/Settings/Channel.php:515 msgid "" "Typical - <em>default public, privacy when desired (similar to social " "network permissions but with improved privacy)</em>" msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:517 +#: ../../Zotlabs/Module/Settings/Channel.php:516 msgid "Private - <em>default private, never open or public</em>" msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:518 +#: ../../Zotlabs/Module/Settings/Channel.php:517 msgid "Blocked - <em>default blocked to/from everybody</em>" msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>" -#: ../../Zotlabs/Module/Settings/Channel.php:520 +#: ../../Zotlabs/Module/Settings/Channel.php:519 msgid "Allow others to tag your posts" msgstr "Permitir a otros etiquetar sus publicaciones" -#: ../../Zotlabs/Module/Settings/Channel.php:520 +#: ../../Zotlabs/Module/Settings/Channel.php:519 msgid "" "Often used by the community to retro-actively flag inappropriate content" msgstr "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva." -#: ../../Zotlabs/Module/Settings/Channel.php:522 +#: ../../Zotlabs/Module/Settings/Channel.php:521 msgid "Channel Permission Limits" msgstr "Límites de los permisos del canal" -#: ../../Zotlabs/Module/Settings/Channel.php:524 +#: ../../Zotlabs/Module/Settings/Channel.php:523 msgid "Expire other channel content after this many days" msgstr "Caducar contenido de otros canales después de este número de días" -#: ../../Zotlabs/Module/Settings/Channel.php:524 +#: ../../Zotlabs/Module/Settings/Channel.php:523 msgid "0 or blank to use the website limit." msgstr "0 o en blanco para usar el límite del sitio web." -#: ../../Zotlabs/Module/Settings/Channel.php:524 +#: ../../Zotlabs/Module/Settings/Channel.php:523 #, php-format msgid "This website expires after %d days." msgstr "Este sitio web caduca después de %d días." -#: ../../Zotlabs/Module/Settings/Channel.php:524 +#: ../../Zotlabs/Module/Settings/Channel.php:523 msgid "This website does not expire imported content." msgstr "Este sitio web no caduca el contenido importado." -#: ../../Zotlabs/Module/Settings/Channel.php:524 +#: ../../Zotlabs/Module/Settings/Channel.php:523 msgid "The website limit takes precedence if lower than your limit." msgstr "El límite del sitio web tiene prioridad si es inferior a su propio límite." -#: ../../Zotlabs/Module/Settings/Channel.php:525 +#: ../../Zotlabs/Module/Settings/Channel.php:524 msgid "Maximum Friend Requests/Day:" msgstr "Máximo de solicitudes de amistad por día:" -#: ../../Zotlabs/Module/Settings/Channel.php:525 +#: ../../Zotlabs/Module/Settings/Channel.php:524 msgid "May reduce spam activity" msgstr "Podría reducir la actividad de spam" -#: ../../Zotlabs/Module/Settings/Channel.php:526 +#: ../../Zotlabs/Module/Settings/Channel.php:525 msgid "Default Privacy Group" msgstr "Grupo de canales predeterminado" -#: ../../Zotlabs/Module/Settings/Channel.php:528 +#: ../../Zotlabs/Module/Settings/Channel.php:527 msgid "Use my default audience setting for the type of object published" msgstr "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación" -#: ../../Zotlabs/Module/Settings/Channel.php:537 +#: ../../Zotlabs/Module/Settings/Channel.php:536 msgid "Default permissions category" msgstr "Categoría de permisos por defecto" -#: ../../Zotlabs/Module/Settings/Channel.php:543 +#: ../../Zotlabs/Module/Settings/Channel.php:542 msgid "Maximum private messages per day from unknown people:" msgstr "Máximo de mensajes privados por día de gente desconocida:" -#: ../../Zotlabs/Module/Settings/Channel.php:543 +#: ../../Zotlabs/Module/Settings/Channel.php:542 msgid "Useful to reduce spamming" msgstr "Útil para reducir el envío de correo no deseado" -#: ../../Zotlabs/Module/Settings/Channel.php:546 +#: ../../Zotlabs/Module/Settings/Channel.php:545 #: ../../Zotlabs/Lib/Enotify.php:68 msgid "Notification Settings" msgstr "Configuración de las notificaciones" -#: ../../Zotlabs/Module/Settings/Channel.php:547 +#: ../../Zotlabs/Module/Settings/Channel.php:546 msgid "By default post a status message when:" msgstr "Por defecto, enviar un mensaje de estado cuando:" -#: ../../Zotlabs/Module/Settings/Channel.php:548 +#: ../../Zotlabs/Module/Settings/Channel.php:547 msgid "accepting a friend request" msgstr "Acepte una solicitud de amistad" -#: ../../Zotlabs/Module/Settings/Channel.php:549 +#: ../../Zotlabs/Module/Settings/Channel.php:548 msgid "joining a forum/community" msgstr "al unirse a un foro o comunidad" -#: ../../Zotlabs/Module/Settings/Channel.php:550 +#: ../../Zotlabs/Module/Settings/Channel.php:549 msgid "making an <em>interesting</em> profile change" msgstr "Realice un cambio <em>interesante</em> en su perfil" -#: ../../Zotlabs/Module/Settings/Channel.php:551 +#: ../../Zotlabs/Module/Settings/Channel.php:550 msgid "Send a notification email when:" msgstr "Enviar una notificación por correo electrónico cuando:" -#: ../../Zotlabs/Module/Settings/Channel.php:552 +#: ../../Zotlabs/Module/Settings/Channel.php:551 msgid "You receive a connection request" msgstr "Reciba una solicitud de conexión" -#: ../../Zotlabs/Module/Settings/Channel.php:553 +#: ../../Zotlabs/Module/Settings/Channel.php:552 msgid "Your connections are confirmed" msgstr "Sus conexiones hayan sido confirmadas" -#: ../../Zotlabs/Module/Settings/Channel.php:554 +#: ../../Zotlabs/Module/Settings/Channel.php:553 msgid "Someone writes on your profile wall" msgstr "Alguien escriba en la página de su perfil (\"muro\")" -#: ../../Zotlabs/Module/Settings/Channel.php:555 +#: ../../Zotlabs/Module/Settings/Channel.php:554 msgid "Someone writes a followup comment" msgstr "Alguien escriba un comentario sobre sus publicaciones" -#: ../../Zotlabs/Module/Settings/Channel.php:556 +#: ../../Zotlabs/Module/Settings/Channel.php:555 msgid "You receive a private message" msgstr "Reciba un mensaje privado" -#: ../../Zotlabs/Module/Settings/Channel.php:557 +#: ../../Zotlabs/Module/Settings/Channel.php:556 msgid "You receive a friend suggestion" msgstr "Reciba una sugerencia de amistad" -#: ../../Zotlabs/Module/Settings/Channel.php:558 +#: ../../Zotlabs/Module/Settings/Channel.php:557 msgid "You are tagged in a post" msgstr "Usted sea etiquetado en una publicación" -#: ../../Zotlabs/Module/Settings/Channel.php:559 +#: ../../Zotlabs/Module/Settings/Channel.php:558 msgid "You are poked/prodded/etc. in a post" msgstr "Reciba un toque o incitación en una publicación" -#: ../../Zotlabs/Module/Settings/Channel.php:561 +#: ../../Zotlabs/Module/Settings/Channel.php:560 msgid "Someone likes your post/comment" msgstr "Alguien muestre agrado por su entrada o comentario" -#: ../../Zotlabs/Module/Settings/Channel.php:564 +#: ../../Zotlabs/Module/Settings/Channel.php:563 msgid "Show visual notifications including:" msgstr "Mostrar notificaciones visuales que incluyan:" -#: ../../Zotlabs/Module/Settings/Channel.php:566 +#: ../../Zotlabs/Module/Settings/Channel.php:565 msgid "Unseen stream activity" msgstr "Actividad del stream no vista" -#: ../../Zotlabs/Module/Settings/Channel.php:567 +#: ../../Zotlabs/Module/Settings/Channel.php:566 msgid "Unseen channel activity" msgstr "Actividad no vista en el canal" -#: ../../Zotlabs/Module/Settings/Channel.php:568 +#: ../../Zotlabs/Module/Settings/Channel.php:567 msgid "Unseen private messages" msgstr "Mensajes privados no leídos" #: ../../Zotlabs/Module/Settings/Channel.php:568 -#: ../../Zotlabs/Module/Settings/Channel.php:573 -#: ../../Zotlabs/Module/Settings/Channel.php:574 -#: ../../Zotlabs/Module/Settings/Channel.php:575 -msgid "Recommended" -msgstr "Recomendado" - -#: ../../Zotlabs/Module/Settings/Channel.php:569 msgid "Upcoming events" msgstr "Próximos eventos" -#: ../../Zotlabs/Module/Settings/Channel.php:570 +#: ../../Zotlabs/Module/Settings/Channel.php:569 msgid "Events today" msgstr "Eventos de hoy" -#: ../../Zotlabs/Module/Settings/Channel.php:571 +#: ../../Zotlabs/Module/Settings/Channel.php:570 msgid "Upcoming birthdays" msgstr "Próximos cumpleaños" -#: ../../Zotlabs/Module/Settings/Channel.php:571 +#: ../../Zotlabs/Module/Settings/Channel.php:570 msgid "Not available in all themes" msgstr "No disponible en todos los temas" -#: ../../Zotlabs/Module/Settings/Channel.php:572 +#: ../../Zotlabs/Module/Settings/Channel.php:571 msgid "System (personal) notifications" msgstr "Notificaciones del sistema (personales)" -#: ../../Zotlabs/Module/Settings/Channel.php:573 +#: ../../Zotlabs/Module/Settings/Channel.php:572 msgid "System info messages" msgstr "Mensajes de información del sistema" -#: ../../Zotlabs/Module/Settings/Channel.php:574 +#: ../../Zotlabs/Module/Settings/Channel.php:573 msgid "System critical alerts" msgstr "Alertas críticas del sistema" -#: ../../Zotlabs/Module/Settings/Channel.php:575 +#: ../../Zotlabs/Module/Settings/Channel.php:574 msgid "New connections" msgstr "Nuevas conexiones" -#: ../../Zotlabs/Module/Settings/Channel.php:576 +#: ../../Zotlabs/Module/Settings/Channel.php:575 msgid "System Registrations" msgstr "Registros del sistema" -#: ../../Zotlabs/Module/Settings/Channel.php:577 +#: ../../Zotlabs/Module/Settings/Channel.php:576 msgid "Unseen shared files" msgstr "Ficheros compartidos no vistos" -#: ../../Zotlabs/Module/Settings/Channel.php:578 +#: ../../Zotlabs/Module/Settings/Channel.php:577 msgid "Unseen public stream activity" msgstr "Actividad del stream público no vista" -#: ../../Zotlabs/Module/Settings/Channel.php:579 +#: ../../Zotlabs/Module/Settings/Channel.php:578 msgid "Unseen likes and dislikes" msgstr "Los \"me gusta\" y \"no me gusta\" no vistos" -#: ../../Zotlabs/Module/Settings/Channel.php:580 +#: ../../Zotlabs/Module/Settings/Channel.php:579 msgid "Unseen forum posts" msgstr "Entradas no vistas en el foro" -#: ../../Zotlabs/Module/Settings/Channel.php:581 +#: ../../Zotlabs/Module/Settings/Channel.php:580 msgid "Email notification hub (hostname)" msgstr "Email de notificación del hub (nombre del host)" -#: ../../Zotlabs/Module/Settings/Channel.php:581 +#: ../../Zotlabs/Module/Settings/Channel.php:580 #, php-format msgid "" "If your channel is mirrored to multiple hubs, set this to your preferred " "location. This will prevent duplicate email notifications. Example: %s" msgstr "Si su canal está replicado en múltiples hubs, colóquelo en su ubicación preferida. Esto evitará la duplicación de notificaciones por correo electrónico. Ejemplo: %s" -#: ../../Zotlabs/Module/Settings/Channel.php:582 +#: ../../Zotlabs/Module/Settings/Channel.php:581 msgid "Show new wall posts, private messages and connections under Notices" msgstr "Mostrar nuevos mensajes en el muro, mensajes privados y conexiones en Avisos" -#: ../../Zotlabs/Module/Settings/Channel.php:584 +#: ../../Zotlabs/Module/Settings/Channel.php:583 msgid "Notify me of events this many days in advance" msgstr "Avisarme de los eventos con algunos días de antelación" -#: ../../Zotlabs/Module/Settings/Channel.php:584 +#: ../../Zotlabs/Module/Settings/Channel.php:583 msgid "Must be greater than 0" msgstr "Debe ser mayor que 0" -#: ../../Zotlabs/Module/Settings/Channel.php:589 +#: ../../Zotlabs/Module/Settings/Channel.php:588 msgid "Advanced Account/Page Type Settings" msgstr "Ajustes avanzados de la cuenta y de los tipos de página" -#: ../../Zotlabs/Module/Settings/Channel.php:590 +#: ../../Zotlabs/Module/Settings/Channel.php:589 msgid "Change the behaviour of this account for special situations" msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales" -#: ../../Zotlabs/Module/Settings/Channel.php:592 +#: ../../Zotlabs/Module/Settings/Channel.php:591 msgid "Miscellaneous Settings" msgstr "Ajustes diversos" -#: ../../Zotlabs/Module/Settings/Channel.php:593 +#: ../../Zotlabs/Module/Settings/Channel.php:592 msgid "Default photo upload folder" msgstr "Carpeta por defecto de las fotos subidas" +#: ../../Zotlabs/Module/Settings/Channel.php:592 #: ../../Zotlabs/Module/Settings/Channel.php:593 -#: ../../Zotlabs/Module/Settings/Channel.php:594 msgid "%Y - current year, %m - current month" msgstr "%Y - año en curso, %m - mes actual" -#: ../../Zotlabs/Module/Settings/Channel.php:594 +#: ../../Zotlabs/Module/Settings/Channel.php:593 msgid "Default file upload folder" msgstr "Carpeta por defecto de los ficheros subidos" -#: ../../Zotlabs/Module/Settings/Channel.php:596 +#: ../../Zotlabs/Module/Settings/Channel.php:595 msgid "Remove this channel." msgstr "Eliminar este canal." @@ -13483,154 +13458,154 @@ msgstr "Dejar en blanco la contraseña a menos que desee cambiarla." msgid "Remove this account including all its channels" msgstr "Eliminar esta cuenta incluyendo todos sus canales" -#: ../../Zotlabs/Module/Settings/Featured.php:25 +#: ../../Zotlabs/Module/Settings/Featured.php:24 msgid "No feature settings configured" msgstr "No se ha establecido la configuración de los complementos" -#: ../../Zotlabs/Module/Settings/Featured.php:34 +#: ../../Zotlabs/Module/Settings/Featured.php:33 msgid "Addon Settings" msgstr "Ajustes de los complementos" -#: ../../Zotlabs/Module/Settings/Featured.php:35 +#: ../../Zotlabs/Module/Settings/Featured.php:34 msgid "Please save/submit changes to any panel before opening another." msgstr "Guarde o envíe los cambios a cualquier panel antes de abrir otro." -#: ../../Zotlabs/Module/Settings/Events.php:40 +#: ../../Zotlabs/Module/Settings/Events.php:39 msgid "Events Settings" msgstr "Gestión de eventos" -#: ../../Zotlabs/Module/Settings/Manage.php:41 +#: ../../Zotlabs/Module/Settings/Manage.php:39 msgid "Channel Manager Settings" msgstr "Ajustes del administrador de canales" -#: ../../Zotlabs/Module/Settings/Channel_home.php:61 +#: ../../Zotlabs/Module/Settings/Channel_home.php:59 msgid "Personal menu to display in your channel pages" msgstr "Menú personal que debe mostrarse en las páginas de su canal" -#: ../../Zotlabs/Module/Settings/Channel_home.php:88 +#: ../../Zotlabs/Module/Settings/Channel_home.php:86 msgid "Channel Home Settings" msgstr "Ajustes del canal" -#: ../../Zotlabs/Module/Settings/Calendar.php:40 +#: ../../Zotlabs/Module/Settings/Calendar.php:39 msgid "Calendar Settings" msgstr "Ajustes del calendario" -#: ../../Zotlabs/Module/Settings/Display.php:129 +#: ../../Zotlabs/Module/Settings/Display.php:128 #, php-format msgid "%s - (Experimental)" msgstr "%s - (Experimental)" -#: ../../Zotlabs/Module/Settings/Display.php:185 +#: ../../Zotlabs/Module/Settings/Display.php:184 msgid "Display Settings" msgstr "Ajustes de visualización" -#: ../../Zotlabs/Module/Settings/Display.php:186 +#: ../../Zotlabs/Module/Settings/Display.php:185 msgid "Theme Settings" msgstr "Ajustes del tema" -#: ../../Zotlabs/Module/Settings/Display.php:187 +#: ../../Zotlabs/Module/Settings/Display.php:186 msgid "Custom Theme Settings" msgstr "Ajustes personalizados del tema" -#: ../../Zotlabs/Module/Settings/Display.php:188 +#: ../../Zotlabs/Module/Settings/Display.php:187 msgid "Content Settings" msgstr "Ajustes del contenido" -#: ../../Zotlabs/Module/Settings/Display.php:194 +#: ../../Zotlabs/Module/Settings/Display.php:193 msgid "Display Theme:" msgstr "Tema gráfico del perfil:" -#: ../../Zotlabs/Module/Settings/Display.php:195 +#: ../../Zotlabs/Module/Settings/Display.php:194 msgid "Select scheme" msgstr "Elegir un esquema" -#: ../../Zotlabs/Module/Settings/Display.php:197 +#: ../../Zotlabs/Module/Settings/Display.php:196 msgid "Preload images before rendering the page" msgstr "Carga previa de las imágenes antes de generar la página" -#: ../../Zotlabs/Module/Settings/Display.php:197 +#: ../../Zotlabs/Module/Settings/Display.php:196 msgid "" "The subjective page load time will be longer but the page will be ready when" " displayed" msgstr "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre." -#: ../../Zotlabs/Module/Settings/Display.php:198 +#: ../../Zotlabs/Module/Settings/Display.php:197 msgid "Enable user zoom on mobile devices" msgstr "Habilitar zoom de usuario en dispositivos móviles" -#: ../../Zotlabs/Module/Settings/Display.php:199 +#: ../../Zotlabs/Module/Settings/Display.php:198 msgid "Update browser every xx seconds" msgstr "Actualizar navegador cada xx segundos" -#: ../../Zotlabs/Module/Settings/Display.php:199 +#: ../../Zotlabs/Module/Settings/Display.php:198 msgid "Minimum of 10 seconds, no maximum" msgstr "Mínimo de 10 segundos, sin máximo" -#: ../../Zotlabs/Module/Settings/Display.php:200 +#: ../../Zotlabs/Module/Settings/Display.php:199 msgid "Maximum number of conversations to load at any time:" msgstr "Máximo número de conversaciones a cargar en cualquier momento:" -#: ../../Zotlabs/Module/Settings/Display.php:200 -msgid "Maximum of 30 items" -msgstr "Máximo de 30 elementos" +#: ../../Zotlabs/Module/Settings/Display.php:199 +msgid "Maximum of 100 items" +msgstr "Máximo de 100 elementos" -#: ../../Zotlabs/Module/Settings/Display.php:201 +#: ../../Zotlabs/Module/Settings/Display.php:200 msgid "Show emoticons (smilies) as images" msgstr "Mostrar emoticonos (smilies) como imágenes" -#: ../../Zotlabs/Module/Settings/Display.php:202 +#: ../../Zotlabs/Module/Settings/Display.php:201 msgid "Provide channel menu in navigation bar" msgstr "Proporcionar un menú de canales en la barra de navegación" -#: ../../Zotlabs/Module/Settings/Display.php:202 +#: ../../Zotlabs/Module/Settings/Display.php:201 msgid "Default: channel menu located in app menu" msgstr "Predeterminado: menú de canales ubicado en el menú de aplicaciones" -#: ../../Zotlabs/Module/Settings/Display.php:203 +#: ../../Zotlabs/Module/Settings/Display.php:202 msgid "Manual conversation updates" msgstr "Actualizaciones manuales de la conversación" -#: ../../Zotlabs/Module/Settings/Display.php:203 +#: ../../Zotlabs/Module/Settings/Display.php:202 msgid "Default is on, turning this off may increase screen jumping" msgstr "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla" -#: ../../Zotlabs/Module/Settings/Display.php:204 +#: ../../Zotlabs/Module/Settings/Display.php:203 msgid "Link post titles to source" msgstr "Enlazar título de la publicación a la fuente original" -#: ../../Zotlabs/Module/Settings/Display.php:206 +#: ../../Zotlabs/Module/Settings/Display.php:205 msgid "Display new member quick links menu" msgstr "Mostrar el menú de enlaces rápidos para nuevos miembros" -#: ../../Zotlabs/Module/Settings/Directory.php:40 +#: ../../Zotlabs/Module/Settings/Directory.php:39 msgid "Directory Settings" msgstr "Configuración del directorio" -#: ../../Zotlabs/Module/Settings/Editor.php:40 +#: ../../Zotlabs/Module/Settings/Editor.php:39 msgid "Editor Settings" msgstr "Ajustes del editor" -#: ../../Zotlabs/Module/Settings/Connections.php:40 +#: ../../Zotlabs/Module/Settings/Connections.php:39 msgid "Connections Settings" msgstr "Gestión de las conexiones" -#: ../../Zotlabs/Module/Settings/Photos.php:40 +#: ../../Zotlabs/Module/Settings/Photos.php:39 msgid "Photos Settings" msgstr "Gestión de las fotos" -#: ../../Zotlabs/Module/Settings/Profiles.php:49 +#: ../../Zotlabs/Module/Settings/Profiles.php:47 msgid "Profiles Settings" msgstr "Gestión de los perfiles" -#: ../../Zotlabs/Module/Settings/Conversation.php:23 +#: ../../Zotlabs/Module/Settings/Conversation.php:22 msgid "Settings saved." msgstr "Configuración guardada." -#: ../../Zotlabs/Module/Settings/Conversation.php:25 +#: ../../Zotlabs/Module/Settings/Conversation.php:24 msgid "Settings saved. Reload page please." msgstr "Ajustes guardados. Recargue la página, por favor." -#: ../../Zotlabs/Module/Settings/Conversation.php:47 +#: ../../Zotlabs/Module/Settings/Conversation.php:46 msgid "Conversation Settings" msgstr "Ajustes de conversación" @@ -13722,45 +13697,45 @@ msgstr "El título del menú tal como será visto por los demás" msgid "Allow bookmarks" msgstr "Permitir marcadores" -#: ../../Zotlabs/Module/Defperms.php:68 ../../Zotlabs/Module/Connedit.php:82 +#: ../../Zotlabs/Module/Defperms.php:67 ../../Zotlabs/Module/Connedit.php:81 msgid "Could not access contact record." msgstr "No se ha podido acceder al registro de contacto." -#: ../../Zotlabs/Module/Defperms.php:190 +#: ../../Zotlabs/Module/Defperms.php:189 msgid "Default Permissions App" msgstr "App Permisos por defecto" -#: ../../Zotlabs/Module/Defperms.php:191 +#: ../../Zotlabs/Module/Defperms.php:190 msgid "Set custom default permissions for new connections" msgstr "Establecer permisos predeterminados personalizados para nuevas conexiones" -#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:868 +#: ../../Zotlabs/Module/Defperms.php:254 ../../Zotlabs/Module/Connedit.php:867 msgid "Connection Default Permissions" msgstr "Permisos predeterminados de conexión" -#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 +#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:868 msgid "Apply these permissions automatically" msgstr "Aplicar estos permisos automaticamente" -#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:870 +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 msgid "Permission role" msgstr "Permisos de rol" -#: ../../Zotlabs/Module/Defperms.php:258 ../../Zotlabs/Module/Connedit.php:871 +#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:870 msgid "Add permission role" msgstr "Añadir permisos de rol" -#: ../../Zotlabs/Module/Defperms.php:262 ../../Zotlabs/Module/Connedit.php:884 +#: ../../Zotlabs/Module/Defperms.php:261 ../../Zotlabs/Module/Connedit.php:883 msgid "" "The permissions indicated on this page will be applied to all new " "connections." msgstr "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones." -#: ../../Zotlabs/Module/Defperms.php:263 +#: ../../Zotlabs/Module/Defperms.php:262 msgid "Automatic approval settings" msgstr "Opciones de autorización automática" -#: ../../Zotlabs/Module/Defperms.php:271 +#: ../../Zotlabs/Module/Defperms.php:270 msgid "" "Some individual permissions may have been preset or locked based on your " "channel type and privacy settings." @@ -13890,60 +13865,60 @@ msgstr "Informe de entrega para %1$s" msgid "Redeliver" msgstr "Volver a enviar" -#: ../../Zotlabs/Module/Thing.php:122 +#: ../../Zotlabs/Module/Thing.php:120 msgid "Thing updated" msgstr "Elemento actualizado." -#: ../../Zotlabs/Module/Thing.php:174 +#: ../../Zotlabs/Module/Thing.php:172 msgid "Object store: failed" msgstr "Guardar objeto: ha fallado" -#: ../../Zotlabs/Module/Thing.php:178 +#: ../../Zotlabs/Module/Thing.php:176 msgid "Thing added" msgstr "Elemento añadido" -#: ../../Zotlabs/Module/Thing.php:204 +#: ../../Zotlabs/Module/Thing.php:202 #, php-format msgid "OBJ: %1$s %2$s %3$s" msgstr "OBJ: %1$s %2$s %3$s" -#: ../../Zotlabs/Module/Thing.php:267 +#: ../../Zotlabs/Module/Thing.php:265 msgid "Show Thing" msgstr "Mostrar elemento" -#: ../../Zotlabs/Module/Thing.php:274 +#: ../../Zotlabs/Module/Thing.php:272 msgid "item not found." msgstr "elemento no encontrado." -#: ../../Zotlabs/Module/Thing.php:307 +#: ../../Zotlabs/Module/Thing.php:305 msgid "Edit Thing" msgstr "Editar elemento" -#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:366 +#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:364 msgid "Select a profile" msgstr "Seleccionar un perfil" -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 +#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 msgid "Post an activity" msgstr "Publicar una actividad" -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 +#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 msgid "Only sends to viewers of the applicable profile" msgstr "Sólo enviar a espectadores del perfil pertinente." -#: ../../Zotlabs/Module/Thing.php:315 ../../Zotlabs/Module/Thing.php:371 +#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 msgid "Name of thing e.g. something" msgstr "Nombre del elemento, p. ej.:. \"algo\"" -#: ../../Zotlabs/Module/Thing.php:317 ../../Zotlabs/Module/Thing.php:372 +#: ../../Zotlabs/Module/Thing.php:315 ../../Zotlabs/Module/Thing.php:370 msgid "URL of thing (optional)" msgstr "Dirección del elemento (opcional)" -#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:373 +#: ../../Zotlabs/Module/Thing.php:317 ../../Zotlabs/Module/Thing.php:371 msgid "URL for photo of thing (optional)" msgstr "Dirección para la foto o elemento (opcional)" -#: ../../Zotlabs/Module/Thing.php:364 +#: ../../Zotlabs/Module/Thing.php:362 msgid "Add Thing to your Profile" msgstr "Añadir alguna cosa a su perfil" @@ -13951,43 +13926,43 @@ msgstr "Añadir alguna cosa a su perfil" msgid "Authentication failed." msgstr "Falló la autenticación." -#: ../../Zotlabs/Module/Pdledit.php:27 +#: ../../Zotlabs/Module/Pdledit.php:26 msgid "Layout updated." msgstr "Plantilla actualizada." -#: ../../Zotlabs/Module/Pdledit.php:43 +#: ../../Zotlabs/Module/Pdledit.php:42 msgid "PDL Editor App" msgstr "App Editor PDL" -#: ../../Zotlabs/Module/Pdledit.php:44 +#: ../../Zotlabs/Module/Pdledit.php:43 msgid "Provides the ability to edit system page layouts" msgstr "Proporciona la capacidad de editar los diseños de página del sistema" -#: ../../Zotlabs/Module/Pdledit.php:57 ../../Zotlabs/Module/Pdledit.php:100 +#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99 msgid "Edit System Page Description" msgstr "Editor del Sistema de Descripción de Páginas" -#: ../../Zotlabs/Module/Pdledit.php:78 +#: ../../Zotlabs/Module/Pdledit.php:77 msgid "(modified)" msgstr "(modificado)" -#: ../../Zotlabs/Module/Pdledit.php:95 +#: ../../Zotlabs/Module/Pdledit.php:94 msgid "Layout not found." msgstr "Plantilla no encontrada" -#: ../../Zotlabs/Module/Pdledit.php:101 +#: ../../Zotlabs/Module/Pdledit.php:100 msgid "Module Name:" msgstr "Nombre del módulo:" -#: ../../Zotlabs/Module/Pdledit.php:102 +#: ../../Zotlabs/Module/Pdledit.php:101 msgid "Layout Help" msgstr "Ayuda para el diseño de plantillas de página" -#: ../../Zotlabs/Module/Pdledit.php:103 +#: ../../Zotlabs/Module/Pdledit.php:102 msgid "Edit another layout" msgstr "Editar otro diseño" -#: ../../Zotlabs/Module/Pdledit.php:104 +#: ../../Zotlabs/Module/Pdledit.php:103 msgid "System layout" msgstr "Diseño del sistema" @@ -14067,6 +14042,10 @@ msgstr "Comparación de revisiones" msgid "Short description of your changes (optional)" msgstr "Breve descripción de sus cambios (opcional)" +#: ../../Zotlabs/Module/Wiki.php:384 +msgid "Source" +msgstr "Fuente" + #: ../../Zotlabs/Module/Wiki.php:394 msgid "New page name" msgstr "Nombre de la nueva página" @@ -14152,244 +14131,244 @@ msgid "" "hours." msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo." -#: ../../Zotlabs/Module/Connedit.php:113 +#: ../../Zotlabs/Module/Connedit.php:112 msgid "Could not locate selected profile." msgstr "No se ha podido localizar el perfil seleccionado." -#: ../../Zotlabs/Module/Connedit.php:257 +#: ../../Zotlabs/Module/Connedit.php:256 msgid "Connection updated." msgstr "Conexión actualizada." -#: ../../Zotlabs/Module/Connedit.php:259 +#: ../../Zotlabs/Module/Connedit.php:258 msgid "Failed to update connection record." msgstr "Error al actualizar el registro de la conexión." -#: ../../Zotlabs/Module/Connedit.php:313 +#: ../../Zotlabs/Module/Connedit.php:312 msgid "is now connected to" msgstr "ahora está conectado/a" -#: ../../Zotlabs/Module/Connedit.php:438 +#: ../../Zotlabs/Module/Connedit.php:437 msgid "Could not access address book record." msgstr "No se pudo acceder al registro en su libreta de direcciones." -#: ../../Zotlabs/Module/Connedit.php:486 ../../Zotlabs/Module/Connedit.php:490 +#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489 msgid "Refresh failed - channel is currently unavailable." msgstr "Recarga fallida - no se puede encontrar el canal en este momento." -#: ../../Zotlabs/Module/Connedit.php:505 ../../Zotlabs/Module/Connedit.php:514 -#: ../../Zotlabs/Module/Connedit.php:523 ../../Zotlabs/Module/Connedit.php:532 -#: ../../Zotlabs/Module/Connedit.php:545 +#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513 +#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531 +#: ../../Zotlabs/Module/Connedit.php:544 msgid "Unable to set address book parameters." msgstr "No ha sido posible establecer los parámetros de la libreta de direcciones." -#: ../../Zotlabs/Module/Connedit.php:569 +#: ../../Zotlabs/Module/Connedit.php:568 msgid "Connection has been removed." msgstr "La conexión ha sido eliminada." -#: ../../Zotlabs/Module/Connedit.php:612 +#: ../../Zotlabs/Module/Connedit.php:611 #, php-format msgid "View %s's profile" msgstr "Ver el perfil de %s" -#: ../../Zotlabs/Module/Connedit.php:616 +#: ../../Zotlabs/Module/Connedit.php:615 msgid "Refresh Permissions" msgstr "Recargar los permisos" -#: ../../Zotlabs/Module/Connedit.php:619 +#: ../../Zotlabs/Module/Connedit.php:618 msgid "Fetch updated permissions" msgstr "Obtener los permisos actualizados" -#: ../../Zotlabs/Module/Connedit.php:623 +#: ../../Zotlabs/Module/Connedit.php:622 msgid "Refresh Photo" msgstr "Actualizar la foto" -#: ../../Zotlabs/Module/Connedit.php:626 +#: ../../Zotlabs/Module/Connedit.php:625 msgid "Fetch updated photo" msgstr "Obtener una foto actualizada" -#: ../../Zotlabs/Module/Connedit.php:633 +#: ../../Zotlabs/Module/Connedit.php:632 msgid "View recent posts and comments" msgstr "Ver publicaciones y comentarios recientes" -#: ../../Zotlabs/Module/Connedit.php:640 +#: ../../Zotlabs/Module/Connedit.php:639 msgid "Block (or Unblock) all communications with this connection" msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión" -#: ../../Zotlabs/Module/Connedit.php:641 +#: ../../Zotlabs/Module/Connedit.php:640 msgid "This connection is blocked!" msgstr "¡Esta conexión está bloqueada!" -#: ../../Zotlabs/Module/Connedit.php:645 +#: ../../Zotlabs/Module/Connedit.php:644 msgid "Unignore" msgstr "Dejar de ignorar" -#: ../../Zotlabs/Module/Connedit.php:648 +#: ../../Zotlabs/Module/Connedit.php:647 msgid "Ignore (or Unignore) all inbound communications from this connection" msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión" -#: ../../Zotlabs/Module/Connedit.php:649 +#: ../../Zotlabs/Module/Connedit.php:648 msgid "This connection is ignored!" msgstr "¡Esta conexión es ignorada!" -#: ../../Zotlabs/Module/Connedit.php:653 +#: ../../Zotlabs/Module/Connedit.php:652 msgid "Unarchive" msgstr "Desarchivar" -#: ../../Zotlabs/Module/Connedit.php:653 +#: ../../Zotlabs/Module/Connedit.php:652 msgid "Archive" msgstr "Archivar" -#: ../../Zotlabs/Module/Connedit.php:656 +#: ../../Zotlabs/Module/Connedit.php:655 msgid "" "Archive (or Unarchive) this connection - mark channel dead but keep content" msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos" -#: ../../Zotlabs/Module/Connedit.php:657 +#: ../../Zotlabs/Module/Connedit.php:656 msgid "This connection is archived!" msgstr "¡Esta conexión esta archivada!" -#: ../../Zotlabs/Module/Connedit.php:661 +#: ../../Zotlabs/Module/Connedit.php:660 msgid "Unhide" msgstr "Mostrar" -#: ../../Zotlabs/Module/Connedit.php:661 +#: ../../Zotlabs/Module/Connedit.php:660 msgid "Hide" msgstr "Ocultar" -#: ../../Zotlabs/Module/Connedit.php:664 +#: ../../Zotlabs/Module/Connedit.php:663 msgid "Hide or Unhide this connection from your other connections" msgstr "Ocultar o mostrar esta conexión a sus otras conexiones" -#: ../../Zotlabs/Module/Connedit.php:665 +#: ../../Zotlabs/Module/Connedit.php:664 msgid "This connection is hidden!" msgstr "¡Esta conexión está oculta!" -#: ../../Zotlabs/Module/Connedit.php:672 +#: ../../Zotlabs/Module/Connedit.php:671 msgid "Delete this connection" msgstr "Eliminar esta conexión" -#: ../../Zotlabs/Module/Connedit.php:680 +#: ../../Zotlabs/Module/Connedit.php:679 msgid "Fetch Vcard" msgstr "Obtener una vcard" -#: ../../Zotlabs/Module/Connedit.php:683 +#: ../../Zotlabs/Module/Connedit.php:682 msgid "Fetch electronic calling card for this connection" msgstr "Obtener una tarjeta de llamada electrónica para esta conexión" -#: ../../Zotlabs/Module/Connedit.php:694 +#: ../../Zotlabs/Module/Connedit.php:693 msgid "Open Individual Permissions section by default" msgstr "Abrir la sección de permisos individuales por defecto" -#: ../../Zotlabs/Module/Connedit.php:717 +#: ../../Zotlabs/Module/Connedit.php:716 msgid "Affinity" msgstr "Afinidad" -#: ../../Zotlabs/Module/Connedit.php:720 +#: ../../Zotlabs/Module/Connedit.php:719 msgid "Open Set Affinity section by default" msgstr "Abrir por defecto la sección para definir la afinidad" -#: ../../Zotlabs/Module/Connedit.php:757 +#: ../../Zotlabs/Module/Connedit.php:756 msgid "Filter" msgstr "Filtrar" -#: ../../Zotlabs/Module/Connedit.php:760 +#: ../../Zotlabs/Module/Connedit.php:759 msgid "Open Custom Filter section by default" msgstr "Abrir por defecto la sección de personalización de filtros" -#: ../../Zotlabs/Module/Connedit.php:797 +#: ../../Zotlabs/Module/Connedit.php:796 msgid "Approve this connection" msgstr "Aprobar esta conexión" -#: ../../Zotlabs/Module/Connedit.php:797 +#: ../../Zotlabs/Module/Connedit.php:796 msgid "Accept connection to allow communication" msgstr "Aceptar la conexión para permitir la comunicación" -#: ../../Zotlabs/Module/Connedit.php:802 +#: ../../Zotlabs/Module/Connedit.php:801 msgid "Set Affinity" msgstr "Ajustar la afinidad" -#: ../../Zotlabs/Module/Connedit.php:805 +#: ../../Zotlabs/Module/Connedit.php:804 msgid "Set Profile" msgstr "Ajustar el perfil" -#: ../../Zotlabs/Module/Connedit.php:808 +#: ../../Zotlabs/Module/Connedit.php:807 msgid "Set Affinity & Profile" msgstr "Ajustar la afinidad y el perfil" -#: ../../Zotlabs/Module/Connedit.php:856 +#: ../../Zotlabs/Module/Connedit.php:855 msgid "This connection is unreachable from this location." msgstr "No se puede acceder a la conexión desde este sitio." -#: ../../Zotlabs/Module/Connedit.php:857 +#: ../../Zotlabs/Module/Connedit.php:856 msgid "This connection may be unreachable from other channel locations." msgstr "Esta conexión puede ser inaccesible desde otras ubicaciones del canal." -#: ../../Zotlabs/Module/Connedit.php:859 +#: ../../Zotlabs/Module/Connedit.php:858 msgid "Location independence is not supported by their network." msgstr "La independencia de ubicación no es compatible con su red." -#: ../../Zotlabs/Module/Connedit.php:865 +#: ../../Zotlabs/Module/Connedit.php:864 msgid "" "This connection is unreachable from this location. Location independence is " "not supported by their network." msgstr "Esta conexión no es accesible desde este sitio. La independencia de ubicación no es compatible con su red." -#: ../../Zotlabs/Module/Connedit.php:869 +#: ../../Zotlabs/Module/Connedit.php:868 msgid "Connection requests will be approved without your interaction" msgstr "Las solicitudes de conexión serán aprobadas sin su intervención" -#: ../../Zotlabs/Module/Connedit.php:878 +#: ../../Zotlabs/Module/Connedit.php:877 msgid "This connection's primary address is" msgstr "La dirección primaria de esta conexión es" -#: ../../Zotlabs/Module/Connedit.php:879 +#: ../../Zotlabs/Module/Connedit.php:878 msgid "Available locations:" msgstr "Ubicaciones disponibles:" -#: ../../Zotlabs/Module/Connedit.php:885 +#: ../../Zotlabs/Module/Connedit.php:884 msgid "Connection Tools" msgstr "Gestión de las conexiones" -#: ../../Zotlabs/Module/Connedit.php:887 +#: ../../Zotlabs/Module/Connedit.php:886 msgid "Slide to adjust your degree of friendship" msgstr "Deslizar para ajustar el grado de amistad" -#: ../../Zotlabs/Module/Connedit.php:889 +#: ../../Zotlabs/Module/Connedit.php:888 msgid "Slide to adjust your rating" msgstr "Deslizar para ajustar su valoración" -#: ../../Zotlabs/Module/Connedit.php:890 ../../Zotlabs/Module/Connedit.php:895 +#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894 msgid "Optionally explain your rating" msgstr "Opcionalmente, puede explicar su valoración" -#: ../../Zotlabs/Module/Connedit.php:892 +#: ../../Zotlabs/Module/Connedit.php:891 msgid "Custom Filter" msgstr "Filtro personalizado" -#: ../../Zotlabs/Module/Connedit.php:893 +#: ../../Zotlabs/Module/Connedit.php:892 msgid "Only import posts with this text" msgstr "Importar solo entradas que contengan este texto" -#: ../../Zotlabs/Module/Connedit.php:894 +#: ../../Zotlabs/Module/Connedit.php:893 msgid "Do not import posts with this text" msgstr "No importar entradas que contengan este texto" -#: ../../Zotlabs/Module/Connedit.php:896 +#: ../../Zotlabs/Module/Connedit.php:895 msgid "This information is public!" msgstr "¡Esta información es pública!" -#: ../../Zotlabs/Module/Connedit.php:901 +#: ../../Zotlabs/Module/Connedit.php:900 msgid "Connection Pending Approval" msgstr "Conexión pendiente de aprobación" -#: ../../Zotlabs/Module/Connedit.php:906 +#: ../../Zotlabs/Module/Connedit.php:905 #, php-format msgid "" "Please choose the profile you would like to display to %s when viewing your " "profile securely." msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura." -#: ../../Zotlabs/Module/Connedit.php:913 +#: ../../Zotlabs/Module/Connedit.php:912 msgid "" "Some permissions may be inherited from your channel's <a " "href=\"settings\"><strong>privacy settings</strong></a>, which have higher " @@ -14397,11 +14376,11 @@ msgid "" "they wont have any impact unless the inherited setting changes." msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados." -#: ../../Zotlabs/Module/Connedit.php:914 +#: ../../Zotlabs/Module/Connedit.php:913 msgid "Last update:" msgstr "Última actualización:" -#: ../../Zotlabs/Module/Connedit.php:922 +#: ../../Zotlabs/Module/Connedit.php:921 msgid "Details" msgstr "Detalles" @@ -14416,7 +14395,7 @@ msgid "System Notifications" msgstr "Notificaciones del sistema" #: ../../Zotlabs/Module/Notifications.php:60 -#: ../../Zotlabs/Lib/ThreadItem.php:482 +#: ../../Zotlabs/Lib/ThreadItem.php:450 msgid "Mark all seen" msgstr "Marcar todo como visto" @@ -14500,7 +14479,7 @@ msgstr "Importar automáticamente contenido de otros canales o \"feeds\"" msgid "*" msgstr "*" -#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:368 +#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:367 msgid "Channel Sources" msgstr "Orígenes de los contenidos del canal" @@ -14586,33 +14565,6 @@ msgid "" " logout and retry." msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo." -#: ../../Zotlabs/Lib/AccessList.php:28 -msgid "" -"A deleted list with this name was revived. Existing item permissions " -"<strong>may</strong> apply to this list and any future members. If this is " -"not what you intended, please create another list with a different name." -msgstr "Una lista eliminada con este nombre ha sido reactivada. Los permisos <strong>de los elementos existentes pueden </strong>aplicarse a esta lista y a cualquier miembro futuro. Si esto no es lo que pretendía, por favor, cree otra lista con un nombre diferente." - -#: ../../Zotlabs/Lib/AccessList.php:286 -msgid "Add new connections to this access list" -msgstr "Añadir nuevas conexiones a esta lista de acceso" - -#: ../../Zotlabs/Lib/AccessList.php:331 -msgid "Lists" -msgstr "Listas" - -#: ../../Zotlabs/Lib/AccessList.php:332 -msgid "Edit list" -msgstr "Editar lista" - -#: ../../Zotlabs/Lib/AccessList.php:333 -msgid "Create new list" -msgstr "Crear una nueva lista" - -#: ../../Zotlabs/Lib/AccessList.php:334 -msgid "Channels not in any access list" -msgstr "No hay canales en ninguna lista de acceso" - #: ../../Zotlabs/Lib/Permcat.php:82 msgctxt "permcat" msgid "default" @@ -14633,35 +14585,30 @@ msgctxt "permcat" msgid "publisher" msgstr "editor" -#: ../../Zotlabs/Lib/Activity.php:2045 +#: ../../Zotlabs/Lib/Activity.php:1656 #, php-format msgid "Likes %1$s's %2$s" msgstr "Gusta de %2$sde %1$s" -#: ../../Zotlabs/Lib/Activity.php:2048 +#: ../../Zotlabs/Lib/Activity.php:1659 #, php-format msgid "Doesn't like %1$s's %2$s" msgstr "No le gusta %2$sde %1$s" -#: ../../Zotlabs/Lib/Activity.php:2054 -#, php-format -msgid "Will attend %s's event" -msgstr "Asistirá al evento de %s" - -#: ../../Zotlabs/Lib/Activity.php:2057 +#: ../../Zotlabs/Lib/Activity.php:1662 #, php-format -msgid "Will not attend %s's event" -msgstr "No asistirá al evento de %s" +msgid "Will attend %1$s's %2$s" +msgstr "Asistirá %2$sde %1$s" -#: ../../Zotlabs/Lib/Activity.php:2060 +#: ../../Zotlabs/Lib/Activity.php:1665 #, php-format -msgid "May attend %s's event" -msgstr "Puede asistir al evento de %s" +msgid "Will not attend %1$s's %2$s" +msgstr "No asistirá %2$sde %1$s" -#: ../../Zotlabs/Lib/Activity.php:2063 +#: ../../Zotlabs/Lib/Activity.php:1668 #, php-format -msgid "May not attend %s's event" -msgstr "Puede no asistir al evento de %s" +msgid "May attend %1$s's %2$s" +msgstr "Puede asistir %2$sde %1$s" #: ../../Zotlabs/Lib/Enotify.php:60 msgid "$Projectname Notification" @@ -14721,340 +14668,327 @@ msgstr "Por favor visite %s para ver y/o responder a su mensaje privado." msgid "commented on" msgstr "ha comentado sobre " -#: ../../Zotlabs/Lib/Enotify.php:157 +#: ../../Zotlabs/Lib/Enotify.php:155 msgid "liked" msgstr "ha gustado de " -#: ../../Zotlabs/Lib/Enotify.php:160 +#: ../../Zotlabs/Lib/Enotify.php:158 msgid "disliked" msgstr "no ha gustado de " -#: ../../Zotlabs/Lib/Enotify.php:165 -msgid "voted on" -msgstr "votado en " - -#: ../../Zotlabs/Lib/Enotify.php:208 +#: ../../Zotlabs/Lib/Enotify.php:201 #, php-format msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" msgstr "%1$s%2$s [zrl=%3$s ]un %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:216 +#: ../../Zotlabs/Lib/Enotify.php:209 #, php-format msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" msgstr "%1$s %2$s[zrl=%3$s]%5$s de %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:225 +#: ../../Zotlabs/Lib/Enotify.php:218 #, php-format msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" msgstr "%1$s %2$s [zrl=%3$s]su %4$s[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:237 +#: ../../Zotlabs/Lib/Enotify.php:230 #, php-format msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] Comentario moderado en la conversación #%1$d por %2$s" -#: ../../Zotlabs/Lib/Enotify.php:239 +#: ../../Zotlabs/Lib/Enotify.php:232 #, php-format msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] Nuevo comentario de %2$s en la conversación #%1$d" -#: ../../Zotlabs/Lib/Enotify.php:240 +#: ../../Zotlabs/Lib/Enotify.php:233 #, php-format msgid "%1$s commented on an item/conversation you have been following." msgstr "%1$sha comentado un elemento/conversación que ha estado siguiendo." -#: ../../Zotlabs/Lib/Enotify.php:243 ../../Zotlabs/Lib/Enotify.php:324 -#: ../../Zotlabs/Lib/Enotify.php:340 ../../Zotlabs/Lib/Enotify.php:365 -#: ../../Zotlabs/Lib/Enotify.php:382 ../../Zotlabs/Lib/Enotify.php:395 +#: ../../Zotlabs/Lib/Enotify.php:236 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:333 ../../Zotlabs/Lib/Enotify.php:358 +#: ../../Zotlabs/Lib/Enotify.php:375 ../../Zotlabs/Lib/Enotify.php:388 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Para ver o comentar la conversación, visite %s" -#: ../../Zotlabs/Lib/Enotify.php:247 ../../Zotlabs/Lib/Enotify.php:248 +#: ../../Zotlabs/Lib/Enotify.php:240 ../../Zotlabs/Lib/Enotify.php:241 #, php-format msgid "Please visit %s to approve or reject this comment." msgstr "Por favor, visite %s para aprobar o rechazar este comentario." -#: ../../Zotlabs/Lib/Enotify.php:306 +#: ../../Zotlabs/Lib/Enotify.php:299 #, php-format msgid "%1$s liked [zrl=%2$s]your %3$s[/zrl]" msgstr "A %1$sle ha gustado [zrl=%2$s]su %3$s [/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:320 +#: ../../Zotlabs/Lib/Enotify.php:313 #, php-format msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" msgstr "[$Projectname:Aviso] \"Me gusta\" de %2$s en la conversación #%1$d" -#: ../../Zotlabs/Lib/Enotify.php:321 +#: ../../Zotlabs/Lib/Enotify.php:314 #, php-format msgid "%1$s liked an item/conversation you created." msgstr "A %1$s le ha gustado un elemento o conversación que ha creado usted." -#: ../../Zotlabs/Lib/Enotify.php:332 +#: ../../Zotlabs/Lib/Enotify.php:325 #, php-format msgid "[$Projectname:Notify] %s posted to your profile wall" msgstr "[$Projectname:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")" -#: ../../Zotlabs/Lib/Enotify.php:334 +#: ../../Zotlabs/Lib/Enotify.php:327 #, php-format msgid "%1$s posted to your profile wall at %2$s" msgstr "%1$s ha publicado en su muro en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:336 +#: ../../Zotlabs/Lib/Enotify.php:329 #, php-format msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" msgstr "%1$sha publicado en [zrl=%2$s]su muro[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:359 +#: ../../Zotlabs/Lib/Enotify.php:352 #, php-format msgid "[$Projectname:Notify] %s tagged you" msgstr "[$Projectname:Aviso] %s le ha etiquetado" -#: ../../Zotlabs/Lib/Enotify.php:360 +#: ../../Zotlabs/Lib/Enotify.php:353 #, php-format msgid "%1$s tagged you at %2$s" msgstr "%1$sle ha etiquetado en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:361 +#: ../../Zotlabs/Lib/Enotify.php:354 #, php-format msgid "%1$s [zrl=%2$s]tagged you[/zrl]." msgstr "%1$s [zrl=%2$s]le ha etiquetado[/zrl]." -#: ../../Zotlabs/Lib/Enotify.php:372 +#: ../../Zotlabs/Lib/Enotify.php:365 #, php-format msgid "[$Projectname:Notify] %1$s poked you" msgstr "[$Projectname:Aviso] %1$s le ha dado un toque" -#: ../../Zotlabs/Lib/Enotify.php:373 +#: ../../Zotlabs/Lib/Enotify.php:366 #, php-format msgid "%1$s poked you at %2$s" msgstr "%1$sle ha dado un toque en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:374 +#: ../../Zotlabs/Lib/Enotify.php:367 #, php-format msgid "%1$s [zrl=%2$s]poked you[/zrl]." msgstr "%1$s [zrl=%2$s] le ha dado un toque[/zrl]." -#: ../../Zotlabs/Lib/Enotify.php:389 +#: ../../Zotlabs/Lib/Enotify.php:382 #, php-format msgid "[$Projectname:Notify] %s tagged your post" msgstr "[$Projectname:Aviso] %s ha etiquetado su entrada" -#: ../../Zotlabs/Lib/Enotify.php:390 +#: ../../Zotlabs/Lib/Enotify.php:383 #, php-format msgid "%1$s tagged your post at %2$s" msgstr "%1$sha etiquetado su entrada en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:391 +#: ../../Zotlabs/Lib/Enotify.php:384 #, php-format msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" msgstr "%1$s ha etiquetado [zrl=%2$s]su entrada[/zrl]" -#: ../../Zotlabs/Lib/Enotify.php:402 +#: ../../Zotlabs/Lib/Enotify.php:395 msgid "[$Projectname:Notify] Introduction received" msgstr "[$Projectname:Aviso] Ha recibido una solicitud de conexión" -#: ../../Zotlabs/Lib/Enotify.php:403 +#: ../../Zotlabs/Lib/Enotify.php:396 #, php-format msgid "You've received an new connection request from '%1$s' at %2$s" msgstr "Ha recibido una nueva solicitud de conexión de '%1$s' en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:404 +#: ../../Zotlabs/Lib/Enotify.php:397 #, php-format msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." msgstr "Ha recibido [zrl=%1$s]una nueva solicitud de conexión[/zrl] de %2$s." -#: ../../Zotlabs/Lib/Enotify.php:407 ../../Zotlabs/Lib/Enotify.php:425 +#: ../../Zotlabs/Lib/Enotify.php:400 ../../Zotlabs/Lib/Enotify.php:418 #, php-format msgid "You may visit their profile at %s" msgstr "Puede visitar su perfil en %s" -#: ../../Zotlabs/Lib/Enotify.php:409 +#: ../../Zotlabs/Lib/Enotify.php:402 #, php-format msgid "Please visit %s to approve or reject the connection request." msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión." -#: ../../Zotlabs/Lib/Enotify.php:416 +#: ../../Zotlabs/Lib/Enotify.php:409 msgid "[$Projectname:Notify] Friend suggestion received" msgstr "[$Projectname:Aviso] Ha recibido una sugerencia de conexión" -#: ../../Zotlabs/Lib/Enotify.php:417 +#: ../../Zotlabs/Lib/Enotify.php:410 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "Ha recibido una sugerencia de amistad de '%1$s' en %2$s" -#: ../../Zotlabs/Lib/Enotify.php:418 +#: ../../Zotlabs/Lib/Enotify.php:411 #, php-format msgid "" "You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." msgstr "Ha recibido [zrl=%1$s]una sugerencia de amistad[/zrl] para %2$s de %3$s." -#: ../../Zotlabs/Lib/Enotify.php:423 +#: ../../Zotlabs/Lib/Enotify.php:416 msgid "Name:" msgstr "Nombre:" -#: ../../Zotlabs/Lib/Enotify.php:424 +#: ../../Zotlabs/Lib/Enotify.php:417 msgid "Photo:" msgstr "Foto:" -#: ../../Zotlabs/Lib/Enotify.php:427 +#: ../../Zotlabs/Lib/Enotify.php:420 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia." -#: ../../Zotlabs/Lib/Enotify.php:652 +#: ../../Zotlabs/Lib/Enotify.php:640 msgid "[$Projectname:Notify]" msgstr "[$Projectname:Aviso]" -#: ../../Zotlabs/Lib/Enotify.php:820 -msgid "created a new poll" -msgstr "se ha creado una nueva encuesta" - -#: ../../Zotlabs/Lib/Enotify.php:820 +#: ../../Zotlabs/Lib/Enotify.php:808 msgid "created a new post" msgstr "ha creado una nueva entrada" -#: ../../Zotlabs/Lib/Enotify.php:821 -#, php-format -msgid "voted on %s's poll" -msgstr "votado en la encuesta de %s" - -#: ../../Zotlabs/Lib/Enotify.php:821 +#: ../../Zotlabs/Lib/Enotify.php:809 #, php-format msgid "commented on %s's post" msgstr "ha comentado la entrada de %s" -#: ../../Zotlabs/Lib/Enotify.php:825 +#: ../../Zotlabs/Lib/Enotify.php:812 #, php-format msgid "repeated %s's post" msgstr "repetida la entrada de %s" -#: ../../Zotlabs/Lib/Enotify.php:837 +#: ../../Zotlabs/Lib/Enotify.php:821 #, php-format msgid "edited a post dated %s" msgstr "ha editado una entrada %s" -#: ../../Zotlabs/Lib/Enotify.php:841 +#: ../../Zotlabs/Lib/Enotify.php:825 #, php-format msgid "edited a comment dated %s" msgstr "ha editado un comentario %s" -#: ../../Zotlabs/Lib/Connect.php:275 -msgid "error saving data" -msgstr "error guardando los datos" - -#: ../../Zotlabs/Lib/Chatroom.php:25 +#: ../../Zotlabs/Lib/Chatroom.php:23 msgid "Missing room name" msgstr "Sala de chat sin nombre" -#: ../../Zotlabs/Lib/Chatroom.php:34 +#: ../../Zotlabs/Lib/Chatroom.php:32 msgid "Duplicate room name" msgstr "Nombre de sala duplicado." -#: ../../Zotlabs/Lib/Chatroom.php:84 ../../Zotlabs/Lib/Chatroom.php:92 +#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 msgid "Invalid room specifier." msgstr "Especificador de sala no válido." -#: ../../Zotlabs/Lib/Chatroom.php:124 +#: ../../Zotlabs/Lib/Chatroom.php:122 msgid "Room not found." msgstr "Sala no encontrada." -#: ../../Zotlabs/Lib/Chatroom.php:145 +#: ../../Zotlabs/Lib/Chatroom.php:143 msgid "Room is full" msgstr "La sala está llena." -#: ../../Zotlabs/Lib/NativeWiki.php:145 +#: ../../Zotlabs/Lib/NativeWiki.php:143 msgid "Wiki updated successfully" msgstr "El wiki se ha actualizado con éxito" -#: ../../Zotlabs/Lib/NativeWiki.php:199 +#: ../../Zotlabs/Lib/NativeWiki.php:197 msgid "Wiki files deleted successfully" msgstr "Se han borrado con éxito los ficheros del wiki" -#: ../../Zotlabs/Lib/Apps.php:323 +#: ../../Zotlabs/Lib/Apps.php:322 msgid "Apps" msgstr "Aplicaciones (apps)" -#: ../../Zotlabs/Lib/Apps.php:324 +#: ../../Zotlabs/Lib/Apps.php:323 msgid "Affinity Tool" msgstr "Herramienta de afinidad" -#: ../../Zotlabs/Lib/Apps.php:327 +#: ../../Zotlabs/Lib/Apps.php:326 msgid "Site Admin" msgstr "Administrador del sitio" -#: ../../Zotlabs/Lib/Apps.php:331 +#: ../../Zotlabs/Lib/Apps.php:330 msgid "Content Filter" msgstr "Filtro de contenido" -#: ../../Zotlabs/Lib/Apps.php:334 +#: ../../Zotlabs/Lib/Apps.php:333 msgid "Remote Diagnostics" msgstr "Diagnóstico remoto" -#: ../../Zotlabs/Lib/Apps.php:335 +#: ../../Zotlabs/Lib/Apps.php:334 msgid "Suggest Channels" msgstr "Sugerir canales" -#: ../../Zotlabs/Lib/Apps.php:338 +#: ../../Zotlabs/Lib/Apps.php:337 msgid "Stream" msgstr "Stream" -#: ../../Zotlabs/Lib/Apps.php:349 +#: ../../Zotlabs/Lib/Apps.php:348 msgid "Mail" msgstr "Correo" -#: ../../Zotlabs/Lib/Apps.php:352 +#: ../../Zotlabs/Lib/Apps.php:351 msgid "Chat" msgstr "Chat" -#: ../../Zotlabs/Lib/Apps.php:354 +#: ../../Zotlabs/Lib/Apps.php:353 msgid "Probe" msgstr "Probar" -#: ../../Zotlabs/Lib/Apps.php:355 +#: ../../Zotlabs/Lib/Apps.php:354 msgid "Suggest" msgstr "Sugerir" -#: ../../Zotlabs/Lib/Apps.php:356 +#: ../../Zotlabs/Lib/Apps.php:355 msgid "Random Channel" msgstr "Canal aleatorio" -#: ../../Zotlabs/Lib/Apps.php:357 +#: ../../Zotlabs/Lib/Apps.php:356 msgid "Invite" msgstr "Invitar" -#: ../../Zotlabs/Lib/Apps.php:360 +#: ../../Zotlabs/Lib/Apps.php:359 msgid "Post" msgstr "Publicación" -#: ../../Zotlabs/Lib/Apps.php:365 +#: ../../Zotlabs/Lib/Apps.php:364 msgid "Notifications" msgstr "Notificaciones" -#: ../../Zotlabs/Lib/Apps.php:366 +#: ../../Zotlabs/Lib/Apps.php:365 msgid "Order Apps" msgstr "Ordenar las apps" -#: ../../Zotlabs/Lib/Apps.php:367 +#: ../../Zotlabs/Lib/Apps.php:366 msgid "CardDAV" msgstr "CardDAV" -#: ../../Zotlabs/Lib/Apps.php:369 +#: ../../Zotlabs/Lib/Apps.php:368 msgid "Guest Access" msgstr "Acceso para invitados" -#: ../../Zotlabs/Lib/Apps.php:371 +#: ../../Zotlabs/Lib/Apps.php:370 msgid "OAuth Apps Manager" msgstr "Administrador de apps OAuth" -#: ../../Zotlabs/Lib/Apps.php:372 +#: ../../Zotlabs/Lib/Apps.php:371 msgid "OAuth2 Apps Manager" msgstr "Administrador de apps OAuth2" -#: ../../Zotlabs/Lib/Apps.php:373 +#: ../../Zotlabs/Lib/Apps.php:372 msgid "PDL Editor" msgstr "Editor PDL" +#: ../../Zotlabs/Lib/Apps.php:374 +msgid "Premium Channel" +msgstr "Canal premium" + #: ../../Zotlabs/Lib/Apps.php:376 msgid "My Chatrooms" msgstr "Mis salas de chat" @@ -15071,19 +15005,19 @@ msgstr "Comprar" msgid "Undelete" msgstr "Recuperar" -#: ../../Zotlabs/Lib/Apps.php:569 +#: ../../Zotlabs/Lib/Apps.php:568 msgid "Add to app-tray" msgstr "Añadir a la bandeja de aplicaciones" -#: ../../Zotlabs/Lib/Apps.php:570 +#: ../../Zotlabs/Lib/Apps.php:569 msgid "Remove from app-tray" msgstr "Quitar de la bandeja de aplicaciones" -#: ../../Zotlabs/Lib/Apps.php:571 +#: ../../Zotlabs/Lib/Apps.php:570 msgid "Pin to navbar" msgstr "Fijar en la barra de navegación" -#: ../../Zotlabs/Lib/Apps.php:572 +#: ../../Zotlabs/Lib/Apps.php:571 msgid "Unpin from navbar" msgstr "Quitar de la barra de navegación" @@ -15172,83 +15106,135 @@ msgstr "Se necesita Wiki resource_id para el git commit" msgid "Privacy conflict. Discretion advised." msgstr "Conflicto de privacidad. Se aconseja discreción." -#: ../../Zotlabs/Lib/ThreadItem.php:174 ../../Zotlabs/Storage/Browser.php:286 +#: ../../Zotlabs/Lib/ThreadItem.php:172 ../../Zotlabs/Storage/Browser.php:286 msgid "Admin Delete" msgstr "Eliminar admin" -#: ../../Zotlabs/Lib/ThreadItem.php:319 +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I will attend" +msgstr "Participaré" + +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I will not attend" +msgstr "No participaré" + +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I might attend" +msgstr "Quizá participe" + +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I agree" +msgstr "Estoy de acuerdo" + +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I disagree" +msgstr "No estoy de acuerdo" + +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I abstain" +msgstr "Me abstengo" + +#: ../../Zotlabs/Lib/ThreadItem.php:287 +msgid "Add Tag" +msgstr "Añadir etiqueta" + +#: ../../Zotlabs/Lib/ThreadItem.php:309 msgid "Reply on this comment" msgstr "Responder a este comentario" -#: ../../Zotlabs/Lib/ThreadItem.php:319 +#: ../../Zotlabs/Lib/ThreadItem.php:309 msgid "reply" msgstr "responder" -#: ../../Zotlabs/Lib/ThreadItem.php:319 +#: ../../Zotlabs/Lib/ThreadItem.php:309 msgid "Reply to" msgstr "Responder a " -#: ../../Zotlabs/Lib/ThreadItem.php:339 +#: ../../Zotlabs/Lib/ThreadItem.php:319 +msgid "Share This" +msgstr "Compartir esto" + +#: ../../Zotlabs/Lib/ThreadItem.php:319 +msgid "share" +msgstr "compartir" + +#: ../../Zotlabs/Lib/ThreadItem.php:329 msgid "Delivery Report" msgstr "Informe de transmisión" -#: ../../Zotlabs/Lib/ThreadItem.php:358 +#: ../../Zotlabs/Lib/ThreadItem.php:348 #, php-format msgid "%d comment" msgid_plural "%d comments" msgstr[0] "%d comentario" msgstr[1] "%d comentarios" -#: ../../Zotlabs/Lib/ThreadItem.php:359 +#: ../../Zotlabs/Lib/ThreadItem.php:380 ../../Zotlabs/Lib/ThreadItem.php:381 #, php-format -msgid "%d unseen" -msgstr "%dno visto/a vistos/as" +msgid "View %s's profile - %s" +msgstr "Ver el perfil de %s - %s" -#: ../../Zotlabs/Lib/ThreadItem.php:412 +#: ../../Zotlabs/Lib/ThreadItem.php:384 msgid "to" msgstr "a" -#: ../../Zotlabs/Lib/ThreadItem.php:414 +#: ../../Zotlabs/Lib/ThreadItem.php:385 +msgid "via" +msgstr "mediante" + +#: ../../Zotlabs/Lib/ThreadItem.php:386 msgid "Wall-to-Wall" msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:415 +#: ../../Zotlabs/Lib/ThreadItem.php:387 msgid "via Wall-To-Wall:" msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:442 +#: ../../Zotlabs/Lib/ThreadItem.php:413 msgid "Attend" msgstr "Participar o asistir" -#: ../../Zotlabs/Lib/ThreadItem.php:460 +#: ../../Zotlabs/Lib/ThreadItem.php:414 +msgid "Attendance Options" +msgstr "Opciones de participación o asistencia" + +#: ../../Zotlabs/Lib/ThreadItem.php:415 +msgid "Vote" +msgstr "Votar" + +#: ../../Zotlabs/Lib/ThreadItem.php:416 +msgid "Voting Options" +msgstr "Opciones de votación" + +#: ../../Zotlabs/Lib/ThreadItem.php:431 msgid "Go to previous comment" msgstr "Ir al comentario anterior" -#: ../../Zotlabs/Lib/ThreadItem.php:473 +#: ../../Zotlabs/Lib/ThreadItem.php:441 msgid "Add to Calendar" msgstr "Añadir al calendario" -#: ../../Zotlabs/Lib/ThreadItem.php:831 +#: ../../Zotlabs/Lib/ThreadItem.php:802 msgid "Image" msgstr "Imagen" -#: ../../Zotlabs/Lib/ThreadItem.php:833 +#: ../../Zotlabs/Lib/ThreadItem.php:804 msgid "Insert Link" msgstr "Insertar enlace" -#: ../../Zotlabs/Lib/ThreadItem.php:834 +#: ../../Zotlabs/Lib/ThreadItem.php:805 msgid "Video" msgstr "Vídeo" -#: ../../Zotlabs/Lib/ThreadItem.php:844 +#: ../../Zotlabs/Lib/ThreadItem.php:815 msgid "Your full name (required)" msgstr "Su nombre completo (requerido)" -#: ../../Zotlabs/Lib/ThreadItem.php:845 +#: ../../Zotlabs/Lib/ThreadItem.php:816 msgid "Your email address (required)" msgstr "Su dirección de correo electrónico (requerido)" -#: ../../Zotlabs/Lib/ThreadItem.php:846 +#: ../../Zotlabs/Lib/ThreadItem.php:817 msgid "Your website URL (optional)" msgstr "La URL de su sitio web (opcional)" @@ -15319,67 +15305,67 @@ msgstr "Este es su ajuste predeterminado para establecer quién puede ver su rep msgid "This is your default setting for the audience of your webpages" msgstr "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web" -#: ../../Zotlabs/Access/PermissionRoles.php:287 +#: ../../Zotlabs/Access/PermissionRoles.php:283 msgid "Social Networking" msgstr "Redes sociales" -#: ../../Zotlabs/Access/PermissionRoles.php:288 +#: ../../Zotlabs/Access/PermissionRoles.php:284 msgid "Social - Federation" msgstr "Social - Federación" -#: ../../Zotlabs/Access/PermissionRoles.php:289 +#: ../../Zotlabs/Access/PermissionRoles.php:285 msgid "Social - Mostly Public" msgstr "Social - Público en su mayor parte" -#: ../../Zotlabs/Access/PermissionRoles.php:290 +#: ../../Zotlabs/Access/PermissionRoles.php:286 msgid "Social - Restricted" msgstr "Social - Restringido" -#: ../../Zotlabs/Access/PermissionRoles.php:291 +#: ../../Zotlabs/Access/PermissionRoles.php:287 msgid "Social - Private" msgstr "Social - Privado" -#: ../../Zotlabs/Access/PermissionRoles.php:294 +#: ../../Zotlabs/Access/PermissionRoles.php:290 msgid "Community Forum" msgstr "Foro de discusión" -#: ../../Zotlabs/Access/PermissionRoles.php:295 +#: ../../Zotlabs/Access/PermissionRoles.php:291 msgid "Forum - Mostly Public" msgstr "Foro - Público en su mayor parte" -#: ../../Zotlabs/Access/PermissionRoles.php:296 +#: ../../Zotlabs/Access/PermissionRoles.php:292 msgid "Forum - Restricted" msgstr "Foro - Restringido" -#: ../../Zotlabs/Access/PermissionRoles.php:297 +#: ../../Zotlabs/Access/PermissionRoles.php:293 msgid "Forum - Private" msgstr "Foro - Privado" -#: ../../Zotlabs/Access/PermissionRoles.php:300 +#: ../../Zotlabs/Access/PermissionRoles.php:296 msgid "Feed Republish" msgstr "Republicar un \"feed\"" -#: ../../Zotlabs/Access/PermissionRoles.php:301 +#: ../../Zotlabs/Access/PermissionRoles.php:297 msgid "Feed - Mostly Public" msgstr "Feed - Público en su mayor parte" -#: ../../Zotlabs/Access/PermissionRoles.php:302 +#: ../../Zotlabs/Access/PermissionRoles.php:298 msgid "Feed - Restricted" msgstr "Feed - Restringido" -#: ../../Zotlabs/Access/PermissionRoles.php:305 +#: ../../Zotlabs/Access/PermissionRoles.php:301 msgid "Special Purpose" msgstr "Propósito especial" -#: ../../Zotlabs/Access/PermissionRoles.php:306 +#: ../../Zotlabs/Access/PermissionRoles.php:302 msgid "Special - Celebrity/Soapbox" msgstr "Especial - Celebridad / Tribuna improvisada" -#: ../../Zotlabs/Access/PermissionRoles.php:307 +#: ../../Zotlabs/Access/PermissionRoles.php:303 msgid "Special - Group Repository" msgstr "Especial - Repositorio de grupo" -#: ../../Zotlabs/Access/PermissionRoles.php:311 +#: ../../Zotlabs/Access/PermissionRoles.php:307 msgid "Custom/Expert Mode" msgstr "Modo personalizado/experto" @@ -15513,40 +15499,40 @@ msgstr "Subir fichero" msgid "Drop files here to immediately upload" msgstr "Arrastre los ficheros aquí para subirlos de forma inmediata" -#: ../../boot.php:1677 +#: ../../boot.php:1653 msgid "Create an account to access services and applications" msgstr "Crear una cuenta para acceder a los servicios y aplicaciones" -#: ../../boot.php:1701 +#: ../../boot.php:1677 msgid "Login/Email" msgstr "Inicio de sesión / Correo electrónico" -#: ../../boot.php:1702 +#: ../../boot.php:1678 msgid "Password" msgstr "Contraseña" -#: ../../boot.php:1703 +#: ../../boot.php:1679 msgid "Remember me" msgstr "Recordarme" -#: ../../boot.php:1706 +#: ../../boot.php:1682 msgid "Forgot your password?" msgstr "¿Olvidó su contraseña?" -#: ../../boot.php:2575 +#: ../../boot.php:2478 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "[$Projectname] Error SSL del sitio web en %s" -#: ../../boot.php:2580 +#: ../../boot.php:2483 msgid "Website SSL certificate is not valid. Please correct." msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema." -#: ../../boot.php:2696 +#: ../../boot.php:2599 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "[$Projectname] Las tareas de Cron no están funcionando en %s" -#: ../../boot.php:2701 +#: ../../boot.php:2604 msgid "Cron/Scheduled tasks not running." msgstr "Las tareas del Planificador/Cron no están funcionando." diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php index 2eb593936..1ce5cd3aa 100644 --- a/view/es-es/hstrings.php +++ b/view/es-es/hstrings.php @@ -101,6 +101,41 @@ App::$strings["Assume workers dead after ___ seconds"] = "Asumir que el proceso App::$strings["Pause before starting next task: (microseconds. Minimum 100 = .0001 seconds)"] = "Haga una pausa antes de comenzar la siguiente tarea: (microsegundos. Mínimo 100 =.0001 segundos)"; App::$strings["Queueworker Settings"] = "Configuración del gestor de procesos de trabajo en cola"; App::$strings["Save"] = "Guardar"; +App::$strings["Edit your profile and change settings."] = "Editar su perfil y cambiar los ajustes."; +App::$strings["Click here to see activity from your connections."] = "Pulsar aquí para ver la actividad de sus conexiones."; +App::$strings["Click here to see your channel home."] = "Pulsar aquí para ver la página de inicio de su canal."; +App::$strings["You can access your private messages from here."] = "Puede acceder a sus mensajes privados desde aquí."; +App::$strings["Create new events here."] = "Crear nuevos eventos aquí."; +App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Puede aceptar nuevas conexiones y cambiar permisos para las que ya existen aquí. También puede, por ejemplo, crear grupos de contactos."; +App::$strings["System notifications will arrive here"] = "Las notificaciones del sistema llegarán aquí"; +App::$strings["Search for content and users"] = "Buscar contenido y usuarios"; +App::$strings["Browse for new contacts"] = "Buscar nuevos contactos"; +App::$strings["Launch installed apps"] = "Iniciar aplicaciones instaladas"; +App::$strings["Looking for help? Click here."] = "¿Busca ayuda? Pulse aquí."; +App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "Se han producido nuevos eventos en su red. ¡Haga clic aquí para ver lo que ha sucedido!"; +App::$strings["You have received a new private message. Click here to see from who!"] = "Ha recibido un nuevo mensaje privado. Haga clic aquí para ver de quién!"; +App::$strings["There are events this week. Click here too see which!"] = "Hay eventos esta semana. Haga clic aquí para ver cuáles!"; +App::$strings["You have received a new introduction. Click here to see who!"] = "Ha recibido una nueva solicitud de conexión. ¡Pulse aquí para ver de quién!"; +App::$strings["There is a new system notification. Click here to see what has happened!"] = "Hay una nueva notificación del sistema. ¡Haga clic aquí para ver lo que ha sucedido!"; +App::$strings["Click here to share text, images, videos and sound."] = "Haga clic aquí para compartir texto, imágenes, vídeos y sonido."; +App::$strings["You can write an optional title for your update (good for long posts)."] = "Puede escribir un título opcional para su actualización (bueno para los mensajes largos)."; +App::$strings["Entering some categories here makes it easier to find your post later."] = "Al ingresar algunos temas aquí, es más fácil encontrar su publicación más tarde."; +App::$strings["Share photos, links, location, etc."] = "Compartir fotos, enlaces, ubicación, etc."; +App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "¿Solo quieres compartir contenido durante un tiempo? Haga que expire en una fecha determinada."; +App::$strings["You can password protect content."] = "Puede proteger contenido con una contraseña."; +App::$strings["Choose who you share with."] = "Elegir con quién compartir."; +App::$strings["Click here when you are done."] = "Haga clic aquí cuando haya terminado."; +App::$strings["Adjust from which channels posts should be displayed."] = "Ajustar de qué canales se deben mostrar las publicaciones."; +App::$strings["Only show posts from channels in the specified privacy group."] = "Mostrar solo las entradas de los canales de un grupo específico de canales."; +App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = "Encuentre fácilmente entradas que contengan etiquetas (palabras clave precedidas del símbolo \"#\")."; +App::$strings["Easily find posts in given category."] = "Encuentre fácilmente las publicaciones en una categoría dada."; +App::$strings["Easily find posts by date."] = "Encuentre fácilmente entradas por fechas."; +App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Se sugiere a los usuarios que se han ofrecido voluntariamente que se muestren como sugerencias, y que creemos que podrían resultar interesantes."; +App::$strings["Here you see channels you have connected to."] = "Aquí puede ver los canales a los que está conectado."; +App::$strings["Save your search so you can repeat it at a later date."] = "Guarde su búsqueda para poder repetirla en una fecha posterior."; +App::$strings["If you see this icon you can be sure that the sender is who it say it is. It is normal that it is not always possible to verify the sender, so the icon will be missing sometimes. There is usually no need to worry about that."] = "Si ve este icono puede estar seguro de que el remitente es quien dice ser. Es normal que no siempre sea posible verificar el remitente, por lo que el icono faltará en ocasiones. Por lo general, no hay necesidad de preocuparse por eso."; +App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!"; +App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno"; App::$strings["Add some colour to tag clouds"] = "Añadir color a las nubes de etiquetas"; App::$strings["Rainbow Tag App"] = "App Etiqueta Arcoiris"; App::$strings["Rainbow Tag"] = "Etiqueta Arcoiris"; @@ -237,6 +272,11 @@ App::$strings["API URL"] = "URL de la API"; App::$strings["Consumer Secret"] = "Consumer Secret"; App::$strings["Consumer Key"] = "Consumer Key"; App::$strings["Application name"] = "Nombre de la aplicación"; +App::$strings["Friendica Photo Album Import"] = "Importar un álbum de fotos de Friendica"; +App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla."; +App::$strings["Friendica Server base URL"] = "URL base del servidor de Friendica"; +App::$strings["Friendica Login Username"] = "Nombre de inicio de sesión en Friendica"; +App::$strings["Friendica Login Password"] = "Contraseña de inicio de sesión en Friendica"; App::$strings["Friendica Crosspost Connector Settings saved."] = "Se han guardado los ajustes del conector de publicación cruzada con Friendica."; App::$strings["Friendica Crosspost Connector App"] = "App Friendica Crosspost Connector"; App::$strings["Relay public postings to a connected Friendica account"] = "Retransmisión de entradas públicas a una cuenta Friendica conectada"; @@ -247,7 +287,6 @@ App::$strings["Friendica password"] = "Contraseña de Friendica"; App::$strings["Friendica Crosspost Connector"] = "Friendica Crosspost Connector"; App::$strings["Post to Friendica"] = "Publicar en Friendica"; App::$strings["Post to WordPress"] = "Publicar en WordPress"; -App::$strings["Source"] = "Fuente"; App::$strings["Wordpress Settings saved."] = "Se han guardado los ajustes de WordPress."; App::$strings["Wordpress Post App"] = "App Publicar en Wordpress"; App::$strings["Post to WordPress or anything else which uses the wordpress XMLRPC API"] = "Publicar en WordPress o cualquier otra cosa que utilice la API XMLRPC de wordpress"; @@ -259,8 +298,6 @@ App::$strings["WordPress blogid"] = "Blog de WordPress"; App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco"; App::$strings["Post to WordPress by default"] = "Publicar en WordPress por defecto"; App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Reenviar comentarios (requerido por el plugin hubzilla_wp)"; -App::$strings["Add link to original post"] = "Añadir enlace a la entrada original"; -App::$strings["Link description (default:"] = "Descripción del enlace (por defecto: "; App::$strings["Wordpress Post"] = "Publicar en Wordpress"; App::$strings["No server specified"] = "No se ha especificado ningún servidor"; App::$strings["Posts imported"] = "Entradas importadas"; @@ -355,7 +392,7 @@ App::$strings["An account has been created for you."] = "Se ha creado una cuenta App::$strings["Authentication successful but rejected: account creation is disabled."] = "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada."; App::$strings["Dreamwidth Crosspost Connector Settings saved."] = "Se han guardado los ajustes del conector de publicación cruzada Dreamwidth."; App::$strings["Dreamwidth Crosspost Connector App"] = "App Dreamwidth Crosspost Connector"; -App::$strings["Relay public posts to Dreamwidth"] = "Reenviar las entradas públicas a Dreamwidth"; +App::$strings["Relay public postings to Dreamwidth"] = "Retransmisión de entradas públicas a Dreamwidth"; App::$strings["Dreamwidth username"] = "Nombre de usuario en Dreamwidth"; App::$strings["Dreamwidth password"] = "Contraseña en Dreamwidth"; App::$strings["Post to Dreamwidth by default"] = "Publicar en Dreamwidth de forma predeterminada"; @@ -434,30 +471,6 @@ App::$strings["Set a preferred page to load on login from home page"] = "Estable App::$strings["Page to load after login"] = "Página para cargar tras el inicio de sesión"; App::$strings["Examples: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)."; App::$strings["Startpage"] = "Startpage"; -App::$strings["Messages"] = "Mensajes"; -App::$strings["message"] = "mensaje"; -App::$strings["Message recalled."] = "Mensaje revocado."; -App::$strings["Conversation removed."] = "Conversación eliminada."; -App::$strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM"; -App::$strings["Requested channel is not in this network"] = "El canal solicitado no existe en esta red"; -App::$strings["Send Private Message"] = "Enviar un mensaje privado"; -App::$strings["To:"] = "Para:"; -App::$strings["Subject:"] = "Asunto:"; -App::$strings["Your message:"] = "Su mensaje:"; -App::$strings["Attach file"] = "Adjuntar fichero"; -App::$strings["Send"] = "Enviar"; -App::$strings["Delete message"] = "Borrar mensaje"; -App::$strings["Delivery report"] = "Informe de transmisión"; -App::$strings["Recall message"] = "Revocar el mensaje"; -App::$strings["Message has been recalled."] = "El mensaje ha sido revocado."; -App::$strings["Delete Conversation"] = "Eliminar conversación"; -App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente."; -App::$strings["Send Reply"] = "Responder"; -App::$strings["Your message for %s (%s):"] = "Su mensaje para %s (%s):"; -App::$strings["Unable to lookup recipient."] = "No se puede asociar a un destinatario."; -App::$strings["Unable to communicate with requested channel."] = "No se puede establecer la comunicación con el canal solicitado."; -App::$strings["Cannot verify requested channel."] = "No se puede verificar el canal solicitado."; -App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló."; App::$strings["Flag Adult Photos"] = "Indicador (\"flag\") de fotos de adultos"; App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada"; App::$strings["Your channel has been upgraded to \$Projectname version"] = "Su canal ha sido actualizado a la versión \$Projectname"; @@ -547,10 +560,6 @@ App::$strings["Photo URL"] = "URL de la foto"; App::$strings["Add buyer to privacy group"] = "Agregar comprador al grupo de canales"; App::$strings["Add buyer as connection"] = "Añadir comprador como conexión"; App::$strings["Set Service Class"] = "Establecer clase de servicio"; -App::$strings["Enable Order/Item Options"] = "Habilitar las opciones de pedido/artículo"; -App::$strings["Label"] = "Etiqueta"; -App::$strings["Required"] = "Obligatorio"; -App::$strings["Instructions"] = "Instrucciones"; App::$strings["Enable Paypal Button Module"] = "Habilitar el módulo del botón de Paypal"; App::$strings["Use Production Key"] = "Utilizar clave en entorno de producción"; App::$strings["Paypal Sandbox Client Key"] = "Clave de cliente en el entorno de pruebas de Paypal"; @@ -559,7 +568,6 @@ App::$strings["Paypal Production Client Key"] = "Clave de cliente en el entorno App::$strings["Paypal Production Secret Key"] = "Clave secreta en el entorno de producción de Paypal"; App::$strings["Paypal button payments are not enabled."] = "Los pagos con el botón de Paypal no están habilitados."; App::$strings["Paypal button payments are not properly configured. Please choose another payment option."] = "Los pagos con el botón de Paypal no están configurados correctamente. Por favor, elija otra opción de pago."; -App::$strings["Enable Paypal Button Module (API-v2)"] = "Habilitar el módulo de botones de Paypal (API-v2)"; App::$strings["Enable Manual Cart Module"] = "Habilitar el módulo de carro manual"; App::$strings["Access Denied."] = "Acceso denegado"; App::$strings["Order Not Found"] = "No se ha encontrado el pedido"; @@ -579,8 +587,6 @@ App::$strings["You must be logged into the Grid to shop."] = "Debe iniciar sesi App::$strings["Access denied."] = "Acceso denegado"; App::$strings["No Order Found"] = "No se ha encontrado ningún pedido"; App::$strings["An unknown error has occurred Please start again."] = "Se ha producido un error desconocido Vuelva a empezar."; -App::$strings["Requirements not met."] = "No se cumplen los requisitos."; -App::$strings["Review your order and complete any needed requirements."] = "Revise su pedido y complete los requisitos necesarios."; App::$strings["Invalid Payment Type. Please start again."] = "Tipo de pago no válido. Por favor, empiece de nuevo."; App::$strings["Order not found"] = "El pedido no se ha encontrado"; App::$strings["nofed Settings saved."] = "Se han guardado los ajustes de nofed."; @@ -596,10 +602,6 @@ App::$strings["Smileybutton Settings"] = "Ajustes de Smileybutton"; App::$strings["file"] = "fichero"; App::$strings["Redmatrix File Storage Import"] = "Importar repositorio de ficheros de Redmatrix"; App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Esto importará todos sus ficheros de la nube de Redmatrix a este canal."; -App::$strings["Please install the statistics addon to be able to configure a diaspora relay"] = "Por favor, instale el complemento de estadísticas para poder configurar el reenvío de diaspora"; -App::$strings["Diaspora Relay Handle"] = "Gestionar el reenvío de Diaspora"; -App::$strings["Address of a diaspora relay. Example: relay@diasporarelay.tld"] = "La dirección de una transmisión de diaspora. Ejemplo: relay@diasporarelay.tld"; -App::$strings["Diaspora relay could not be imported"] = "El reenvío de Diaspora no ha podido ser importado"; App::$strings["\$projectname"] = "\$projectname"; App::$strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero de importación."; App::$strings["Unable to create a unique channel address. Import failed."] = "No se ha podido crear una dirección de canal única. Ha fallado la importación."; @@ -629,7 +631,6 @@ App::$strings["Workflow user."] = "Usuario de Workflow."; App::$strings["This channel"] = "Este canal"; App::$strings["Primary"] = "Primario"; App::$strings["Workflow"] = "Workflow"; -App::$strings["No Workflows Available"] = "No hay flujos de trabajo disponibles"; App::$strings["Add item to which workflow"] = "A qué Workflow añadir un elemento"; App::$strings["Create Workflow Item"] = "Crear elemento de Workflow"; App::$strings["Link"] = "Enlazar"; @@ -659,6 +660,15 @@ App::$strings["Fontsize (px):"] = "Tamaño de fuente (px): "; App::$strings["Link:"] = "Enlace: "; App::$strings["Like us on Hubzilla"] = "Múestrenos su agrado en Hubzilla"; App::$strings["Embed:"] = "Incorporado: "; +App::$strings["Quick Reference"] = "Referencia rápida"; +App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc."; +App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales."; +App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."; +App::$strings["Guitar Chords"] = "Acordes de guitarra"; +App::$strings["The complete online chord dictionary"] = "El diccionario completo de acordes en línea"; +App::$strings["Tuning"] = "Afinación"; +App::$strings["Chord name: example: Em7"] = "Nombre del acorde, por ejemplo: Em7"; +App::$strings["Show for left handed stringing"] = "Mostrar para tocadores zurdos"; App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Buscar %1\$s (%2\$s)"; App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname"; App::$strings["\$Projectname"] = "\$Projectname"; @@ -669,6 +679,22 @@ App::$strings["Blur your precise location if your channel uses browser location App::$strings["Minimum offset in meters"] = "Offset mínimo en metros"; App::$strings["Maximum offset in meters"] = "Offset máximo en metros"; App::$strings["Fuzzy Location"] = "Fuzzy Location"; +App::$strings["Flattr this!"] = "¡Apoyar esto en Flattr!"; +App::$strings["Flattr widget settings updated."] = "Los ajustes del widget Flattr han sido actualizados."; +App::$strings["Flattr Widget App"] = "App Flattr Widget"; +App::$strings["Add a Flattr button to your channel page"] = "Proporcionar un botón Flattr a la página de su canal"; +App::$strings["Flattr user"] = "Usuario en Flattr"; +App::$strings["URL of the Thing to flattr"] = "URL de la Cosa para apoyar en flattr"; +App::$strings["If empty channel URL is used"] = "Si está vacío, se usa la URL del canal"; +App::$strings["Title of the Thing to flattr"] = "Título de la Cosa para apoyar en flattr"; +App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Si está vacío, se usará \"nombre del canal en Hubzilla\""; +App::$strings["Static or dynamic flattr button"] = "Botón de flattr estático o dinámico"; +App::$strings["static"] = "estático"; +App::$strings["dynamic"] = "dinámico"; +App::$strings["Alignment of the widget"] = "Alineamiento del widget"; +App::$strings["left"] = "izquierda"; +App::$strings["right"] = "derecha"; +App::$strings["Flattr Widget"] = "Flattr Widget"; App::$strings["Send email to all members"] = "Enviar un correo electrónico a todos los miembros"; App::$strings["%s Administrator"] = "%s Administrador"; App::$strings["No recipients found."] = "No se han encontrado destinatarios."; @@ -722,31 +748,11 @@ App::$strings["Logfile size in bytes before rotating"] = "Tamaño del fichero de App::$strings["Number of logfiles to retain"] = "Número de ficheros de informe que se deben retener"; App::$strings["Your account on %s will expire in a few days."] = "Su cuenta en %s caducará en unos pocos días."; App::$strings["Your $Productname test account is about to expire."] = "Su cuenta de prueba de $Productname está a punto de caducar."; -App::$strings["Hide Aside App"] = "App de ocultamiento del panel lateral"; -App::$strings["Fade out aside areas after a while when using endless scroll"] = "Se desvanecen las áreas laterales cuando se usa un scroll sin fin"; App::$strings["Skeleton App"] = "App Skeleton"; App::$strings["A skeleton for addons, you can copy/paste"] = "Skeleton para los addons, puede copiar/pegar"; App::$strings["Some setting"] = "Algunos ajustes"; App::$strings["A setting"] = "Un ajuste"; App::$strings["Skeleton Settings"] = "Ajustes de Skeleton"; -App::$strings["Network error"] = "Error de red"; -App::$strings["API error"] = "Error de API"; -App::$strings["Unknown issue"] = "Problema desconocido"; -App::$strings["Unable to login using email address "] = "Imposible iniciar sesión usando la dirección de correo electrónico"; -App::$strings["Sign in to Hubzilla using a social account"] = "Iniciar sesión en Hubzilla usando una cuenta social"; -App::$strings["Social Authentication using your social media account"] = "Autenticación usando su cuenta de medios sociales"; -App::$strings["This app enables one or more social provider sign-in buttons on the login page."] = "Esta aplicación habilita uno o más botones de inicio de sesión de proveedores sociales en la página de inicio de sesión."; -App::$strings["Add an identity provider"] = "Añadir un proveedor de identidad"; -App::$strings["Enable "] = "Habilitar"; -App::$strings["Key"] = "Clave"; -App::$strings["Word"] = "Palabra"; -App::$strings["Secret"] = "Secret"; -App::$strings["Add a custom provider"] = "Añadir un proveedor personalizado"; -App::$strings["Remove an identity provider"] = "Eliminar un proveedor de identidad"; -App::$strings["Social authentication"] = "Autenticación social"; -App::$strings["Error while saving provider settings"] = "Se ha producido un error mientras se guardaban los ajustes"; -App::$strings["Custom provider already exists"] = "Ya existe un proveedor personalizado"; -App::$strings["Social authentication settings saved."] = "Se han guardado los ajustes de la autenticación social."; App::$strings["Possible adult content"] = "Posible contenido para adultos"; App::$strings["%s - view"] = "ver - %s"; App::$strings["NSFW Settings saved."] = "Se han guardado los ajustes de NSFW."; @@ -790,11 +796,38 @@ App::$strings["Send wall-to-wall posts to Livejournal"] = "Enviar entradas de Mu App::$strings["Livejournal Crosspost Connector"] = "Livejournal Crosspost Connector"; App::$strings["Post to Livejournal"] = "Publicar en Livejournal"; App::$strings["Posted by"] = "Publicado por "; +App::$strings["Invalid game."] = "Juego no válido."; +App::$strings["You are not a player in this game."] = "Usted no participa en este juego."; +App::$strings["You must be a local channel to create a game."] = "Debe ser un canal local para crear un juego"; +App::$strings["You must select one opponent that is not yourself."] = "Debe seleccionar un oponente que no sea usted mismo."; +App::$strings["Random color chosen."] = "Elegido un color aleatorio."; +App::$strings["Error creating new game."] = "Error al crear un nuevo juego."; +App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible."; +App::$strings["Chess not installed."] = "Chess no está instalado."; +App::$strings["You must select a local channel /chess/channelname"] = "Debe seleccionar un canal local /chess/nombredelcanal"; +App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página."; +App::$strings["Page not found."] = "Página no encontrada."; +App::$strings["Enable notifications"] = "Habilitar notificaciones"; App::$strings["Markdown"] = "Markdown"; App::$strings["Use markdown for editing posts"] = "Usar markdown para editar las entradas"; App::$strings["Hubzilla File Storage Import"] = "Importar del depósito de ficheros de Hubzilla"; App::$strings["This will import all your cloud files from another server."] = "Esto importará todos sus ficheros en la nube desde otro servidor."; App::$strings["Hubzilla Server base URL"] = "URL base del servidor Hubzilla"; +App::$strings["Jappixmini App"] = "App Jappixmini"; +App::$strings["Provides a Facebook-like chat using Jappix Mini"] = "Proporciona un chat similar al de Facebook utilizando Jappix Mini"; +App::$strings["Status:"] = "Estado:"; +App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Ocultar el widget de chat Jappixmini en la interfaz web"; +App::$strings["Jabber username"] = "Nombre de usuario en Jabber"; +App::$strings["Jabber server"] = "Servidor de Jabber"; +App::$strings["Jabber BOSH host URL"] = "URL del host BOSH de Jabber"; +App::$strings["Jabber password"] = "Contraseña en Jabber"; +App::$strings["Encrypt Jabber password with Hubzilla password"] = "Cifrar la contraseña de Jabber con la contraseña de Hubzilla"; +App::$strings["Recommended"] = "Recomendado"; +App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla"; +App::$strings["Purge internal list of jabber addresses of contacts"] = "Purgar la lista interna de las direcciones de contactos de jabber"; +App::$strings["Configuration Help"] = "Ayuda para los ajustes"; +App::$strings["Add Contact"] = "Añadir un contacto"; +App::$strings["Jappixmini Settings"] = "Ajustes de Jappixmini"; App::$strings["Allow magic authentication only to websites of your immediate connections"] = "Permitir la autenticación mágica sólo a los sitios web de sus conexiones próximas"; App::$strings["Authchoose App"] = "App Authchoose"; App::$strings["Authchoose"] = "Autoseleccionar"; @@ -830,11 +863,6 @@ App::$strings["older"] = "más antiguas"; App::$strings["newer"] = "más recientes"; App::$strings["No connections"] = "Sin conexiones"; App::$strings["Connections"] = "Conexiones"; -App::$strings["Accepts"] = "Se acepta"; -App::$strings["Comments"] = "Comentarios"; -App::$strings["Stream items"] = "Elementos del stream"; -App::$strings["Wall posts"] = "Entradas del Muro"; -App::$strings["Nothing"] = "Nada"; App::$strings["View all %s connections"] = "Ver todas las %s conexiones"; App::$strings["Network: %s"] = "Red %s"; App::$strings["Search"] = "Buscar"; @@ -896,9 +924,6 @@ App::$strings["unknown"] = "desconocido"; App::$strings["remove category"] = "eliminar el tema"; App::$strings["remove from file"] = "eliminar del fichero"; App::$strings["Download binary/encrypted content"] = "Descargar contenido binario o cifrado"; -App::$strings["Poll has ended."] = "La encuesta ha terminado"; -App::$strings["Poll ends: %s"] = "Finales de la encuesta: %s"; -App::$strings["Vote"] = "Votar"; App::$strings["Link to Source"] = "Enlazar con la entrada en su ubicación original"; App::$strings["default"] = "por defecto"; App::$strings["Page layout"] = "Plantilla de la página"; @@ -912,7 +937,6 @@ App::$strings["Page content type"] = "Tipo de contenido de la página"; App::$strings["event"] = "el/su evento"; App::$strings["comment"] = "el comentario"; App::$strings["activity"] = "la/su actividad"; -App::$strings["poll"] = "encuesta"; App::$strings["a-z, 0-9, -, and _ only"] = "a-z, 0-9, -, and _ only"; App::$strings["Design Tools"] = "Herramientas de diseño web"; App::$strings["Blocks"] = "Bloques"; @@ -975,6 +999,8 @@ App::$strings["Comments will be displayed separately"] = "Los comentarios se mos App::$strings["Connection Filtering"] = "Filtrado de conexiones"; App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido"; App::$strings["Conversation"] = "Conversación"; +App::$strings["Community Tagging"] = "Etiquetas de la comunidad"; +App::$strings["Ability to tag existing posts"] = "Capacidad de etiquetar entradas"; App::$strings["Emoji Reactions"] = "Emoticonos \"emoji\""; App::$strings["Add emoji reaction ability to posts"] = "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas"; App::$strings["Dislike Posts"] = "Desagrado de publicaciones"; @@ -993,6 +1019,8 @@ App::$strings["Large Photos"] = "Fotos de gran tamaño"; App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Incluir miniaturas de fotos grandes (1024px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (640px)"; App::$strings["Even More Encryption"] = "Más cifrado todavía"; App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permitir cifrado adicional de contenido \"punto-a-punto\" con una clave secreta compartida."; +App::$strings["Enable Voting Tools"] = "Permitir entradas con votación"; +App::$strings["Provide a class of post which others can vote on"] = "Proveer una clase de publicación en la que otros puedan votar"; App::$strings["Disable Comments"] = "Deshabilitar comentarios"; App::$strings["Provide the option to disable comments for a post"] = "Proporcionar la opción de desactivar los comentarios para una entrada"; App::$strings["Delayed Posting"] = "Publicación aplazada"; @@ -1007,10 +1035,6 @@ App::$strings["Manage"] = "Gestionar"; App::$strings["Navigation Channel Select"] = "Navegación por el selector de canales"; App::$strings["Change channels directly from within the navigation dropdown menu"] = "Cambiar de canales directamente desde el menú de navegación desplegable"; App::$strings["Network"] = "Red"; -App::$strings["Events Filter"] = "Filtro de eventos"; -App::$strings["Ability to display only events"] = "Capacidad para mostrar solo eventos"; -App::$strings["Polls Filter"] = "Filtro de encuestas"; -App::$strings["Ability to display only polls"] = "Capacidad para mostrar solo encuestas"; App::$strings["Saved Searches"] = "Búsquedas guardadas"; App::$strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización"; App::$strings["Saved Folders"] = "Carpetas guardadas"; @@ -1065,9 +1089,6 @@ App::$strings["A channel name is required."] = "Se requiere un nombre de canal"; App::$strings["This is a "] = "Esto es un "; App::$strings[" channel name"] = "nombre de canal"; App::$strings["Back to reply"] = "Volver a la respuesta"; -App::$strings["Pinned"] = "Anclado/a"; -App::$strings["Pin to the top"] = "Anclar en la parte superior"; -App::$strings["Unpin from the top"] = "Desanclar de la parte superior"; App::$strings["%d minutes"] = array( 0 => "%d minutos", 1 => "%d minutos", @@ -1128,7 +1149,6 @@ App::$strings["__ctx:calendar__ All day"] = "Todos los días"; App::$strings["Help:"] = "Ayuda:"; App::$strings["Help"] = "Ayuda"; App::$strings["Not Found"] = "No encontrado"; -App::$strings["Page not found."] = "Página no encontrada."; App::$strings["Image exceeds website size limit of %lu bytes"] = "La imagen excede el límite de %lu bytes del sitio"; App::$strings["Image file is empty."] = "El fichero de imagen está vacío. "; App::$strings["Unable to process image"] = "No ha sido posible procesar la imagen"; @@ -1230,6 +1250,7 @@ App::$strings["Miscellaneous"] = "Varios"; App::$strings["Birthday"] = "Cumpleaños"; App::$strings["Age: "] = "Edad:"; App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD"; +App::$strings["Required"] = "Obligatorio"; App::$strings["never"] = "nunca"; App::$strings["less than a second ago"] = "hace un instante"; App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s"; @@ -1263,12 +1284,6 @@ App::$strings["__ctx:relative_date__ second"] = array( ); App::$strings["%1\$s's birthday"] = "Cumpleaños de %1\$s"; App::$strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s"; -App::$strings["INVALID EVENT DISMISSED!"] = "¡EVENTO NO VÁLIDO RECHAZADO!"; -App::$strings["Summary: "] = "Resumen: "; -App::$strings["Date: "] = "Fecha: "; -App::$strings["Reason: "] = "Razón: "; -App::$strings["INVALID CARD DISMISSED!"] = "¡TARJETA NO VÁLIDA RECHAZADA!"; -App::$strings["Name: "] = "Nombre: "; App::$strings["Channel is blocked on this site."] = "El canal está bloqueado en este sitio."; App::$strings["Channel location missing."] = "Falta la dirección del canal."; App::$strings["Response from remote channel was incomplete."] = "Respuesta incompleta del canal."; @@ -1338,13 +1353,6 @@ App::$strings[", and %d other people"] = array( ); App::$strings["%s like this."] = "A %s le gusta esto."; App::$strings["%s don't like this."] = "A %s no le gusta esto."; -App::$strings["Toggle poll"] = "Activar o desactivar encuestas"; -App::$strings["Option"] = "Opción"; -App::$strings["Add option"] = "Añadir una opción"; -App::$strings["Minutes"] = "Minutos "; -App::$strings["Hours"] = "Horas "; -App::$strings["Days"] = "Días "; -App::$strings["Allow multiple answers"] = "Permitir respuestas múltiples"; App::$strings["__ctx:noun__ Like"] = array( 0 => "Me gusta", 1 => "Me gusta", @@ -1515,7 +1523,6 @@ App::$strings["Path not found."] = "Ruta no encontrada"; App::$strings["mkdir failed."] = "mkdir ha fallado."; App::$strings["database storage failed."] = "el almacenamiento en la base de datos ha fallado."; App::$strings["Empty path"] = "Ruta vacía"; -App::$strings["%s shared a %s with you"] = "%sha compartido un/una %scon usted"; App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s"; App::$strings["Edit"] = "Editar"; App::$strings["Image/photo"] = "Imagen/foto"; @@ -1546,14 +1553,12 @@ App::$strings["Nickname has unsupported characters or is already being used on t App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada"; App::$strings["Default Profile"] = "Perfil principal"; App::$strings["Unable to retrieve modified identity"] = "No se puede recuperar la identidad modficada"; -App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible."; App::$strings["Change profile photo"] = "Cambiar la foto del perfil"; App::$strings["Create New Profile"] = "Crear un nuevo perfil"; App::$strings["Profile Image"] = "Imagen del perfil"; App::$strings["Visible to everybody"] = "Visible para todos"; App::$strings["Edit visibility"] = "Editar visibilidad"; App::$strings["Gender:"] = "Género:"; -App::$strings["Status:"] = "Estado:"; App::$strings["Homepage:"] = "Página personal:"; App::$strings["Online Now"] = "Ahora en línea"; App::$strings["Change your profile photo"] = "Cambiar su foto del perfil"; @@ -1637,19 +1642,6 @@ App::$strings["Conversations"] = "Conversaciones"; App::$strings["No messages."] = "Sin mensajes."; App::$strings["Delete conversation"] = "Eliminar conversación"; App::$strings["Chat Members"] = "Miembros del chat"; -App::$strings["I will attend"] = "Participaré"; -App::$strings["I will not attend"] = "No participaré"; -App::$strings["I might attend"] = "Quizá participe"; -App::$strings["I agree"] = "Estoy de acuerdo"; -App::$strings["I disagree"] = "No estoy de acuerdo"; -App::$strings["I abstain"] = "Me abstengo"; -App::$strings["Share This"] = "Compartir esto"; -App::$strings["share"] = "compartir"; -App::$strings["View %s's profile - %s"] = "Ver el perfil de %s - %s"; -App::$strings["via"] = "mediante"; -App::$strings["Attendance Options"] = "Opciones de participación o asistencia"; -App::$strings["Voting Options"] = "Opciones de votación"; -App::$strings["Pinned post"] = "Entradas ancladas"; App::$strings["__ctx:widget__ Activity"] = "Actividad"; App::$strings["Select Channel"] = "Seleccionar un canal"; App::$strings["Read-write"] = "Lectura y escritura"; @@ -1710,12 +1702,6 @@ App::$strings["Profile Fields"] = "Campos del perfil"; App::$strings["DB updates"] = "Actualizaciones de la base de datos"; App::$strings["Logs"] = "Informes"; App::$strings["Addon Features"] = "Características del addon"; -App::$strings["Direct Messages"] = "Mensajes directos"; -App::$strings["Show direct (private) messages"] = "Mostrar mensajes (privados) directos"; -App::$strings["Events"] = "Eventos"; -App::$strings["Show posts that include events"] = "Mostrar entradas que incluyan eventos"; -App::$strings["Polls"] = "Encuestas"; -App::$strings["Show posts that include polls"] = "Mostrar entradas que incluyan encuestas"; App::$strings["Show posts related to the %s privacy group"] = "Mostrar entradas relacionadas con el grupo %s"; App::$strings["Show my privacy groups"] = "Mostrar mis grupos de canales"; App::$strings["Show posts to this forum"] = "Mostrar las entradas en este foro"; @@ -1775,9 +1761,6 @@ App::$strings["New Home Activity"] = "Nueva actividad en su página principal"; App::$strings["New Home Activity Notifications"] = "Avisos de nueva actividad en su página principal"; App::$strings["View your home activity"] = "Ver la actividad de su página principal"; App::$strings["Mark all notifications seen"] = "Marcar todas las notificaciones como vistas"; -App::$strings["New Direct Messages"] = "Nuevos mensajes directos"; -App::$strings["New Direct Messages Notifications"] = "Nuevas notificaciones de mensajes directos"; -App::$strings["View your direct messages"] = "Ver sus mensajes directos"; App::$strings["New Mails"] = "Nuevos mensajes de correo"; App::$strings["New Mails Notifications"] = "Avisos de nuevos mensajes de correo"; App::$strings["View your private mails"] = "Ver sus correos privados"; @@ -1849,10 +1832,6 @@ App::$strings["Move this channel (disable all previous locations)"] = "Mover est App::$strings["Use this channel nickname instead of the one provided"] = "Usa este alias de canal en lugar del que se proporciona"; App::$strings["Leave blank to keep your existing channel nickname. You will be randomly assigned a similar nickname if either name is already allocated on this site."] = "Dejar en blanco para mantener su alias de canal . Se le asignará aleatoriamente uno similar si cualquiera de los dos nombres ya está asignado en este sitio."; App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine."; -App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página."; -App::$strings["Update to Hubzilla 5.0 setp 2"] = "Actualizar a Hubzilla 5.0. Paso 2"; -App::$strings["To complete the update please run"] = "Para completar la actualización, ejecutar "; -App::$strings["INFO: this command can take a very long time depending on your DB size."] = "INFO; este comando puede tardar en ejecutarse mucho tiempo dependiendo del tamaño de su base de datos."; App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana."; App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado."; App::$strings["Passwords do not match."] = "Las contraseñas no coinciden."; @@ -2052,7 +2031,6 @@ App::$strings["This site is not a directory server"] = "Este sitio no es un serv App::$strings["This directory server requires an access token"] = "El servidor de este directorio necesita un \"token\" de acceso"; App::$strings["Welcome to Hubzilla!"] = "¡Bienvenido a Hubzilla!"; App::$strings["You have got no unseen posts..."] = "No tiene ningún mensaje sin leer..."; -App::$strings["Unable to locate original post."] = "No ha sido posible encontrar la entrada original."; App::$strings["Chatrooms App"] = "App Salas de chat"; App::$strings["Access Controlled Chatrooms"] = "Salas de chat moderadas"; App::$strings["Room not found"] = "Sala no encontrada"; @@ -2100,6 +2078,12 @@ App::$strings["Choose what you wish to do to recipient"] = "Elegir qué desea en App::$strings["Make this post private"] = "Convertir en privado este envío"; App::$strings["Calendar entries imported."] = "Entradas de calendario importadas."; App::$strings["No calendar entries found."] = "No se han encontrado entradas de calendario."; +App::$strings["INVALID EVENT DISMISSED!"] = "¡EVENTO NO VÁLIDO RECHAZADO!"; +App::$strings["Summary: "] = "Resumen: "; +App::$strings["Date: "] = "Fecha: "; +App::$strings["Reason: "] = "Razón: "; +App::$strings["INVALID CARD DISMISSED!"] = "¡TARJETA NO VÁLIDA RECHAZADA!"; +App::$strings["Name: "] = "Nombre: "; App::$strings["CardDAV App"] = "App CarDav"; App::$strings["CalDAV capable addressbook"] = "Libreta de direcciones compatible con CalDav"; App::$strings["Event title"] = "Título del evento"; @@ -2125,7 +2109,6 @@ App::$strings["Instant messenger"] = "Mensajería instantánea"; App::$strings["Website"] = "Sitio web"; App::$strings["Address"] = "Dirección"; App::$strings["Note"] = "Nota"; -App::$strings["Add Contact"] = "Añadir un contacto"; App::$strings["Add Field"] = "Añadir un campo"; App::$strings["P.O. Box"] = "Buzón de correos"; App::$strings["Additional"] = "Adicional"; @@ -2138,6 +2121,7 @@ App::$strings["Default Calendar"] = "Calendario por defecto"; App::$strings["Default Addressbook"] = "Agenda de direcciones por defecto"; App::$strings["Remote privacy information not available."] = "La información privada remota no está disponible."; App::$strings["Visible to:"] = "Visible para:"; +App::$strings["Unable to locate original post."] = "No ha sido posible encontrar la entrada original."; App::$strings["Empty post discarded."] = "La entrada vacía ha sido desechada."; App::$strings["Duplicate post suppressed."] = "Se ha suprimido la entrada duplicada."; App::$strings["System error. Post not saved."] = "Error del sistema. La entrada no se ha podido salvar."; @@ -2218,6 +2202,8 @@ App::$strings["Tag removed"] = "Etiqueta eliminada."; App::$strings["Remove Item Tag"] = "Eliminar etiqueta del elemento."; App::$strings["Select a tag to remove: "] = "Seleccionar una etiqueta para eliminar:"; App::$strings["Continue"] = "Continuar"; +App::$strings["Premium Channel App"] = "App Canal premium"; +App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal"; App::$strings["Premium Channel Setup"] = "Configuración del canal premium"; App::$strings["Enable premium channel connection restrictions"] = "Habilitar restricciones de conexión del canal premium"; App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc."; @@ -2286,9 +2272,6 @@ App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Sól App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Permitir contenido HTML sin filtrar sólo desde estos dominios "; App::$strings["One site per line. By default embedded content is filtered."] = "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada."; App::$strings["Block embedded HTML from these domains"] = "Bloquear contenido con HTML incorporado desde estos dominios"; -App::$strings["Allow SVG thumbnails in file browser"] = "Permitir miniaturas SVG en el navegador de archivos"; -App::$strings["WARNING: SVG images may contain malicious code."] = "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso."; -App::$strings["Allow embedded (inline) PDF files"] = "Permitir ficheros PDF incrustados (en línea)"; App::$strings["%s account blocked/unblocked"] = array( 0 => "%s cuenta bloqueada/desbloqueada", 1 => "%s cuenta bloqueada/desbloqueada", @@ -2394,6 +2377,8 @@ App::$strings["Poll interval"] = "Intervalo máximo de tiempo entre dos mensajes App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega."; App::$strings["Path to ImageMagick convert program"] = "Ruta al programa de conversión de ImageMagick"; App::$strings["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"] = "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert"; +App::$strings["Allow SVG thumbnails in file browser"] = "Permitir miniaturas SVG en el navegador de archivos"; +App::$strings["WARNING: SVG images may contain malicious code."] = "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso."; App::$strings["Maximum Load Average"] = "Carga media máxima"; App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50."; App::$strings["Expiration period in days for imported (grid/network) content"] = "Caducidad del contenido importado de otros sitios (en días)"; @@ -2606,8 +2591,6 @@ App::$strings["posted an event"] = "publicó un evento"; App::$strings["shared a file with you"] = "compartió un archivo con usted"; App::$strings["Private forum"] = "Foro privado"; App::$strings["Public forum"] = "Foro público"; -App::$strings["Entry censored"] = "Entrada censurada"; -App::$strings["Entry uncensored"] = "Entrada sin censurar"; App::$strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio."; App::$strings["Mood App"] = "App Estados de ánimo"; App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos"; @@ -2687,9 +2670,6 @@ App::$strings["A verification token was sent to your email address [%s]. Enter t App::$strings["Resend Email"] = "Reenvío de correo electrónico"; App::$strings["Validation token"] = "Token de validación"; App::$strings["Item not available."] = "Elemento no disponible"; -App::$strings["Poll not found."] = "Encuesta no encontrada."; -App::$strings["Invalid response."] = "respuesta no válida."; -App::$strings["Response submitted. Updates may not appear instantly."] = "Respuesta enviada. Las actualizaciones pueden no aparecer al instante."; App::$strings["Image uploaded but image cropping failed."] = "Imagen actualizada, pero el recorte de la imagen ha fallado. "; App::$strings["Image resize failed."] = "El ajuste del tamaño de la imagen ha fallado."; App::$strings["Image upload failed."] = "La carga de la imagen ha fallado."; @@ -2899,6 +2879,7 @@ App::$strings["Send email invitations to join this network"] = "Enviar invitacio App::$strings["You have no more invitations available"] = "No tiene más invitaciones disponibles"; App::$strings["Send invitations"] = "Enviar invitaciones"; App::$strings["Enter email addresses, one per line:"] = "Introduzca las direcciones de correo electrónico, una por línea:"; +App::$strings["Your message:"] = "Su mensaje:"; App::$strings["Please join my community on \$Projectname."] = "Por favor, únase a mi comunidad en \$Projectname."; App::$strings["You will need to supply this invitation code:"] = "Tendrá que suministrar este código de invitación:"; App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Regístrese en cualquier sitio de \$Projectname (están todos interconectados)"; @@ -2909,6 +2890,29 @@ App::$strings["Notes App"] = "App Notas"; App::$strings["A simple notes app with a widget (note: notes are not encrypted)"] = "Una simple aplicación de notas con un widget (aviso: las notas no están encriptadas)"; App::$strings["Xchan Lookup"] = "Búsqueda de canales"; App::$strings["Lookup xchan beginning with (or webbie): "] = "Buscar un canal (o un \"webbie\") que comience por:"; +App::$strings["Unable to lookup recipient."] = "No se puede asociar a un destinatario."; +App::$strings["Unable to communicate with requested channel."] = "No se puede establecer la comunicación con el canal solicitado."; +App::$strings["Cannot verify requested channel."] = "No se puede verificar el canal solicitado."; +App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló."; +App::$strings["Messages"] = "Mensajes"; +App::$strings["message"] = "mensaje"; +App::$strings["Message recalled."] = "Mensaje revocado."; +App::$strings["Conversation removed."] = "Conversación eliminada."; +App::$strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM"; +App::$strings["Requested channel is not in this network"] = "El canal solicitado no existe en esta red"; +App::$strings["Send Private Message"] = "Enviar un mensaje privado"; +App::$strings["To:"] = "Para:"; +App::$strings["Subject:"] = "Asunto:"; +App::$strings["Attach file"] = "Adjuntar fichero"; +App::$strings["Send"] = "Enviar"; +App::$strings["Delete message"] = "Borrar mensaje"; +App::$strings["Delivery report"] = "Informe de transmisión"; +App::$strings["Recall message"] = "Revocar el mensaje"; +App::$strings["Message has been recalled."] = "El mensaje ha sido revocado."; +App::$strings["Delete Conversation"] = "Eliminar conversación"; +App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente."; +App::$strings["Send Reply"] = "Responder"; +App::$strings["Your message for %s (%s):"] = "Su mensaje para %s (%s):"; App::$strings["Affinity Tool settings updated."] = "Actualización de los ajustes de Affinity Tool."; App::$strings["This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream."] = "Esta aplicación presenta un control deslizante en su editor de conexión y también en su página de red. El control deslizante representa su grado de amistad (afinidad) con cada conexión. Le permite acercar o alejar y mostrar conversaciones sólo de sus amigos más cercanos o de todo el mundo en su stream."; App::$strings["Affinity Tool App"] = "App Affinity Tool "; @@ -2995,7 +2999,6 @@ App::$strings["Show visual notifications including:"] = "Mostrar notificaciones App::$strings["Unseen stream activity"] = "Actividad del stream no vista"; App::$strings["Unseen channel activity"] = "Actividad no vista en el canal"; App::$strings["Unseen private messages"] = "Mensajes privados no leídos"; -App::$strings["Recommended"] = "Recomendado"; App::$strings["Upcoming events"] = "Próximos eventos"; App::$strings["Events today"] = "Eventos de hoy"; App::$strings["Upcoming birthdays"] = "Próximos cumpleaños"; @@ -3056,7 +3059,7 @@ App::$strings["Enable user zoom on mobile devices"] = "Habilitar zoom de usuario App::$strings["Update browser every xx seconds"] = "Actualizar navegador cada xx segundos"; App::$strings["Minimum of 10 seconds, no maximum"] = "Mínimo de 10 segundos, sin máximo"; App::$strings["Maximum number of conversations to load at any time:"] = "Máximo número de conversaciones a cargar en cualquier momento:"; -App::$strings["Maximum of 30 items"] = "Máximo de 30 elementos"; +App::$strings["Maximum of 100 items"] = "Máximo de 100 elementos"; App::$strings["Show emoticons (smilies) as images"] = "Mostrar emoticonos (smilies) como imágenes"; App::$strings["Provide channel menu in navigation bar"] = "Proporcionar un menú de canales en la barra de navegación"; App::$strings["Default: channel menu located in app menu"] = "Predeterminado: menú de canales ubicado en el menú de aplicaciones"; @@ -3178,6 +3181,7 @@ App::$strings["Error retrieving page content"] = "Error al recuperar el contenid App::$strings["New page"] = "Nueva página"; App::$strings["Revision Comparison"] = "Comparación de revisiones"; App::$strings["Short description of your changes (optional)"] = "Breve descripción de sus cambios (opcional)"; +App::$strings["Source"] = "Fuente"; App::$strings["New page name"] = "Nombre de la nueva página"; App::$strings["Embed image from photo albums"] = "Incluir una imagen de los álbumes de fotos"; App::$strings["History"] = "Historial"; @@ -3300,22 +3304,15 @@ App::$strings["Save Bookmark"] = "Guardar marcador"; App::$strings["URL of bookmark"] = "Dirección del marcador"; App::$strings["Or enter new bookmark folder name"] = "O introduzca un nuevo nombre para la carpeta de marcadores"; App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."; -App::$strings["A deleted list with this name was revived. Existing item permissions <strong>may</strong> apply to this list and any future members. If this is not what you intended, please create another list with a different name."] = "Una lista eliminada con este nombre ha sido reactivada. Los permisos <strong>de los elementos existentes pueden </strong>aplicarse a esta lista y a cualquier miembro futuro. Si esto no es lo que pretendía, por favor, cree otra lista con un nombre diferente."; -App::$strings["Add new connections to this access list"] = "Añadir nuevas conexiones a esta lista de acceso"; -App::$strings["Lists"] = "Listas"; -App::$strings["Edit list"] = "Editar lista"; -App::$strings["Create new list"] = "Crear una nueva lista"; -App::$strings["Channels not in any access list"] = "No hay canales en ninguna lista de acceso"; App::$strings["__ctx:permcat__ default"] = "por defecto"; App::$strings["__ctx:permcat__ follower"] = "seguidor"; App::$strings["__ctx:permcat__ contributor"] = "contribuidor"; App::$strings["__ctx:permcat__ publisher"] = "editor"; App::$strings["Likes %1\$s's %2\$s"] = "Gusta de %2\$sde %1\$s"; App::$strings["Doesn't like %1\$s's %2\$s"] = "No le gusta %2\$sde %1\$s"; -App::$strings["Will attend %s's event"] = "Asistirá al evento de %s"; -App::$strings["Will not attend %s's event"] = "No asistirá al evento de %s"; -App::$strings["May attend %s's event"] = "Puede asistir al evento de %s"; -App::$strings["May not attend %s's event"] = "Puede no asistir al evento de %s"; +App::$strings["Will attend %1\$s's %2\$s"] = "Asistirá %2\$sde %1\$s"; +App::$strings["Will not attend %1\$s's %2\$s"] = "No asistirá %2\$sde %1\$s"; +App::$strings["May attend %1\$s's %2\$s"] = "Puede asistir %2\$sde %1\$s"; App::$strings["\$Projectname Notification"] = "Notificación de \$Projectname"; App::$strings["Thank You,"] = "Gracias,"; App::$strings["This email was sent by %1\$s at %2\$s."] = "Este email ha sido enviado por %1\$s a %2\$s."; @@ -3330,7 +3327,6 @@ App::$strings["Please visit %s to view and/or reply to your private messages."] App::$strings["commented on"] = "ha comentado sobre "; App::$strings["liked"] = "ha gustado de "; App::$strings["disliked"] = "no ha gustado de "; -App::$strings["voted on"] = "votado en "; App::$strings["%1\$s %2\$s [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s%2\$s [zrl=%3\$s ]un %4\$s[/zrl]"; App::$strings["%1\$s %2\$s [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s %2\$s[zrl=%3\$s]%5\$s de %4\$s[/zrl]"; App::$strings["%1\$s %2\$s [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s %2\$s [zrl=%3\$s]su %4\$s[/zrl]"; @@ -3366,14 +3362,11 @@ App::$strings["Name:"] = "Nombre:"; App::$strings["Photo:"] = "Foto:"; App::$strings["Please visit %s to approve or reject the suggestion."] = "Por favor, visite %s para aprobar o rechazar la sugerencia."; App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Aviso]"; -App::$strings["created a new poll"] = "se ha creado una nueva encuesta"; App::$strings["created a new post"] = "ha creado una nueva entrada"; -App::$strings["voted on %s's poll"] = "votado en la encuesta de %s"; App::$strings["commented on %s's post"] = "ha comentado la entrada de %s"; App::$strings["repeated %s's post"] = "repetida la entrada de %s"; App::$strings["edited a post dated %s"] = "ha editado una entrada %s"; App::$strings["edited a comment dated %s"] = "ha editado un comentario %s"; -App::$strings["error saving data"] = "error guardando los datos"; App::$strings["Missing room name"] = "Sala de chat sin nombre"; App::$strings["Duplicate room name"] = "Nombre de sala duplicado."; App::$strings["Invalid room specifier."] = "Especificador de sala no válido."; @@ -3402,6 +3395,7 @@ App::$strings["Guest Access"] = "Acceso para invitados"; App::$strings["OAuth Apps Manager"] = "Administrador de apps OAuth"; App::$strings["OAuth2 Apps Manager"] = "Administrador de apps OAuth2"; App::$strings["PDL Editor"] = "Editor PDL"; +App::$strings["Premium Channel"] = "Canal premium"; App::$strings["My Chatrooms"] = "Mis salas de chat"; App::$strings["Channel Export"] = "Exportar canal"; App::$strings["Purchase"] = "Comprar"; @@ -3431,19 +3425,32 @@ App::$strings["Untitled"] = "Sin título"; App::$strings["Wiki resource_id required for git commit"] = "Se necesita Wiki resource_id para el git commit"; App::$strings["Privacy conflict. Discretion advised."] = "Conflicto de privacidad. Se aconseja discreción."; App::$strings["Admin Delete"] = "Eliminar admin"; +App::$strings["I will attend"] = "Participaré"; +App::$strings["I will not attend"] = "No participaré"; +App::$strings["I might attend"] = "Quizá participe"; +App::$strings["I agree"] = "Estoy de acuerdo"; +App::$strings["I disagree"] = "No estoy de acuerdo"; +App::$strings["I abstain"] = "Me abstengo"; +App::$strings["Add Tag"] = "Añadir etiqueta"; App::$strings["Reply on this comment"] = "Responder a este comentario"; App::$strings["reply"] = "responder"; App::$strings["Reply to"] = "Responder a "; +App::$strings["Share This"] = "Compartir esto"; +App::$strings["share"] = "compartir"; App::$strings["Delivery Report"] = "Informe de transmisión"; App::$strings["%d comment"] = array( 0 => "%d comentario", 1 => "%d comentarios", ); -App::$strings["%d unseen"] = "%dno visto/a vistos/as"; +App::$strings["View %s's profile - %s"] = "Ver el perfil de %s - %s"; App::$strings["to"] = "a"; +App::$strings["via"] = "mediante"; App::$strings["Wall-to-Wall"] = "De página del perfil a página del perfil (de \"muro\" a \"muro\")"; App::$strings["via Wall-To-Wall:"] = "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")"; App::$strings["Attend"] = "Participar o asistir"; +App::$strings["Attendance Options"] = "Opciones de participación o asistencia"; +App::$strings["Vote"] = "Votar"; +App::$strings["Voting Options"] = "Opciones de votación"; App::$strings["Go to previous comment"] = "Ir al comentario anterior"; App::$strings["Add to Calendar"] = "Añadir al calendario"; App::$strings["Image"] = "Imagen"; diff --git a/view/js/main.js b/view/js/main.js index 7df705603..cd95a8a0b 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -1152,7 +1152,10 @@ function dolike(ident, verb) { if(typeof conv_mode == typeof undefined) conv_mode = ''; - $.get('like/' + ident.toString() + '?verb=' + verb + '&conv_mode=' + conv_mode, function (data) { + if(typeof page_mode == typeof undefined) + page_mode = ''; + + $.get('like/' + ident.toString() + '?verb=' + verb + '&conv_mode=' + conv_mode + '&page_mode=' + page_mode, function (data) { if(data.success) { // this is a bit tricky since the top level thread wrapper wraps the whole thread if($('#thread-wrapper-' + data.orig_id).hasClass('toplevel_item')) { @@ -1997,3 +2000,13 @@ function sse_fallback() { sse_handleNotifications(obj, false, false); }); } + +function makeid(length) { + var result = ''; + var characters = 'abcdef0123456789'; + var charactersLength = characters.length; + for ( var i = 0; i < length; i++ ) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +} diff --git a/view/js/mod_cloud.js b/view/js/mod_cloud.js index aa9d308eb..5ca1f52a9 100644 --- a/view/js/mod_cloud.js +++ b/view/js/mod_cloud.js @@ -68,7 +68,7 @@ $(document).ready(function () { close_and_deactivate_all_panels(); $('body').css('cursor', 'wait'); - $.jGrowl('Please stand by while your download is being prepared...', { sticky: false, theme: 'info', life: 10000 }); + $.jGrowl(aStr.download_info, { sticky: false, theme: 'info', life: 10000 }); let data = [ {name: 'attach_path', value: window.location.pathname}, @@ -296,11 +296,11 @@ $(document).ready(function () { close_and_deactivate_all_panels(); $('body').css('cursor', 'wait'); - $.jGrowl('Please stand by while your download is being prepared...', { sticky: false, theme: 'info', life: 10000 }); + $.jGrowl(aStr.download_info, { sticky: false, theme: 'info', life: 10000 }); post_data.push( {name: 'attach_path', value: window.location.pathname}, - {name: 'channel_id', value: channelId}, + {name: 'channel_id', value: channelId} ); $.post('attach', post_data, function (data) { diff --git a/view/tpl/build_query.tpl b/view/tpl/build_query.tpl index 83e756367..af70a9595 100755 --- a/view/tpl/build_query.tpl +++ b/view/tpl/build_query.tpl @@ -1,4 +1,4 @@ -<script> +<script> var bParam_cmd = "{{$baseurl}}/update/{{$pgtype}}"; @@ -6,6 +6,10 @@ var conv_mode = '{{$conv_mode}}'; {{/if}} + {{if $page_mode}} + var page_mode = '{{$page_mode}}'; + {{/if}} + var bParam_uid = {{$uid}}; var bParam_gid = {{$gid}}; var bParam_cid = {{$cid}}; diff --git a/view/tpl/cloud_actionspanel.tpl b/view/tpl/cloud_actionspanel.tpl index 039d19fac..8cab175ff 100644 --- a/view/tpl/cloud_actionspanel.tpl +++ b/view/tpl/cloud_actionspanel.tpl @@ -31,7 +31,7 @@ <input type="hidden" name="return_url" value="{{$return_url}}" /> {{include file="field_checkbox.tpl" field=$notify}} <div class="cloud-index attach-drop attach-drop-zone text-center p-4 mb-3" data-folder="{{$folder}}"> - <span class="text-muted">You can select files via the upload button or drop them right here or into an existing folder.</span> + <span class="text-muted">{{$drop_area_label}}</span> </div> <div class="pull-right btn-group"> <div class="btn-group"> diff --git a/view/tpl/cloud_directory.tpl b/view/tpl/cloud_directory.tpl index 5886391bb..ac8304b96 100644 --- a/view/tpl/cloud_directory.tpl +++ b/view/tpl/cloud_directory.tpl @@ -1,46 +1,42 @@ -<div class="section-content-wrapper-np"> +<div class="{{if $tiles}}section-content-wrapper{{else}}section-content-wrapper-np{{/if}}"> {{if $tiles}} <table id="cloud-index"> <tr id="new-upload-progress-bar-1"></tr> {{* this is needed to append the upload files in the right order *}} </table> - - {{if $parentpath}} - <div class="cloud-container" > - <div class="cloud-icon tiles"> - <a href="{{$parentpath}}"> - <div class="cloud-icon-container"> - <i class="fa fa-fw fa-level-up" ></i> - </div> - </a> - </div> - <div class="cloud-title"> - <a href="{{$parentpath}}">..</a> - </div> - </div> - {{/if}} - - {{foreach $entries as $item}} - <div class="cloud-container"> - <div class="cloud-icon tiles"><a href="{{$item.rel_path}}"> - {{if $item.photo_icon}} - <img src="{{$item.photo_icon}}" title="{{$item.type}}" > - {{else}} - <div class="cloud-icon-container"> - <i class="fa fa-fw {{$item.icon_from_type}}" title="{{$item.type}}"></i> + <div class="row row-cols-2 row-cols-md-4"> + {{if $parentpath}} + <div class="col mb-4"> + <div class="card h-100"> + <a href="{{$parentpath}}" class="text-decoration-none"> + <div class="d-flex align-items-center justify-content-center m-1" style="height: 4.5rem;"> + <i class="fa fa-fw fa-level-up fa-5x" style="font-size: 4rem"></i> + </div> + <div class="card-footer text-center"> + <small class="text-muted text-truncate">..</small> + </div> + </a> + </div> </div> {{/if}} + {{foreach $entries as $item}} + <div class="col mb-4"> + <div class="card h-100"> + <a href="{{$item.rel_path}}" title="{{$item.name}}" class="text-decoration-none"> + <div class="d-flex align-items-center justify-content-center m-1" style="height: 4.5rem;"> + {{if $item.photo_icon}} + <img src="{{$item.photo_icon}}" class="rounded" alt="{{$item.photo_icon}}" title="{{$item.size_formatted}}" style="max-height: 4rem; width: auto; max-width: 100%;"> + {{else}} + <i class="fa fa-fw {{$item.icon_from_type}}" title="{{$item.size_formatted}}" style="font-size: 4rem"></i> + {{/if}} + </div> + <div class="card-footer text-truncate text-center"> + <small class="text-muted">{{$item.name}}</small> + </div> + </a> + </div> </div> - <div class="cloud-title"> - <a href="{{$item.rel_path}}"> - {{$item.name}} - </a> - </div> - {{if $item.is_owner}} - {{* add file tools here*}} - {{/if}} + {{/foreach}} </div> - {{/foreach}} - <div class="clear"></div> {{else}} <table id="cloud-index"> <tr> @@ -67,37 +63,37 @@ <tr id="cloud-multi-actions"> <td colspan="2"> <div class="form-check form-check-inline"> - <input class="form-check-input" type="checkbox" id="cloud-multi-tool-select-all" value="" title="Select all"> + <input class="form-check-input" type="checkbox" id="cloud-multi-tool-select-all" value="" title="{{$select_all_label}}"> </div> </td> <td colspan="3"> <div class="form-check form-check-inline"> - <label class="form-check-label" for="cloud-multi-tool-select-all">Select all</label> + <label class="form-check-label" for="cloud-multi-tool-select-all">{{$select_all_label}}</label> </div> </td> <td colspan="3"> {{if $is_owner}} <div class="dropdown"> <button class="btn btn-warning btn-sm" id="multi-dropdown-button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - <i class="fa fa-fw fa-ellipsis-v d-table-cell"></i><span class="d-none d-md-table-cell">Bulk Actions</span> + <i class="fa fa-fw fa-ellipsis-v d-table-cell"></i><span class="d-none d-md-table-cell">{{$bulk_actions_label}}</span> </button> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdown-button"> {{if $is_owner}} - <a id="cloud-multi-tool-perms-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-lock"></i> Adjust permissions</a> + <a id="cloud-multi-tool-perms-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-lock"></i> {{$adjust_permissions_label}}</a> {{/if}} - <a id="cloud-multi-tool-move-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-copy"></i> Move or copy</a> - <a id="cloud-multi-tool-categories-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-asterisk"></i> Categories</a> - <a id="cloud-multi-tool-download-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-cloud-download"></i> Download</a> - <a id="cloud-multi-tool-delete-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-trash-o"></i> {{$delete}}</a> + <a id="cloud-multi-tool-move-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-copy"></i> {{$move_copy_label}}</a> + <a id="cloud-multi-tool-categories-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-asterisk"></i> {{$categories_label}}</a> + <a id="cloud-multi-tool-download-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-cloud-download"></i> {{$download_label}}</a> + <a id="cloud-multi-tool-delete-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-trash-o"></i> {{$delete_label}}</a> </div> </div> {{else if $is_admin}} <div class="dropdown"> <button class="btn btn-warning btn-sm" id="multi-dropdown-button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - <i class="fa fa-fw fa-ellipsis-v d-table-cell"></i><span class="d-none d-md-table-cell">Bulk Actions</span> + <i class="fa fa-fw fa-ellipsis-v d-table-cell"></i><span class="d-none d-md-table-cell">{{$bulk_actions_label}}</span> </button> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdown-button"> - <a id="cloud-multi-tool-delete-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-trash-o"></i> {{$admin_delete}}</a> + <a id="cloud-multi-tool-delete-btn" class="dropdown-item" href="#"><i class="fa fa-fw fa-trash-o"></i> {{$admin_delete_label}}</a> </div> </div> {{/if}} @@ -122,7 +118,7 @@ {{/if}} <div id="attach-multi-submit" class="form-group"> <button id="cloud-multi-tool-cancel-btn" class="btn btn-outline-secondary btn-sm cloud-multi-tool-cancel-btn" type="button"> - Cancel + {{$cancel_label}} </button> <div id="attach-multi-edit-perms" class="btn-group float-right"> {{if $is_owner}} @@ -131,7 +127,7 @@ </button> {{/if}} <button id="multi-dbtn-submit" class="btn btn-primary btn-sm" type="submit" name="submit"> - {{$edit}} + {{$submit_label}} </button> </div> </div> @@ -160,28 +156,28 @@ {{/if}} </td> <td class="cloud-index-tool"> - {{if ($item.is_owner || $item.is_creator) && $item.attach_id}} + {{if ($is_owner || $item.is_creator) && $item.attach_id}} <div class="dropdown"> <button class="btn btn-link btn-sm" id="dropdown-button-{{$item.attach_id}}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-fw fa-ellipsis-v"></i> </button> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdown-button-{{$item.attach_id}}"> - <a id="cloud-tool-info-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-info-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-info"></i> Info</a> - {{if $item.is_owner}} - <a id="cloud-tool-perms-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-perms-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-{{$item.lockstate}}"></i> Adjust permissions</a> - {{/if}} - <a id="cloud-tool-rename-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-rename-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-pencil"></i> Rename</a> - <a id="cloud-tool-move-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-move-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-copy"></i> Move or copy</a> - <a id="cloud-tool-categories-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-categories-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-asterisk"></i> Categories</a> - {{if $item.is_owner}} - <a id="cloud-tool-share-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-share-btn" href="/rpost?attachment=[attachment]{{$item.resource}},{{$item.revision}}[/attachment]&acl[allow_cid]={{$item.raw_allow_cid}}&acl[allow_gid]={{$item.raw_allow_gid}}&acl[deny_cid]={{$item.raw_deny_cid}}&acl[deny_gid]={{$item.raw_deny_gid}}" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-share-square-o"></i> Post</a> + <a id="cloud-tool-info-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-info-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-info"></i> {{$info_label}}</a> + {{if $is_owner}} + <a id="cloud-tool-perms-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-perms-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-{{$item.lockstate}}"></i> {{$adjust_permissions_label}}</a> {{/if}} + <a id="cloud-tool-rename-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-rename-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-pencil"></i> {{$rename_label}}</a> + <a id="cloud-tool-move-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-move-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-copy"></i> {{$move_copy_label}}</a> + <a id="cloud-tool-categories-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-categories-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-asterisk"></i> {{$categories_label}}</a> {{if $item.collection}} - <a id="cloud-tool-dir-download-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-dir-download-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-cloud-download"></i> Download</a> + <a id="cloud-tool-dir-download-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-dir-download-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-cloud-download"></i> {{$download_label}}</a> {{else}} - <a id="cloud-tool-download-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-download-btn" href="/attach/{{$item.resource}}" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-cloud-download"></i> Download</a> + {{if $is_owner}} + <a id="cloud-tool-share-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-share-btn" href="/rpost?attachment=[attachment]{{$item.resource}},{{$item.revision}}[/attachment]&acl[allow_cid]={{$item.raw_allow_cid}}&acl[allow_gid]={{$item.raw_allow_gid}}&acl[deny_cid]={{$item.raw_deny_cid}}&acl[deny_gid]={{$item.raw_deny_gid}}" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-share-square-o"></i> {{$post_label}}</a> + {{/if}} + <a id="cloud-tool-download-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-download-btn" href="/attach/{{$item.resource}}" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-cloud-download"></i> {{$download_label}}</a> {{/if}} - <a id="cloud-tool-delete-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-delete-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-trash-o"></i> {{$delete}}</a> + <a id="cloud-tool-delete-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-delete-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-trash-o"></i> {{$delete_label}}</a> </div> </div> {{else}} @@ -192,12 +188,12 @@ </button> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdown-button-{{$item.attach_id}}"> {{if $item.collection}} - <a id="cloud-tool-dir-download-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-dir-download-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-cloud-download"></i> Download</a> + <a id="cloud-tool-dir-download-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-dir-download-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-cloud-download"></i> {{$download_label}}</a> {{else}} - <a id="cloud-tool-download-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-download-btn" href="/attach/{{$item.resource}}" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-cloud-download"></i> Download</a> + <a id="cloud-tool-download-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-download-btn" href="/attach/{{$item.resource}}" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-cloud-download"></i> {{$download_label}}</a> {{/if}} {{if $is_admin}} - <a id="cloud-tool-delete-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-delete-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-trash-o"></i> {{$admin_delete}}</a> + <a id="cloud-tool-delete-btn-{{$item.attach_id}}" class="dropdown-item cloud-tool-delete-btn" href="#" data-id="{{$item.attach_id}}"><i class="fa fa-fw fa-trash-o"></i> {{$admin_delete_label}}</a> {{/if}} </div> </div> @@ -219,23 +215,23 @@ <div id="cloud-tool-info-{{$item.attach_id}}" class="cloud-tool"> {{if ! $item.collection}} <div class="form-group"> - <label for="attach-code-input-{{$item.attach_id}}">Attachment BBcode</label> + <label for="attach-code-input-{{$item.attach_id}}">{{$attach_bbcode_label}}</label> <input type="text" class="form-control" id="attach-code-input-{{$item.attach_id}}" name="attach-code-input-{{$item.attach_id}}" value="{{$item.attach_bbcode}}" onclick="this.select();" /> </div> {{if $item.embed_bbcode}} <div class="form-group"> - <label for="embed-code-input-{{$item.attach_id}}">Embed BBcode</label> + <label for="embed-code-input-{{$item.attach_id}}">{{$embed_bbcode_label}}</label> <input type="text" class="form-control" id="embed-code-input-{{$item.attach_id}}" name="embed-code-input-{{$item.attach_id}}" value="{{$item.embed_bbcode}}" onclick="this.select();" /> </div> {{/if}} {{/if}} <div class="form-group"> - <label for="link-code-input-{{$item.attach_id}}">Link BBcode</label> + <label for="link-code-input-{{$item.attach_id}}">{{$link_bbcode_label}}</label> <input type="text" class="form-control" id="link-code-input-{{$item.attach_id}}" name="link-code-input-{{$item.attach_id}}" value="{{$item.link_bbcode}}" onclick="this.select();" /> </div> <div class="form-group"> <button id="cloud-tool-close-btn-{{$item.attach_id}}" class="btn btn-outline-secondary btn-sm cloud-tool-cancel-btn" type="button" data-id="{{$item.attach_id}}"> - Close + {{$close_label}} </button> </div> </div> @@ -247,22 +243,22 @@ {{include file="field_input.tpl" field=$item.categories}} </div> <div id="cloud-tool-submit-{{$item.attach_id}}" class="cloud-tool"> - {{if $item.is_owner}} + {{if $is_owner}} {{if !$item.collection}}{{include file="field_checkbox.tpl" field=$item.notify}}{{/if}} {{if $item.collection}}{{include file="field_checkbox.tpl" field=$item.recurse}}{{/if}} {{/if}} <div id="attach-submit-{{$item.attach_id}}" class="form-group"> <button id="cloud-tool-cancel-btn-{{$item.attach_id}}" class="btn btn-outline-secondary btn-sm cloud-tool-cancel-btn" type="button" data-id="{{$item.attach_id}}"> - Cancel + {{$cancel_label}} </button> <div id="attach-edit-perms-{{$item.attach_id}}" class="btn-group float-right"> - {{if $item.is_owner}} + {{if $is_owner}} <button id="dbtn-acl-{{$item.attach_id}}" class="btn btn-outline-secondary btn-sm" data-toggle="modal" data-target="#aclModal" title="{{$permset}}" type="button"> <i id="jot-perms-icon-{{$item.attach_id}}" class="fa fa-{{$item.lockstate}} jot-icons jot-perms-icon"></i> </button> {{/if}} <button id="dbtn-submit-{{$item.attach_id}}" class="btn btn-primary btn-sm" type="submit" name="submit"> - {{$edit}} + {{$submit_label}} </button> </div> </div> diff --git a/view/tpl/cloud_header.tpl b/view/tpl/cloud_header.tpl index 642fb1866..285363a12 100644 --- a/view/tpl/cloud_header.tpl +++ b/view/tpl/cloud_header.tpl @@ -1,6 +1,6 @@ <div class="section-title-wrapper"> <div class="pull-right"> - <a href="cloud_tiles/{{$cpath}}" class="btn btn-sm btn-outline-secondary"><i class="fa fa-fw {{if $tiles}}fa-list-ul{{else}}fa-table{{/if}}"></i></a> + <a href="cloud_tiles/{{$cpath}}" class="btn btn-sm btn-outline-secondary"><i class="fa fa-fw {{if $tiles}}fa-th-list{{else}}fa-th-large{{/if}}"></i></a> {{if $actionspanel}} {{if $is_owner}} <a href="/sharedwithme" class="btn btn-sm btn-outline-secondary"><i class="fa fa-cloud-download"></i> {{$shared}}</a> diff --git a/view/tpl/js_strings.tpl b/view/tpl/js_strings.tpl index 58426e20c..291d78fb2 100755 --- a/view/tpl/js_strings.tpl +++ b/view/tpl/js_strings.tpl @@ -66,8 +66,13 @@ 'month' : "{{$month}}", 'week' : "{{$week}}", 'day' : "{{$day}}", - 'allday' : "{{$allday}}" + 'allday' : "{{$allday}}", + + // mod cloud + + 'download_info' : "{{$download_info}}" + }; </script> - + |